var GSI_DictEntries = {"widgets":{"minicart_COLOR":"colour:","minicart_FIT":"Fit:","minicart_SIZE":"size:","minicart_cart_is_empty":"shopping bag","minicart_error":"Opsss...there has been an error and the item hasn't been added correctly to the cart.\r\nPlease try it again.","minicart_items_in_cart":"SHOPPING BAG (&nbsp;","minicart_loading":"LOADING MINICART","minicart_qty":"Quantity:","notify_me_email":"Email address:","notify_me_re_email":"Re-enter Email address","notifyme_heading":"Notify Me","notifyme_item_sku_not_found":"The product could not be found. Please, try again later.","notifyme_loading":"Loading...","notifyme_subscription_already_exists":"You have already applied for notifications to this product.","notifyme_success":"<span>Thank You<\/span>\r\n<br \/><br \/>Your notification subscription has been completed.","notifyme_text":"Please enter your email address and we will notify you when this product becomes available.","rvp_title":"Recently Viewed","xsellsbox_subtitle":"Our favorite basics fit for any wardrobe.","xsellsbox_title":"{IF:isCheckout:viewname==cart}\r\nDon't Forget...\r\n{ELSE:isCheckout}\r\n{IF:isSection:viewname==section}\r\n<span class=\"new-arrivals-subtitle\">Shop<\/span> Bestsellers\r\n{ELSE:isSection}\r\nMatinique recommends\r\n{\/IF:isSection}\r\n{\/IF:isCheckout}","notify_no_subscription_type":"The subscription type is not valid.","notifyme_error_invalid_mail":"The email address entered is invalid.","minicart_added_to_cart":"added to bag","notifyme_error_mismatch_emails":"Please verify the emails as they don't match.","notifyme_in_stock":"The item is in stock","notifyme_no_subscription_type":"There has been an error. Please try again later.","minicart_freeshipping":"<font color=\"white\" style=\"display:none;\">.<\/font>"},"property_selector":{"SIZE_selector":"Size:","FIT_selector":"Length:","gender":"Gender","QUANTITY":"Quantity","SIZE":"size:","WIDTH":"Width","category":"Category:","collection":"collection","color":"Colour","pcolor":"Colour:","qty":"Qty","COLOR":"colour:","FIT":"fit:","size":"Size:","technology":"technology","quantity":"Quantity","social_group":"type","sport":"sport"},"item":{"print":"Print","twitter":"Twitter","facebook":"Facebook","notEnoughStock":"Please select a lower quantity","promo":"Buy 1 Get Any 50% Off (details)","select_property":"Please select a","gift_wrap_info":"Gift service","details":"details","fabric_care_washing":"Your clothes will last longer if they are taken good care of. For the best results always follow the care label to determine how to treat your garment.","read_more":"View full product details","sizing_chart":"View Sizing Chart","video":"Video","zoom":"Zoom","COLOUR":"colour:","FIT":"length:","SIZE":"size:","WIDTH":"Width:","feature_fabric":"Fabric","feature_technology":"Material","feature_uses":"Uses","filter_by":"filter by:","in_stock":"in stock","item":"&nbsp;)","material_guide_intro":"The rate of technological development in our society is enormous. Our branch of industry is also being affected by rapid changes. New materials, new technology, and new designs have given us very efficient and advanced garments for practically all areas of use. The new technology and materials create a number of new technical expressions and brand names, which have made the market difficult to navigate for all those involved. In order to sort out some concepts and describe how Peak Performance uses and relates to new technology and materials, we have put together this information for our associates and customers.","not_available":"Not available","out_of_stock":"out of stock","qty":"Qty:","return_policy":"Returns &amp; Cancellations","selector_COLOR":"colour","selector_FIT":"length","style":"Style","about":"About","feature_expert_tips":"Expert Tips","feature_fabric_care":"Washing &amp; Care","feature_style_tips":"Style Tips","material_guide_title":"Material guide","play_video":"Play Video","selector_SIZE":"size","share":"Share","digg":"Digg","delicious":"Delicious","img_thermocool":"ThermoCool.jpg","img_hipe":"hipe_logo.gif","img_feather":"Feather.jpg","img_pertex":"pertex_logo.gif","img_polygiene":"polygiene-logo-new.gif","img_polartec":"polartec_logo.gif","img_goretex":"goretex2.gif","img_recco":"recco2.gif","img_gore":"Gore_Windstopper.jpg","img_lycra":"Lycra.gif","img_thermocool_":"ThermoCool.jpg","img_recco_":"recco2.gif","img_feather_":"Feather.jpg","img_rnd.jpg":"R-and-D.gif","img_feather_jpg":"Feather.jpg","img_windstopper_jpg":"windstopper_logo.gif","img_rnd_jpg":"R-and-D.gif"},"search":{"search_0_results":"Your search returned 0 results.","next":"next","no_results_found":"No Results Found","none":"none","param_nav_title":"Filter By &nbsp;\/","please_select":"Please Select...","previous":"previous","price":"price","search_tips_list":"<ul>\r\n <li>Double check the spelling. Try varying the spelling or browse our lists of product categories that appear on our homepage.<\/li>\r\n <li>Limit the search to one or two terms.<\/li>\r\n <li>Be less specific in your terminology. Using a more general term(s) is likely to lead you to a similar and related product.<\/li> \r\n<\/ul>","search_tips_title02":"<strong>Search tips &amp; guidelines<\/strong>","top_sellers":"top sellers","total_items":"Items","clear_facet":"clear selection","section_no_results":"Your search returned 0 results.","clear_all":"&nbsp; Clear All","items_per_page":"Items per page:","most_bought":"Top Sellers","product_number":"product number","product_search":"product search","results":"results","returned":"returned","search_results":"search results","search_title":"Search Results","sort_by":"Sort by:","submit":"Search","tips_title":"Try a new search:","top_rated":"Top Rated","your_search":"Your search","your_search_for":"Your search for","your_search_results":"Search results","clear_selection":"Clear selection","filter_by":"Filter by","filter_results":"&nbsp;","items_found":"items :","no_result_bg":"bg_noresults1011.jpg"},"select":{"please_choose":"Please choose","price_asc":"Price: Low to High","price_desc":"Price: High to Low","sales_rank":"Best Sellers","select_below":"please select below","select_quantity":"Quantity","select_size":"Please select a size","timestamp":"New Arrivals","default":"Select","timestamp_desc":"New Arrivals","view_all":"View all","sales_rank_desc":"Best Sellers"},"shared":{"header_brand_url":"http:\/\/brand.matinique.com","addthis":"http:\/\/www.addthis.com\/bookmark.php?v=250&amp;pub=inwearstore","back_main_menu":"Back to Main Menu","copyright":"\u00a9 2012 MATINIQUE","email_Accessories":"ACCESSORIES","email_Clothing":"CLOTHING","email_CustomerS":"Customer Service","email_Features":"FEATURES","email_Myaccount":"My account","email_Newsletter":"email sign up","email_Sale":"SALE","email_newArrivals":"New Arrivals","email_specialOffers":"Special Offers","footer_about_company":"company","footer_contact":"contact","footer_copyright":"\u00a9 2012 MATINIQUE","footer_customer_service":"customer service","footer_privacy_rights":"privacy","footer_season":"<span><a href=\"http:\/\/www.facebook.com\/pages\/Matinique\/111729895549042?v=app_4949752878\">\r\nJOIN US ON FACEBOOK<\/a><\/span>","footer_season_video":"http:\/\/www.peakperformance.com\/Global\/ecom\/constant_motion.flv","footer_shipping":"Shipping","footer_site_map":"site map","footer_stores":"stores","footer_terms_conditions":"terms &amp; conditions","header_bg":"bg_header.jpg","header_brand_link":"BRAND","header_shop_link":"{IF:inCheckout:in_checkout || address_book_data.from_checkout}\r\nSHOP\r\n{ELSE:inCheckout}\r\nSHOP\r\n{\/IF:inCheckout}","item":"Style:","items":"items","more_colours":"more colours","next":"Next","noscript_text":"<p>We will not be able to serve you properly with Javascript disabled in your browser.<\/p>\r\n<p>Please enable Javascript support in your browser and refresh this page before you continue.<\/p>\r\n<dl>\r\n <dt>Firefox<\/dt>\r\n <dd>Click in the upper menu on Edit \/ Options. Here choose Content, Enable JavaScript and click OK.<\/dd>\r\n <dt>Internet Explorer<\/dt>\r\n <dd>Click in the upper menu on Tools \/ Internet Options.<br \/>\r\n  There click at the menu Security either on Medium, or choose Custom Level and then activate below Scripting the point Enable Active Scripting. Confirm by clicking OK.<\/dd>\r\n <dt>Mozilla<\/dt>\r\n <dd>Click in the upper menu on Edit \/ Preferences. At Advanced \/ Scripts &amp; Plugins chooseNavigator. Now click on OK.<\/dd>\r\n<\/dl>","noscript_title":"Oops, Javascript is disabled in your browser!","previous":"Previous","previous_page":"Previous Page","print":"Print Receipt","print_order_summary":"Print Order Summary","thank_you":"thank you","you_are_in":"You are in the","your_details":"your details","footer_about_company_link":"http:\/\/brand.matinique.com\/en\/Footer\/OurCompany\/","noscript_alt":"Please enable javascript in your browser!","footer_returns":"Returns","about_company":"About Us","back":"Back to Previous Page","footer_delivery":"Delivery","footer_stores_link":"http:\/\/brand.matinique.com\/en\/Stores\/","new_arrivals_title":"New Arrivals","noscript_image":"javascript-not-active.jpg","buy_online":"Buy online","paypal_button":"<img title=\"Faster check out if you have a PayPal account\" alt=\"Faster check out if you have a PayPal account\" src=\"{AKA:{pconf.pathToBrandImages}paypal-button.png}\" style=\"width: 120px;\">","paypal_text":"- OR -"},"colors":{"21E":"Heaven","542":"Chilli Red","15V":"Shadow","166":"Ice Coffee","22Y":"Water blue","29Q":"Lavender Gloss","80C":"Coral","811":"Warm Orange","45Q":"Olive Green","496":"army green","4AV":"Vibrant Green","5d4":"Lumber Red","28Y":"Mist Blue","552":"Dark Red Wine","64J":"Lavender","71T":"Sunny Lime","82P":"Burnt Orange","903":"Pattern","D14":"Blue Denim","01C":"Cream","02J":"Glamorous Grey","03H":"Triumph Steel","04X":"Pewter","066":"raven","089":"White","090":"pure white","13Z":"Urban Night","146":"Chalk","210":"navy","23E":"Thunder Blue","248":"afro","287":"Night Blue","28V":"Night Sky","28X":"Arctic Blue","363":"Dive","4AY":"Frosty Spruce","53Y":"Bright Red","54E":"Paradise Pink","561":"Begonia","57E":"Bordeaux","59A":"Simply Red","60N":"Blossom Pink","62L":"Amethyst","638":"dark purple","66T":"March Violet","67D":"Medium Purple","82N":"Pumpkin","925":"Yellow\/Black Pattern","926":"Offwhite Check","945":"Blue\/White Stripes","948":"Blue\/Lightblue\/White Check","S09":"Glacier Lake","S10":"Signal Orange","T03":"Nature","26M":"True Blue","28U":"Horizon Blue","370":"Seaway","45D":"Lt. Lime","65N":"Ink Purple","693":"Pink","905":"White\/Lightblue Pattern","913":"Black\/Granite\/Offwhite Pattern","927":"Pink\/Black Pattern","971":"Black\/Grey Pattern","993":"Offwhite3","D39":"Dark Denim","M02":"Dark grey Mel","M04":"light grey melange","M08":"Grey Mel","S07":"Granite","S08":"Ice Blue","D18":"Grey Denim","64K":"Salvi Purple","66":"raven","90":"pure white","185":"dark clay","209":"Midnight Blue","2B2":"Midnight Blue","2E5":"Miami Blue","32B":"Caribbean Sea","57R":"Red","63B":"Dance Floor","02L":"Titanium","546":"Dolly Pink","D04":"Light Denim","04Y":"Steel Grey","050":"Black","05B":"Barley","05C":"Oak Beige","099":"Offwhite","100":"Natural\/Raw","114":"Beige","11G":"Brown","14M":"Champagne","150":"Light Clay","189":"Burnt Umbra","18F":"Almond","18S":"Java Brown","18T":"Twill Beige","198":"Dk Brown","19Q":"Winter Beige","24X":"Waterfall","24Y":"Himalayan Blue","25X":"Dusty Blue","32b":"Caribbean Sea","451":"Evergreen","47U":"Bottle Green","4AU":"Wood Green","53L":"Bright Red","57P":"Lipstick","59H":"Sweet Sexy","59U":"Super Pink","669":"Purple","820":"Brown Fall","892":"Dusty Shadow","901":"Pattern","933":"Black\/Green Pattern","944":"White\/Grey\/Lightblue Pattern","970":"Blue\/White Pattern","987":"Blue\/Grey\/White Stripes","D02":"dark denim","D2V":"Vintage","M03":"Med Grey Mel","048":"Grey","055":"Steel","092":"Ivory","10Q":"Cognac leather","226":"Cadet blue","803":"Mandarin Orange","116":"light brown","14Z":"Desert Khaki","25H":"Dirty Blue","26T":"Electric Blue","56Y":"Slush","902":"Pattern","D03":"medium denim","27V":"Casual Blue","40R":"Lawn","42Z":"Jade Green","55Z":"Wicked Red","082":"Khaki Grey","15C":"Dark Brown","21G":"Sky","504":"Roan","57C":"Technical Pink","64U":"Fuchsia","68Q":"Lavender","819":"Warm Cognac","D01":"Unwashed Denim","062":"Steel Grey","067":"Charcoal Grey","55":"steel","72":"Light Stone Grey","92":"ivory","138":"Khaki Green","193":"mud","256":"Big Blue","273":"Prussian Blue","21N":"Blue Graphite","22G":"Dusky Blue","22Z":"Bright blue","4AE":"Grey Green","4L7":"Dust Green","50X":"Pink","80A":"Golden Cognac","2G8":"Blue Sky","57T":"Flame Red","075":"petrol","4A5":"yale green","534":"brick","206":"Berlin Blue","326":"Summer Sky","526":"Red Art","072":"Light stone grey","202":"dust blue","367":"sailing","62M":"hibiscus"},"availability":{"notify_msg":"Click \"Notify Me\" below to be notified when product becomes available.","in_stock":"In stock","availability":"Availability","out_of_stock":"out of stock","x_in_stock":"x in stock"},"JSAPI":{"font_customised_1":"GSI_Font_HelveticaBold","font_customised_2":"GSI_Font_Helvetica","lightbox_returnPolicy":":NYRO_WIDTH=700:NYRO_HEIGHT=430","lightbox_termsAndConditions":":NYRO_WIDTH=700:NYRO_HEIGHT=490","lightbox_gift_wrap":":NYRO_WIDTH=600:NYRO_HEIGHT=350","telesales_imageSize":"large","tooltip_formCountry":"width=200&amp;height=70","tooltip_formMobilePhone":"width=200&amp;height=70","tooltip_notifyWhatIsThis":"width=200&amp;height=70","tooltip_xpressNotifyWhatIsThis":"floating=1&amp;width=200&amp;height=70","lightbox_delivery":":NYRO_WIDTH=637:NYRO_HEIGHT=380","lightbox_newsletter":":NYRO_WIDTH=692:NYRO_HEIGHT=612","lightbox_orderDetail":":NYRO_width=710:NYRO_height=520","lightbox_privacyPolicy":":NYRO_WIDTH=700:NYRO_HEIGHT=490","lightbox_securityCode":":NYRO_WIDTH=700:NYRO_HEIGHT=440","lightbox_country_selector":":NYRO_WIDTH=460:NYRO_HEIGHT=250","lightbox_lostPassword":":NYRO_WIDTH=538:NYRO_HEIGHT=350","lightbox_promo":":NYRO_WIDTH=700:NYRO_HEIGHT=430","lightbox_returns":":NYRO_WIDTH=700:NYRO_HEIGHT=430","lightbox_shipping":":NYRO_WIDTH=700:NYRO_HEIGHT=430","lightbox_giftWrap":":NYRO_WIDTH=550:NYRO_HEIGHT=360"},"errors":{"bad billto address":"Billing address: Please include your street name if you have one, or a building or area name.","bad shipto address":"Shipping address: Please include your street name if you have one, or a building or area name.","Product in offer present":"This Evoucher code is not applicable.","bad company address":"Company address: Please include your street name if you have one, or a building or area name.","invalid password":"Passwords must be between 6 and 10 characters long, and must have both letters numbers.","History password duplicated":"Sorry, you can't re-use a password from the last 10 passwords used. Please choose another password.","message_missing":"there is no message to send","ship_zip":"Postcode","Please check the company address":"Please check the company address","Required shopcode missing":"Required shopcode missing","Ticket not exist":"The support request number introduced doesn't exist in our system","another evoucher present":"There is another e-voucher applied","bad company vatnum":"Your company VAT number is wrong. Please verify.","bad e-mail":"e-mail is wrong","bad e-mail address":"E-mail address wrong","bad email":"Invalid email address","bad pwd2":"Passwords do not match. Please try again","bad shipto email":"Please verify the e-mail of the shipping address.","item does not exist":"Item does not exist","item price not defined":"Item price not defined","message missing":"Message missing","missing bank num":"Bank number missing","missing conds agreement":"Our General Terms and Conditions must be accepted before you can proceed.","newsletter_bad e-mail":"e-mail is wrong","newsletter_cancel successful":"cancel successful","newsletter_cancel unsuccessful":"cancel unsuccessful","newsletter_cancel unsuccessful different emails":"cancel unsuccessful different e-mails","newsletter_confirm_successful":"Subscription confirmed successfully","newsletter_confirm_unsuccessful":"Subscription not confirmed successfully","newsletter_first name missing":"first name missing","newsletter_identifier missing":"identifier missing","no_sku":"Sorry, there's no SKU number like this.","nonreg company":"Unregistered company","provider not set":"No provider selected","reg_needed":"Please register your profile!","ship phone missing":"Shipping phone number missing","ship_phone":"Invoicing phone","shipping method not set":"shipping method not set","used email":"This e-mail address is already registered","used user name":"This user name already exists","zip code missing":"Zip code is missing","BTADDRESS1":"Address","BTZIP":"Postcode","Bad billto country":"Wrong country selected","CC_DISCOVER":"Discover","CC_SOLO":"Solo","DD gateway unavailable":"We are sorry but we are unable to process your order at present due to technical problems.<BR\/>Please try again later.","Order not exist":"The order introduced doesn't exist in our system","Please check the billto address":"Please check the invoicing address","BTCITY":"Town","BTFIRSTNAME":"First name","BTLASTNAME":"Last name","BTPHONE":"Invoicing phone","Bad serial number":"Wrong shopcode!","Batch changes message":"There is a mismatch, please review your enter data.","CC_AMEX":"American Express","CC_CARTEBLEUE":"Carte bleue","CC_DINERS":"Diners","CC_DYNAMIC":"Dynamic Mastercard","CC_EUROCARD":"Eurocard","CC_JCB":"JCB card","CC_MASTERCARD":"Mastercard","CC_SWITCH":"Switch","Invalid order format":"Invalid order format","Invalid ticket number format":"Invalid support request number format","Invalid voucher":"Your e-voucher code is invalid.","Order not belong partner":"The order introduced doesn't belong to this partner","PAYMENT_METHOD":"Payment method","Please check the shipto address":"Please check the shipping address","auth failed":"Sorry, we have been unable to confirm the validity of your credit card data as entered. Please check the credit card number and\/or expiry date and try again. For security reasons you are only allowed a very limited number of retries.","avs_choose_address":"We have checked the address you entered with a normalisation system, but this system has not found your address. Instead, it suggests a list of possible addresses. <br\/>Please confirm the suggested address; you can also edit it, select from other suggested addresses, or confirm the address you originally entered.","bad cc name":"Sorry, we have been unable to confirm the validity of your credit card data as entered. Please check the name on credit card and try again. For security reasons only a very limited number of retries is allowed.","bad cc number":"Sorry, we have been unable to confirm the validity of your credit card data as entered. Please check the credit card number and\/or expiry date and try again. For security reasons you are only allowed a very limited number of retries.","bad company phone":"Wrong company phone","bad company zip":"The company postcode format is wrong; {LANG:errors:zip_code_eg}.","bad email format":"E-mail not valid","bad input":"<p>There appears to be a problem processing your order.<\/p>\r\n\r\n  <p>Please check that you have entered all your details correctly including:\r\n\r\n  <UL>\r\n\r\n  <LI>Credit card number and type<\/li>\r\n\r\n  <LI>E-mail address<\/li>\r\n\r\n  <LI>Correct postcode<\/li>\r\n\r\n  <LI>Telephone number<\/li>\r\n\r\n  <\/UL><\/p>","bad phone":"The phone number you entered seems to have a wrong data format. Please check and try again.","bad shipto phone":"The phone number provided for the shipping address is incorrect; please use the following format: {LANG:errors:phone_eg}","bankxfer error":"Error occurred with prepayment","bankxfer gateway unavailable":"We are sorry but we are unable to process your order at present due to technical problems.","bill_country":"Invoice to country","billto email missing":"Invoicing e-mail address missing","cancel order":"Do you confirm the order deletion?","cannot delete":"Order cannot be deleted. If you want to cancel this order click the \"cancel checkout\" button.","cannot_purchase":"cannot purchase","cart does not exist":"This shopping bag does not exist","company city missing":"Company city missing","company court missing":"Company court missing","company phone missing":"Company phone missing","company size missing":"Company size is missing. Please provide!","company zip missing":"Company postcode missing","confirmation_msg":"Success!","data missing":"All fields marked * must be completed","data_not_valid":"The data you inserted are not valid. Please check the details and try again.","default error message":"<p>There appears to be a problem processing your order.<\/p>\r\n\r\n  <p>Please check that you have entered all your details correctly including:\r\n\r\n  <ul>\r\n\r\n  <li>Credit card number and type<\/li>\r\n\r\n  <li>E-mail address<\/li>\r\n\r\n  <li>Correct postcode<\/li>\r\n\r\n  <li>Telephone number<\/li>\r\n\r\n  <\/ul><\/p>","email missing":"E-mail address missing","email not belong ticket":"The e-mail address introduced doesn't belong to the support request number inserted","error56":"Sorry, an error occurred during log in: please try again","SRCPASSWRD":"Password","address missing":"Invoicing street and number missing","bad acct num":"Account number wrong format","bad bank num":"Bank number wrong format","bad billto email":"There seems to be an error in the invoicing address e-mail. Please verify.","bad billto phone":"The phone number provided for the invoicing address is incorrect; please use the following format: {LANG:errors:phone_eg}","bad company regnum":"Company register number seems wrong. Check it.","delivery address zip code missing":"Shipping postcode missing","delivery last name missing":"Shipping contact surname missing","discount greater than order total":"discount greater than order total","e-mail address invalid":"Please enter a valid e-mail address!","e-mail address missing":"E-mail address missing","email address missing":"E-mail is missing","invalid issue number":"The given issue number format is invalid","item not found":"Item not found","missing bank name":"Bank name missing","missing cc comp":"Please choose a valid credit card type.","missing company data":"Some company data is missing. Please provide.","newsletter_cancel unsuccessful not exist":"Subscription not cancelled successfully. There is no subscription with this identifier.","newsletter_cancel_unsuccessful_text":"Sorry, but is not possible to cancel the subscription requested.","newsletter_confirmed_title":"Newsletter confirmation","newsletter_content type missing":"content type missing","newsletter_e-mail address missing":"e-mail address missing","newsletter_language missing":"preferred language missing","newsletter_update unsuccessful":"Subscription not updated successfully","newsletter_zip code missing":"Zip code is missing","nusername":"E-mail address","options":"Please select one of the following options for this item","order empty":"The order items cannot be found.","registration number missing":"The commercial registry number for you company is missing.","required_fields":"* Indicates required fields","ship_last_name":"Last name","phone_eg":"1234567890","evoucher already used by user":"This e-voucher has already been used.","evoucher applied":"E-voucher applied","evoucher not available in this store":"This e-voucher code is not applicable for this shop.","evoucher not loaded":"The e-voucher codes can not be verified.","evoucher not valid":"this e-voucher has been cancelled","expiration date":"Expiry date","first name missing":"First name missing","fullname missing":"Full name missing","function_not_supported":"This function is not supported in this browser","general verification message":"Please take a moment to verify that all the required fields (those marked with an asterisk) are filled in and correct.","in stock":"Immediate availability","in x days":"Normally within 2 weeks","insert successful":"Your account has been created.","invalid field":"Sorry, an error occurred during log in: please try again","invalid session":"INVALID SESSION","invalid shipping method":"The selected shipping address country is not valid. Please click on \"Change content of shopping basket\" and change the selected country in the top of the page.","invalid shipto country":"The selected shipping address country is not valid. Please click on \"Change content of shopping basket\" and change the selected country in the top of the page.","invalid startdate":"The given start date is not valid","last name missing":"Surname missing","login_error":"Log-in failed, please try again.","max_units_exceeded":"Maximum number of units per item exceeded.","missing account num":"Account number missing","missing cc address":"The credit card address is missing. Please verify.","missing iss nr start date":"Please enter your card's issue number or start date","missing order phone":"The 'Central Organisation Phone Number' is missing. Please provide.","newsletter_bad content type":"Invalid content type for an e-mail","newsletter_cancel_successful_text":"Your subscription has been cancelled.","newsletter_confirm unsuccessful":"Subscription not confirmed successfully","newsletter_finalize_cancellation_text":"Please enter your email address in order to cancel your email newsletter subscription.","newsletter_last name missing":"last name missing","newsletter_save successful":"<span class=\"newsletter-subtitle\">Thank you<\/span>\r\n<p class=\"newsletter-phrase\">\r\nYour email sign up was succesfull<\/p>","newsletter_save unsuccessful":"Subscription not saved","no_lostpwd_match":"User name does not exist.","no_provider_selected":"No provider selected","no_wish_list":"No items are saved in wish list","optionid not found":"option id not found","phone missing":"Invoicing phone number missing","pwd2 missing":"Please verify your password!","qtychange":"<p><span>To change products, quantities or language options please click update shopping bag.<\/span>\r\n\r\n  To remove a product please set quantity to 0 and click update basket.<\/p>","set the cart email":"Please enter your e-mail address!","ship_address1":"Address 1","ship_city":"Town","ship_first_name":"First name","shippingMethod":"Shipping method","update successful":"data correctly updated","user name missing":"User name is missing","there_are_errors":"Please try the following:","there_are_messages":"there are messages","ticket not belong partner":"Ticket does not pertain to this shop.","ticket_number missing":"Support request number missing","undeliverable shipto zip":"The ship-to address postcode is not deliverable for this country","used username":"This user name already exists","bad billto zip":"The invoicing postcode format has been entered incorrectly; please use the following format: {LANG:errors_zip:zip_{bill_country_iso}}.","CC_VISACR":"Visa credit","CC_VISADE":"Visa debit","CC_VISADELTA":"Visa Delta","DD refused":"Your account details have not been accepted.","Data missing":"Please fill in all fields!","Deal of the Day product present. Can not apply EVO":"Deal of the Day product present. Can not apply E-VOUCHER","General verification message":"Please take a moment to verify that all the required fields (those marked with an asterisk) are filled in and correct.","Non-matching passwords":"The passwords do not match!","SRCPASSWRD2":"Confirm Password","The order not belong partner":"The order number doesn't belong to this shop","Used username":"This username is already taken.","bad cc type":"There is an error with your credit card data. Please check and try again.","bad content type":"Invalid content type for an e-mail","bad pin":"Your pin number seems to be wrong. Please try again.","cart empty":"The shopping bag you are trying to save is empty","cc_must_match_note":"The invoicing address for your credit or debit card must match the invoicing address you have entered under address details.","city missing":"Invoicing town\/city missing","company address1 missing":"Company street and number missing","company name missing":"Company name missing","content type missing":"content type missing","could not create item object":"The item could not be added to the basket","customer can not update this cart":"You have already saved a shopping bag with this name. Please try another one.","customer sector missing":"The your company's activity sector is missing. Please provide one.","delivery address missing":"Shipping  street and number missing","delivery city missing":"Shipping town\/city missing","delivery company name missing":"Shipping company name missing","delivery first name missing":"Shipping contact first name missing","error":"You typed in an invalid log-in\/password, please try again.","error when applying evoucher":"There has been an error while applying your e-voucher.","error11":"Please provide your e-mail!","error12":"Please provide a password.","error13":"sorry, an error occurred during log in: please try again","error19":"Sorry, an error occurred during log in: please try again","evoucher campaign not active":"The campaign associated with your e-voucher is no longer active.","evoucher not a cart":"cannot apply an e-voucher on an empty basket!","evoucher not applicable":"This e-voucher is not applicable for this specific action.","evoucher removed":"E-voucher removed","evoucher reserved for another customer":"This e-voucher code is reserved for another customer.","expired cc":"Your credit card data has expired. Please verify.","expiry date":"Expiry date","he order not belong partner":"This order number does not belong to this shop","in many days":"Call for availability","invalid vat number":"The VAT number you entered is invalid. Please&nbsp;<a href=\"{map.register}?{ALLID}&usr={ORDER.custidentity}\"><span>Edit Your Profile<\/span><\/a> to change the information.","items out of stock":"We are sorry, we don't have sufficient stock to meet your quantity requirements. Try reducing the quantity.","lostpsw_email_sent":"e-mail sent","lostpsw_error":"You have either typed an invalid e-mail \/ password, or your account has not yet been activated.","lostpsw_lostpwd_error":"Internal error, please contact customer support","lostpsw_no_lostpwd_match":"The data you inserted is not valid. Please check the details and try again.","message too long":"The message is too long. It can have 4000 characters at the most","message_too_long":"your message is too long","missing field":"Missing field","need_password":"password missing","newsletter_cancel unsuccessful different partners":"Subscription not cancelled successfully. There is an inconsistency in the subscription data.","newsletter_cancel unsuccessful invalid":"Cancel unsuccessful invalid","newsletter_confirm successful":"Subscription confirmed successfully","newsletter_confirm unsuccessful invalid":"Subscription cancelled successfully. No subscription exists.","newsletter_modify unsuccessful different partners":"There's an inconsistency in the subscription data.","newsletter_modify unsuccessful not exist":"No subscription exists with this identifier. No data found.","newsletter_save unsuccessful exist yet":"Subscription not saved. A subscriber with the same e-mail address already exists.","newsletter_update successful":"Subscription updated successfully","newsletter_update unsuccessful exist yet":"Subscription not updated successfully. A subscriber with the same e-mail address already exists.","no order found":"No order found. Please check your information and try again.","no_results_found":"No results found","order not belong partner":"The order introduced doesn't belong to this partner","order_no missing":"Order number is missing","organisation trade name missing":"Many companies' registered trading names differ from the name the company uses publicly in day-to-day business.  In order for us to process your invoice order it is essential that we gather information on the company \/ organisation trading name where it is different to the company \/ organisation name.  Where your trading name is the same as the company \/ organisation name, please re-enter the company \/ organisation name in the company \/ organisation trading name field.","password missing":"Password is missing","password_requirements":"Passwords must be between 6 and 10 characters long, and must have both letters numbers. Passwords may not be reused.","pg not available":"We are sorry but we are unable to process your order at present due to technical issues with our credit card interface. Please try again later or re-order choosing an alternative payment method. Your credit card has not been charged.","recent_history_no item":"There are no items in your recent history","set the cart name":"Please enter the basket name!","ship email missing":"Shipping e-mail address missing","shipping hours missing":"Shipping hours missing","invalid maximum length to ship_address1":"Shipping address exceed the 30 characters limit","invalid maximum length to BTADDRESS1":"The billing address exceed the 30 characters limit","addBook_Address added":"Address added","bad shipto zip":"Shipping postcode format is wrong; please use  the following format: {LANG:errors_zip:zip_{ship_country_iso}}.","aos_login_error":"Log-in failed, please try again.","cantgothere":"The address you provide must be inside {P.country_name}","invalid_country":"We are sorry, we can not process your order with your current country, please use a valid address in  {P.country_name} shop to be able to continue with your order.","paypal confirmation failed":"We are sorry, but your payment with PayPal can not be processed at this time.","paypal finish failed":"We are sorry, but your transaction with PayPal could not be completed.","paypal express not available":"We are sorry, but PayPal is not currently available.","addBook_Address updated":"Address updated","rtb not available":"We are sorry but Real Time Banking in not currently available due to technical problems.","Bank transfer gateway unavailable":"We are sorry but we are unable to process your payment at present due to technical problems.","Bank transfer payment refused":"Your account details have not been accepted for payment.","addBook_address deleted":"Address deleted"}};var GSI_PartnerCurrency = {"default":{"decSep":".","thsep":",","pos":"R","numdecs":"2","sym":"DKK","sepSpace":" "}};function GSI_Exception(msg,type){this.name='GSI_Exception';this.message=msg;this.type=!type?1:type;var ts=new Date(),_mthis=this;this.getName=function(){return _mthis.name};this.getType=function(){return _mthis.type};this.getMessage=function(){return _mthis.message};this.getTime=function(){return ts.toLocaleString()};this.toString=function(){return'Created on:'+_mthis.getTime()+'\nName: '+_mthis.getName()+'\nType: '+_mthis.getType()+'\nDescription: '+_mthis.getMessage()}};
function GSI_ErrorStack(){this._errors=new Array();var types=new Array(),_mthis=this;this.add=function(eDesc,eType){if(!GSI_DEBUG)return;var tError=new GSI_Exception(eDesc,eType);if(!GSI.functions.isset(eDesc))eDesc='';if(!GSI.functions.isset(eType))eType='';_mthis._errors.push(tError);if(typeof console!="undefined")switch(eType.toUpperCase()){case'ERROR':console.error(tError.toString());break;case'WARNING':console.warn(tError.toString());break;default:console.info(tError.toString());break};return true};this.resetErrors=function(){_mthis._errors=new Array()};this.toString=function(){var str='';for(anError in _mthis._errors)str+='\n'+_mthis._errors[anError].toString();return str};this.toArray=function(){return _mthis._errors}};
function GSI_Controller_ItemsCollection(padre){this.padre=padre;this.reset()};GSI_Controller_ItemsCollection.prototype.errorStack=new GSI_ErrorStack();GSI_Controller_ItemsCollection.prototype.setError=function(msg,type){this.errorStack.add(msg,type)};GSI_Controller_ItemsCollection.prototype.insert=function(item){return this.addItem(item)};GSI_Controller_ItemsCollection.prototype.addItem=function(item){_FLAG=false;var id;if(item instanceof GSI_Resource_Item){id=item.getData('id');_FLAG=true}else id=item;tItem=this.getItem(id);if(tItem&&!_FLAG)return false;if(!_FLAG){var factory=GSI.factories.getFactory('resource'),item=factory.createItem();item.setData('id',id);this.setError('Item created with resId'+item.resId,'INFO')};this._initializeItem(item);this.items[id]=item;return true};GSI_Controller_ItemsCollection.prototype._initializeItem=function(item){};GSI_Controller_ItemsCollection.prototype.removeItem=function(item){var id=0;if(item instanceof GSI_Resource_Item){id=item.getData('id');if(this.items[id]){delete this.items[id];return true}else return false}else if(this.items[item]){delete this.items[item];return true}else return false;return true};GSI_Controller_ItemsCollection.prototype.getItems=function(){return this.items};GSI_Controller_ItemsCollection.prototype.getNextItem=function(){if(!GSI.functions.isset(GSI.activeItem))return false;var flag=false;for(var anId in this.items){if(anId=='indexOf')continue;if(flag)return this.items[anId];if(this.items[anId].getData('id')==GSI.activeItem.getData('id'))flag=true};return false};GSI_Controller_ItemsCollection.prototype.getPreviousItem=function(){if(!GSI.functions.isset(this.xsellNav))return false;if(!GSI.functions.isset(GSI.activeItem))return false;var flag=false;for(var index=GSI.functions.count(this.items)-1;index>=0;index--){element=GSI.functions.getElementFromArray(this.items,index);if(flag)return element;if(element&&element.getData('id')==GSI.activeItem.getData('id'))flag=true};return false};GSI_Controller_ItemsCollection.prototype.getItem=function(ID){for(anItem in this.items){if(anItem=='indexOf')continue;if(!(this.items[anItem] instanceof GSI_Resource_Item))continue;var res=false;if(res=this.items[anItem].getItem(ID))return res};return false};GSI_Controller_ItemsCollection.prototype.getResource=function(resId){for(anItem in this.items){if(anItem=='indexOf')continue;if(!(this.items[anItem] instanceof GSI_Resource_Item))continue;if(res=this.items[anItem].getResource(resId))return res};return false};GSI_Controller_ItemsCollection.prototype.reset=function(){this.items=new Array();this.data={}};
function GSI_Controller_ItemsCollection_BasketXsells(padre){this.padre=padre;this.reset()};GSI_Controller_ItemsCollection_BasketXsells.prototype=new GSI_Controller_ItemsCollection();GSI_Controller_ItemsCollection_BasketXsells.prototype._initializeItem=function(item){item.isBasketXsell=true};
function GSI_Controller_ItemsCollection_ItemXsells(padre){this.padre=padre;this.reset()};GSI_Controller_ItemsCollection_ItemXsells.prototype=new GSI_Controller_ItemsCollection();GSI_Controller_ItemsCollection_ItemXsells.prototype._initializeItem=function(item){item.isXsell=true};
function GSI_Controller_ItemsCollection_ItemRVP(padre){this.padre=padre;this.reset()};GSI_Controller_ItemsCollection_ItemRVP.prototype=new GSI_Controller_ItemsCollection();GSI_Controller_ItemsCollection_ItemRVP.prototype._initializeItem=function(item){item.t_type='rvp'};
function GSI_Controller_ItemsCollection_ItemVAS(padre){this.padre=padre;this.reset()};GSI_Controller_ItemsCollection_ItemVAS.prototype=new GSI_Controller_ItemsCollection();GSI_Controller_ItemsCollection_ItemVAS.prototype._initializeItem=function(item){item.t_type='vas'};
function GSI_Controller_ItemsCollection_Basket(padre){this.padre=padre;this.reset()};GSI_Controller_ItemsCollection_Basket.prototype=new GSI_Controller_ItemsCollection();GSI_Controller_ItemsCollection_Basket.prototype.addItem=function(item){var id=0;if(item instanceof GSI_Resource_Item){id=item.getData('id');this.items.push(item);return true};return false};
function GSI_Controller_ItemsCollection_SearchEngine(padre){this.padre=padre;this.reset()};GSI_Controller_ItemsCollection_SearchEngine.prototype=new GSI_Controller_ItemsCollection();GSI_Controller_ItemsCollection_SearchEngine.prototype._initializeItem=function(item){item.t_type='src'};
function GSI_Resource(){this.resId=parseInt(Math.random()*Math.random()*1000000);this.data;this.loadSteps=0;this.errorStack=new GSI_ErrorStack();this.loaded;var _mthis=this;this.getResource=function(resId){return _mthis.resId==resId?_mthis:false};this.fetch=function(){return new Array()};this.restore=function(){return true};this.setError=function(msg,type){this.errorStack.add(msg,type)};this.getSID=function(){return GSI.getSID()};this.setDataFromJSON=function(data){if(!GSI.functions.isset(data))return true;try{this.data=JSON.parse(data);return true}catch(e){GSI.setError('Invalid JSON response.\n Data : '+data+'\n'+e.message,'ERROR');return false}};this.getLoadSteps=function(){return _mthis.loadSteps};this.getTrackingLines=function(provider){try{return this.data.tracking_eval[provider]}catch(e){return new Array()}};this.request=function(fileName,dataStr,callback,innerCallback,method,errCallback){if(!innerCallback)innerCallback=function(){};if(!callback)callback=function(){};if(!errCallback)errCallback=function(){};var str=fileName,tArrParms=new Array();if(dataStr!=null){str+="?"+dataStr;tArrParms=dataStr.split('=')};var xmlhttp;try{xmlhttp=new ActiveXObject("Msxml2.XMLHTTP")}catch(e){try{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")}catch(oc){xmlhttp=null}};if(!xmlhttp&&typeof XMLHttpRequest!="undefined")xmlhttp=new XMLHttpRequest();if(!xmlhttp)this.setError("Your browser does not support AJAX",'ERROR');if(method=='POST'){xmlhttp.open('POST',fileName,true);xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");xmlhttp.setRequestHeader("Content-length",tArrParms.length);xmlhttp.setRequestHeader("Connection","close")}else{xmlhttp.open('GET',str,true);xmlhttp.setRequestHeader('Content-Type','application/json');dataStr=null};xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState==4)if(parseInt(xmlhttp.status)>=200&&parseInt(xmlhttp.status)<500){innerCallback(xmlhttp.responseText);if(parseInt(xmlhttp.status)>=300&&parseInt(xmlhttp.status)<500)if(errCallback instanceof Function){errCallback(xmlhttp.responseText);xmlhttp=null;return};if(callback instanceof Function)callback(xmlhttp.responseText);xmlhttp=null;return}else{GSI.setError('There was a problem when communicating with the server.\n XMLHttp Status : '+xmlhttp.status,'ERROR');return}};xmlhttp.send(dataStr);return xmlhttp}};
function GSI_Resource_Basket(){this.resId=parseInt(Math.random()*Math.random()*1000000);var _mthis=this;this.collection=new GSI_Controller_ItemsCollection_Basket();this.xsells=new GSI_Controller_ItemsCollection_BasketXsells();this.loaded=null;this.data=null;this.getResource=function(resId){if(_mthis.resId==resId)return _mthis;for(anItem in _mthis.data.items){if(anItem=='indexOf')continue;if(!(_mthis.data[anItem] instanceof GSI_Resource_Item))continue;if(res=_mthis.data.items[anItem].getResource(resId))return res};if(res=_mthis.xsells.getResource(resId))return res;return false};this.fetch=function(){return new Array()};this.restore=function(){return true};this.getItem=function(Id){for(anItem in _mthis.items){if(anItem=='indexOf')continue;if(!(_mthis.items[anItem] instanceof GSI_Resource_Item))continue;var res=false;if(res=_mthis.items[anItem].getItem(Id))return res};if(res=_mthis.xsells.getItem(Id))return res;return false};this.init=function(){resetData()};this.add=function(item,callback,errCallback){if(item instanceof GSI_Resource_Item){var optSku=item.getOptionSku();if(!optSku)return false;if(!insert(item))return false;URL=GSI_SERVICE_PATH+"basket/"+_mthis.getSID()+".json";data='sku='+escape(optSku)+'&qty='+item.quantity+'&t_type='+item.getData('t_type');if(item.getData('paringKey')){data+="&masteritemskukey="+item.getData('paringKey');if(item.getData('vas_message'))data+="&vas_message="+escape(item.getData('vas_message'))+'&masterlineid=-1'}else if(item.getData('masterlineid')){data+="&masterlineid="+item.getData('masterlineid');if(item.getData('vas_message'))data+="&vas_message="+escape(item.getData('vas_message'))};_mthis.request(URL,data,callback,retrieveFeedback,'POST',errCallback);return true};if(item instanceof GSI_Controller_ItemsCollection){var items=item.getItems(),data=new Array(),cnt=0;for(var item in items){var optsku=items[item].getOptionSku();data[cnt++]="qty["+optsku+"]="+items[item]['quantity']};data[cnt]="t_type="+items[item].getData('t_type');data=data.join("&");URL=GSI_SERVICE_PATH+"basket/"+_mthis.getSID()+".json";_mthis.request(URL,data,callback,retrieveFeedback,'POST',errCallback);return true};return false};var addFeedback=function(res){};this.remove=function(prd,callback,lineid){var aLineid=null;if(!(prd instanceof GSI_Resource_Item)){if(typeof lineid!='number'){return false}else aLineid=lineid}else if(!(_mthis.getItemByOptionSku(prd.getOptionSku()))){return false}else aLineid=_mthis.getLineId(prd);URL=GSI_SERVICE_PATH+"basket/"+GSI_PARTNER_ID+"/lines/0.json?";var data="_method=DELETE&lineid="+aLineid;URL+=data;this.request(URL,data,callback,retrieveFeedback,'POST');return true};this.removeLineid=function(lineid,callback){var aLineid=null;if(typeof lineid!='number')return false;aLineid=lineid;URL=GSI_SERVICE_PATH+"basket/"+GSI_PARTNER_ID+"/lines/0.json?";var data="_method=DELETE&lineid="+aLineid;URL+=data;this.request(URL,data,callback,retrieveFeedback,'POST');return true};this.modify=function(lineNum,prd,callback){var tItem=_mthis.getItemByLineNumber(lineNum);if(!tItem)return false;if(tItem.getData('id')!=prd.getData('id'))return false;URL=GSI_SERVICE_PATH+"basket/"+_mthis.getSID()+"/lines/"+_mthis.getLineNumber(prd)+".json";data='sku='+prd.getOptionSku()+'&qty='+prd.quantity;_mthis.request(URL,data+'&_method=PUT',callback,retrieveFeedback,'POST');return true};this.retrieve=function(callback){var errFeedback=function(httpReq){_mthis.data={error:"basket not found"};_mthis.loaded=true;if(callback instanceof Function)callback()};URL=GSI_SERVICE_PATH+"basket/"+_mthis.getSID()+".json?"+new Date().valueOf();data=null;resetData();try{_mthis.request(URL,data,callback,retrieveFeedback,'GET',errFeedback)}catch(e){_mthis.setError('error'+e.message,'ERROR')};return true};var retrieveFeedback=function(res){try{if(!GSI.functions.isset(res)){_mthis.loaded=true;return true};resetData();_mthis.data=JSON.parse(res);for(var index in _mthis.data['LINES']){if(index=='indexOf')continue;var factory=GSI.factories.getFactory('resource'),tItem=factory.createItem(),optSku=_mthis.data['LINES'][index]['sku'],optId=_mthis.data['LINES'][index]['optionid'],itemSku=_mthis.data['LINES'][index]['item_sku'];tItem.setData('id',itemSku);tItem.data.options[optId]={PROPERTIES:_mthis.data['LINES'][index]['PROPERTIES'],sku:optSku};tItem.inBasket=true;tItem.quantity=_mthis.data['LINES'][index]['quantity'];tItem.basket_line=_mthis.data['LINES'][index]['lineposition'];tItem.lineid=_mthis.data['LINES'][index]['lineid'];insert(tItem)};_mthis.loaded=true}catch(e){_mthis.setError('Error setting the data.\nData : '+data+'\n'+e.message,'ERROR');_mthis.data={error:"basket not found"};_mthis.loaded=true;return false}};this.loadLine=function(lineNum,callback){var tItem=_mthis.getItemByLineNumber(lineNum);if(!tItem)return false;tItem.retrieveOption(callback);return true};this.loadLines=function(callback){var queue=new Array();for(var anItem in _mthis.items){if(anItem=='indexOf')continue;queue.push(anItem)}
function load(){var tIndex=queue.shift();if(!tIndex){callback();return true};var tItem=_mthis.items[tIndex];return tItem.retrieveOption(load)};return load()};this.getXsells=function(callback){var xsellFeedBack=function(data){try{var tData=JSON.parse(data);_mthis.xsells.xsellNav=true;if(GSI.functions.count(tData)<=1&&tData.message){callback();return};_mthis.xsells.data=GSI.functions.array_merge(_mthis.xsells.data,tData);for(var aXsell in _mthis.xsells.data.xsell.response.docs){if(aXsell=='indexOf')continue;var factory=GSI.factories.getFactory('resource'),tItem=factory.createItem();tItem.setData('id',_mthis.xsells.data.xsell.response.docs[aXsell]['manufacturer_sku']);tItem.predata=_mthis.xsells.data.xsell.response.docs[aXsell];tItem.resetFilters();_mthis.xsells.addItem(tItem)}}catch(e){_mthis.setError('Error setting the data.\nData : '+data+'\n'+e.message,'ERROR');return false}},item=GSI.activeItem,URL=GSI_SERVICE_PATH+"items/"+item.getData('id')+"/xsells/xsell.json";_mthis.request(URL,null,callback,xsellFeedBack,'GET');return true};var insert=function(item){return _mthis.collection.addItem(item)},resetData=function(){_mthis.data={};_mthis.collection=new GSI_Controller_ItemsCollection_Basket();_mthis.loaded=false;return true};this.getNextItem=function(){return _mthis.collection.getNextItem()};this.getPreviousItem=function(){return _mthis.collection.getPreviousItem()};this.getLineNumber=function(item){if(!(item instanceof GSI_Resource_Item))return false;var lineNum=item.basket_line;if(lineNum)return lineNum;return false};this.getLineId=function(item){if(!(item instanceof GSI_Resource_Item))return false;var lineNum=item.lineid;if(lineNum)return lineNum;return false};this.getItemByLineNumber=function(lineNum){var items=_mthis.collection.getItems();for(var anItem in items){if(anItem=='indexOf')continue;if(items[anItem].basket_line==lineNum)return items[anItem]};return false};this.getItemByOptionSku=function(optSku){var items=_mthis.collection.getItems();for(var anItem in items){if(anItem=='indexOf')continue;if(items[anItem].getOptionSku()==optSku)return items[anItem]};return false};this.getData=function(tag){try{switch(tag){case'num_items':return _mthis.data.num_items;case'subtotal':return _mthis.data.subtotal;case'subtotal_gross':return _mthis.data.subtotal_gross;case'grandtotal':return _mthis.data.grandtotal;case'currencyid':return _mthis.data.currencyid;case'shippingfull':return _mthis.data.shipping.full;default:return _mthis.loaded?_mthis.data[tag]:_mthis.predata[tag]?_mthis.predata[tag]:"undefined"}}catch(e){return _mthis.data[tag]}};this.init()};GSI_Resource_Basket.prototype=new GSI_Resource();
function GSI_Resource_Dictionary(){this.resId=parseInt(Math.random()*Math.random()*1000000);this.loadSteps=2;var _mthis=this;this.data=null;this.loaded=null;this.getResource=function(resId){if(_mthis.resId==resId)return _mthis;return false};this.fetch=function(){return new Array()};this.restore=function(){return true};this.getLoadSteps=function(){return _mthis.loadSteps};this.init=function(){resetData()};this.getPage=function(pageName){if(!_mthis.data[pageName]||_mthis.data[pageName]['preloaded'])return false;return _mthis.data[pageName]};this.addPage=function(pagename){if(!_mthis.getPage(pagename)){_mthis.data[pagename]=new Array();_mthis.data[pagename]['preloaded']=true;return true};return false};this.addTranslations=function(translations){for(var aPage in translations)_mthis._addTranslation(aPage,translations[aPage]);return false};this._addTranslation=function(pagename,tranlations){_mthis.data[pagename]=GSI.functions.array_merge(_mthis.data[pagename],tranlations)};this.getText=function(pagename,key){var tPage=_mthis.getPage(pagename);if(typeof GSI_SHOWDICT!=='undefined'&&GSI_SHOWDICT){var showDict="<span class='GSI_showmeta GSI_showdict' data-meta='"+pagename+"."+key+"'>"+tPage[key]+"</span>";if(GSI.widgets.metatracker)GSI.widgets.metatracker._showMeta();return showDict};if(!tPage){return'{'+pagename+'.'+key+'}'}else if(!tPage[key]){return'['+pagename+'.'+key+']'}else return tPage[key]};this.isTextSet=function(pagename,key){var tPage=_mthis.getPage(pagename);if(!tPage){return false}else if(!tPage[key]){return false}else return true};this.retrievePages=function(callback,pagenames){var retrieveFeedback=function(res){try{if(!GSI.functions.isset(res)){_mthis.loaded=true;return true};var tData=JSON.parse(res);if(!tData)tData={};_mthis.addTranslations(tData);_mthis.loaded=true;GSI.updateProgressBar('Dictionary entries loaded succesfully')}catch(e){_mthis.setError('Error setting the data.\nData : '+data+'\n'+e.message,'ERROR');GSI.updateProgressBar('ERROR loading Dictionary entries');return false}};GSI.updateProgressBar('Loading dictionary entries');URL=GSI_SERVICE_PATH+"dict.json";var data='pages=';if(!pagenames){var _first=true;for(var aPage in _mthis.data){if(aPage=='indexOf')continue;if(_mthis.data[aPage]['preloaded']){var cachedPage=GSI.cache.get('dict_'+aPage);if(cachedPage){_mthis.data[aPage]=JSON.parse(cachedPage);_mthis.data[aPage]['preloaded']=false;continue};if(_first){data+=aPage;_first=false}else data+=','+aPage}}}else data+=pagenames;if(_first){_mthis.loaded=true;GSI.updateProgressBar('Dictionary entries loaded succesfully');callback();return true};data+="&ts="+new Date().valueOf();try{_mthis.request(URL,data,callback,retrieveFeedback,'GET')}catch(e){_mthis.setError('error'+e.message,'ERROR')};return true};var resetData=function(){_mthis.data={};_mthis.loaded=false;return true};this.init()};GSI_Resource_Dictionary.prototype=new GSI_Resource();
function GSI_Resource_Item(){this.init()};GSI_Resource_Item.prototype=new GSI_Resource();GSI_Resource_Item.prototype.resId=null;GSI_Resource_Item.prototype.data=null;GSI_Resource_Item.prototype.predata=null;GSI_Resource_Item.prototype.xsells=null;GSI_Resource_Item.prototype.isXsell=null;GSI_Resource_Item.prototype.t_type=null;GSI_Resource_Item.prototype.active=null;GSI_Resource_Item.prototype.vas=null;GSI_Resource_Item.prototype._activeView=null;GSI_Resource_Item.prototype.activeViewName=null;GSI_Resource_Item.prototype.filters=null;GSI_Resource_Item.prototype.quantity=null;GSI_Resource_Item.prototype.loaded=null;GSI_Resource_Item.prototype.availProperties=null;GSI_Resource_Item.prototype.getResource=function(resId){if(this.resId==resId)return this;if(this.xsells.xsellNav)for(anItem in this.xsells.items){if(anItem=='indexOf')continue;if(!(this.xsells.items[anItem] instanceof GSI_Resource_Item))continue;if(res=this.xsells.items[anItem].getResource(resId))return res};return false};GSI_Resource_Item.prototype.fetch=function(){var tRes=new Array();tRes.filters=GSI.functions.cloneObject(this.filters);tRes.quantity=this.quantity;tRes.resId=this.resId;tRes.resource=this;return tRes};GSI_Resource_Item.prototype.restore=function(data){if(!data)return false;try{if(data.resId!=this.resId)return false;this.filters=data.filters;this.quantity=data.quantity;this.refreshAvailableProperties()}catch(e){this.setError('Could not restore properly. resId -> '+this.resId,'ERROR');return false};return true};GSI_Resource_Item.prototype.init=function(){this._resetData()};GSI_Resource_Item.prototype.refreshAvailableProperties=function(){var tArray=this.filter();this.availProperties=new Array();for(var i in tArray){if(i=='indexOf')continue;for(var j in tArray[i].PROPERTIES){if(j=='indexOf')continue;if(j=='PRIMARY_COLOR')continue;this._addProperty(j,tArray[i].PROPERTIES[j])}};this._sortAvailableProperties();$(this).trigger('refresh')};GSI_Resource_Item.prototype.getPropertyAvailability=function(key){if(!this.loaded)return this.predata[key];if(this.filters[key]==''||this.filters[key]==null||this.filters[key]==undefined)return this.availProperties[key];var tArray=this.filter(key),res=new Array();for(var i in tArray){if(i=='indexOf')continue;for(var j in tArray[i].PROPERTIES){if(j=='indexOf')continue;if(j=='PRIMARY_COLOR')continue;if(key&&j!=key)continue;var k=j,v=tArray[i].PROPERTIES[j];for(var i in res[k]){if(i=='indexOf')continue;if(res[k][i]==v)continue};if(!res[k])res[k]=new Array();res[k].push(v)}};return res[k]};GSI_Resource_Item.prototype._addProperty=function(k,v){for(var i in this.availProperties[k]){if(i=='indexOf')continue;if(this.availProperties[k][i]==v)return false};if(!this.availProperties[k])this.availProperties[k]=new Array();this.availProperties[k].push(v)};GSI_Resource_Item.prototype._sortAvailableProperties=function(){var tAvailProp=new Array();for(var aProp in this.data.PROPERTIES){if(aProp=='indexOf')continue;if(aProp=='PRIMARY_COLOR')continue;if(this.availProperties[aProp]){tAvailProp[aProp]=new Array()}else continue;for(var index in this.data.PROPERTIES[aProp])if(GSI.functions.in_array(this.data.PROPERTIES[aProp][index],this.availProperties[aProp]))tAvailProp[aProp].push(this.data.PROPERTIES[aProp][index])};this.availProperties=tAvailProp;return tAvailProp};GSI_Resource_Item.prototype.filter=function(byPassKey){var res=new Array();if(this.data['type_']=='BUNDLE')return res;var flag=false;for(var anId in this.data.options){if(anId=='indexOf')continue;if(this._filterOption(this.data.options[anId],byPassKey)){res[anId]=this.data.options[anId];flag=true}};if(!flag){return false}else return res};GSI_Resource_Item.prototype._filterOption=function(opt,byPassKey){for(var optName in this.filters){if(optName=='indexOf')continue;if(this.filters[optName]==''||this.filters[optName]==null||this.filters[optName]==undefined)continue;if(optName==byPassKey)continue;if(opt.PROPERTIES[optName]!=this.filters[optName])return false};return true};GSI_Resource_Item.prototype.resetFilters=function(){this.filters=new Array();var def_color=this.getData('default_color');if(def_color&&def_color!="undefined")this.addFilter('COLOR',def_color);this.refreshAvailableProperties()};GSI_Resource_Item.prototype.addFilter=function(name,value){this.filters[name]=value};GSI_Resource_Item.prototype.removeFilter=function(name){try{delete this.filters[name];return true}catch(e){return false};return false};GSI_Resource_Item.prototype.getItem=function(ID){if((ID==this.getData('id')))return this;return this.xsells.getItem(ID)};GSI_Resource_Item.prototype.getData=function(tag){try{switch(tag){case'id':return this.data.manufacturer_sku;case'name':return this.loaded?this.data['content']['INFO']['name']:this.predata['name']?this.predata['name']:"undefined";case'description':return this.loaded?this.data.content.INFO['desc_short']:this.predata['shortdesc']?this.predata['shortdesc']:"undefined";case'orgprice':if(this.loaded){return this.data.PRICE.originaldisplayprice?this.data.PRICE.originaldisplayprice:this.data.PRICE.displayprice?this.data.PRICE.displayprice:"undefined"}else return this.predata['originaldisplayprice']?this.predata.originaldisplayprice:this.predata['displayprice']?this.predata.displayprice:"undefined";case'offrprice':if(this.loaded){return this.data.PRICE.savings_display?this.data.PRICE.displayprice:false}else return this.predata['originaldisplayprice']?this.predata.displayprice:false;case'displayprice':if(this.loaded){return this.data.PRICE.displayprice?this.data.PRICE.displayprice:false}else return false;case'savings_percentage':return this.loaded?this.data.PRICE['savings_percentage']:this.predata['savings_percentage']?this.predata['savings_percentage']:"undefined";case'default_color':if(this.loaded){var def_color=this.data.content.INFO['default_color'];if(def_color&&GSI.functions.in_array(def_color,this.data['PROPERTIES']['COLOR'])){return this.data.content.INFO['default_color']}else return this.data['PROPERTIES']['COLOR'][0]}else return this.predata['default_color']?this.predata['default_color']:"undefined";case'currencyid':return this.loaded?this.data.PRICE['currencyid']:this.predata['currencyid']?this.predata['currencyid']:"undefined";case'url':var type=this.getData('t_type');if(type){var xsell='&t_type='+type}else var xsell='';var tURL=this.data['url']?this.data['url']:this.predata['url']?this.predata['url']:'#';return tURL+xsell;case't_type':switch(true){case this.isXsell:return'pxs';break;case this.isBasketXsell:return'cxs';break;default:return this.t_type};case'video':return this.data.content.INFO['video']?this.data.content.INFO['video']:false;case'collection':return GSI.functions.count(this.predata.collection_keys)>0?this.predata.collection_keys:false;case'promo_label':return GSI.functions.count(this.predata.promo_label)>0?this.predata.promo_label:false;default:return this.loaded?this.data[tag]:this.predata[tag]?this.predata[tag]:"undefined"}}catch(e){return this.data[tag]}};GSI_Resource_Item.prototype.setData=function(tag,value){if(tag=='id'){this.data.manufacturer_sku=value}else this.data[tag]=value};GSI_Resource_Item.prototype.getImage=function(size){if(!this.loaded){if(!this.activeViewName)this.activeViewName='main';if(this.predata['image_'+this.activeViewName+'_'+size]){var selected_color=this.filters['COLOR']?this.filters['COLOR']:this.predata['default_color'];for(var aColorIndex in this.predata['COLOR']){if(aColorIndex=='indexOf')continue;if(this.predata['COLOR'][aColorIndex]==selected_color)break};return GSI_CATALOG_IMG_PATH+size+'/'+this.predata['image_'+this.activeViewName+'_'+size][aColorIndex]};return this.predata['image_'+size]?GSI_CATALOG_IMG_PATH+size+'/'+this.predata['image_'+size][0]:GSI_CATALOG_IMG_PATH+size+'/notavailable.gif'};if(!this._activeView)this.setView('main');try{if(this.filters['COLOR']){var color=this.filters['COLOR']}else{var default_color=this.data['content']['INFO']['default_color'];if(!GSI.functions.isset(default_color))default_color=this.availProperties['COLOR'][0];var color=default_color};if(this.data['type_']=='BUNDLE')color='BUNDLE';return GSI_CATALOG_IMG_PATH+size+'/'+this._activeView[size][color].name}catch(e){if(size.toLowerCase()=='zoom')return false;return GSI_CATALOG_IMG_PATH+size+'/notavailable.gif'}};GSI_Resource_Item.prototype.hasImage=function(size){var image=this.getImage(size);if(!image||image.indexOf('notavailable.gif')!=-1){return false}else return true};GSI_Resource_Item.prototype.setView=function(viewname){if(!this.loaded){this.activeViewName=viewname;return false};try{if(!GSI.functions.isset(this.data.content.IMG.aview)){this._activeView=this.data.content.IMG;this.activeViewName='main';return true};for(var aViewname in this.data.content.IMG.aview)if(aViewname==viewname){this._activeView=this.data.content.IMG.aview[viewname];this.activeViewName=viewname;return true};this._imageView=this.data.content.IMG.aview['main'];this.activeViewName='main';return true}catch(e){this.activeViewName='main';return true}};GSI_Resource_Item.prototype.retrieve=function(callback){var _mthis=this,retrieveFb=function(res){if(_mthis.setDataFromJSON(res)){_mthis.loaded=true;_mthis.resetFilters()}};this.loaded=false;var data=new Array(),t_type=this.getData('t_type');if(t_type)data.push('t_type='+t_type);if(GSI.partner)data.push('p='+GSI.partner);var URL=GSI_SERVICE_PATH+"items/"+this.getData('id')+".json";this.request(URL,data.join('&'),callback,retrieveFb,'GET');return true};GSI_Resource_Item.prototype.getXsells=function(callback){var _mthis=this,xsellFeedBack=function(data){try{var tData=JSON.parse(data);_mthis.xsells.xsellNav=true;if(GSI.functions.count(tData)<=1&&tData.message){callback();return};_mthis.xsells.data=GSI.functions.array_merge(_mthis.xsells.data,tData);for(var aXsell in _mthis.xsells.data.xsell.response.docs){if(aXsell=='indexOf')continue;var factory=GSI.factories.getFactory('resource'),tItem=factory.createItem();tItem.setData('id',_mthis.xsells.data.xsell.response.docs[aXsell]['manufacturer_sku']);tItem.predata=_mthis.xsells.data.xsell.response.docs[aXsell];tItem.resetFilters();_mthis.xsells.addItem(tItem)}}catch(e){GSI.setError('Error setting the data.\nData : '+data+'\n'+e.message,'WARNING');return false}},sku=this.getData('id');if(typeof (sku)=='undefined'){GSI.setError('There is no ID defined for the item to get the Xsells','WARNING');return false};var data=new Array();if(GSI.partner)data.push('p='+GSI.partner);var URL=GSI_SERVICE_PATH+"items/"+sku+"/xsells/xsell.json";this.request(URL,data.join('&'),callback,xsellFeedBack,'GET');return true};GSI_Resource_Item.prototype.insert=function(item){var id=0;if(item instanceof GSI_Resource_Item){id=item.getData('id');item.isXsell=true;this.xsells[id]=item;return true};return false};GSI_Resource_Item.prototype.getNextItem=function(){if(!GSI.functions.isset(this.xsells.xsellNav))return false;return this.xsells.getNextItem()};GSI_Resource_Item.prototype.getPreviousItem=function(){if(!GSI.functions.isset(this.xsellNav))return false;return this.xsells.getPreviousItem()};GSI_Resource_Item.prototype.retrieveOption=function(callback){var _mthis=this,retrieveFb=function(res){if(_mthis.setDataFromJSON(res))_mthis.loaded=true};this.loaded=false;var optSku=this.getOptionSku();if(!optSku)return false;var URL=GSI_SERVICE_PATH+"items/"+this.getData('id')+"/options/"+optSku+".json";this.request(URL,null,callback,retrieveFb,'GET');return true};GSI_Resource_Item.prototype.getStock=function(callback){var _mthis=this,getStockFeedback=function(res){try{var arrayData=JSON.parse(res);_mthis.data=GSI.functions.array_merge(_mthis.data,arrayData);var arrayOptions=_mthis.filter();if(GSI.functions.count(arrayOptions)==1){var anOption=arrayOptions.pop();anOption.STOCK=arrayData};$(_mthis).trigger('endStock')}catch(e){_mthis.setError('Error setting the data.\nData : '+data+'\n'+e.message,'ERROR');$(_mthis).trigger('endStock');return false}},URL=GSI_SERVICE_PATH+"items/"+this.getData('id');if(!this.canCheckStock())return false;if(GSI_STOCK_CHECK_OFF)return true;var optSku=this.getOptionSku();if(!optSku){this.data.available=0;return false};var data=new Array();if(GSI.partner)data.push('p='+GSI.partner);data.push(new Date().valueOf());URL+="/options/"+optSku+"/stock.json";$(this).trigger('startStock');this.request(URL,data.join('&'),callback,getStockFeedback,'GET');return true};GSI_Resource_Item.prototype.subscribeToNotifyMe=function(email,callback,errCallback){var _mthis=this,subscribeToNotifyMeFeedback=function(res){try{arrayData=JSON.parse(res);callback(arrayData)}catch(e){_mthis.setError('Error setting the data.\nData : '+data+'\n'+e.message,'ERROR');return false}},subscribeToNotifyMeFeedbackErr=function(res){try{arrayData=JSON.parse(res);errCallback(arrayData)}catch(e){_mthis.setError('Error setting the data.\nData : '+data+'\n'+e.message,'ERROR');return false}},URL=GSI_SERVICE_PATH+"notifyme.json",optSku=this.getOptionSku();if(!optSku){this.data.available=0;return false};var data=new Array();data.push('item_sku='+this.getData('id'));data.push('option_sku='+encodeURIComponent(optSku));data.push('email='+encodeURIComponent(email));data.push('subscription_type=cannot_buy');this.request(URL,data.join('&'),null,subscribeToNotifyMeFeedback,'GET',subscribeToNotifyMeFeedbackErr);return true};GSI_Resource_Item.prototype.getOptionSku=function(){if(this.data['type_']=='BUNDLE')return this.getData('id');var tag='sku';if(GSI.functions.count(this.data.options)==1){var optSku=GSI.functions.getElementFromArray(this.data.options,0);return optSku[tag]};var tArray=this.filter();if(GSI.functions.count(tArray)==1){var optSku=GSI.functions.getElementFromArray(tArray,0);return optSku[tag]}else return false};GSI_Resource_Item.prototype.getOptionId=function(){if(this.data['type_']=='BUNDLE')return this.getData('id');if(GSI.functions.count(this.data.options)==1){var optId=GSI.functions.getKeyFromArray(this.data.options,0);return optId};var tArray=this.filter();if(GSI.functions.count(tArray)==1){var optId=GSI.functions.getKeyFromArray(tArray,0);return optId}else return false};GSI_Resource_Item.prototype.inStock=function(){if(GSI_STOCK_CHECK_OFF||this.data.available==1)return true;return false};GSI_Resource_Item.prototype.canCheckStock=function(){if(GSI.functions.count(this.filters)==GSI.functions.count(this.availProperties))return true;if(this.data['type_']=='BUNDLE'){return true}else return false};GSI_Resource_Item.prototype.getOutfitXsells=function(callback){if(typeof GSI_Resource_OutfitXsells=='function'){this.outfitXsells=new GSI_Resource_OutfitXsells();this.outfitXsells.setItem(this);this.outfitXsells.getOutfits(callback);return true};return false};GSI_Resource_Item.prototype._resetData=function(){this.data={manufacturer_sku:'0',available:0,options:{},PROPERTIES:{}};this.predata=false;this.filters=new Array();this.loaded=false;this.active=true;this.vas=typeof GSI_Resource_ValueAddedServices=='function'?new GSI_Resource_ValueAddedServices():null;this.quantity=1;this.availProperties=new Array();this._activeView=null;this.activeViewName='main';this.xsells=new GSI_Controller_ItemsCollection_ItemXsells();this.resId=parseInt(Math.random()*Math.random()*1000000);this.isXsell=false;this.t_type='';return true};
function GSI_Resource_Form(){this.resId=parseInt(Math.random()*Math.random()*1000000);var _mthis=this;this._DOMForm=null;this.loaded=null;this.data=null;this.getResource=function(resId){if(_mthis.resId==resId)return _mthis;for(anItem in _mthis.data.items){if(anItem=='indexOf')continue;if(!(_mthis.data[anItem] instanceof GSI_Resource_Item))continue;if(res=_mthis.data.items[anItem].getResource(resId))return res};return false};this.fetch=function(){return new Array()};this.restore=function(){return true};this.init=function(){_mthis._resetData()};this.submit=function(callback,errCallback){var submitFeedback=function(res){try{if(!GSI.functions.isset(res)){_mthis.loaded=true;return true};_mthis._resetData();_mthis.data=JSON.parse(res);_mthis.loaded=true;callback()}catch(e){_mthis.setError('Error setting the data.\nData : '+data+'\n'+e.message,'ERROR');return false}},submitFeedbackErr=function(res){try{if(!GSI.functions.isset(res)){_mthis.loaded=true;return true};_mthis._resetData();_mthis.data=JSON.parse(res);_mthis.loaded=true;errCallback()}catch(e){_mthis.setError('Error setting the data.\nData : '+data+'\n'+e.message,'ERROR');return false}};URL=GSI_SERVICE_PATH+"form/"+_mthis.getFormName()+".json";data=_mthis.getDataLine();_mthis.request(URL,data,submitFeedback,null,_mthis.getFormMethod(),submitFeedbackErr);return true};this.getFormMethod=function(){return _mthis._DOMForm.method.toUpperCase()};this.getFormName=function(){return _mthis._DOMForm.name};this.getDataLine=function(){var data=new Array();$('input, select, textarea, button',_mthis._DOMForm).each(function(){if(this.type=="checkbox"&&!this.checked)return;data.push(this.name+'='+$(this).val())});return data.join("&")};this.setForm=function(Form){_mthis._DOMForm=Form};this._resetData=function(){_mthis.data={};_mthis.loaded=false;return true};this.init()};GSI_Resource_Form.prototype=new GSI_Resource();
function GSI_Resource_RecentlyViewedProducts(){this.resId=parseInt(Math.random()*Math.random()*1000000);var _mthis=this;this.collection=null;this.loaded=null;this.data=null;this.getResource=function(resId){if(_mthis.resId==resId)return _mthis;return _mthis.collection.getResource(resId)};this.fetch=function(){return new Array()};this.restore=function(){return true};this.getItem=function(Id){return _mthis.collection.getItem(Id)};this.init=function(){resetData()};this.add=function(prd,parms,callback){var rvpAddFeedback=function(res){};if(!GSI.functions.isset(callback))callback=function(){};URL=GSI_SERVICE_PATH+"rvp/"+prd.getData('id')+".json";data="";var p1=true;for(var aParm in parms){if(aParm=='indexOf')continue;if(p1){data+=aParm+'='+parms[aParm]}else data+='&'+aParm+'='+parms[aParm];p1=false};_mthis.request(URL,data,rvpAddFeedback,callback,'POST');return true};this.retrieve=function(callback){var retrieveFeedback=function(res){try{if(!GSI.functions.isset(res)){_mthis.loaded=true;return true};var tData=JSON.parse(res);if(!tData)tData={};_mthis.data=tData;if(!_mthis.data.response)return true;for(var aRVP in _mthis.data.response.docs){if(aRVP=='indexOf')continue;var factory=GSI.factories.getFactory('resource'),tItem=factory.createItem();tItem.setData('id',_mthis.data.response.docs[aRVP]['manufacturer_sku']);tItem.predata=_mthis.data.response.docs[aRVP];tItem.resetFilters();insert(tItem)};_mthis.loaded=true}catch(e){_mthis.setError('Error setting the data.\nData : '+data+'\n'+e.message,'ERROR');return false}};URL=GSI_SERVICE_PATH+"rvp.json?"+new Date().valueOf();data=null;resetData();try{_mthis.request(URL,data,callback,retrieveFeedback,'GET')}catch(e){_mthis.setError('error'+e.message,'ERROR')};return true};var insert=function(item){return _mthis.collection.addItem(item)},resetData=function(){_mthis.data={};_mthis.collection=new GSI_Controller_ItemsCollection_ItemRVP();_mthis.loaded=false;return true};this.getItems=function(){return _mthis.collection.getItems()};this.getNextItem=function(){return _mthis.collection.getNextItem()};this.getPreviousItem=function(){return _mthis.collection.getPreviousItem()};this.getItemByOptionSku=function(optSku){for(var anItem in _mthis.collection.items){if(anItem=='indexOf')continue;if(_mthis.collection.items[anItem].getOptionSku()==optSku)return _mthis.collection.items[anItem]};return false};this.init()};GSI_Resource_RecentlyViewedProducts.prototype=new GSI_Resource();
function GSI_Resource_ValueAddedServices(){this.resId=parseInt(Math.random()*Math.random()*1000000);this.collection=null;this.loaded=null;this.data=null;this.init()};GSI_Resource_ValueAddedServices.prototype=new GSI_Resource();GSI_Resource_ValueAddedServices.prototype.getResource=function(resId){if(this.resId==resId)return this;return this.collection.getResource(resId)};GSI_Resource_ValueAddedServices.prototype.fetch=function(){return new Array()};GSI_Resource_ValueAddedServices.prototype.restore=function(){return true};GSI_Resource_ValueAddedServices.prototype.getItem=function(Id){return this.collection.getItem(Id)};GSI_Resource_ValueAddedServices.prototype.init=function(){this._resetData()};GSI_Resource_ValueAddedServices.prototype.add=function(item,callback,errCallback){var _mthis=this,retrieveFeedback=function(res){GSI.tracking.tag('RetrieveFeedback')};try{if(item instanceof GSI_Resource_Item){URL=GSI_SERVICE_PATH+"basket/"+_mthis.getSID()+".json";data="qty="+item.data["qty"]+"&sku="+item.data["option_sku"];data+="&masterlineid="+item.data["masterlineid"];data+="&masteritemskukey="+item.data["masteritemskukey"];data+="&vas_message="+item.data["message"];_mthis.request(URL,data,callback,retrieveFeedback,'POST',errCallback);return true}}catch(e){console.log(e.message)}};GSI_Resource_ValueAddedServices.prototype.retrieve=function(serv,callback){var _mthis=this,retrieveFeedback=function(res){try{if(!GSI.functions.isset(res)){_mthis.loaded=true;return true};var tData=JSON.parse(res);if(!tData)tData={};_mthis.data=tData;var factory=GSI.factories.getFactory('resource'),tItem=factory.createItem();tItem.setData('id',_mthis.data['manufacturer_sku']);tItem.data=_mthis.data;tItem.resetFilters();tItem.loaded=true;_mthis._insert(tItem);_mthis.loaded=true}catch(e){_mthis.setError('Error setting the data.\nData : '+data+'\n'+e.message,'ERROR');return false}};URL=GSI_SERVICE_PATH+"vas/"+serv+"/vas.json?"+new Date().valueOf();data=null;this._resetData();try{_mthis.request(URL,data,callback,retrieveFeedback,'GET')}catch(e){_mthis.setError('error'+e.message,'ERROR')};return true};GSI_Resource_ValueAddedServices.prototype._insert=function(item){return this.collection.addItem(item)};GSI_Resource_ValueAddedServices.prototype._resetData=function(){this.data={};this.collection=new GSI_Controller_ItemsCollection_ItemVAS();this.loaded=false;return true};GSI_Resource_ValueAddedServices.prototype.getItems=function(){return this.collection.getItems()};GSI_Resource_ValueAddedServices.prototype.getNextItem=function(){return this.collection.getNextItem()};GSI_Resource_ValueAddedServices.prototype.getPreviousItem=function(){return this.collection.getPreviousItem()};GSI_Resource_ValueAddedServices.prototype.getItemByOptionSku=function(optSku){for(var anItem in this.collection.items){if(anItem=='indexOf')continue;if(this.collection.items[anItem].getOptionSku()==optSku)return this.collection.items[anItem]};return false};
function GSI_Resource_SearchEngine(){this.resId=parseInt(Math.random()*Math.random()*1000000);this.xmlhttp=null;this.facets=null;this.fields=null;this.collection=null;this.page=null;this.pageSize=null;this.viewAll=false;this.sorters=null;this.loaded=false;this.connected=true;this.data=null;var _mthis=this;this.getResource=function(resId){return _mthis.collection.getResource(resId)};this.fetch=function(){var tRes=new Array();tRes.data=GSI.functions.cloneObject(_mthis.data);tRes.facets=GSI.functions.cloneObject(_mthis.facets);tRes.sorters=GSI.functions.cloneObject(_mthis.sorters);tRes.page=_mthis.page;tRes.pageSize=_mthis.pageSize;tRes.loaded=_mthis.loaded;tRes.resId=_mthis.resId;tRes.resource=_mthis;return tRes};this.restore=function(data){if(!data)return false;try{if(data.resId!=_mthis.resId)return false;_mthis.data=data.data;_mthis.facets=data.facets;_mthis.sorters=data.sorters;_mthis.page=data.page;_mthis.pageSize=data.pageSize;_mthis.setDataFromJSON(JSON.stringify(_mthis.data));_mthis.loaded=data.loaded}catch(e){_mthis.setError('Could not restore properly. resId -> '+_mthis.resId,'ERROR');return false};return true};this.init=function(){resetData()};this.getQueryString=function(){var str='';for(var aFacet in _mthis.facets){if(aFacet=='indexOf')continue;if(_mthis.facets[aFacet]!=''){str+=escape('f_'+aFacet)+'='+escape(_mthis.facets[aFacet])+'&';str+=escape('fc_'+aFacet)+'&'}};for(var aField in _mthis.fields){if(aField=='indexOf')continue;if(_mthis.fields[aField]!='')str+=escape('f_'+aField)+'='+escape(_mthis.fields[aField])+'&'};if(GSI.functions.count(_mthis.sorters)>0){str+='sort_by=';for(var aSorter in _mthis.sorters){if(aSorter=='indexOf')continue;if(_mthis.sorters[aSorter])str+=escape(_mthis.sorters[aSorter])+','};str+='&'};if(_mthis.pageSize>0)str+='page_size='+escape(_mthis.pageSize)+'&';if(_mthis.viewAll)str+='viewall='+_mthis.viewAll+'&';var tmp=GSI.functions.parse_url(document.location.href),secid=tmp.queryKey['secid'];if(typeof (secid)!='undefined'){str+='secid='+secid+'&'}else if(typeof GSI_SECID!='undefined')str+='secid='+GSI_SECID+'&';str+='page='+_mthis.page;return str};this.setQueryString=function(queryStr){if(!GSI.functions.isset(queryStr))queryStr='';var oldQueryStr=this.getQueryString();this.resetAll();queryStr=queryStr.replace(/\+/g,' ');var tStr=queryStr.split("?",2);tStr=tStr.pop();if(!GSI.functions.isset(tStr))return;var tParms=tStr.split('&'),tFacet=null,tFacetsList=new Array();for(var aParm in tParms){if(isNaN(aParm))continue;if(tParms[aParm].indexOf('fc_')!=-1){tFacet=tParms[aParm].split('=',2);if(tFacet[0]!='')tFacetsList.push(tFacet[0].replace('fc_',''))}};for(var aParm in tParms){if(isNaN(aParm))continue;if(tParms[aParm].indexOf('f_')==0){tFacet=tParms[aParm].split('=',2);if(tFacet[1]!='')if(GSI.functions.in_array((tFacet[0].replace('f_','')),tFacetsList)){_mthis.addFacet(unescape(tFacet[0].replace('f_','')),unescape(tFacet[1]))}else _mthis.addField(unescape(tFacet[0].replace('f_','')),unescape(tFacet[1]));continue};if(tParms[aParm].indexOf('page_size=')!=-1){tFacet=tParms[aParm].split('=',2);if(tFacet[1]!='')_mthis._setPageSizeParameters(tFacet[1]);continue};if(tParms[aParm].indexOf('page=')!=-1){tFacet=tParms[aParm].split('=',2);if(tFacet[1]!='')_mthis._setPage(tFacet[1]);continue};if(tParms[aParm].indexOf('sort_by=')!=-1){tFacet=tParms[aParm].split('=',2);if(tFacet[1]!=''){var normalizedSorters=tFacet[1].replace(/_(asc|desc)/g,' $1');_mthis._setSortParameters(normalizedSorters)};continue};if(tParms[aParm].indexOf('viewall=')!=-1){tFacet=tParms[aParm].split('=',2);if(tFacet[1]!='')_mthis._setViewAll(tFacet[1])}};if(oldQueryStr==this.getQueryString()){return false}else return true};this.addSorter=function(facetName,asc){str=facetName;if(asc){str+='_asc'}else str+='_desc';_mthis.sorters[facetName]=str};this.removeSorter=function(facetName){delete _mthis.sorters[facetName]};this.resetSorters=function(){_mthis.sorters=new Array()};this.isSorterSet=function(facetName,asc){var str=facetName;if(asc){str+='_asc'}else str+='_desc';if(_mthis.sorters[facetName]&&_mthis.sorters[facetName]==str){return true}else return false};this.addFacet=function(name,value){if(_mthis.facets[name]){if(String(_mthis.facets[name]).indexOf(',')==-1)_mthis.facets[name]+=',';_mthis.facets[name]+=value+','}else _mthis.facets[name]=value};this.removeFacet=function(name,value){if(!GSI.functions.isset(value)){delete this.facets[name];return true};var v=value.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),regE=new RegExp(v+"\,{0,}","g");this.facets[name]=this.facets[name].replace(regE,'');if(this.facets[name]==',')delete this.facets[name];return true};this.isFacetSet=function(name,value){if(!GSI.functions.isset(value)){if(this.facets[name])return true;return false};if(this.facets[name]==value&&this.facets[name].indexOf(value)!=-1)return true;if(this.facets[name]){var vals=this.facets[name].split(',');for(var aVal in vals)if(vals[aVal]==value)return true};return false};this.getSetFacets=function(){return GSI.functions.cloneObject(this.facets)};this.getAllFacets=function(){return GSI.functions.cloneObject(this.data['facet_counts']['facet_fields'])};this.resetFacets=function(){_mthis.collection.reset();_mthis.facets=new Array();_mthis.page=1;return true};this.addField=function(name,value){if(_mthis.fields[name]){if(String(_mthis.fields[name]).indexOf(',')==-1)_mthis.fields[name]+=',';_mthis.fields[name]+=value+','}else _mthis.fields[name]=value};this.removeField=function(name,value){if(!GSI.functions.isset(value)){delete _mthis.fields[name];return true};var regE=new RegExp(value+"\,{0,}","g");_mthis.fields[name]=_mthis.fields[name].replace(regE,'');if(_mthis.fields[name]==',')delete _mthis.fields[name];return true};this.isFieldSet=function(name,value){if(!GSI.functions.isset(value)){if(_mthis.fields[name])return true;return false};if(_mthis.fields[name]&&_mthis.fields[name].indexOf(value)!=-1)return true;return false};this.resetAll=function(){_mthis.collection.reset();_mthis.fields=new Array();_mthis.facets=new Array();_mthis.resetSorters();_mthis.page=1;_mthis.pageSize=null;return true};this.addRange=function(facetName,valueFrom,valueTo){if(valueFrom>=0){_mthis.removeFacet(facetName+'_from');_mthis.addFacet(facetName+'_from',valueFrom)};if(valueTo>=0){_mthis.removeFacet(facetName+'_to');_mthis.addFacet(facetName+'_to',valueTo)}};this._setSortParameters=function(sortParameters){this.resetSorters();var sortParametersPieces=sortParameters.split(','),sortParameter=null,i=0,n=sortParametersPieces.length;for(i=0;i<n;i++){sortParameter=sortParametersPieces[i].replace(/^\s+|\s+$/g,"");sortParameterPieces=sortParameter.split(' ');if(sortParameterPieces[0]!='')this.addSorter(sortParameterPieces[0],sortParameterPieces[1]=='asc')}};this._setViewAll=function(viewall){if(viewall==="true"){_mthis.viewAll=true}else _mthis.viewAll=false};this._setPage=function(page){_mthis.page=page};this._setPageSizeParameters=function(pageSizeParameter){_mthis.pageSize=pageSizeParameter};this.setData=function(data,cumulative){try{_mthis.data=data;tResults=_mthis.data['response']['docs'];if(cumulative)tItems=_mthis.getItems();_mthis.collection.reset();_mthis.page=1;var pageSizeParameter=_mthis.data['responseHeader']['params']['rows'];_mthis._setPageSizeParameters(pageSizeParameter);var sortParameters=_mthis.data['responseHeader']['params']['sort'];_mthis._setSortParameters(sortParameters);for(var index in _mthis.data['response']['docs']){if(index=='indexOf')continue;var factory=GSI.factories.getFactory('resource'),tItem=factory.createItem();tItem.setData('id',_mthis.data['response']['docs'][index]['manufacturer_sku']);tItem.predata=_mthis.data['response']['docs'][index];tItem.resetFilters();_mthis.insert(tItem)};if(cumulative)for(var i in tItems){if(i=='indexOf')continue;_mthis.insert(tItems[i])};try{for(var aPage in _mthis.data.pagination.links){if(aPage=='indexOf')continue;if(_mthis.data.pagination.links[aPage]=='current')_mthis.page=parseInt(aPage)}}catch(e){};_mthis.loaded=true}catch(e){_mthis.loaded=false;_mthis.setError('Error setting the data.\nData : '+data+'\n'+e.message,'ERROR');return false}};this.setDataFromJSON=function(data,cumulative){try{var JSONdata=JSON.parse(data);this.setData(JSONdata,cumulative)}catch(e){_mthis.loaded=false;_mthis.setError('Error setting the data.\nData : '+data+'\n'+e.message,'ERROR');return false}};this.search=function(callback,queryStr,cumulative){var _mthis=this;$(_mthis).trigger('startSearch');if(!GSI.functions.isset(cumulative))cumulative=false;var searchFeedback=function(response){_mthis.setDataFromJSON(response,cumulative);_mthis.xmlhttp=null;if(_mthis.data['response']){_mthis.connected=true}else _mthis.connected=false;$(_mthis).trigger('endSearch')};_mthis.loaded=false;URL=GSI_SERVICE_PATH+"search.json";data=queryStr?queryStr:_mthis.getQueryString();data+="&ts="+new Date().valueOf();if(_mthis.xmlhttp)try{_mthis.setError('Aborting call','INFO');_mthis.xmlhttp.abort()}catch(e){_mthis.setError('Error while aborting call','ERROR')};_mthis.xmlhttp=_mthis.request(URL,data,callback,searchFeedback,'GET')};this.getItem=function(Id){return _mthis.collection.getItem(Id)};this.getItems=function(){return _mthis.collection.getItems()};this.insert=function(item){return _mthis.collection.addItem(item)};this.getNextItem=function(){return _mthis.collection.getNextItem()};this.getPreviousItem=function(){return _mthis.collection.getPreviousItem()};this.getPage=function(pageNum,callback){_mthis.page=pageNum;URL=GSI_SERVICE_PATH+"search.json";data=_mthis.getQueryString();data+="&ts="+new Date().valueOf();_mthis.request(URL,data,callback,getPageFeedback,'GET')};this.xsells=null;this.getXsells=function(callback){var xsellFeedBack=function(data){try{var tData=JSON.parse(data);if((GSI.functions.count(tData)<=1&&tData.xsell['message'])||(tData.xsell['error'])){var tmp=GSI.functions.parse_url(document.location.href),secid=tmp.queryKey['secid'];if(typeof (secid)!='undefined')return _mthis._getSectionDefaultXsells(callback,secid)};_mthis.xsells=item.xsells;callback()}catch(e){_mthis.setError('Error setting the data.\nData : '+data+'\n'+e.message,'ERROR');return false}},item=GSI.functions.getElementFromArray(this.collection.items,0);if(item instanceof GSI_Resource_Item){item.getXsells(xsellFeedBack);return true}else{GSI.setError('First item in SE is undefined','INFO');return false}};this._getSectionDefaultXsells=function(callback,secid){var SectionDeafultXsellFeedBack=function(data){try{_mthis.xsells=new GSI_Controller_ItemsCollection();var tData=JSON.parse(data);_mthis.xsells.xsellNav=true;if(GSI.functions.count(tData)<=1&&tData.message){callback();return};_mthis.xsells.data=tData;for(var aXsell in _mthis.xsells.data.xsell.response.docs){if(aXsell=='indexOf')continue;var factory=GSI.factories.getFactory('resource'),tItem=factory.createItem();tItem.setData('id',_mthis.xsells.data.xsell.response.docs[aXsell]['manufacturer_sku']);tItem.predata=_mthis.xsells.data.xsell.response.docs[aXsell];_mthis.xsells.addItem(tItem)};callback()}catch(e){_mthis.setError('Error setting the data.\nData : '+data+'\n'+e.message,'ERROR');return false}},URL=GSI_SERVICE_PATH+"sections/"+secid+"/xsell.json";this.request(URL,null,null,SectionDeafultXsellFeedBack,'GET');return true};var getPageFeedback=function(response){_mthis.setDataFromJSON(response,true);_mthis.xmlhttp=null;if(_mthis.data['response']){_mthis.connected=true}else _mthis.connected=false},resetData=function(){_mthis.data={};_mthis.collection=new GSI_Controller_ItemsCollection_SearchEngine();return _mthis.resetAll()};this.init()};GSI_Resource_SearchEngine.prototype=new GSI_Resource();
function GSI_Resource_Application(){this.version='$Revision: 38764 $';this.resId=parseInt(Math.random()*Math.random()*1000000);this.hasHistoric=false;this.SID=null;this.partner=null;this.errorStack=new GSI_ErrorStack();this.se=null;this.basket=null;this.rvp=null;this.vas=null;this.activeItem=null;var timestamp=null,_mthis=this;this.getResource=function(resId){if(_mthis.resId==resId)return _mthis;if(_mthis.activeItem instanceof GSI_Resource_Item)if(res=_mthis.activeItem.getResource(resId))return res;if(_mthis.basket)if(res=_mthis.basket.getResource(resId))return res;if(_mthis.se)if(res=_mthis.se.getResource(resId))return res;if(_mthis.rvp)if(res=_mthis.rvp.getResource(resId))return res;if(_mthis.vas)if(res=_mthis.vas.getResource(resId))return res;return false};this.fetch=function(){var tRes=new Array();if(_mthis.activeItem instanceof GSI_Resource_Item)tRes.activeItemId=_mthis.activeItem.getData('id');tRes.resId=_mthis.resId;tRes.resource=_mthis;return tRes};this.restore=function(data){if(!data)return false;try{if(data.resId!=_mthis.resId)return false;if(data.activeItemId){_mthis.setActiveItem(data.activeItemId)}else _mthis.activeItem=null}catch(e){_mthis.setError('Could not restore properly. resId -> '+_mthis.resId,'ERROR');return false};return true};this.init=function(){_mthis.SID=null;timestamp=new Date().valueOf();_mthis.activeItem=null;_mthis.basket=new GSI_Resource_Basket();_mthis.se=new GSI_Resource_SearchEngine();_mthis.rvp=new GSI_Resource_RecentlyViewedProducts();_mthis.vas=typeof GSI_Resource_ValueAddedServices=='function'?new GSI_Resource_ValueAddedServices():null;_mthis.dict=new GSI_Resource_Dictionary()};this.setError=function(msg,type){_mthis.errorStack.add(msg,type)};this.getItem=function(ID){var res=false;if(_mthis.activeItem instanceof GSI_Resource_Item)if(res=_mthis.activeItem.getItem(ID))return res;if(_mthis.se)if(res=_mthis.se.getItem(ID))return res;if(_mthis.basket)if(res=_mthis.basket.getItem(ID))return res;if(_mthis.rvp)if(res=_mthis.rvp.getItem(ID))return res;if(_mthis.vas)if(res=_mthis.vas.getItem(ID))return res;return false};this.getLoadSteps=function(){var total=0;total+=_mthis.dict.getLoadSteps();total+=_mthis.basket.getLoadSteps();total+=_mthis.se.getLoadSteps();total+=_mthis.rvp.getLoadSteps();total+=_mthis.vas.getLoadSteps()?_mthis.vas.getLoadSteps():0;total+=_mthis.widgets.getLoadSteps();return total};this.setActiveItem=function(ID){if(ID instanceof GSI_Resource_Item){_mthis.activeItem=ID;return ID};var tRes=_mthis.getItem(ID);if(tRes)_mthis.activeItem=tRes;return tRes};this.getSID=function(){return _mthis.SID};this.updateProgressBar=function(text){if(_mthis.progressBar)_mthis.progressBar.update(text)};this.functions={};this.init()};GSI_Resource_Application.prototype=new GSI_Resource();var GSI=new GSI_Resource_Application(null);
var GSI_Functions=function(){this.browserVersion=function(userAgent,version){if(jQuery.browser[userAgent]){var aVersion=parseInt(jQuery.browser.version);if(aVersion==version)return true};return false};this.count=function(arr){if(typeof (arr)=='string')return 0;if(typeof (arr)=='function')return 0;if(typeof (arr)=='number')return 0;var cnt=0;for(var index in arr){if(index=='indexOf')continue;if(this.isset(arr[index]))cnt++};return cnt};this.isset=function(tObj){if(typeof tObj=="undefined")return false;if(tObj==null)return false;return true};this.number_format=function(a,b,c,d){a=Math.round(a*Math.pow(10,b))/Math.pow(10,b);e=a+'';var f=e.split('.');if(!f[0])f[0]='0';if(!f[1])f[1]='';if(f[1].length<b){g=f[1];for(i=f[1].length+1;i<=b;i++)g+='0';f[1]=g};if(d!=''&&f[0].length>3){h=f[0];f[0]='';for(j=3;j<h.length;j+=3){i=h.slice(h.length-j,h.length-j+3);f[0]=d+i+f[0]+''};j=h.substr(0,(h.length%3==0)?3:(h.length%3));f[0]=j+f[0]};c=(b<=0)?'':c;return f[0]+c+f[1]};this.getElementFromArray=function(arr,position){if(isNaN(position))return false;var cnt=0;for(var index in arr){if(index=='indexOf')continue;if(cnt==position)return arr[index];cnt++};return false};this.getKeyFromArray=function(arr,position){if(isNaN(position))return false;var cnt=0;for(var index in arr){if(index=='indexOf')continue;if(cnt==position)return index;cnt++};return false};this.moneyFormat=function(num,currencyId){var currencies={'default':{decSep:".",thsep:",",pos:"L",numdecs:2,sym:"",sepSpace:' '}};if(GSI_PartnerCurrency!='undefined'){currencies=GSI_PartnerCurrency}else return'';if(!currencies[currencyId])currencyId='default';if(isNaN(num))num="0";var str=GSI.functions.number_format(num,currencies[currencyId]['numdecs'],currencies[currencyId]['decSep'],currencies[currencyId]['thsep']);if(currencies[currencyId]['pos']=="L"){str=currencies[currencyId]['sym']+currencies[currencyId]['sepSpace']+str}else str+=currencies[currencyId]['sepSpace']+currencies[currencyId]['sym'];return str};this.array_merge=function(arr1,arr2,clone){var _FLAG=false;if(!GSI.functions.isset(arr1))arr1=[];if(!GSI.functions.isset(arr2))arr2=[];if(clone){var resultArray=this.cloneObject(arr1)}else var resultArray=arr1;for(var aKey in arr2){if(aKey=='indexOf')continue;if(aKey=='length')continue;if(GSI.functions.count(arr2[aKey])>0&&resultArray[aKey]){if(arr2[aKey] instanceof jQuery){resultArray[aKey]=arr2[aKey]}else resultArray[aKey]=GSI.functions.array_merge(resultArray[aKey],arr2[aKey])}else resultArray[aKey]=arr2[aKey]};return resultArray};this.cloneObject=function(obj){if(!obj)return false;var tRes={};for(var anElem in obj){if(anElem=='indexOf')continue;if(GSI.functions.count(obj[anElem])>0){if(obj[anElem] instanceof jQuery){tRes[anElem]=obj[anElem]}else tRes[anElem]=GSI.functions.cloneObject(obj[anElem])}else tRes[anElem]=obj[anElem]};return tRes};this.in_array=function(needle,haystack){try{for(var i in haystack){if(i=='indexOf')continue;if(haystack[i]==needle)return true};return false}catch(e){return false}};this.getScrollXY=function(){var scrOfX=0,scrOfY=7;if(typeof (window.pageYOffset)=='number'){scrOfY=window.pageYOffset;scrOfX=window.pageXOffset}else if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){scrOfY=document.body.scrollTop;scrOfX=document.body.scrollLeft}else if(document.documentElement&&(document.documentElement.scrollLeft||document.documentElement.scrollTop)){scrOfY=document.documentElement.scrollTop;scrOfX=document.documentElement.scrollLeft};return[scrOfX,scrOfY]};this.checkForFlash=function(version){if(isNaN(version))version=0;var flashIsInstalled=false,flash;if(window.ActiveXObject){try{flash=new ActiveXObject(("ShockwaveFlash.ShockwaveFlash."+version));flashIsInstalled=true}catch(e){}}else if(navigator.plugins&&navigator.mimeTypes.length>0){flash=navigator.plugins["Shockwave Flash"];if(flash){var flashVersion=navigator.plugins["Shockwave Flash"].description.replace(/.*\s(\d+\.\d+).*/,"$1");if(flashVersion>=version)flashIsInstalled=true}};return flashIsInstalled};this.isEmailValid=function(email,required){var allValidChars=function(email){var parsed=true,validchars="abcdefghijklmnopqrstuvwxyz0123456789@!#$%&'*+-/=?^_`.{|}~";for(var i=0;i<email.length;i++){var letter=email.charAt(i).toLowerCase();if(validchars.indexOf(letter)!=-1)continue;parsed=false;break};return parsed};if(required==undefined)required=true;if(email==null){if(required)return false;return true};if(email.length==0){if(required)return false;return true};if(!allValidChars(email))return false;if(email.indexOf("@")<1){return false}else if(email.lastIndexOf(".")<=email.indexOf("@")){return false}else if(email.indexOf("@")==email.length){return false}else if(email.indexOf("..")>=0){return false}else if(email.indexOf(".")==email.length)return false;return true};this.ucwords=function(str){return(str+'').replace(/^(.)|\s(.)/g,function($1){return $1.toUpperCase()})};this.parse_url=function(str,component){var o={strictMode:false,key:["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],q:{name:"queryKey",parser:/(?:^|&)([^&=]*)=?([^&]*)/g},parser:{strict:/^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,loose:/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/\/?)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/}},m=o.parser[o.strictMode?"strict":"loose"].exec(str),uri={},i=14;while(i--)uri[o.key[i]]=m[i]||"";uri[o.q.name]={};uri[o.key[12]].replace(o.q.parser,function($0,$1,$2){if($1)uri[o.q.name][$1]=$2});return uri;switch(component){case'PHP_URL_SCHEME':return uri.protocol;case'PHP_URL_HOST':return uri.host;case'PHP_URL_PORT':return uri.port;case'PHP_URL_USER':return uri.user;case'PHP_URL_PASS':return uri.password;case'PHP_URL_PATH':return uri.path;case'PHP_URL_QUERY':return uri.query;case'PHP_URL_FRAGMENT':return uri.anchor;default:var retArr={};if(uri.protocol!=='')retArr.scheme=uri.protocol;if(uri.host!=='')retArr.host=uri.host;if(uri.port!=='')retArr.port=uri.port;if(uri.user!=='')retArr.user=uri.user;if(uri.password!=='')retArr.pass=uri.password;if(uri.path!=='')retArr.path=uri.path;if(uri.query!=='')retArr.query=uri.query;if(uri.anchor!=='')retArr.fragment=uri.anchor;return retArr}};this.htmlentities=function(string,quote_style){if(string==undefined)return false;var hash_map={},symbol='',tmp_str='',entity='';tmp_str=string.toString();if(false===(hash_map=this.get_html_translation_table('HTML_ENTITIES',quote_style)))return false;hash_map["'"]='&#039;';for(symbol in hash_map){entity=hash_map[symbol];tmp_str=tmp_str.split(symbol).join(entity)};return tmp_str};this.get_html_translation_table=function(table,quote_style){var entities={},hash_map={},decimal=0,symbol='',constMappingTable={},constMappingQuoteStyle={},useTable={},useQuoteStyle={};constMappingTable[0]='HTML_SPECIALCHARS';constMappingTable[1]='HTML_ENTITIES';constMappingQuoteStyle[0]='ENT_NOQUOTES';constMappingQuoteStyle[2]='ENT_COMPAT';constMappingQuoteStyle[3]='ENT_QUOTES';useTable=!isNaN(table)?constMappingTable[table]:table?table.toUpperCase():'HTML_SPECIALCHARS';useQuoteStyle=!isNaN(quote_style)?constMappingQuoteStyle[quote_style]:quote_style?quote_style.toUpperCase():'ENT_COMPAT';if(useTable!=='HTML_SPECIALCHARS'&&useTable!=='HTML_ENTITIES')throw new Error("Table: "+useTable+' not supported');entities['38']='&amp;';if(useTable==='HTML_ENTITIES'){entities['160']='&nbsp;';entities['161']='&iexcl;';entities['162']='&cent;';entities['163']='&pound;';entities['164']='&curren;';entities['165']='&yen;';entities['166']='&brvbar;';entities['167']='&sect;';entities['168']='&uml;';entities['169']='&copy;';entities['170']='&ordf;';entities['171']='&laquo;';entities['172']='&not;';entities['173']='&shy;';entities['174']='&reg;';entities['175']='&macr;';entities['176']='&deg;';entities['177']='&plusmn;';entities['178']='&sup2;';entities['179']='&sup3;';entities['180']='&acute;';entities['181']='&micro;';entities['182']='&para;';entities['183']='&middot;';entities['184']='&cedil;';entities['185']='&sup1;';entities['186']='&ordm;';entities['187']='&raquo;';entities['188']='&frac14;';entities['189']='&frac12;';entities['190']='&frac34;';entities['191']='&iquest;';entities['192']='&Agrave;';entities['193']='&Aacute;';entities['194']='&Acirc;';entities['195']='&Atilde;';entities['196']='&Auml;';entities['197']='&Aring;';entities['198']='&AElig;';entities['199']='&Ccedil;';entities['200']='&Egrave;';entities['201']='&Eacute;';entities['202']='&Ecirc;';entities['203']='&Euml;';entities['204']='&Igrave;';entities['205']='&Iacute;';entities['206']='&Icirc;';entities['207']='&Iuml;';entities['208']='&ETH;';entities['209']='&Ntilde;';entities['210']='&Ograve;';entities['211']='&Oacute;';entities['212']='&Ocirc;';entities['213']='&Otilde;';entities['214']='&Ouml;';entities['215']='&times;';entities['216']='&Oslash;';entities['217']='&Ugrave;';entities['218']='&Uacute;';entities['219']='&Ucirc;';entities['220']='&Uuml;';entities['221']='&Yacute;';entities['222']='&THORN;';entities['223']='&szlig;';entities['224']='&agrave;';entities['225']='&aacute;';entities['226']='&acirc;';entities['227']='&atilde;';entities['228']='&auml;';entities['229']='&aring;';entities['230']='&aelig;';entities['231']='&ccedil;';entities['232']='&egrave;';entities['233']='&eacute;';entities['234']='&ecirc;';entities['235']='&euml;';entities['236']='&igrave;';entities['237']='&iacute;';entities['238']='&icirc;';entities['239']='&iuml;';entities['240']='&eth;';entities['241']='&ntilde;';entities['242']='&ograve;';entities['243']='&oacute;';entities['244']='&ocirc;';entities['245']='&otilde;';entities['246']='&ouml;';entities['247']='&divide;';entities['248']='&oslash;';entities['249']='&ugrave;';entities['250']='&uacute;';entities['251']='&ucirc;';entities['252']='&uuml;';entities['253']='&yacute;';entities['254']='&thorn;';entities['255']='&yuml;'};if(useQuoteStyle!=='ENT_NOQUOTES')entities['34']='&quot;';if(useQuoteStyle==='ENT_QUOTES')entities['39']='&#39;';entities['60']='&lt;';entities['62']='&gt;';for(decimal in entities){symbol=String.fromCharCode(decimal);hash_map[symbol]=entities[decimal]};return hash_map}};GSI.functions=new GSI_Functions();
function GSI_Widget(){};GSI_Widget.prototype.padre;GSI_Widget.prototype._loadSteps=0;GSI_Widget.prototype._templates=null;GSI_Widget.prototype.loaded=false;GSI_Widget.prototype.name='NotFinalWidget';GSI_Widget.prototype.loadOrder=1;GSI_Widget.prototype.errorStack=new GSI_ErrorStack();GSI_Widget.prototype.addTemplate=function(key,template){if(!this._templates)this._templates=new Array();this._templates[key]=template};GSI_Widget.prototype.setError=function(msg,type){this.errorStack.add(msg,type)};GSI_Widget.prototype.getLoadSteps=function(){return this._loadSteps};GSI_Widget.prototype.loader=function(on){var _mthis=this;if(on){this._loaderObj.on()}else this._loaderObj.off()};GSI_Widget.prototype.init=function(){return true};
function GSI_Controller_Widget(padre){this.padre=padre;var preloaded=new Array(),loadSteps=2,_mthis=this;this.errorStack=new GSI_ErrorStack();this.setError=function(msg,type){_mthis.errorStack.add(msg,type)};this.getLoadSteps=function(){var total=loadSteps;for(var aWidget in preloaded){if(aWidget=='indexOf')continue;total+=preloaded[aWidget].getLoadSteps()};return total};this.loadWidget=function(aWidget){preloaded[aWidget.name]=aWidget;return true;if(aWidget.init()){if(!_mthis.getWidget(aWidget.name))_mthis[aWidget.name]=aWidget;return true};return false};this.initAll=function(){GSI.updateProgressBar(GSI.dict.getText('JSAPI','initiating_widgets'));var _FLAG=true,tSize=0;for(var aWidget in preloaded){if(aWidget=='indexOf')continue;if(tSize<preloaded[aWidget].loadOrder)tSize=preloaded[aWidget].loadOrder};for(var i=0;i<=tSize;i++)for(var aWidget in preloaded){if(aWidget=='indexOf'||!preloaded[aWidget])continue;if(preloaded[aWidget].loadOrder==i){try{if(preloaded[aWidget].init()){_mthis[preloaded[aWidget].name]=preloaded[aWidget]}else{GSI.setError("Error while initiating "+aWidget+'\n','ERROR');_FLAG=false}}catch(e){GSI.setError("Error while initiating "+aWidget+' -> '+e.message,'ERROR')};preloaded[aWidget]=false}};GSI.updateProgressBar(GSI.dict.getText('JSAPI','widgets_initiated'));return _FLAG};this.getWidget=function(name){if(_mthis[name]){return _mthis[name]}else return false}};GSI.widgets=new GSI_Controller_Widget(GSI);
function GSI_Controller_Forms(padre){this.padre=padre;var preloaded=new Array(),_mthis=this;this.errorStack=new GSI_ErrorStack();this.setError=function(msg,type){_mthis.errorStack.add(msg,type)};this.getLoadSteps=function(){var total=loadSteps;for(var aform in preloaded){if(aform=='indexOf')continue;total+=preloaded[aform].getLoadSteps()};return total};this.loadForm=function(aForm){var aForm=aForm;$(document).ready(function(){if(aForm.init()){if(!_mthis.getForm(aForm.getFormName()))_mthis[aForm.getFormName()]=aForm;return true};return false})};this.getForm=function(name){if(_mthis[name]){return _mthis[name]}else return false}};GSI.forms=new GSI_Controller_Forms(GSI);
function GSI_Controller_Cache(padre){this.padre=padre;this.cacheoff=true;var _mthis=this;this.errorStack=new GSI_ErrorStack();this.cookie=null;this.setError=function(msg,type){_mthis.errorStack.add(msg,type)};this.add=function(key,value){if(_mthis.cacheoff)return false;var tKey=GSI.SID+'_'+key;createCookie(tKey,value);return true};this.get=function(key){var tKey=GSI.SID+'_'+key,res=readCookie(tKey);if(res=='')return false;return res};this.reset=function(key){eraseCookie(key)};var createCookie=function(name,value,days){if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));var expires="; expires="+date.toGMTString()}else var expires="";document.cookie=name+"="+value+expires+"; path=/"},readCookie=function(name){var nameEQ=name+"=",ca=document.cookie.split(';');for(var i=0;i<ca.length;i++){var c=ca[i];while(c.charAt(0)==' ')c=c.substring(1,c.length);if(c.indexOf(nameEQ)==0)return c.substring(nameEQ.length,c.length)};return null},eraseCookie=function(name){createCookie(name,"",-1)},init=function(){};init()};GSI.cache=new GSI_Controller_Cache(GSI);
function GSI_Controller_Factory(padre){this.padre=padre;var preloaded=new Array(),_mthis=this;this._factories=new Array();this.errorStack=new GSI_ErrorStack();this.setError=function(msg,type){_mthis.errorStack.add(msg,type)};this.addFactory=function(factory){if(!factory.type)return false;this._factories[factory.type]=factory};this.getFactory=function(type){if(this._factories[type]){return this._factories[type]}else return false}};GSI.factories=new GSI_Controller_Factory(GSI);
function GSI_Factory_Resource(){this.padre;this.type='resource';this.createItem=function(){return new GSI_Resource_Item()}};var tF=new GSI_Factory_Resource();GSI.factories.addFactory(tF);
function GSI_Factory_Element(){};this.padre;GSI_Factory_Element.prototype.type='element';GSI_Factory_Element.prototype.createTooltip=function(type){return new GSI_Element_Tooltip()};var tF=new GSI_Factory_Element();GSI.factories.addFactory(tF);
function GSI_Widget_Lightbox(){this._width=200;this._heigth=100};GSI_Widget_Lightbox.prototype=new GSI_Widget();GSI_Widget_Lightbox.prototype.name='lightbox';GSI_Widget_Lightbox.prototype.loadOrder=1;GSI_Widget_Lightbox.prototype._loadSteps=1;GSI_Widget_Lightbox.prototype.getLoadSteps=function(){return this._loadSteps};GSI_Widget_Lightbox.prototype._load=function(){var tRes=true;try{if(typeof GSI=="undefined")return false;if(!GSI.functions.isset(GSI.SID)){GSI.setError('Widget: '+this.name+' -> GSI.SID missing','WARNING');tRes=false};tRes=this._doLoad()}catch(e){return false};return tRes};GSI_Widget_Lightbox.prototype.show=function(settings){};GSI_Widget_Lightbox.prototype.hide=function(){};GSI_Widget_Lightbox.prototype.init=function(){var _mthis=this;if(!this._load()){GSI.updateProgressBar(this.name+" "+GSI.dict.getText('JSAPI','widget_initiation_error'));return false};this.loaded=true;GSI.updateProgressBar(this.name+" "+GSI.dict.getText('JSAPI','widget_initiated'));this._doInit();return true};GSI_Widget_Lightbox.prototype._doInit=function(){$('.GSI_Lightbox').click(function(){GSI.setError('Lightbox Clicked','INFO');return})};var tW=new GSI_Widget_Lightbox();GSI.widgets.loadWidget(tW);
function GSI_Widget_Lightbox_Nyromodal(){};GSI_Widget_Lightbox_Nyromodal.prototype=new GSI_Widget_Lightbox();GSI_Widget_Lightbox_Nyromodal.prototype._doLoad=function(){var tRes=true;try{if(typeof GSI=="undefined")return false;if(!GSI.functions.isset($.nyroModalManual)){GSI.setError('Widget: '+this.name+' -> NYROMODAL jquery plugin missing','WARNING');tRes=false}}catch(e){return false};return tRes};GSI_Widget_Lightbox_Nyromodal.prototype.show=function(settings){GSI.setError('Showing lightbox','INFO');$.nyroModalManual(settings)};GSI_Widget_Lightbox_Nyromodal.prototype.hide=function(){$.nyroModalRemove()};GSI_Widget_Lightbox_Nyromodal.prototype._doInit=function(){$('.GSI_Lightbox').nyroModal()};var tW=new GSI_Widget_Lightbox_Nyromodal();GSI.widgets.loadWidget(tW);
var GSI_Element_Form=function(){this._reset()};GSI_Element_Form.prototype._form=null;GSI_Element_Form.prototype._fields=null;GSI_Element_Form.prototype._name=null;GSI_Element_Form.prototype._active=null;GSI_Element_Form.prototype._resource=null;GSI_Element_Form.prototype._loader=null;GSI_Element_Form.prototype._cosmetic=null;GSI_Element_Form.prototype._load=function(){};GSI_Element_Form.prototype.getFormName=function(){return this._name};GSI_Element_Form.prototype.show=function(){};GSI_Element_Form.prototype.hide=function(){};GSI_Element_Form.prototype.loader=function(on){if(on){this._loader.on()}else this._loader.off()};GSI_Element_Form.prototype.submit=function(){this._doSubmit()};GSI_Element_Form.prototype._doSubmit=function(){this.loader(true);this._resource.submit(this._drawSuccess,this._drawError)};GSI_Element_Form.prototype._drawSuccess=function(){this._doDrawSuccess();this.loader(false)};GSI_Element_Form.prototype._doDrawSuccess=function(){};GSI_Element_Form.prototype._drawError=function(){this._doDrawError();this.loader(false)};GSI_Element_Form.prototype._doDrawError=function(){};GSI_Element_Form.prototype._doCosmetics=function(){return;this._cosmetic=new GSI_Element_FormCosmetic();this._cosmetic.start(this.placeHolder)};GSI_Element_Form.prototype.activate=function(on){};GSI_Element_Form.prototype.refresh=function(){};GSI_Element_Form.prototype.validate=function(){return true};GSI_Element_Form.prototype.init=function(){var _mthis=this,form=document.forms[this._name];if($(form).length==1){this._form=form;this._resource.setForm(form);$('input, select, textarea, button',form).each(function(){_mthis._fields.push(this)});$(this._form).submit(function(){_mthis.submit();return false});if(this._load()){this._doCosmetics();return true}else return false};return false};GSI_Element_Form.prototype._reset=function(){this._form=null;this._fields=new Array();this._active=false;this._resource=new GSI_Resource_Form();this._cosmetic=null};
function GSI_Element_Form_Validator(){};GSI_Element_Form_Validator.prototype.validate=function(domOBJ){};var GSI_Validators=new Array();
function GSI_Element_Form_Validator_ClearFocus(){};GSI_Element_Form_Validator_ClearFocus.prototype=new GSI_Element_Form_Validator();GSI_Element_Form_Validator_ClearFocus.prototype.validate=function(domOBJ){$(domOBJ).focus(function(){var cadena=$(this).val();if(cadena!=""&&!this.cleared)$(this).val("");this.cleared=true})};GSI_Validators.GSI_Element_Form_Validator_ClearFocus="GSI_Validator_ClearFocus";
function GSI_Element_Form_Validator_ToUpperCase(){};GSI_Element_Form_Validator_ToUpperCase.prototype=new GSI_Element_Form_Validator();GSI_Element_Form_Validator_ToUpperCase.prototype.validate=function(domOBJ){$(domOBJ).blur(function(){$(this).val($(this).val().toUpperCase())})};GSI_Validators.GSI_Element_Form_Validator_ToUpperCase="GSI_Validator_ToUpperCase";
var GSI_Element_Form_Default=function(){this._forms=[]};GSI_Element_Form_Default.prototype=new GSI_Element_Form();GSI_Element_Form_Default.prototype._name='Default';GSI_Element_Form_Default.prototype._forms=null;GSI_Element_Form_Default.prototype._load=function(){};GSI_Element_Form_Default.prototype.getFormName=function(){return this._name};GSI_Element_Form_Default.prototype.validate=function(){return true};GSI_Element_Form_Default.prototype.init=function(){var _mthis=this;this._forms=document.forms;try{for(var aValidator in GSI_Validators){var aValidatorCall=eval("new "+aValidator+"();");aValidatorCall.validate($("."+GSI_Validators[aValidator]))}}catch(e){GSI.setError('ERROR running validator: '+e.message,'ERROR')};return true};var tF=new GSI_Element_Form_Default();GSI.forms.loadForm(tF);
function GSI_Controller_Tracking(padre){this.padre=padre;this._trackers=new Array();this.errorStack=new GSI_ErrorStack();this.setError=function(msg,type){this.errorStack.add(msg,type)};this.addTracker=function(aTracker){this._trackers.push(aTracker)};this.getTrackersByType=function(type){var res=new Array();for(var i in this._trackers){if(isNaN(i))continue;if(this._trackers[i].type==type)res.push(this._trackers[i])};return res};this.tag=function(type,request){var trackers=this.getTrackersByType(type);for(var i in trackers){if(isNaN(i))continue;if(trackers[i] instanceof GSI_Tracker)try{trackers[i].execute(request)}catch(e){GSI.setError('there was an error while trying to tag '+type+' :'+e.message,'ERROR')}};return true}};GSI.tracking=new GSI_Controller_Tracking(GSI);
function GSI_Tracker(){this.padre;this.type=null;this._request=null;var _mthis=this;this.execute=function(request){_mthis._request=request};this._doExecute=function(data){};this._evalTrackingLines=function(arrayTags){for(var aTag in arrayTags){if(aTag=='indexOf')continue;eval(arrayTags[aTag])}}};

/* json2.js / 2008-03-24 / See http://www.JSON.org/js.html */
if(!this.JSON){JSON=function(){function f(n){return n<10?'0'+n:n;}
Date.prototype.toJSON=function(){return this.getUTCFullYear()+'-'+
f(this.getUTCMonth()+1)+'-'+
f(this.getUTCDate())+'T'+
f(this.getUTCHours())+':'+
f(this.getUTCMinutes())+':'+
f(this.getUTCSeconds())+'Z';};var escapeable=/["\\\x00-\x1f\x7f-\x9f]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){return escapeable.test(string)?'"'+string.replace(escapeable,function(a){var c=meta[a];if(typeof c==='string'){return c;}
c=a.charCodeAt();return'\\u00'+Math.floor(c/16).toString(16)+
(c%16).toString(16);})+'"':'"'+string+'"';}
function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);}
if(typeof rep==='function'){value=rep.call(holder,key,value);}
switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}
gap+=indent;partial=[];if(typeof value.length==='number'&&!(value.propertyIsEnumerable('length'))){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';}
v=partial.length===0?'[]':gap?'[\n'+gap+partial.join(',\n'+gap)+'\n'+mind+']':'['+partial.join(',')+']';gap=mind;return v;}
if(typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==='string'){v=str(k,value,rep);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){v=str(k,value,rep);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}
v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}}
return{stringify:function(value,replacer,space){var i;gap='';indent='';if(space){if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;}}
if(!replacer){rep=function(key,value){if(!Object.hasOwnProperty.call(this,key)){return undefined;}
return value;};}else if(typeof replacer==='function'||(typeof replacer==='object'&&typeof replacer.length==='number')){rep=replacer;}else{throw new Error('JSON.stringify');}
return str('',{'':value});},parse:function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}}
return reviver.call(holder,key,value);}
if(/^[\],:{}\s]*$/.test(text.replace(/\\["\\\/bfnrtu]/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;}
throw new SyntaxError('JSON.parse');},quote:quote};}();}

try{var GSI_DEBUG=false,GSI_CATALOG_IMG_PATH=GSI_CATALOG_IMG_PATH?GSI_CATALOG_IMG_PATH:"/static/img/catalog/",GSI_APP_IMG_PATH=GSI_APP_IMG_PATH?GSI_APP_IMG_PATH:"/static/img/",GSI_SERVICE_PATH='/v1/',GSI_PLACEHOLDER_ID_ITEM_DYN='item-dyn',GSI_PLACEHOLDER_ID_XPRESSITEM_DYN='express-shop-dyn',GSI_LOADER_IMAGE_BIG=GSI_APP_IMG_PATH+"loader_big.gif",GSI_LOADER_IMAGE_MEDIUM=GSI_APP_IMG_PATH+"loader_medium.gif",GSI_LOADER_IMAGE_SMALL=GSI_APP_IMG_PATH+"loader_small.gif"}catch(e){};
try{GSI_DEBUG=false}catch(e){};
/* Copyright (c) 2009 Brandon Aaron (http://brandonaaron.net)
 * Mousewheel plugin - Version: 3.0.2
 */
(function(c){var a=["DOMMouseScroll","mousewheel"];c.event.special.mousewheel={setup:function(){if(this.addEventListener){for(var d=a.length;d;){this.addEventListener(a[--d],b,false)}}else{this.onmousewheel=b}},teardown:function(){if(this.removeEventListener){for(var d=a.length;d;){this.removeEventListener(a[--d],b,false)}}else{this.onmousewheel=null}}};c.fn.extend({mousewheel:function(d){return d?this.bind("mousewheel",d):this.trigger("mousewheel")},unmousewheel:function(d){return this.unbind("mousewheel",d)}});function b(f){var d=[].slice.call(arguments,1),g=0,e=true;f=c.event.fix(f||window.event);f.type="mousewheel";if(f.wheelDelta){g=f.wheelDelta/120}if(f.detail){g=-f.detail/3}d.unshift(f,g);return c.event.handle.apply(this,d)}})(jQuery);
/* Copyright (c) 2006 Kelvin Luck (kelvin AT kelvinluck DOT com || http://www.kelvinluck.com)
 * See http://kelvinluck.com/assets/jquery/jScrollPane/
 */
(function($){$.jScrollPane={active:[]};$.fn.jScrollPane=function(settings)
{settings=$.extend({},$.fn.jScrollPane.defaults,settings);var rf=function(){return false;};return this.each(function()
{var $this=$(this);$this.css('overflow','hidden');var paneEle=this;if($(this).parent().is('.jScrollPaneContainer')){var currentScrollPosition=settings.maintainPosition?$this.position().top:0;var $c=$(this).parent();var paneWidth=$c.innerWidth();var paneHeight=$c.outerHeight();var trackHeight=paneHeight;$('>.jScrollPaneTrackVert, >.jScrollArrowUp, >.jScrollArrowDown',$c).remove();$this.css({'top':0});}else{var currentScrollPosition=0;this.originalPadding=$this.css('paddingTop')+' '+$this.css('paddingRight')+' '+$this.css('paddingBottom')+' '+$this.css('paddingLeft');this.originalSidePaddingTotal=(parseInt($this.css('paddingLeft'))||0)+(parseInt($this.css('paddingRight'))||0);var paneWidth=$this.innerWidth();var paneHeight=$this.innerHeight();var trackHeight=paneHeight;$this.wrap($('<div></div>').attr({'className':'jScrollPaneContainer'}).css({'height':paneHeight+'px','width':paneWidth+'px'}));$(document).bind('emchange',function(e,cur,prev)
{$this.jScrollPane(settings);});}
if(settings.reinitialiseOnImageLoad){var $imagesToLoad=$.data(paneEle,'jScrollPaneImagesToLoad')||$('img',$this);var loadedImages=[];if($imagesToLoad.length){$imagesToLoad.each(function(i,val){$(this).bind('load',function(){if($.inArray(i,loadedImages)==-1){loadedImages.push(val);$imagesToLoad=$.grep($imagesToLoad,function(n,i){return n!=val;});$.data(paneEle,'jScrollPaneImagesToLoad',$imagesToLoad);settings.reinitialiseOnImageLoad=false;$this.jScrollPane(settings);}}).each(function(i,val){if(this.complete||this.complete===undefined){this.src=this.src;}});});};}
var p=this.originalSidePaddingTotal;var cssToApply={'height':'auto','width':paneWidth-settings.scrollbarWidth-settings.scrollbarMargin-p+'px'}
if(settings.scrollbarOnLeft){cssToApply.paddingLeft=settings.scrollbarMargin+settings.scrollbarWidth+'px';}else{cssToApply.paddingRight=settings.scrollbarMargin+'px';}
$this.css(cssToApply);var contentHeight=$this.outerHeight();var percentInView=paneHeight/contentHeight;if(percentInView<.99){var $container=$this.parent();$container.append($('<div></div>').attr({'className':'jScrollPaneTrackVert'}).css({'width':settings.scrollbarWidth+'px'}).append($('<div></div>').attr({'className':'jScrollPaneDrag'}).css({'width':settings.scrollbarWidth+'px'}).append($('<div></div>').attr({'className':'jScrollPaneDragTop'}).css({'width':settings.scrollbarWidth+'px'}),$('<div></div>').attr({'className':'jScrollPaneDragBottom'}).css({'width':settings.scrollbarWidth+'px'}))));var $track=$('>.jScrollPaneTrackVert',$container);var $drag=$('>.jScrollPaneTrackVert .jScrollPaneDrag',$container);if(settings.showArrows){var currentArrowButton;var currentArrowDirection;var currentArrowInterval;var currentArrowInc;var whileArrowButtonDown=function()
{if(currentArrowInc>4||currentArrowInc%4==0){positionDrag(dragPosition+currentArrowDirection*mouseWheelMultiplier);}
currentArrowInc++;};var onArrowMouseUp=function(event)
{$('html').unbind('mouseup',onArrowMouseUp);currentArrowButton.removeClass('jScrollActiveArrowButton');clearInterval(currentArrowInterval);};var onArrowMouseDown=function(){$('html').bind('mouseup',onArrowMouseUp);currentArrowButton.addClass('jScrollActiveArrowButton');currentArrowInc=0;whileArrowButtonDown();currentArrowInterval=setInterval(whileArrowButtonDown,100);};$container.append($('<a></a>').attr({'href':'javascript:;','className':'jScrollArrowUp'}).css({'width':settings.scrollbarWidth+'px'}).html('Scroll up').bind('mousedown',function()
{currentArrowButton=$(this);currentArrowDirection=-1;onArrowMouseDown();this.blur();return false;}).bind('click',rf),$('<a></a>').attr({'href':'javascript:;','className':'jScrollArrowDown'}).css({'width':settings.scrollbarWidth+'px'}).html('Scroll down').bind('mousedown',function()
{currentArrowButton=$(this);currentArrowDirection=1;onArrowMouseDown();this.blur();return false;}).bind('click',rf));var $upArrow=$('>.jScrollArrowUp',$container);var $downArrow=$('>.jScrollArrowDown',$container);if(settings.arrowSize){trackHeight=paneHeight-settings.arrowSize-settings.arrowSize;$track.css({'height':trackHeight+'px',top:settings.arrowSize+'px'})}else{var topArrowHeight=$upArrow.height();settings.arrowSize=topArrowHeight;trackHeight=paneHeight-topArrowHeight-$downArrow.height();$track.css({'height':trackHeight+'px',top:topArrowHeight+'px'})}}
var $pane=$(this).css({'position':'absolute','overflow':'visible'});var currentOffset;var maxY;var mouseWheelMultiplier;var dragPosition=0;var dragMiddle=percentInView*paneHeight/2;var getPos=function(event,c){var p=c=='X'?'Left':'Top';return event['page'+c]||(event['client'+c]+(document.documentElement['scroll'+p]||document.body['scroll'+p]))||0;};var ignoreNativeDrag=function(){return false;};var initDrag=function()
{ceaseAnimation();currentOffset=$drag.offset(false);currentOffset.top-=dragPosition;maxY=trackHeight-$drag[0].offsetHeight;mouseWheelMultiplier=2*settings.wheelSpeed*maxY/contentHeight;};var onStartDrag=function(event)
{initDrag();dragMiddle=getPos(event,'Y')-dragPosition-currentOffset.top;$('html').bind('mouseup',onStopDrag).bind('mousemove',updateScroll);if($.browser.msie){$('html').bind('dragstart',ignoreNativeDrag).bind('selectstart',ignoreNativeDrag);}
return false;};var onStopDrag=function()
{$('html').unbind('mouseup',onStopDrag).unbind('mousemove',updateScroll);dragMiddle=percentInView*paneHeight/2;if($.browser.msie){$('html').unbind('dragstart',ignoreNativeDrag).unbind('selectstart',ignoreNativeDrag);}};var positionDrag=function(destY)
{destY=destY<0?0:(destY>maxY?maxY:destY);dragPosition=destY;$drag.css({'top':destY+'px'});var p=destY/maxY;$pane.css({'top':((paneHeight-contentHeight)*p)+'px'});$this.trigger('scroll');if(settings.showArrows){$upArrow[destY==0?'addClass':'removeClass']('disabled');$downArrow[destY==maxY?'addClass':'removeClass']('disabled');}};var updateScroll=function(e)
{positionDrag(getPos(e,'Y')-currentOffset.top-dragMiddle);};var dragH=Math.max(Math.min(percentInView*(paneHeight-settings.arrowSize*2),settings.dragMaxHeight),settings.dragMinHeight);$drag.css({'height':dragH+'px'}).bind('mousedown',onStartDrag);var trackScrollInterval;var trackScrollInc;var trackScrollMousePos;var doTrackScroll=function()
{if(trackScrollInc>8||trackScrollInc%4==0){positionDrag((dragPosition-((dragPosition-trackScrollMousePos)/2)));}
trackScrollInc++;};var onStopTrackClick=function()
{clearInterval(trackScrollInterval);$('html').unbind('mouseup',onStopTrackClick).unbind('mousemove',onTrackMouseMove);};var onTrackMouseMove=function(event)
{trackScrollMousePos=getPos(event,'Y')-currentOffset.top-dragMiddle;};var onTrackClick=function(event)
{initDrag();onTrackMouseMove(event);trackScrollInc=0;$('html').bind('mouseup',onStopTrackClick).bind('mousemove',onTrackMouseMove);trackScrollInterval=setInterval(doTrackScroll,100);doTrackScroll();};$track.bind('mousedown',onTrackClick);$container.bind('mousewheel',function(event,delta){initDrag();ceaseAnimation();var d=dragPosition;positionDrag(dragPosition-delta*mouseWheelMultiplier);var dragOccured=d!=dragPosition;return!dragOccured;});var _animateToPosition;var _animateToInterval;function animateToPosition()
{var diff=(_animateToPosition-dragPosition)/settings.animateStep;if(diff>1||diff<-1){positionDrag(dragPosition+diff);}else{positionDrag(_animateToPosition);ceaseAnimation();}}
var ceaseAnimation=function()
{if(_animateToInterval){clearInterval(_animateToInterval);delete _animateToPosition;}};var scrollTo=function(pos,preventAni)
{if(typeof pos=="string"){$e=$(pos,$this);if(!$e.length)return;pos=$e.offset().top-$this.offset().top;}
$container.scrollTop(0);ceaseAnimation();var destDragPosition=-pos/(paneHeight-contentHeight)*maxY;if(preventAni||!settings.animateTo){positionDrag(destDragPosition);}else{_animateToPosition=destDragPosition;_animateToInterval=setInterval(animateToPosition,settings.animateInterval);}};$this[0].scrollTo=scrollTo;$this[0].scrollBy=function(delta)
{var currentPos=-parseInt($pane.css('top'))||0;scrollTo(currentPos+delta);};initDrag();scrollTo(-currentScrollPosition,true);$('*',this).bind('focus',function(event)
{var $e=$(this);var eleTop=0;while($e[0]!=$this[0]){eleTop+=$e.position().top;$e=$e.offsetParent();}
var viewportTop=-parseInt($pane.css('top'))||0;var maxVisibleEleTop=viewportTop+paneHeight;var eleInView=eleTop>viewportTop&&eleTop<maxVisibleEleTop;if(!eleInView){var destPos=eleTop-settings.scrollbarMargin;if(eleTop>viewportTop){destPos+=$(this).height()+15+settings.scrollbarMargin-paneHeight;}
scrollTo(destPos);}})
if(location.hash){scrollTo(location.hash);}
$(document).bind('click',function(e)
{$target=$(e.target);if($target.is('a')){var h=$target.attr('href');if(h.substr(0,1)=='#'){scrollTo(h);}}});$.jScrollPane.active.push($this[0]);}else{$this.css({'height':paneHeight+'px','width':paneWidth-this.originalSidePaddingTotal+'px','padding':this.originalPadding});$this.parent().unbind('mousewheel');}})};$.fn.jScrollPane.defaults={scrollbarWidth:10,scrollbarMargin:5,wheelSpeed:18,showArrows:false,arrowSize:0,animateTo:false,dragMinHeight:1,dragMaxHeight:99999,animateInterval:100,animateStep:3,maintainPosition:true,scrollbarOnLeft:false,reinitialiseOnImageLoad:false};$(window).bind('unload',function(){var els=$.jScrollPane.active;for(var i=0;i<els.length;i++){els[i].scrollTo=els[i].scrollBy=null;}});})(jQuery);
/*
 * nyroModal - jQuery Plugin - http://nyromodal.nyrodev.com
 * $version: 1.5.1
 */
jQuery(function($){var userAgent=navigator.userAgent.toLowerCase();var browserVersion=(userAgent.match(/.+(?:rv|webkit|khtml|opera|msie)[\/: ]([\d.]+)/)||[0,'0'])[1];var isIE6=(/msie/.test(userAgent)&&!/opera/.test(userAgent)&&parseInt(browserVersion)<7&&!window.XMLHttpRequest);var body=$('body');var currentSettings;var shouldResize=false;var gallery={};var fixFF=false;var contentElt;var contentEltLast;var modal={started:false,ready:false,dataReady:false,anim:false,animContent:false,loadingShown:false,transition:false,resizing:false,closing:false,error:false,blocker:null,blockerVars:null,full:null,bg:null,loading:null,tmp:null,content:null,wrapper:null,contentWrapper:null,scripts:new Array(),scriptsShown:new Array()};var resized={width:false,height:false,windowResizing:false};var initSettingsSize={width:null,height:null,windowResizing:true};var windowResizeTimeout;$.fn.nyroModal=function(settings){if(!this)return false;return this.each(function(){var me=$(this);if(this.nodeName.toLowerCase()=='form'){me.unbind('submit.nyroModal').bind('submit.nyroModal',function(e){if(me.data('nyroModalprocessing'))return true;if(this.enctype=='multipart/form-data'){processModal($.extend(settings,{from:this}));return true}e.preventDefault();processModal($.extend(settings,{from:this}));return false})}else{me.unbind('click.nyroModal').bind('click.nyroModal',function(e){e.preventDefault();processModal($.extend(settings,{from:this}));return false})}})};$.fn.nyroModalManual=function(settings){if(!this.length)processModal(settings);return this.each(function(){processModal($.extend(settings,{from:this}))})};$.nyroModalManual=function(settings){processModal(settings)};$.nyroModalSettings=function(settings,deep1,deep2){setCurrentSettings(settings,deep1,deep2);if(!deep1&&modal.started){if(modal.bg&&settings.bgColor)currentSettings.updateBgColor(modal,currentSettings,function(){});if(modal.contentWrapper&&settings.title)setTitle();if(!modal.error&&(settings.windowResizing||(!modal.resizing&&(('width'in settings&&settings.width==currentSettings.width)||('height'in settings&&settings.height==currentSettings.height))))){modal.resizing=true;if(modal.contentWrapper)calculateSize(true);if(modal.contentWrapper&&modal.contentWrapper.is(':visible')&&!modal.animContent){if(fixFF)modal.content.css({position:''});currentSettings.resize(modal,currentSettings,function(){currentSettings.windowResizing=false;modal.resizing=false;if(fixFF)modal.content.css({position:'fixed'});if($.isFunction(currentSettings.endResize))currentSettings.endResize(modal,currentSettings)})}}}};$.nyroModalRemove=function(){removeModal()};$.nyroModalNext=function(){var link=getGalleryLink(1);if(link)return link.nyroModalManual(getCurrentSettingsNew());return false};$.nyroModalPrev=function(){var link=getGalleryLink(-1);if(link)return link.nyroModalManual(getCurrentSettingsNew());return false};$.fn.nyroModal.settings={debug:false,blocker:false,modal:false,type:'',forceType:null,from:'',hash:'',processHandler:null,selIndicator:'nyroModalSel',formIndicator:'nyroModal',content:null,bgColor:'#000000',ajax:{},swf:{wmode:'transparent'},width:null,height:null,minWidth:400,minHeight:300,resizable:true,autoSizable:true,padding:25,regexImg:'[^\.]\.(jpg|jpeg|png|tiff|gif|bmp)\s*$',addImageDivTitle:false,defaultImgAlt:'Image',setWidthImgTitle:true,ltr:true,gallery:null,galleryLinks:'<a href="#" class="nyroModalPrev">Prev</a><a href="#"  class="nyroModalNext">Next</a>',galleryCounts:galleryCounts,zIndexStart:100,css:{bg:{position:'absolute',overflow:'hidden',top:0,left:0,height:'100%',width:'100%'},wrapper:{position:'absolute',top:'50%',left:'50%'},wrapper2:{},content:{overflow:'auto'},loading:{position:'absolute',top:'50%',left:'50%',marginTop:'-50px',marginLeft:'-50px'}},wrap:{div:'<div class="wrapper"></div>',ajax:'<div class="wrapper"></div>',form:'<div class="wrapper"></div>',formData:'<div class="wrapper"></div>',image:'<div class="wrapperImg"></div>',swf:'<div class="wrapperSwf"></div>',iframe:'<div class="wrapperIframe"></div>',iframeForm:'<div class="wrapperIframe"></div>',manual:'<div class="wrapper"></div>'},closeButton:'<a href="#" class="nyroModalClose" id="closeBut" title="close">Close</a>',title:null,titleFromIframe:true,openSelector:'.nyroModal',closeSelector:'.nyroModalClose',contentLoading:'<a href="#" class="nyroModalClose">Cancel</a>',errorClass:'error',contentError:'The requested content cannot be loaded.<br />Please try again later.<br /><a href="#" class="nyroModalClose">Close</a>',handleError:null,showBackground:showBackground,hideBackground:hideBackground,endFillContent:null,showContent:showContent,endShowContent:null,beforeHideContent:null,hideContent:hideContent,showTransition:showTransition,hideTransition:hideTransition,showLoading:showLoading,hideLoading:hideLoading,resize:resize,endResize:null,updateBgColor:updateBgColor,endRemove:null};function processModal(settings){if(modal.loadingShown||modal.transition||modal.anim)return;debug('processModal');modal.started=true;setDefaultCurrentSettings(settings);if(!modal.full)modal.blockerVars=modal.blocker=null;modal.error=false;modal.closing=false;modal.dataReady=false;modal.scripts=new Array();modal.scriptsShown=new Array();currentSettings.type=fileType();if(currentSettings.forceType){if(!currentSettings.content)currentSettings.from=true;currentSettings.type=currentSettings.forceType;currentSettings.forceType=null}if($.isFunction(currentSettings.processHandler))currentSettings.processHandler(currentSettings);var from=currentSettings.from;var url=currentSettings.url;initSettingsSize.width=currentSettings.width;initSettingsSize.height=currentSettings.height;if(currentSettings.type=='swf'){setCurrentSettings({overflow:'hidden'},'css','content');currentSettings.content='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+currentSettings.width+'" height="'+currentSettings.height+'"><param name="movie" value="'+url+'"></param>';var tmp='';$.each(currentSettings.swf,function(name,val){currentSettings.content+='<param name="'+name+'" value="'+val+'"></param>';tmp+=' '+name+'="'+val+'"'});currentSettings.content+='<embed src="'+url+'" type="application/x-shockwave-flash" width="'+currentSettings.width+'" height="'+currentSettings.height+'"'+tmp+'></embed></object>'}if(from){var jFrom=$(from).blur();if(currentSettings.type=='form'){var data=$(from).serializeArray();data.push({name:currentSettings.formIndicator,value:1});if(currentSettings.selector)data.push({name:currentSettings.selIndicator,value:currentSettings.selector.substring(1)});$.ajax($.extend({},currentSettings.ajax,{url:url,data:data,type:jFrom.attr('method')?jFrom.attr('method'):'get',success:ajaxLoaded,error:loadingError}));debug('Form Ajax Load: '+jFrom.attr('action'));showModal()}else if(currentSettings.type=='formData'){initModal();jFrom.attr('target','nyroModalIframe');jFrom.attr('action',url);jFrom.prepend('<input type="hidden" name="'+currentSettings.formIndicator+'" value="1" />');if(currentSettings.selector)jFrom.prepend('<input type="hidden" name="'+currentSettings.selIndicator+'" value="'+currentSettings.selector.substring(1)+'" />');modal.tmp.html('<iframe frameborder="0" hspace="0" name="nyroModalIframe" src="javascript:false;"></iframe>');$('iframe',modal.tmp).css({width:currentSettings.width,height:currentSettings.height}).error(loadingError).load(formDataLoaded);debug('Form Data Load: '+jFrom.attr('action'));showModal();showContentOrLoading()}else if(currentSettings.type=='image'){debug('Image Load: '+url);var title=jFrom.attr('title')||currentSettings.defaultImgAlt;initModal();modal.tmp.html('<img id="nyroModalImg" />').find('img').attr('alt',title);modal.tmp.css({lineHeight:0});$('img',modal.tmp).error(loadingError).load(function(){debug('Image Loaded: '+this.src);$(this).unbind('load');var w=modal.tmp.width();var h=modal.tmp.height();modal.tmp.css({lineHeight:''});resized.width=w;resized.height=h;setCurrentSettings({width:w,height:h,imgWidth:w,imgHeight:h});initSettingsSize.width=w;initSettingsSize.height=h;setCurrentSettings({overflow:'hidden'},'css','content');modal.dataReady=true;if(modal.loadingShown||modal.transition)showContentOrLoading()}).attr('src',url);showModal()}else if(currentSettings.type=='iframeForm'){initModal();modal.tmp.html('<iframe frameborder="0" hspace="0" src="javascript:false;" name="nyroModalIframe" id="nyroModalIframe"></iframe>');debug('Iframe Form Load: '+url);$('iframe',modal.tmp).eq(0).css({width:'100%',height:$.support.boxModel?'99%':'100%'}).load(iframeLoaded);modal.dataReady=true;showModal()}else if(currentSettings.type=='iframe'){initModal();modal.tmp.html('<iframe frameborder="0" hspace="0" src="javascript:false;" name="nyroModalIframe" id="nyroModalIframe"></iframe>');debug('Iframe Load: '+url);$('iframe',modal.tmp).eq(0).css({width:'100%',height:$.support.boxModel?'99%':'100%'}).load(iframeLoaded);modal.dataReady=true;showModal()}else if(currentSettings.type){debug('Content: '+currentSettings.type);initModal();modal.tmp.html(currentSettings.content);var w=modal.tmp.width();var h=modal.tmp.height();var div=$(currentSettings.type);if(div.length){setCurrentSettings({type:'div'});w=div.width();h=div.height();if(contentElt)contentEltLast=contentElt;contentElt=div;modal.tmp.append(div.contents())}initSettingsSize.width=w;initSettingsSize.height=h;setCurrentSettings({width:w,height:h});if(modal.tmp.html())modal.dataReady=true;else loadingError();if(!modal.ready)showModal();else endHideContent()}else{debug('Ajax Load: '+url);setCurrentSettings({type:'ajax'});var data=currentSettings.ajax.data||{};if(currentSettings.selector){if(typeof data=="string"){data+='&'+currentSettings.selIndicator+'='+currentSettings.selector.substring(1)}else{data[currentSettings.selIndicator]=currentSettings.selector.substring(1)}}$.ajax($.extend(true,currentSettings.ajax,{url:url,success:ajaxLoaded,error:loadingError,data:data}));showModal()}}else if(currentSettings.content){debug('Content: '+currentSettings.type);setCurrentSettings({type:'manual'});initModal();modal.tmp.html($('<div/>').html(currentSettings.content).contents());if(modal.tmp.html())modal.dataReady=true;else loadingError();showModal()}else{}}function setDefaultCurrentSettings(settings){debug('setDefaultCurrentSettings');currentSettings=$.extend(true,{},$.fn.nyroModal.settings,settings);currentSettings.selector='';currentSettings.borderW=0;currentSettings.borderH=0;currentSettings.resizable=true;setMargin()}function setCurrentSettings(settings,deep1,deep2){if(modal.started){if(deep1&&deep2){$.extend(true,currentSettings[deep1][deep2],settings)}else if(deep1){$.extend(true,currentSettings[deep1],settings)}else{if(modal.animContent){if('width'in settings){if(!modal.resizing){settings.setWidth=settings.width;shouldResize=true}delete settings['width']}if('height'in settings){if(!modal.resizing){settings.setHeight=settings.height;shouldResize=true}delete settings['height']}}$.extend(true,currentSettings,settings)}}else{if(deep1&&deep2){$.extend(true,$.fn.nyroModal.settings[deep1][deep2],settings)}else if(deep1){$.extend(true,$.fn.nyroModal.settings[deep1],settings)}else{$.extend(true,$.fn.nyroModal.settings,settings)}}}function setMarginScroll(){if(isIE6&&!modal.blocker){if(document.documentElement){currentSettings.marginScrollLeft=document.documentElement.scrollLeft;currentSettings.marginScrollTop=document.documentElement.scrollTop}else{currentSettings.marginScrollLeft=document.body.scrollLeft;currentSettings.marginScrollTop=document.body.scrollTop}}else{currentSettings.marginScrollLeft=0;currentSettings.marginScrollTop=0}}function setMargin(){setMarginScroll();currentSettings.marginLeft=-(currentSettings.width+currentSettings.borderW)/2;currentSettings.marginTop=-(currentSettings.height+currentSettings.borderH)/2;if(!modal.blocker){currentSettings.marginLeft+=currentSettings.marginScrollLeft;currentSettings.marginTop+=currentSettings.marginScrollTop}}function setMarginLoading(){setMarginScroll();var outer=getOuter(modal.loading);currentSettings.marginTopLoading=-(modal.loading.height()+outer.h.border+outer.h.padding)/2;currentSettings.marginLeftLoading=-(modal.loading.width()+outer.w.border+outer.w.padding)/2;if(!modal.blocker){currentSettings.marginLefttLoading+=currentSettings.marginScrollLeft;currentSettings.marginTopLoading+=currentSettings.marginScrollTop}}function setTitle(){var title=$('h1#nyroModalTitle',modal.contentWrapper);if(title.length)title.text(currentSettings.title);else modal.contentWrapper.prepend('<h1 id="nyroModalTitle">'+currentSettings.title+'</h1>')}function initModal(){debug('initModal');if(!modal.full){if(currentSettings.debug)setCurrentSettings({color:'white'},'css','bg');var full={zIndex:currentSettings.zIndexStart,position:'fixed',top:0,left:0,width:'100%',height:'100%'};var contain=body;var iframeHideIE='';if(currentSettings.blocker){modal.blocker=contain=$(currentSettings.blocker);var pos=modal.blocker.offset();var w=modal.blocker.outerWidth();var h=modal.blocker.outerHeight();if(isIE6){setCurrentSettings({height:'100%',width:'100%',top:0,left:0},'css','bg')}modal.blockerVars={top:pos.top,left:pos.left,width:w,height:h};var plusTop=(/msie/.test(userAgent)?0:getCurCSS(body.get(0),'borderTopWidth'));var plusLeft=(/msie/.test(userAgent)?0:getCurCSS(body.get(0),'borderLeftWidth'));full={position:'absolute',top:pos.top+plusTop,left:pos.left+plusLeft,width:w,height:h}}else if(isIE6){body.css({height:body.height()+'px',width:body.width()+'px',position:'static',overflow:'hidden'});$('html').css({overflow:'hidden'});setCurrentSettings({css:{bg:{position:'absolute',zIndex:currentSettings.zIndexStart+1,height:'110%',width:'110%',top:currentSettings.marginScrollTop+'px',left:currentSettings.marginScrollLeft+'px'},wrapper:{zIndex:currentSettings.zIndexStart+2},loading:{zIndex:currentSettings.zIndexStart+3}}});iframeHideIE=$('<iframe id="nyroModalIframeHideIe" src="javascript:false;"></iframe>').css($.extend({},currentSettings.css.bg,{opacity:0,zIndex:50,border:'none'}))}contain.append($('<div id="nyroModalFull"><div id="nyroModalBg"></div><div id="nyroModalWrapper"><div id="nyroModalContent"></div></div><div id="nyrModalTmp"></div><div id="nyroModalLoading"></div></div>').hide());modal.full=$('#nyroModalFull').css(full).show();modal.bg=$('#nyroModalBg').css($.extend({backgroundColor:currentSettings.bgColor},currentSettings.css.bg)).before(iframeHideIE);if(!currentSettings.modal)modal.bg.click(removeModal);modal.loading=$('#nyroModalLoading').css(currentSettings.css.loading).hide();modal.contentWrapper=$('#nyroModalWrapper').css(currentSettings.css.wrapper).hide();modal.content=$('#nyroModalContent');modal.tmp=$('#nyrModalTmp').hide();if($.isFunction($.fn.mousewheel)){modal.content.mousewheel(function(e,d){var elt=modal.content.get(0);if((d>0&&elt.scrollTop==0)||(d<0&&elt.scrollHeight-elt.scrollTop==elt.clientHeight)){e.preventDefault();e.stopPropagation()}})}$(document).bind('keydown.nyroModal',keyHandler);modal.content.css({width:'auto',height:'auto'});modal.contentWrapper.css({width:'auto',height:'auto'});if(!currentSettings.blocker){$(window).bind('resize.nyroModal',function(){window.clearTimeout(windowResizeTimeout);windowResizeTimeout=window.setTimeout(windowResizeHandler,200)})}}}function windowResizeHandler(){$.nyroModalSettings(initSettingsSize)}function showModal(){debug('showModal');if(!modal.ready){initModal();modal.anim=true;currentSettings.showBackground(modal,currentSettings,endBackground)}else{modal.anim=true;modal.transition=true;currentSettings.showTransition(modal,currentSettings,function(){endHideContent();modal.anim=false;showContentOrLoading()})}}function keyHandler(e){if(e.keyCode==27){if(!currentSettings.modal)removeModal()}else if(currentSettings.gallery&&modal.ready&&modal.dataReady&&!modal.anim&&!modal.transition){if(e.keyCode==39||e.keyCode==40){e.preventDefault();$.nyroModalNext();return false}else if(e.keyCode==37||e.keyCode==38){e.preventDefault();$.nyroModalPrev();return false}}}function fileType(){var from=currentSettings.from;var url;if(from&&from.nodeName){var jFrom=$(from);url=jFrom.attr(from.nodeName.toLowerCase()=='form'?'action':'href');if(!url)url=location.href.substring(window.location.host.length+7);currentSettings.url=url;if(jFrom.attr('rev')=='modal')currentSettings.modal=true;currentSettings.title=jFrom.attr('title');if(from&&from.rel&&from.rel.toLowerCase()!='nofollow'){var indexSpace=from.rel.indexOf(' ');currentSettings.gallery=indexSpace>0?from.rel.substr(0,indexSpace):from.rel}var imgType=imageType(url,from);if(imgType)return imgType;if(isSwf(url))return'swf';var iframe=false;if(from.target&&from.target.toLowerCase()=='_blank'||(from.hostname&&from.hostname.replace(/:\d*$/,'')!=window.location.hostname.replace(/:\d*$/,''))){iframe=true}if(from.nodeName.toLowerCase()=='form'){if(iframe)return'iframeForm';setCurrentSettings(extractUrlSel(url));if(jFrom.attr('enctype')=='multipart/form-data')return'formData';return'form'}if(iframe)return'iframe'}else{url=currentSettings.url;if(!currentSettings.content)currentSettings.from=true;if(!url)return null;if(isSwf(url))return'swf';var reg1=new RegExp("^http://","g");if(url.match(reg1))return'iframe'}var imgType=imageType(url,from);if(imgType)return imgType;var tmp=extractUrlSel(url);setCurrentSettings(tmp);if(!tmp.url)return tmp.selector}function imageType(url,from){var image=new RegExp(currentSettings.regexImg,'i');if(image.test(url)){return'image'}}function isSwf(url){var swf=new RegExp('[^\.]\.(swf)\s*$','i');return swf.test(url)}function extractUrlSel(url){var ret={url:null,selector:null};if(url){var hash=getHash(url);var hashLoc=getHash(window.location.href);var curLoc=window.location.href.substring(0,window.location.href.length-hashLoc.length);var req=url.substring(0,url.length-hash.length);if(req==curLoc||req==$('base').attr('href')){ret.selector=hash}else{ret.url=req;ret.selector=hash}}return ret}function loadingError(){debug('loadingError');modal.error=true;if(!modal.ready)return;if($.isFunction(currentSettings.handleError))currentSettings.handleError(modal,currentSettings);modal.loading.addClass(currentSettings.errorClass).html(currentSettings.contentError);$(currentSettings.closeSelector,modal.loading).unbind('click.nyroModal').bind('click.nyroModal',removeModal);setMarginLoading();modal.loading.css({marginTop:currentSettings.marginTopLoading+'px',marginLeft:currentSettings.marginLeftLoading+'px'})}function fillContent(){debug('fillContent');if(!modal.tmp.html())return;modal.content.html(modal.tmp.contents());modal.tmp.empty();wrapContent();if(currentSettings.type=='iframeForm'){$(currentSettings.from).attr('target','nyroModalIframe').data('nyroModalprocessing',1).submit().attr('target','_blank').removeData('nyroModalprocessing')}if(!currentSettings.modal)modal.wrapper.prepend(currentSettings.closeButton);if($.isFunction(currentSettings.endFillContent))currentSettings.endFillContent(modal,currentSettings);modal.content.append(modal.scripts);$(currentSettings.closeSelector,modal.contentWrapper).unbind('click.nyroModal').bind('click.nyroModal',removeModal);$(currentSettings.openSelector,modal.contentWrapper).nyroModal(getCurrentSettingsNew())}function getCurrentSettingsNew(){var currentSettingsNew=$.extend(true,{},currentSettings);if(resized.width)currentSettingsNew.width=null;else currentSettingsNew.width=initSettingsSize.width;if(resized.height)currentSettingsNew.height=null;else currentSettingsNew.height=initSettingsSize.height;currentSettingsNew.css.content.overflow='auto';return currentSettingsNew}function wrapContent(){debug('wrapContent');var wrap=$(currentSettings.wrap[currentSettings.type]);modal.content.append(wrap.children().remove());modal.contentWrapper.wrapInner(wrap);if(currentSettings.gallery){modal.content.append(currentSettings.galleryLinks);gallery.links=$('[rel*="'+currentSettings.gallery+'"]');gallery.index=gallery.links.index(currentSettings.from);if(currentSettings.galleryCounts&&$.isFunction(currentSettings.galleryCounts))currentSettings.galleryCounts(gallery.index+1,gallery.links.length,modal,currentSettings);var currentSettingsNew=getCurrentSettingsNew();var linkPrev=getGalleryLink(-1);if(linkPrev){var prev=$('.nyroModalPrev',modal.contentWrapper).attr('href',linkPrev.attr('href')).click(function(e){e.preventDefault();$.nyroModalPrev();return false});if(isIE6&&currentSettings.type=='swf'){prev.before($('<iframe id="nyroModalIframeHideIeGalleryPrev" src="javascript:false;"></iframe>').css({position:prev.css('position'),top:prev.css('top'),left:prev.css('left'),width:prev.width(),height:prev.height(),opacity:0,border:'none'}))}}else{$('.nyroModalPrev',modal.contentWrapper).remove()}var linkNext=getGalleryLink(1);if(linkNext){var next=$('.nyroModalNext',modal.contentWrapper).attr('href',linkNext.attr('href')).click(function(e){e.preventDefault();$.nyroModalNext();return false});if(isIE6&&currentSettings.type=='swf'){next.before($('<iframe id="nyroModalIframeHideIeGalleryNext" src="javascript:false;"></iframe>').css($.extend({},{position:next.css('position'),top:next.css('top'),left:next.css('left'),width:next.width(),height:next.height(),opacity:0,border:'none'})))}}else{$('.nyroModalNext',modal.contentWrapper).remove()}}calculateSize()}function getGalleryLink(dir){if(currentSettings.gallery){if(!currentSettings.ltr)dir*=-1;var index=gallery.index+dir;if(index>=0&&index<gallery.links.length)return gallery.links.eq(index)}return false}function calculateSize(resizing){debug('calculateSize');modal.wrapper=modal.contentWrapper.children('div:first');resized.width=false;resized.height=false;if(false&&!currentSettings.windowResizing){initSettingsSize.width=currentSettings.width;initSettingsSize.height=currentSettings.height}if(currentSettings.autoSizable&&(!currentSettings.width||!currentSettings.height)){modal.contentWrapper.css({opacity:0,width:'auto',height:'auto'}).show();var tmp={width:'auto',height:'auto'};if(currentSettings.width){tmp.width=currentSettings.width}else if(currentSettings.type=='iframe'){tmp.width=currentSettings.minWidth}if(currentSettings.height){tmp.height=currentSettings.height}else if(currentSettings.type=='iframe'){tmp.height=currentSettings.minHeight}modal.content.css(tmp);if(!currentSettings.width){currentSettings.width=modal.content.outerWidth(true);resized.width=true}if(!currentSettings.height){currentSettings.height=modal.content.outerHeight(true);resized.height=true}modal.contentWrapper.css({opacity:1});if(!resizing)modal.contentWrapper.hide()}if(currentSettings.type!='image'&&currentSettings.type!='swf'){currentSettings.width=Math.max(currentSettings.width,currentSettings.minWidth);currentSettings.height=Math.max(currentSettings.height,currentSettings.minHeight)}var outerWrapper=getOuter(modal.contentWrapper);var outerWrapper2=getOuter(modal.wrapper);var outerContent=getOuter(modal.content);var tmp={content:{width:currentSettings.width,height:currentSettings.height},wrapper2:{width:currentSettings.width+outerContent.w.total,height:currentSettings.height+outerContent.h.total},wrapper:{width:currentSettings.width+outerContent.w.total+outerWrapper2.w.total,height:currentSettings.height+outerContent.h.total+outerWrapper2.h.total}};if(currentSettings.resizable){var maxHeight=modal.blockerVars?modal.blockerVars.height:$(window).height()-outerWrapper.h.border-(tmp.wrapper.height-currentSettings.height);var maxWidth=modal.blockerVars?modal.blockerVars.width:$(window).width()-outerWrapper.w.border-(tmp.wrapper.width-currentSettings.width);maxHeight-=currentSettings.padding*2;maxWidth-=currentSettings.padding*2;if(tmp.content.height>maxHeight||tmp.content.width>maxWidth){if(currentSettings.type=='image'||currentSettings.type=='swf'){var useW=currentSettings.imgWidth?currentSettings.imgWidth:currentSettings.width;var useH=currentSettings.imgHeight?currentSettings.imgHeight:currentSettings.height;var diffW=tmp.content.width-useW;var diffH=tmp.content.height-useH;if(diffH<0)diffH=0;if(diffW<0)diffW=0;var calcH=maxHeight-diffH;var calcW=maxWidth-diffW;var ratio=Math.min(calcH/useH,calcW/useW);calcW=Math.floor(useW*ratio);calcH=Math.floor(useH*ratio);tmp.content.height=calcH+diffH;tmp.content.width=calcW+diffW}else{tmp.content.height=Math.min(tmp.content.height,maxHeight);tmp.content.width=Math.min(tmp.content.width,maxWidth)}tmp.wrapper2={width:tmp.content.width+outerContent.w.total,height:tmp.content.height+outerContent.h.total};tmp.wrapper={width:tmp.content.width+outerContent.w.total+outerWrapper2.w.total,height:tmp.content.height+outerContent.h.total+outerWrapper2.h.total}}}if(currentSettings.type=='swf'){$('object, embed',modal.content).attr('width',tmp.content.width).attr('height',tmp.content.height)}else if(currentSettings.type=='image'){$('img',modal.content).css({width:tmp.content.width,height:tmp.content.height})}modal.content.css($.extend({},tmp.content,currentSettings.css.content));modal.wrapper.css($.extend({},tmp.wrapper2,currentSettings.css.wrapper2));if(!resizing)modal.contentWrapper.css($.extend({},tmp.wrapper,currentSettings.css.wrapper));if(currentSettings.type=='image'&&currentSettings.addImageDivTitle){$('img',modal.content).removeAttr('alt');var divTitle=$('div',modal.content);if(currentSettings.title!=currentSettings.defaultImgAlt&&currentSettings.title){if(divTitle.length==0){divTitle=$('<div>'+currentSettings.title+'</div>');modal.content.append(divTitle)}if(currentSettings.setWidthImgTitle){var outerDivTitle=getOuter(divTitle);divTitle.css({width:(tmp.content.width+outerContent.w.padding-outerDivTitle.w.total)+'px'})}}else if(divTitle.length=0){divTitle.remove()}}if(currentSettings.title)setTitle();tmp.wrapper.borderW=outerWrapper.w.border;tmp.wrapper.borderH=outerWrapper.h.border;setCurrentSettings(tmp.wrapper);setMargin()}function removeModal(e){debug('removeModal');if(e)e.preventDefault();if(modal.full&&modal.ready){$(document).unbind('keydown.nyroModal');if(!currentSettings.blocker)$(window).unbind('resize.nyroModal');modal.ready=false;modal.anim=true;modal.closing=true;if(modal.loadingShown||modal.transition){currentSettings.hideLoading(modal,currentSettings,function(){modal.loading.hide();modal.loadingShown=false;modal.transition=false;currentSettings.hideBackground(modal,currentSettings,endRemove)})}else{if(fixFF)modal.content.css({position:''});modal.wrapper.css({overflow:'hidden'});modal.content.css({overflow:'hidden'});if($.isFunction(currentSettings.beforeHideContent)){currentSettings.beforeHideContent(modal,currentSettings,function(){currentSettings.hideContent(modal,currentSettings,function(){endHideContent();currentSettings.hideBackground(modal,currentSettings,endRemove)})})}else{currentSettings.hideContent(modal,currentSettings,function(){endHideContent();currentSettings.hideBackground(modal,currentSettings,endRemove)})}}}if(e)return false}function showContentOrLoading(){debug('showContentOrLoading');if(modal.ready&&!modal.anim){if(modal.dataReady){if(modal.tmp.html()){modal.anim=true;if(modal.transition){fillContent();modal.animContent=true;currentSettings.hideTransition(modal,currentSettings,function(){modal.loading.hide();modal.transition=false;modal.loadingShown=false;endShowContent()})}else{currentSettings.hideLoading(modal,currentSettings,function(){modal.loading.hide();modal.loadingShown=false;fillContent();setMarginLoading();setMargin();modal.animContent=true;currentSettings.showContent(modal,currentSettings,endShowContent)})}}}else if(!modal.loadingShown&&!modal.transition){modal.anim=true;modal.loadingShown=true;if(modal.error)loadingError();else modal.loading.html(currentSettings.contentLoading);$(currentSettings.closeSelector,modal.loading).unbind('click.nyroModal').bind('click.nyroModal',removeModal);setMarginLoading();currentSettings.showLoading(modal,currentSettings,function(){modal.anim=false;showContentOrLoading()})}}}function ajaxLoaded(data){debug('AjaxLoaded: '+this.url);modal.tmp.html(currentSettings.selector?filterScripts($('<div>'+data+'</div>').find(currentSettings.selector).contents()):filterScripts(data));if(modal.tmp.html()){modal.dataReady=true;showContentOrLoading()}else loadingError()}function formDataLoaded(){debug('formDataLoaded');var jFrom=$(currentSettings.from);jFrom.attr('action',jFrom.attr('action')+currentSettings.selector);jFrom.attr('target','');$('input[name='+currentSettings.formIndicator+']',currentSettings.from).remove();var iframe=modal.tmp.children('iframe');var iframeContent=iframe.unbind('load').contents().find(currentSettings.selector||'body').not('script[src]');iframe.attr('src','about:blank');modal.tmp.html(iframeContent.html());if(modal.tmp.html()){modal.dataReady=true;showContentOrLoading()}else loadingError()}function iframeLoaded(){if((window.location.hostname&&currentSettings.url.indexOf(window.location.hostname)>-1)||currentSettings.url.indexOf('http://')){var iframe=$('iframe',modal.full).contents();var tmp={};if(currentSettings.titleFromIframe)tmp.title=iframe.find('title').text();if(!tmp.title){try{tmp.title=iframe.find('title').html()}catch(err){}}var body=iframe.find('body');if(!currentSettings.height&&body.height())tmp.height=body.height();if(!currentSettings.width&&body.width())tmp.width=body.width();$.extend(initSettingsSize,tmp);$.nyroModalSettings(tmp)}}function galleryCounts(nb,total,elts,settings){if(total>1)settings.title+=(settings.title?' - ':'')+nb+'/'+total}function endHideContent(){debug('endHideContent');modal.anim=false;if(contentEltLast){contentEltLast.append(modal.content.contents());contentEltLast=null}else if(contentElt){contentElt.append(modal.content.contents());contentElt=null}modal.content.empty();gallery={};modal.contentWrapper.hide().children().remove().empty().attr('style','').hide();if(modal.closing||modal.transition)modal.contentWrapper.hide();modal.contentWrapper.css(currentSettings.css.wrapper).append(modal.content);showContentOrLoading()}function endRemove(){debug('endRemove');$(document).unbind('keydown',keyHandler);modal.anim=false;modal.full.remove();modal.full=null;if(isIE6){body.css({height:'',width:'',position:'',overflow:''});$('html').css({overflow:''})}if($.isFunction(currentSettings.endRemove))currentSettings.endRemove(modal,currentSettings)}function endBackground(){debug('endBackground');modal.ready=true;modal.anim=false;showContentOrLoading()}function endShowContent(){debug('endShowContent');modal.anim=false;modal.animContent=false;modal.contentWrapper.css({opacity:''});fixFF=/mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)&&parseFloat(browserVersion)<1.9&&currentSettings.type!='image';if(fixFF)modal.content.css({position:'fixed'});modal.content.append(modal.scriptsShown);if(currentSettings.type=='iframe')modal.content.find('iframe').attr('src',currentSettings.url);if($.isFunction(currentSettings.endShowContent))currentSettings.endShowContent(modal,currentSettings);if(shouldResize){shouldResize=false;$.nyroModalSettings({width:currentSettings.setWidth,height:currentSettings.setHeight});delete currentSettings['setWidth'];delete currentSettings['setHeight']}if(resized.width)setCurrentSettings({width:null});if(resized.height)setCurrentSettings({height:null})}function getHash(url){if(typeof url=='string'){var hashPos=url.indexOf('#');if(hashPos>-1)return url.substring(hashPos)}return''}function filterScripts(data){if(typeof data=='string')data=data.replace(/<\/?(html|head|body)([^>]*)>/gi,'');var tmp=new Array();$.each($.clean({0:data},this.ownerDocument),function(){if($.nodeName(this,"script")){if(!this.src||$(this).attr('rel')=='forceLoad'){if($(this).attr('rev')=='shown')modal.scriptsShown.push(this);else modal.scripts.push(this)}}else tmp.push(this)});return tmp}function getOuter(elm){elm=elm.get(0);var ret={h:{margin:getCurCSS(elm,'marginTop')+getCurCSS(elm,'marginBottom'),border:getCurCSS(elm,'borderTopWidth')+getCurCSS(elm,'borderBottomWidth'),padding:getCurCSS(elm,'paddingTop')+getCurCSS(elm,'paddingBottom')},w:{margin:getCurCSS(elm,'marginLeft')+getCurCSS(elm,'marginRight'),border:getCurCSS(elm,'borderLeftWidth')+getCurCSS(elm,'borderRightWidth'),padding:getCurCSS(elm,'paddingLeft')+getCurCSS(elm,'paddingRight')}};ret.h.outer=ret.h.margin+ret.h.border;ret.w.outer=ret.w.margin+ret.w.border;ret.h.inner=ret.h.padding+ret.h.border;ret.w.inner=ret.w.padding+ret.w.border;ret.h.total=ret.h.outer+ret.h.padding;ret.w.total=ret.w.outer+ret.w.padding;return ret}function getCurCSS(elm,name){var ret=parseInt($.curCSS(elm,name,true));if(isNaN(ret))ret=0;return ret}function debug(msg){if($.fn.nyroModal.settings.debug||currentSettings&&currentSettings.debug)nyroModalDebug(msg,modal,currentSettings||{})}function showBackground(elts,settings,callback){elts.bg.css({opacity:0}).fadeTo(500,0.75,callback)}function hideBackground(elts,settings,callback){elts.bg.fadeOut(300,callback)}function showLoading(elts,settings,callback){elts.loading.css({marginTop:settings.marginTopLoading+'px',marginLeft:settings.marginLeftLoading+'px',opacity:0}).show().animate({opacity:1},{complete:callback,duration:400})}function hideLoading(elts,settings,callback){callback()}function showContent(elts,settings,callback){elts.loading.css({marginTop:settings.marginTopLoading+'px',marginLeft:settings.marginLeftLoading+'px'}).show().animate({width:settings.width+'px',height:settings.height+'px',marginTop:settings.marginTop+'px',marginLeft:settings.marginLeft+'px'},{duration:350,complete:function(){elts.contentWrapper.css({width:settings.width+'px',height:settings.height+'px',marginTop:settings.marginTop+'px',marginLeft:settings.marginLeft+'px'}).show();elts.loading.fadeOut(200,callback)}})}function hideContent(elts,settings,callback){elts.contentWrapper.animate({height:'50px',width:'50px',marginTop:(-(25+settings.borderH)/2+settings.marginScrollTop)+'px',marginLeft:(-(25+settings.borderW)/2+settings.marginScrollLeft)+'px'},{duration:350,complete:function(){elts.contentWrapper.hide();callback()}})}function showTransition(elts,settings,callback){elts.loading.css({marginTop:elts.contentWrapper.css('marginTop'),marginLeft:elts.contentWrapper.css('marginLeft'),height:elts.contentWrapper.css('height'),width:elts.contentWrapper.css('width'),opacity:0}).show().fadeTo(400,1,function(){elts.contentWrapper.hide();callback()})}function hideTransition(elts,settings,callback){elts.contentWrapper.hide().css({width:settings.width+'px',height:settings.height+'px',marginLeft:settings.marginLeft+'px',marginTop:settings.marginTop+'px',opacity:1});elts.loading.animate({width:settings.width+'px',height:settings.height+'px',marginLeft:settings.marginLeft+'px',marginTop:settings.marginTop+'px'},{complete:function(){elts.contentWrapper.show();elts.loading.fadeOut(400,function(){elts.loading.hide();callback()})},duration:350})}function resize(elts,settings,callback){elts.contentWrapper.animate({width:settings.width+'px',height:settings.height+'px',marginLeft:settings.marginLeft+'px',marginTop:settings.marginTop+'px'},{complete:callback,duration:400})}function updateBgColor(elts,settings,callback){if(!$.fx.step.backgroundColor){elts.bg.css({backgroundColor:settings.bgColor});callback()}else elts.bg.animate({backgroundColor:settings.bgColor},{complete:callback,duration:400})}$($.fn.nyroModal.settings.openSelector).nyroModal()});function nyroModalDebug(msg,elts,settings){if(elts.full)elts.bg.prepend(msg+'<br />')}

/* nyroModal - settingsThrowHtml Mod */
$(function(){if(jQuery.fn){jQuery.fn.nyroModal.settings.processHandler=function(settings){var tar_url=null;var surl=settings.url;var stype=settings.type;if(surl){tar_url=surl;}else{if(settings.from&&settings.from.tagName=='A'){tar_url=settings.from.href;}}
if(tar_url){var args=new Array();var usplit=tar_url.split("?");var bkmark_inx=tar_url.indexOf("#");if(usplit.length>1){usplit=usplit[1].split("&");for(x=0;x<usplit.length;x++){arrsplit=usplit[x].split("=");if(arrsplit[1]){args[arrsplit[0].toUpperCase()]=arrsplit[1];args[x]=arrsplit[1];}}}
if(args['NYRO_NO_CACHE']){myd=new Date()
if(tar_url.charAt(tar_url.length-1)!='&'){tar_url+="&";}
if(bkmark_inx==-1){bkmark_inx=surl.length;}
tar_url=tar_url.substring(0,bkmark_inx)+"r="+myd.getTime()+tar_url.substring(bkmark_inx);}
if(args['NYRO_HEIGHT']){settings.height=parseInt(args['NYRO_HEIGHT']);settings.minHeight=settings.height;}
if(args['NYRO_WIDTH']){settings.width=parseInt(args['NYRO_WIDTH']);settings.minWidth=settings.width;}
if(args['NYRO_MODAL']){settings.modal=true;}
if(args['NYRO_TYPE']){settings.type=unescape(args['NYRO_TYPE']);}
if(args['NYRO_TITLE']){settings.title=unescape(args['NYRO_TITLE']);}
if(args['NYRO_BGCOLOR']){settings.bgColor=unescape(args['NYRO_BGCOLOR']);}
if(surl){surl=tar_url;}
jQuery.nyroModalSettings({url:surl,width:settings.width,minWidth:settings.minWidth,height:settings.height,minHeight:settings.minHeight,modal:settings.modal,type:settings.type,title:settings.title,bgColor:settings.bgColor});}};}else{alert("nyroModal url plugin:could not find: $.fn: "+$.fn);}});
/* printArea - Version 2.1 */
(function($){var counter=0;var modes={iframe:"iframe",popup:"popup"};var defaults={mode:modes.iframe,popHt:500,popWd:400,popX:200,popY:200,popTitle:'',popClose:false};var settings={};$.fn.printArea=function(options)
{$.extend(settings,defaults,options);counter++;var idPrefix="printArea_";$("[id^="+idPrefix+"]").remove();var ele=getFormData($(this));settings.id=idPrefix+counter;var writeDoc;var printWindow;switch(settings.mode)
{case modes.iframe:var f=new Iframe();writeDoc=f.doc;printWindow=f.contentWindow||f;break;case modes.popup:printWindow=new Popup();writeDoc=printWindow.doc;}
writeDoc.open();writeDoc.write(docType()+"<html>"+getHead()+getBody(ele)+"</html>");writeDoc.close();printWindow.focus();printWindow.print();if(settings.mode==modes.popup&&settings.popClose)
printWindow.close();}
function docType()
{if(settings.mode==modes.iframe||!settings.strict)return"";var standard=settings.strict==false?" Trasitional":"";var dtd=settings.strict==false?"loose":"strict";return'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01'+standard+'//EN" "http://www.w3.org/TR/html4/'+dtd+'.dtd">';}
function getHead()
{var head="<head><title>"+settings.popTitle+"</title>";$(document).find("link").filter(function(){return $(this).attr("rel").toLowerCase()=="stylesheet";}).filter(function(){var media=$(this).attr("media");return(media.toLowerCase()==""||media.toLowerCase()=="print")}).each(function(){head+='<link type="text/css" rel="stylesheet" href="'+$(this).attr("href")+'" >';});head+="</head>";return head;}
function getBody(printElement)
{return'<body><div class="'+$(printElement).attr("class")+'">'+$(printElement).html()+'</div></body>';}
function getFormData(ele)
{$("input,select,textarea",ele).each(function(){var type=$(this).attr("type");if(type=="radio"||type=="checkbox")
{if($(this).is(":not(:checked)"))this.removeAttribute("checked");else this.setAttribute("checked",true);}
else if(type=="text")
this.setAttribute("value",$(this).val());else if(type=="select-multiple"||type=="select-one")
$(this).find("option").each(function(){if($(this).is(":not(:selected)"))this.removeAttribute("selected");else this.setAttribute("selected",true);});else if(type=="textarea")
{var v=$(this).attr("value");if($.browser.mozilla)
{if(this.firstChild)this.firstChild.textContent=v;else this.textContent=v;}
else this.innerHTML=v;}});return ele;}
function Iframe()
{var frameId=settings.id;var iframeStyle='border:0;position:absolute;width:0px;height:0px;left:0px;top:0px;';var iframe;try
{iframe=document.createElement('iframe');document.body.appendChild(iframe);$(iframe).attr({style:iframeStyle,id:frameId,src:""});iframe.doc=null;iframe.doc=iframe.contentDocument?iframe.contentDocument:(iframe.contentWindow?iframe.contentWindow.document:iframe.document);}
catch(e){throw e+". iframes may not be supported in this browser.";}
if(iframe.doc==null)throw"Cannot find document.";return iframe;}
function Popup()
{var windowAttr="location=yes,statusbar=no,directories=no,menubar=no,titlebar=no,toolbar=no,dependent=no";windowAttr+=",width="+settings.popWd+",height="+settings.popHt;windowAttr+=",resizable=yes,screenX="+settings.popX+",screenY="+settings.popY+",personalbar=no,scrollbars=yes";var newWin=window.open("","_blank",windowAttr);newWin.doc=newWin.document;return newWin;}})(jQuery);

/**
 * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
 *
 * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 *
 */
if(typeof deconcept=="undefined"){var deconcept=new Object();}if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+"="+_18[key];}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\"";_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";var _1a=this.getParams();for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}var _1c=this.getVariablePairs().join("&");if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\">";_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";var _1d=this.getParams();for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split("&");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf("="))==_2b){return _2d[i].substring((_2d[i].indexOf("=")+1));}}}return "";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName("OBJECT");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display="none";for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;
function GSI_Element(){this._settings={}};GSI_Element.prototype.start=function(placeHolder,settings){};GSI_Element.prototype._settings=null;GSI_Element.prototype._mergeSettings=function(obj){return GSI.functions.array_merge(this._settings,obj,true)};
function GSI_Element_Menu(){this._placeHolder;this._settings=this._mergeSettings({type:null,contentAttr:'name',hoverTimeOut:100,openCloseTime:500,endShowContent:null,endHideContent:null,alwaysOpen:false});this._currentLink=null;this._links=null;this._contentPlaceHolder=null;this._showTimer=null;this._hideTimer=null};GSI_Element_Menu.prototype=new GSI_Element();GSI_Element_Menu.prototype.start=function(aPlaceHolder,xtraSettings){var _mthis=this;this._placeHolder=$(aPlaceHolder);if(this._placeHolder.length!=1){GSI.setError('Menu placeHolder length is not one!. aborting start!','WARNING');return false};this.settings=GSI.functions.array_merge(this._settings,xtraSettings);this._contentPlaceHolder=this._settings.contentPlaceHolder?$(this._settings.contentPlaceHolder):this._placeHolder;if(this._settings.type=='hover'){this._links=$('.GSI_Link',this._placeHolder).hover(function(){if(_mthis._hideTimer)clearTimeout(_mthis._hideTimer);if(_mthis._currentLink){var aLink=this;_mthis._showTimer=setTimeout(function(){_mthis.activate(aLink);_mthis._showTimer=null},_mthis._settings.hoverTimeOut)}else _mthis.activate(this)},function(){_mthis.deactivate(this)});this._setHoverBehaviour()}else{this._links=$('.GSI_Link',this._placeHolder).click(function(){_mthis.activate(this);return false}).dblclick(function(){_mthis.activate(this);return false});if(this._settings.type=='click'){this._setClickBehaviour()}else this._setTabBehaviour()};this._initGUI();return true};GSI_Element_Menu.prototype.activate=function(domObj){var _mthis=this;if(this._currentLink&&this._currentLink===domObj){if(this._settings.type=='click'){this.hide(this._currentLink,this._settings.endHideContent);this._currentLink=null}else{this._currentLink=domObj;this.show(domObj,this._settings.endShowContent)}}else if(this._currentLink){this.hide(this._currentLink,function(){_mthis._currentLink=domObj;_mthis.show(domObj,_mthis._settings.endShowContent);if(typeof _mthis._settings.endHideContent=='function')_mthis._settings.endHideContent()})}else{this._currentLink=domObj;this.show(domObj,this._settings.endShowContent)}};GSI_Element_Menu.prototype.deactivate=function(domObj){var _mthis=this;if(this._showTimer){clearTimeout(this._showTimer);this._showTimer=null};this._hideTimer=setTimeout(function(){_mthis._hideTimer=null;if(!_mthis._showTimer)if(!_mthis._placeHolder.get(0).isOver&&!_mthis._contentPlaceHolder.get(0).isOver)_mthis.hideAll()},_mthis._settings.hoverTimeOut)};GSI_Element_Menu.prototype.show=function(domObj,callback){var _mthis=this,contId=domObj.getAttribute(this._settings.contentAttr);if(typeof callback!='function')callback=function(){};var tContent=$('#'+contId,this._contentPlaceHolder);this._doShow(tContent,callback);$(domObj).addClass('active')};GSI_Element_Menu.prototype._doShow=function(aPlaceHolder,callback){aPlaceHolder.show();callback()};GSI_Element_Menu.prototype.hide=function(domObj,callback){var _mthis=this,contId=domObj.getAttribute(this._settings.contentAttr);if(typeof callback!='function')callback=function(){};var tContent=$('#'+contId,this._contentPlaceHolder);this._doHide(tContent,callback);$(domObj).removeClass('active')};GSI_Element_Menu.prototype._doHide=function(aPlaceHolder,callback){aPlaceHolder.hide();callback()};GSI_Element_Menu.prototype.hideAll=function(){var _mthis=this;if(this.settings['alwaysOpen']){this._links.each(function(){if($(this).hasClass('active_breadcrumb'))_mthis.activate(this)})}else{this._links.each(function(){_mthis.hide(this,_mthis._settings.endHideContent)});this._currentLink=null}};GSI_Element_Menu.prototype._initGUI=function(){var _mthis=this;if(this.settings['alwaysOpen'])this._links.each(function(){if($(this).hasClass('active_breadcrumb'))_mthis.activate(this)})};GSI_Element_Menu.prototype._setClickBehaviour=function(){var _mthis=this;$(document).mousedown(function(){_mthis.deactivate()});this._placeHolder.hover(function(){this.isOver=true},function(){this.isOver=false});if(this._placeHolder!==this._contentPlaceHolder)this._contentPlaceHolder.hover(function(){this.isOver=true},function(){this.isOver=false})};GSI_Element_Menu.prototype._setTabBehaviour=function(){var _mthis=this;if(this._settings.activeTab)this.activateLink(this._settings.activeTab)};GSI_Element_Menu.prototype._setHoverBehaviour=function(){var _mthis=this;this._placeHolder.hover(function(){this.isOver=true;if(_mthis._hideTimer)clearTimeout(_mthis._hideTimer)},function(){this.isOver=false;_mthis.deactivate()});if(this._placeHolder!=this._contentPlaceHolder)this._contentPlaceHolder.hover(function(){this.isOver=true;if(_mthis._hideTimer)clearTimeout(_mthis._hideTimer)},function(){this.isOver=false;_mthis.deactivate()})};GSI_Element_Menu.prototype.activateLink=function(link){var _mthis=this;this._links.each(function(){if(link==this.getAttribute(_mthis._settings.contentAttr))_mthis.activate(this)})};
function GSI_Element_Menu_FadeIn(){};GSI_Element_Menu_FadeIn.prototype=new GSI_Element_Menu();GSI_Element_Menu_FadeIn.prototype._doShow=function(aPlaceHolder,callback){aPlaceHolder.stop(true,false).css('opacity',1).fadeIn(this._settings.openCloseTime,function(){callback()})};GSI_Element_Menu_FadeIn.prototype._doHide=function(aPlaceHolder,callback){aPlaceHolder.stop(true,false).fadeOut(this._settings.openCloseTime,function(){$(this).removeAttr("style");callback()})};
var GSI_Element_Container=function(){function F(){};F.prototype=new GSI_Element();F.prototype._over=false;F.prototype.placeHolder;F.prototype.settings={onClick:function(){},css:{},content:false};F.prototype._draw=function(){};F.prototype.refresh=function(){var _mthis=this;_mthis._draw()};F.prototype._init=function(){var _mthis=this;_mthis.placeHolder.hover(function(){_mthis._over=true},function(){_mthis._over=false})};F.prototype.isOver=function(){var _mthis=this;return _mthis._over};F.prototype.start=function(placeHolder,settings){var _mthis=this;_mthis.placeHolder=$(placeHolder);_mthis.settings=GSI.functions.array_merge(_mthis.settings,settings);_mthis._init();_mthis._draw()};return new F()};
var GSI_Element_Container_Menu=function(){this.settings={timeoutLength:250,targetType:'target'};this._links=new Array()};GSI_Element_Container_Menu.prototype=new GSI_Element_Container();GSI_Element_Container_Menu.prototype._links=null;GSI_Element_Container_Menu.prototype.activeLink=null;GSI_Element_Container_Menu.prototype.show=function(callback){};GSI_Element_Container_Menu.prototype.hide=function(callback){};GSI_Element_Container_Menu.prototype.showElement=function(element,callback){element.showContent(callback)};GSI_Element_Container_Menu.prototype.hideElement=function(element,callback){element.hideContent(callback)};GSI_Element_Container_Menu.prototype.hideAll=function(){var _mthis=this;for(var aLink in _mthis._links){if(aLink=='indexOf')continue;_mthis._links[aLink].hideContent()};_mthis.resetAll();_mthis.activeLink=null};GSI_Element_Container_Menu.prototype.resetAll=function(){};GSI_Element_Container_Menu.prototype.addLink=function(element){var _mthis=this;_mthis._links.push(element)};GSI_Element_Container_Menu.prototype.activateLink=function(target){for(var aLink in this._links)if(this._links[aLink].target==target)return this._activateLink(this._links[aLink])};GSI_Element_Container_Menu.prototype._activateLink=function(link){var _mthis=this;_mthis.activeLink=link};GSI_Element_Container_Menu.prototype._createLink=function(){return new GSI_Element_Container_Link()};GSI_Element_Container_Menu.prototype.isOver=function(){var _mthis=this;for(var aLink in _mthis._links)if(_mthis._links[aLink].isOver())return true;return _mthis._over};GSI_Element_Container_Menu.prototype.start=function(placeHolder,settings){var _mthis=this;_mthis.placeHolder=$(placeHolder);_mthis.settings=GSI.functions.array_merge(_mthis.settings,settings);_mthis.placeHolder.css(_mthis.settings.css);_mthis._init();$('.GSI_link',_mthis.placeHolder).each(function(){var link=_mthis._createLink();link.start(this);_mthis.addLink(link);$(this).click(function(){_mthis._activateLink(link);_mthis.settings.onClick()})})};
var GSI_Element_Container_Menu_Tab=function(){function F(){};F.prototype=new GSI_Element_Container_Menu();F.prototype.settings={onClick:function(){},css:{},content:false,hideOnExit:true,targetType:'target'};F.prototype._activateLink=function(link){var _mthis=this;if(_mthis.activeLink===link)return;if(GSI.functions.isset(_mthis.activeLink)){_mthis.hideElement(_mthis.activeLink,function(){_mthis.activeLink=link;_mthis.showElement(link)})}else{_mthis.activeLink=link;_mthis.showElement(link)}};F.prototype.showElement=function(element,callback){var _mthis=this;element.showContent(callback)};F.prototype.start=function(placeHolder,settings){var _mthis=this;_mthis.placeHolder=$(placeHolder);_mthis.settings=GSI.functions.array_merge(_mthis.settings,settings);_mthis.placeHolder.css(_mthis.settings.css);_mthis._init();$('.GSI_link',_mthis.placeHolder).each(function(){var link=_mthis._createLink();link.start(this,_mthis.settings);_mthis.addLink(link);link.click=function(){};if(_mthis.settings['activateEvent']=='hover'){$(this).hover(function(){_mthis._activateLink(link);_mthis.settings.onClick()},function(){_mthis.hideAll()})}else $(this).click(function(e){e.preventDefault();_mthis._activateLink(link);_mthis.settings.onClick();return false});var target=$(this).is('a')?this[_mthis.settings.targetType]:$('a',this).attr(_mthis.settings.targetType),activeTab=_mthis.settings.activeTab?_mthis.settings.activeTab:'';if(target==window.location.hash.replace('#','')){_mthis._activateLink(link);return};if(target==activeTab){_mthis._activateLink(link);return}});if(_mthis.settings.hideOnExit)$(document).mousedown(function(){if(_mthis.isOver())return;_mthis.hideAll()});_mthis.placeHolder.fadeIn('slow')};return new F()};
var GSI_Element_Container_Menu_Hover=function(){this._isOpen=false};GSI_Element_Container_Menu_Hover.prototype._timer=null;GSI_Element_Container_Menu_Hover.prototype._showTimer=null;GSI_Element_Container_Menu_Hover.prototype=new GSI_Element_Container_Menu_Tab();GSI_Element_Container_Menu_Hover.prototype._createLink=function(){var res=new GSI_Element_Container_Link_Hover(this);return res};GSI_Element_Container_Menu_Hover.prototype.hideGUI=function(callback){};GSI_Element_Container_Menu_Hover.prototype.initGUI=function(callback){};GSI_Element_Container_Menu_Hover.prototype.hideAll=function(){if(this.isOver()){GSI.setError('The cursor is still over the menu... cannot hideAll','INFO');return};var _mthis=this;for(var aLink in _mthis._links){if(aLink=='indexOf')continue;_mthis._links[aLink].hideContent()};_mthis.resetAll();_mthis.activeLink=null};GSI_Element_Container_Menu_Hover.prototype.start=function(placeHolder,settings){var _mthis=this;_mthis.placeHolder=$(placeHolder);_mthis.settings=GSI.functions.array_merge(_mthis.settings,settings);_mthis.placeHolder.css(_mthis.settings.css);_mthis._init();this._timer=null;$('.GSI_link',_mthis.placeHolder).each(function(){var link=_mthis._createLink();link.start(this,_mthis.settings);_mthis.addLink(link);$(this).hover(function(){if(_mthis._isOpen){if(_mthis._timer){clearTimeout(_mthis._timer);_mthis._timer=null};_mthis._showTimer=setTimeout(function(){if(_mthis.isOver()){_mthis._activateLink(link);_mthis.settings.onClick()}},_mthis.settings.timeoutLength)}else if(_mthis.isOver()){if(_mthis._timer){clearTimeout(_mthis._timer);_mthis._timer=null};_mthis._isOpen=true;_mthis._activateLink(link);_mthis.settings.onClick()}},function(){clearTimeout(_mthis._showTimer);_mthis._timer=setTimeout(function(){_mthis._isOpen=false;_mthis.hideAll()},_mthis.settings.timeoutLength)});var target=$(this).is('a')?this[_mthis.settings.targetType]:$('a',this).attr(_mthis.settings.targetType),activeTab=_mthis.settings.activeTab?_mthis.settings.activeTab:'';if(target==window.location.hash.replace('#','')){_mthis._activateLink(link);return};if(target==activeTab){_mthis._activateLink(link);return}});if(_mthis.settings.hideOnExit)$(document).mousedown(function(){if(_mthis.isOver())return;_mthis.hideAll()});_mthis.initGUI();_mthis.placeHolder.fadeIn('slow')};
var GSI_Element_Container_Link=function(){this.placeHolder;this._element=false;this.target='';this.settings={onClick:function(){},css:{},targetType:'target',content:false}};GSI_Element_Container_Link.prototype=new GSI_Element_Container();GSI_Element_Container_Link.prototype.getElement=function(){return this._element};GSI_Element_Container_Link.prototype.show=function(callback){if(!GSI.functions.isset(callback))callback=function(){};this.placeHolder.show();callback()};GSI_Element_Container_Link.prototype.hide=function(callback){if(!GSI.functions.isset(callback))callback=function(){};this.placeHolder.hide();callback()};GSI_Element_Container_Link.prototype.showContent=function(callback){if(this._element)this._element.show(callback);this.placeHolder.addClass('active')};GSI_Element_Container_Link.prototype.hideContent=function(callback){if(this._element)this._element.hide(callback);this.placeHolder.removeClass('active')};GSI_Element_Container_Link.prototype.toggleContent=function(callback){if(this.placeHolder.hasClass('active')){this.hideContent(callback)}else this.showContent(callback)};GSI_Element_Container_Link.prototype.click=function(){this.showContent()};GSI_Element_Container_Link.prototype._draw=function(){if(this.settings.content)this.placeHolder.html(this.settings.content)};GSI_Element_Container_Link.prototype.refresh=function(){this._draw()};GSI_Element_Container_Link.prototype._createElement=function(){return new GSI_Element_Container_Content()};GSI_Element_Container_Link.prototype.setElement=function(element){this._element=element};GSI_Element_Container_Link.prototype.isOver=function(){if(this._element.isOver())return true;return this._over};GSI_Element_Container_Link.prototype.start=function(placeHolder,settings){var _mthis=this;this.placeHolder=$(placeHolder);this.settings=GSI.functions.array_merge(this.settings,settings);this.placeHolder.css(this.settings.css);this._init();if($(this.placeHolder).is('a')){var elements=this.placeHolder}else var elements=$('a',this.placeHolder);elements.each(function(){var content=_mthis._createElement();_mthis.target=this[_mthis.settings.targetType];content.start('#'+_mthis.target,_mthis.settings);_mthis.setElement(content)});this._draw()};
var GSI_Element_Container_Link_Hover=function(container){this._container=container};GSI_Element_Container_Link_Hover.prototype=new GSI_Element_Container_Link();GSI_Element_Container_Link_Hover.prototype._container=null;GSI_Element_Container_Link_Hover.prototype.hideAll=function(){GSI.setError('Callling menu hideAll from Link_Hover','INFO');this._container.hideAll()};GSI_Element_Container_Link_Hover.prototype._createElement=function(){return new GSI_Element_Container_Content_Hover(this)};
var GSI_Element_Container_Content=function(){function F(){};F.prototype=new GSI_Element_Container();F.prototype.placeHolder;F.prototype.settings={onClick:function(){},css:{},content:false};F.prototype.show=function(callback){var _mthis=this;if(!GSI.functions.isset(callback))callback=function(){};_mthis.placeHolder.show();callback()};F.prototype.toggle=function(callback){var _mthis=this;if(!GSI.functions.isset(callback))callback=function(){};_mthis.placeHolder.toggle();callback()};F.prototype.hide=function(callback){var _mthis=this;if(!GSI.functions.isset(callback))callback=function(){};_mthis.placeHolder.hide();callback()};F.prototype._draw=function(){var _mthis=this;if(_mthis.settings.content)_mthis.placeHolder.html(_mthis.settings.content)};F.prototype.refresh=function(){var _mthis=this;_mthis._draw()};F.prototype.start=function(placeHolder,settings){var _mthis=this;_mthis.placeHolder=$(placeHolder);_mthis.settings=GSI.functions.array_merge(_mthis.settings,settings);_mthis.placeHolder.css(_mthis.settings.css);_mthis._init();_mthis._draw()};return new F()};
var GSI_Element_Container_Content_Hover=function(container){this._container=container};GSI_Element_Container_Content_Hover.prototype._container=null;GSI_Element_Container_Content_Hover.prototype=new GSI_Element_Container_Content();GSI_Element_Container_Content_Hover.prototype.show=function(callback){var _mthis=this;if(!GSI.functions.isset(callback))callback=function(){};_mthis.placeHolder.fadeIn(250,callback)};GSI_Element_Container_Content_Hover.prototype._draw=function(){var _mthis=this;if(_mthis.settings.content)_mthis.placeHolder.html(_mthis.settings.content);$(_mthis.placeHolder).mouseout(function(){GSI.setError('Callling link hideAll from Content_Hover','INFO');setTimeout(function(){_mthis._container.hideAll()},250)})};GSI_Element_Container_Content_Hover.prototype.hide=function(callback){var _mthis=this;if(!GSI.functions.isset(callback))callback=function(){};_mthis.placeHolder.fadeOut(250,callback)};
var GSI_ICC_MATINIQUE_Element_Container_Menu_TopMenuHover=function(){};GSI_ICC_MATINIQUE_Element_Container_Menu_TopMenuHover.prototype=new GSI_Element_Container_Menu_Hover();GSI_ICC_MATINIQUE_Element_Container_Menu_TopMenuHover.prototype.resetAll=function(callback){if(!GSI.functions.isset(callback))callback=function(){};if(this.settings['alwaysOpen']){callback();return}};GSI_ICC_MATINIQUE_Element_Container_Menu_TopMenuHover.prototype.hideAll=function(){if(this.isOver()){GSI.setError('The cursor is still over the menu... cannot hideAll','INFO');return};var _mthis=this,found=false;if(this.settings['alwaysOpen']){for(var aLink in this._links){if(aLink=='indexOf')continue;if(this._links[aLink].placeHolder.hasClass('active_breadcrumb')){this._activateLink(this._links[aLink]);found=true}else this._links[aLink].hideContent()};if(!found){_mthis.resetAll();_mthis.activeLink=null}}else{for(var aLink in _mthis._links){if(aLink=='indexOf')continue;_mthis._links[aLink].hideContent()};_mthis.resetAll();_mthis.activeLink=null}};GSI_ICC_MATINIQUE_Element_Container_Menu_TopMenuHover.prototype.initGUI=function(callback){var _mthis=this;if(!GSI.functions.isset(callback))callback=function(){};if(this.settings['alwaysOpen'])for(var aLink in this._links){if(aLink=='indexOf')continue;if(this._links[aLink].placeHolder.hasClass('active_breadcrumb'))this._activateLink(this._links[aLink])}};
function GSI_Element_Loader(){this._placeHolder;this._loaderSize='large';this._imageLoaderObj;this._loaderImg;this._isOn=false;this._zIndex=2;this._customCss=null;this.start=function(aPlaceHolder,xtraConf,css){var _mthis=this;this._placeHolder=$(aPlaceHolder);if(this._placeHolder.length!=1){GSI.setError('ERROR, a loader got badly initiated','ERROR');return};for(var aConf in xtraConf)_mthis[aConf]=xtraConf[aConf];this._imageLoaderObj=$('<div class="loader"></div>');var imgPath;switch(this._loaderSize){case'small':imgPath=GSI_LOADER_IMAGE_SMALL;break;case'medium':imgPath=GSI_LOADER_IMAGE_MEDIUM;break;case'large':imgPath=GSI_LOADER_IMAGE_BIG;break;default:imgPath=GSI_LOADER_IMAGE_BIG;break};this._loaderImg=$("<img src='"+imgPath+"'\>").load(function(){_mthis._setupImg()});this._imageLoaderObj.html(this._loaderImg);if(css){this.css(css)}else this._setup()};this.refresh=function(){this._setup()};this.refreshImg=function(){this._setupImg()};this.on=function(forceRefresh){var _mthis=this;this._imageLoaderObj.prependTo(this._placeHolder).fadeTo("fast",0.5,function(){_mthis._isOn=true});if(forceRefresh)this._setupImg()};this.off=function(callback){var _mthis=this;if(!callback)callback=function(){};this._imageLoaderObj.fadeTo('fast',0,function(){$(this).remove();_mthis._isOn=false;callback()})};this.css=function(css){this._customCss=css;this._setup()};this._getImageTop=function(){try{var height=this._placeHolder.get(0).offsetHeight,top=(height-$('img',this._imageLoaderObj).get(0).offsetHeight)/2;return top?top:height/2}catch(e){GSI.setError(e.message,'ERROR')}};this._getImageLeft=function(){try{var width=this._placeHolder.get(0).offsetWidth,left=(width-$('img',this._imageLoaderObj).get(0).offsetWidth)/2;return left?left:width/2}catch(e){GSI.setError(e.message,'ERROR')}};this._setup=function(){var _mthis=this;try{var aDom=this._placeHolder.get(0),width=aDom.offsetWidth>0?aDom.offsetWidth:parseInt(this._placeHolder.css('width')),height=aDom.offsetHeight>0?aDom.offsetHeight:parseInt(this._placeHolder.css('height'));if(isNaN(width)||isNaN(height))return;var placeHolderCss={width:width+'px',height:height+'px',top:'0px',left:'0px',position:'absolute',overflow:'hidden','z-index':_mthis._zIndex};this._imageLoaderObj.css(placeHolderCss);if(this._customCss)this._imageLoaderObj.css(this._customCss)}catch(e){GSI.setError('There was an error setting up the loader: '+e.message,'ERROR')}};this._setupImg=function(){if(!this._placeHolder)return;var left=this._getImageLeft(),top=this._getImageTop();if(isNaN(left)||isNaN(top))return;this._loaderImg.css({position:'absolute','margin-top':top+'px','margin-left':left+'px',left:'0px',top:'0px'})}};
function GSI_Element_Loader_Inline(){};GSI_Element_Loader_Inline.prototype=new GSI_Element_Loader();GSI_Element_Loader_Inline.prototype._setup=function(){var _mthis=this;try{var width=(this._placeHolder.width()),height=(this._placeHolder.height());if(isNaN(width)||isNaN(height))return;if($.browser.msie&&parseFloat($.browser.version)<=7){var placeHolderCss={width:width+'px',height:height+'px','z-index':_mthis._zIndex,position:'absolute',top:'0px',left:'0px'};this._placeHolder.css({position:'relative'})}else var placeHolderCss={width:width+'px',height:height+'px',opacity:'0','z-index':_mthis._zIndex};this._imageLoaderObj.css(placeHolderCss);if(this._customCss)this._imageLoaderObj.css(this._customCss)}catch(e){GSI.setError('There was an error setting up the loader: '+e.message,'ERROR')}};GSI_Element_Loader_Inline.prototype.on=function(forceRefresh){var _mthis=this;this._setup();this._setupImg();this._imageLoaderObj.prependTo(this._placeHolder).fadeTo("fast",0.5,function(){_mthis._isOn=true})};
function GSI_Element_Video(){this._on=false;this.active=true;this.allowTooltip=true};GSI_Element_Video.prototype._source;GSI_Element_Video.prototype._placeHolder;GSI_Element_Video.prototype._on;GSI_Element_Video.prototype.active;GSI_Element_Video.prototype.start=function(source,placeholder,settings){};GSI_Element_Video.prototype.play=function(){};GSI_Element_Video.prototype.stop=function(){};GSI_Element_Video.prototype.pause=function(on){};GSI_Element_Video.prototype.refresh=function(){};
function GSI_Element_Video_Flash(){this._on=false;this.active=true;this.allowTooltip=true;this.skinName='jcplayer';this.settings={width:610,height:385,version:9,params:false,control:false,videoPlaceHolder:null,videoBarColor:'44deff',backgroundColor1:'000000',backgroundColor2:'000000',inkColor:'ffffff'}};GSI_Element_Video_Flash.prototype=new GSI_Element_Video();GSI_Element_Video_Flash.prototype._source;GSI_Element_Video_Flash.prototype._placeHolder;GSI_Element_Video_Flash.prototype._on=null;GSI_Element_Video_Flash.prototype._control=null;GSI_Element_Video_Flash.prototype._movie=null;GSI_Element_Video_Flash.prototype.active=null;GSI_Element_Video_Flash.prototype.skinName=null;GSI_Element_Video_Flash.prototype.settings=null;GSI_Element_Video_Flash.prototype.start=function(source,placeholder,settings){var _mthis=this;this._placeHolder=$(placeholder);this.settings=GSI.functions.array_merge(this.settings,settings);if(!this.settings.videoPlaceHolder)this.settings.videoPlaceHolder=this._placeHolder;var id=this._placeHolder.attr('id'),movieId=id+'_mov',width=this.settings.width||this._placeHolder.css('width'),height=this.settings.height||this._placeHolder.css('height'),version=this.settings.version||null,params=this.settings.params||null,invalid=false;if(source.substring(source.lastIndexOf(".")).toLowerCase()!='.flv')invalid=true;this._control=$(this.settings.control);if(this._control.length>0)if(invalid){this._control.addClass('disabled').click(function(){return false})}else{this._control.live('click',function(){_mthis._replace(source,movieId,width,height,version,params);_mthis.toggle();return false});this._control.hover(function(){if(GSI.widgets.tooltip&&this.allowTooltip)GSI.widgets.tooltip.show(this,null,GSI.dict.getText('item','play_video'),null,150,'t',null,15)},function(){if(GSI.widgets.tooltip&&this.allowTooltip)GSI.widgets.tooltip.hide()}).removeClass('disabled')};this.refresh();if(invalid)return false};GSI_Element_Video_Flash.prototype.toggle=function(){if(this._on){this.stop()}else this.play()};GSI_Element_Video_Flash.prototype._playMovie=function(){try{this._movie.play()}catch(e){GSI.setError('The flash movie cannot be played! ERROR: '+e.message,'WARNING')}};GSI_Element_Video_Flash.prototype._stopMovie=function(){try{this._movie.stop()}catch(e){GSI.setError('The flash movie cannot be stopped! ERROR: '+e.message,'WARNING')}};GSI_Element_Video_Flash.prototype._pauseMovie=function(){try{this._movie.pause()}catch(e){GSI.setError('The flash movie cannot be paused! ERROR: '+e.message,'WARNING')}};GSI_Element_Video_Flash.prototype.stop=function(){this._stopMovie();this.settings.videoPlaceHolder.html('');this._on=false;this._control.trigger('video_flash_stop')};GSI_Element_Video_Flash.prototype.play=function(){var _mthis=this,stop=function(){_mthis.stop()},play=function(){_mthis._playMovie()};GSI.widgets.lightbox.show({url:'#'+_mthis._placeHolder.attr('id'),minWidth:parseInt(_mthis.settings.width)+60,minHeight:parseInt(_mthis.settings.height)+60,endShowContent:play,endRemove:stop})};GSI_Element_Video_Flash.prototype.pause=function(){this._pauseMovie();this._on=false};GSI_Element_Video_Flash.prototype._elmToReplace=null;GSI_Element_Video_Flash.prototype._flashIsInstalled=null;GSI_Element_Video_Flash.prototype._defaultFlashVersion=7;GSI_Element_Video_Flash.prototype._replace=function(src,id,width,height,version,params){this._flashIsInstalled=GSI.functions.checkForFlash(version||this._defaultFlashVersion);if(this._movie){this._movie.write(this.settings.videoPlaceHolder.attr('id'));return};if(this._placeHolder&&this._flashIsInstalled){var so=new SWFObject("/static/common/swf/jcplayer/"+this.skinName+".swf","GSIFlashVideoPlayer",width,height,9);so.addParam('quality','high');so.addParam("pluginspace","http://www.adobe.com/go/getflashplayer");so.addParam('align','middle');so.addParam('play','true');so.addParam('loop','true');so.addParam('scale','noScale');so.addParam('wmode','window');so.addParam('autoPlay','true');so.addParam('devicefont','false');so.addParam('id',this.skinName);so.addParam('bgcolor','#ffffff');so.addParam('name',this.skinName);so.addParam('menu','true');so.addParam('allowFullScreen','true');so.addParam('allowScriptAccess','sameDomain');so.addParam('FlashVars','videoURL='+src+'&autoPlay=true&scaleMode=maintainAspectRatio&loop=false&backgroundColor1=0x'+this.settings.backgroundColor1+'&backgroundColor2=0x'+this.settings.backgroundColor2+'&inkColor=0x'+this.settings.inkColor+'&highlightColor=0x'+this.settings.videoBarColor+'&playButoon=true&seekBar=true&timeBar=true&volumeButton=true&fullScreenButton=true&autoHide=false&autoHideFullScreen=true&offsetY=0&offsetYFullScreen=25&margins=0&marginsFullScreen=0&volume=70&bufferTime=1&smoothing=auto');so.addParam('movie',this.skinName);so.addParam('salign','TL');so.write(this.settings.videoPlaceHolder.attr('id'))}else this.settings.videoPlaceHolder.html(GSI.dict.getText('shared','flash_not_installed'));this._movie=so};
function GSI_ICC_Element_Video_Flash(){this._on=false;this.active=true};GSI_ICC_Element_Video_Flash.prototype=new GSI_Element_Video_Flash();GSI_ICC_Element_Video_Flash.prototype.play=function(){var _mthis=this,stop=function(){_mthis.stop()},play=function(){_mthis._playMovie()},makeContainer=function(){$('#GSIFlashVideoPlayer').before('<div id="videoWrp"></div>');play();_mthis._control.trigger('video_flash_play')};GSI.widgets.lightbox.show({url:'#'+_mthis._placeHolder.attr('id'),minWidth:_mthis.settings.width,minHeight:_mthis.settings.height+56,endShowContent:makeContainer,endRemove:stop})};
/*!
* Copyright (c) 2010 Simo Kinnunen.
* Licensed under the MIT license.
* 
* @version $Id: $
*/

var Cufon = (function() {

var api = function() {
return api.replace.apply(null, arguments);
};

var DOM = api.DOM = {

ready: (function() {

var complete = false, readyStatus = { loaded: 1, complete: 1 };

var queue = [], perform = function() {
if (complete) return;
complete = true;
for (var fn; fn = queue.shift(); fn());
};

// Gecko, Opera, WebKit r26101+

if (document.addEventListener) {
document.addEventListener('DOMContentLoaded', perform, false);
window.addEventListener('pageshow', perform, false); // For cached Gecko pages
}

// Old WebKit, Internet Explorer

if (!window.opera && document.readyState) (function() {
readyStatus[document.readyState] ? perform() : setTimeout(arguments.callee, 10);
})();

// Internet Explorer

if (document.readyState && document.createStyleSheet) (function() {
try {
document.body.doScroll('left');
perform();
}
catch (e) {
setTimeout(arguments.callee, 1);
}
})();

addEvent(window, 'load', perform); // Fallback

return function(listener) {
if (!arguments.length) perform();
else complete ? listener() : queue.push(listener);
};

})(),

root: function() {
return document.documentElement || document.body;
}

};

var CSS = api.CSS = {

Size: function(value, base) {

this.value = parseFloat(value);
this.unit = String(value).match(/[a-z%]*$/)[0] || 'px';

this.convert = function(value) {
return value / base * this.value;
};

this.convertFrom = function(value) {
return value / this.value * base;
};

this.toString = function() {
return this.value + this.unit;
};

},

addClass: function(el, className) {
var current = el.className;
el.className = current + (current && ' ') + className;
return el;
},

color: cached(function(value) {
var parsed = {};
parsed.color = value.replace(/^rgba\((.*?),\s*([\d.]+)\)/, function($0, $1, $2) {
parsed.opacity = parseFloat($2);
return 'rgb(' + $1 + ')';
});
return parsed;
}),

// has no direct CSS equivalent.
// @see http://msdn.microsoft.com/en-us/library/system.windows.fontstretches.aspx
fontStretch: cached(function(value) {
if (typeof value == 'number') return value;
if (/%$/.test(value)) return parseFloat(value) / 100;
return {
'ultra-condensed': 0.5,
'extra-condensed': 0.625,
condensed: 0.75,
'semi-condensed': 0.875,
'semi-expanded': 1.125,
expanded: 1.25,
'extra-expanded': 1.5,
'ultra-expanded': 2
}[value] || 1;
}),

getStyle: function(el) {
var view = document.defaultView;
if (view && view.getComputedStyle) return new Style(view.getComputedStyle(el, null));
if (el.currentStyle) return new Style(el.currentStyle);
return new Style(el.style);
},

gradient: cached(function(value) {
var gradient = {
id: value,
type: value.match(/^-([a-z]+)-gradient\(/)[1],
stops: []
}, colors = value.substr(value.indexOf('(')).match(/([\d.]+=)?(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)/ig);
for (var i = 0, l = colors.length, stop; i < l; ++i) {
stop = colors[i].split('=', 2).reverse();
gradient.stops.push([ stop[1] || i / (l - 1), stop[0] ]);
}
return gradient;
}),

quotedList: cached(function(value) {
// doesn't work properly with empty quoted strings (""), but
// it's not worth the extra code.
var list = [], re = /\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g, match;
while (match = re.exec(value)) list.push(match[3] || match[1]);
return list;
}),

recognizesMedia: cached(function(media) {
var el = document.createElement('style'), sheet, container, supported;
el.type = 'text/css';
el.media = media;
try { // this is cached anyway
el.appendChild(document.createTextNode('/**/'));
} catch (e) {}
container = elementsByTagName('head')[0];
container.insertBefore(el, container.firstChild);
sheet = (el.sheet || el.styleSheet);
supported = sheet && !sheet.disabled;
container.removeChild(el);
return supported;
}),

removeClass: function(el, className) {
var re = RegExp('(?:^|\\s+)' + className + '(?=\\s|$)', 'g');
el.className = el.className.replace(re, '');
return el;
},

supports: function(property, value) {
var checker = document.createElement('span').style;
if (checker[property] === undefined) return false;
checker[property] = value;
return checker[property] === value;
},

textAlign: function(word, style, position, wordCount) {
if (style.get('textAlign') == 'right') {
if (position > 0) word = ' ' + word;
}
else if (position < wordCount - 1) word += ' ';
return word;
},

textShadow: cached(function(value) {
if (value == 'none') return null;
var shadows = [], currentShadow = {}, result, offCount = 0;
var re = /(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)|(-?[\d.]+[a-z%]*)|,/ig;
while (result = re.exec(value)) {
if (result[0] == ',') {
shadows.push(currentShadow);
currentShadow = {};
offCount = 0;
}
else if (result[1]) {
currentShadow.color = result[1];
}
else {
currentShadow[[ 'offX', 'offY', 'blur' ][offCount++]] = result[2];
}
}
shadows.push(currentShadow);
return shadows;
}),

textTransform: (function() {
var map = {
uppercase: function(s) {
return s.toUpperCase();
},
lowercase: function(s) {
return s.toLowerCase();
},
capitalize: function(s) {
return s.replace(/\b./g, function($0) {
return $0.toUpperCase();
});
}
};
return function(text, style) {
var transform = map[style.get('textTransform')];
return transform ? transform(text) : text;
};
})(),

whiteSpace: (function() {
var ignore = {
inline: 1,
'inline-block': 1,
'run-in': 1
};
var wsStart = /^\s+/, wsEnd = /\s+$/;
return function(text, style, node, previousElement, simple) {
if (simple) return text.replace(wsStart, '').replace(wsEnd, '');
if (previousElement) {
if (previousElement.nodeName.toLowerCase() == 'br') {
text = text.replace(wsStart, '');
}
}
if (ignore[style.get('display')]) return text;
if (!node.previousSibling) text = text.replace(wsStart, '');
if (!node.nextSibling) text = text.replace(wsEnd, '');
return text;
};
})()

};

CSS.ready = (function() {

// don't do anything in Safari 2 (it doesn't recognize any media type)
var complete = !CSS.recognizesMedia('all'), hasLayout = false;

var queue = [], perform = function() {
complete = true;
for (var fn; fn = queue.shift(); fn());
};

var links = elementsByTagName('link'), styles = elementsByTagName('style');

function isContainerReady(el) {
return el.disabled || isSheetReady(el.sheet, el.media || 'screen');
}

function isSheetReady(sheet, media) {
// in Opera sheet.disabled is true when it's still loading,
// even though link.disabled is false. they stay in sync if
// set manually.
if (!CSS.recognizesMedia(media || 'all')) return true;
if (!sheet || sheet.disabled) return false;
try {
var rules = sheet.cssRules, rule;
if (rules) {
// needed for Safari 3 and Chrome 1.0.
// in standards-conforming browsers cssRules contains @-rules.
// Chrome 1.0 weirdness: rules[<number larger than .length - 1>]
// returns the last rule, so a for loop is the only option.
search: for (var i = 0, l = rules.length; rule = rules[i], i < l; ++i) {
switch (rule.type) {
case 2: // @charset
break;
case 3: // @import
if (!isSheetReady(rule.styleSheet, rule.media.mediaText)) return false;
break;
default:
// only @charset can precede @import
break search;
}
}
}
}
catch (e) {} // probably a style sheet from another domain
return true;
}

function allStylesLoaded() {
// Internet Explorer's style sheet model, there's no need to do anything
if (document.createStyleSheet) return true;
// standards-compliant browsers
var el, i;
for (i = 0; el = links[i]; ++i) {
if (el.rel.toLowerCase() == 'stylesheet' && !isContainerReady(el)) return false;
}
for (i = 0; el = styles[i]; ++i) {
if (!isContainerReady(el)) return false;
}
return true;
}

DOM.ready(function() {
// getComputedStyle returns null in Gecko if used in an iframe with display: none
if (!hasLayout) hasLayout = CSS.getStyle(document.body).isUsable();
if (complete || (hasLayout && allStylesLoaded())) perform();
else setTimeout(arguments.callee, 10);
});

return function(listener) {
if (complete) listener();
else queue.push(listener);
};

})();

function Font(data) {

var face = this.face = data.face, wordSeparators = {
'\u0020': 1,
'\u00a0': 1,
'\u3000': 1
};

this.glyphs = data.glyphs;
this.w = data.w;
this.baseSize = parseInt(face['units-per-em'], 10);

this.family = face['font-family'].toLowerCase();
this.weight = face['font-weight'];
this.style = face['font-style'] || 'normal';

this.viewBox = (function () {
var parts = face.bbox.split(/\s+/);
var box = {
minX: parseInt(parts[0], 10),
minY: parseInt(parts[1], 10),
maxX: parseInt(parts[2], 10),
maxY: parseInt(parts[3], 10)
};
box.width = box.maxX - box.minX;
box.height = box.maxY - box.minY;
box.toString = function() {
return [ this.minX, this.minY, this.width, this.height ].join(' ');
};
return box;
})();

this.ascent = -parseInt(face.ascent, 10);
this.descent = -parseInt(face.descent, 10);

this.height = -this.ascent + this.descent;

this.spacing = function(chars, letterSpacing, wordSpacing) {
var glyphs = this.glyphs, glyph,
kerning, k,
jumps = [],
width = 0, w,
i = -1, j = -1, chr;
while (chr = chars[++i]) {
glyph = glyphs[chr] || this.missingGlyph;
if (!glyph) continue;
if (kerning) {
width -= k = kerning[chr] || 0;
jumps[j] -= k;
}
w = glyph.w;
if (isNaN(w)) w = +this.w; // may have been a String in old fonts
if (w > 0) {
w += letterSpacing;
if (wordSeparators[chr]) w += wordSpacing;
}
width += jumps[++j] = ~~w; // get rid of decimals
kerning = glyph.k;
}
jumps.total = width;
return jumps;
};

}

function FontFamily() {

var styles = {}, mapping = {
oblique: 'italic',
italic: 'oblique'
};

this.add = function(font) {
(styles[font.style] || (styles[font.style] = {}))[font.weight] = font;
};

this.get = function(style, weight) {
var weights = styles[style] || styles[mapping[style]]
|| styles.normal || styles.italic || styles.oblique;
if (!weights) return null;
// we don't have to worry about "bolder" and "lighter"
// because IE's currentStyle returns a numeric value for it,
// and other browsers use the computed value anyway
weight = {
normal: 400,
bold: 700
}[weight] || parseInt(weight, 10);
if (weights[weight]) return weights[weight];
// http://www.w3.org/TR/CSS21/fonts.html#propdef-font-weight
// Gecko uses x99/x01 for lighter/bolder
var up = {
1: 1,
99: 0
}[weight % 100], alts = [], min, max;
if (up === undefined) up = weight > 400;
if (weight == 500) weight = 400;
for (var alt in weights) {
if (!hasOwnProperty(weights, alt)) continue;
alt = parseInt(alt, 10);
if (!min || alt < min) min = alt;
if (!max || alt > max) max = alt;
alts.push(alt);
}
if (weight < min) weight = min;
if (weight > max) weight = max;
alts.sort(function(a, b) {
return (up
? (a >= weight && b >= weight) ? a < b : a > b
: (a <= weight && b <= weight) ? a > b : a < b) ? -1 : 1;
});
return weights[alts[0]];
};

}

function HoverHandler() {

function contains(node, anotherNode) {
try {
if (node.contains) return node.contains(anotherNode);
return node.compareDocumentPosition(anotherNode) & 16;
}
catch(e) {} // probably a XUL element such as a scrollbar
return false;
}

function onOverOut(e) {
var related = e.relatedTarget;
// there might be no relatedTarget if the element is right next
// to the window frame
if (related && contains(this, related)) return;
trigger(this, e.type == 'mouseover');
}

function onEnterLeave(e) {
trigger(this, e.type == 'mouseenter');
}

function trigger(el, hoverState) {
// A timeout is needed so that the event can actually "happen"
// before replace is triggered. This ensures that styles are up
// to date.
setTimeout(function() {
var options = sharedStorage.get(el).options;
api.replace(el, hoverState ? merge(options, options.hover) : options, true);
}, 10);
}

this.attach = function(el) {
if (el.onmouseenter === undefined) {
addEvent(el, 'mouseover', onOverOut);
addEvent(el, 'mouseout', onOverOut);
}
else {
addEvent(el, 'mouseenter', onEnterLeave);
addEvent(el, 'mouseleave', onEnterLeave);
}
};

}

function ReplaceHistory() {

var list = [], map = {};

function filter(keys) {
var values = [], key;
for (var i = 0; key = keys[i]; ++i) values[i] = list[map[key]];
return values;
}

this.add = function(key, args) {
map[key] = list.push(args) - 1;
};

this.repeat = function() {
var snapshot = arguments.length ? filter(arguments) : list, args;
for (var i = 0; args = snapshot[i++];) api.replace(args[0], args[1], true);
};

}

function Storage() {

var map = {}, at = 0;

function identify(el) {
return el.cufid || (el.cufid = ++at);
}

this.get = function(el) {
var id = identify(el);
return map[id] || (map[id] = {});
};

}

function Style(style) {

var custom = {}, sizes = {};

this.extend = function(styles) {
for (var property in styles) {
if (hasOwnProperty(styles, property)) custom[property] = styles[property];
}
return this;
};

this.get = function(property) {
return custom[property] != undefined ? custom[property] : style[property];
};

this.getSize = function(property, base) {
return sizes[property] || (sizes[property] = new CSS.Size(this.get(property), base));
};

this.isUsable = function() {
return !!style;
};

}

function addEvent(el, type, listener) {
if (el.addEventListener) {
el.addEventListener(type, listener, false);
}
else if (el.attachEvent) {
el.attachEvent('on' + type, function() {
return listener.call(el, window.event);
});
}
}

function attach(el, options) {
var storage = sharedStorage.get(el);
if (storage.options) return el;
if (options.hover && options.hoverables[el.nodeName.toLowerCase()]) {
hoverHandler.attach(el);
}
storage.options = options;
return el;
}

function cached(fun) {
var cache = {};
return function(key) {
if (!hasOwnProperty(cache, key)) cache[key] = fun.apply(null, arguments);
return cache[key];
};
}

function getFont(el, style) {
var families = CSS.quotedList(style.get('fontFamily').toLowerCase()), family;
for (var i = 0; family = families[i]; ++i) {
if (fonts[family]) return fonts[family].get(style.get('fontStyle'), style.get('fontWeight'));
}
return null;
}

function elementsByTagName(query) {
return document.getElementsByTagName(query);
}

function hasOwnProperty(obj, property) {
return obj.hasOwnProperty(property);
}

function merge() {
var merged = {}, arg, key;
for (var i = 0, l = arguments.length; arg = arguments[i], i < l; ++i) {
for (key in arg) {
if (hasOwnProperty(arg, key)) merged[key] = arg[key];
}
}
return merged;
}

function process(font, text, style, options, node, el) {
var fragment = document.createDocumentFragment(), processed;
if (text === '') return fragment;
var separate = options.separate;
var parts = text.split(separators[separate]), needsAligning = (separate == 'words');
if (needsAligning && HAS_BROKEN_REGEXP) {
// @todo figure out a better way to do this
if (/^\s/.test(text)) parts.unshift('');
if (/\s$/.test(text)) parts.push('');
}
for (var i = 0, l = parts.length; i < l; ++i) {
processed = engines[options.engine](font,
needsAligning ? CSS.textAlign(parts[i], style, i, l) : parts[i],
style, options, node, el, i < l - 1);
if (processed) fragment.appendChild(processed);
}
return fragment;
}

function replaceElement(el, options) {
var name = el.nodeName.toLowerCase();
if (options.ignore[name]) return;
var replace = !options.textless[name], simple = (options.trim === 'simple');
var style = CSS.getStyle(attach(el, options)).extend(options);
// may cause issues if the element contains other elements
// with larger fontSize, however such cases are rare and can
// be fixed by using a more specific selector
if (parseFloat(style.get('fontSize')) === 0) return;
var font = getFont(el, style), node, type, next, anchor, text, lastElement;
if (!font) return;
for (node = el.firstChild; node; node = next) {
type = node.nodeType;
next = node.nextSibling;
if (replace && type == 3) {
// Node.normalize() is broken in IE 6, 7, 8
if (anchor) {
anchor.appendData(node.data);
el.removeChild(node);
}
else anchor = node;
if (next) continue;
}
if (anchor) {
el.replaceChild(process(font,
CSS.whiteSpace(anchor.data, style, anchor, lastElement, simple),
style, options, node, el), anchor);
anchor = null;
}
if (type == 1) {
if (node.firstChild) {
if (node.nodeName.toLowerCase() == 'cufon') {
engines[options.engine](font, null, style, options, node, el);
}
else arguments.callee(node, options);
}
lastElement = node;
}
}
}

var HAS_BROKEN_REGEXP = ' '.split(/\s+/).length == 0;

var sharedStorage = new Storage();
var hoverHandler = new HoverHandler();
var replaceHistory = new ReplaceHistory();
var initialized = false;

var engines = {}, fonts = {}, defaultOptions = {
autoDetect: false,
engine: null,
//fontScale: 1,
//fontScaling: false,
forceHitArea: false,
hover: false,
hoverables: {
a: true
},
ignore: {
applet: 1,
canvas: 1,
col: 1,
colgroup: 1,
head: 1,
iframe: 1,
map: 1,
noscript: 1,
optgroup: 1,
option: 1,
script: 1,
select: 1,
style: 1,
textarea: 1,
title: 1,
pre: 1
},
printable: true,
//rotation: 0,
//selectable: false,
selector: (
window.Sizzle
|| (window.jQuery && function(query) { return jQuery(query); }) // avoid noConflict issues
|| (window.dojo && dojo.query)
|| (window.glow && glow.dom && glow.dom.get)
|| (window.Ext && Ext.query)
|| (window.YAHOO && YAHOO.util && YAHOO.util.Selector && YAHOO.util.Selector.query)
|| (window.$$ && function(query) { return $$(query); })
|| (window.$ && function(query) { return $(query); })
|| (document.querySelectorAll && function(query) { return document.querySelectorAll(query); })
|| elementsByTagName
),
separate: 'words', // 'none' and 'characters' are also accepted
textless: {
dl: 1,
html: 1,
ol: 1,
table: 1,
tbody: 1,
thead: 1,
tfoot: 1,
tr: 1,
ul: 1
},
textShadow: 'none',
trim: 'simple'
};

var separators = {
// The first pattern may cause unicode characters above
// code point 255 to be removed in Safari 3.0. Luckily enough
// Safari 3.0 does not include non-breaking spaces in \s, so
// we can just use a simple alternative pattern.
words: /\s/.test('\u00a0') ? /[^\S\u00a0]+/ : /\s+/,
characters: '',
none: /^/
};

api.now = function() {
DOM.ready();
return api;
};

api.refresh = function() {
replaceHistory.repeat.apply(replaceHistory, arguments);
return api;
};

api.registerEngine = function(id, engine) {
if (!engine) return api;
engines[id] = engine;
return api.set('engine', id);
};

api.registerFont = function(data) {
if (!data) return api;
var font = new Font(data), family = font.family;
if (!fonts[family]) fonts[family] = new FontFamily();
fonts[family].add(font);
return api.set('fontFamily', '"' + family + '"');
};

api.replace = function(elements, options, ignoreHistory) {
options = merge(defaultOptions, options);
if (!options.engine) return api; // there's no browser support so we'll just stop here
if (!initialized) {
CSS.addClass(DOM.root(), 'cufon-active cufon-loading');
CSS.ready(function() {
// fires before any replace() calls, but it doesn't really matter
CSS.addClass(CSS.removeClass(DOM.root(), 'cufon-loading'), 'cufon-ready');
});
initialized = true;
}
if (options.hover) options.forceHitArea = true;
if (options.autoDetect) delete options.fontFamily;
if (typeof options.textShadow == 'string') {
options.textShadow = CSS.textShadow(options.textShadow);
}
if (typeof options.color == 'string' && /^-/.test(options.color)) {
options.textGradient = CSS.gradient(options.color);
}
else delete options.textGradient;
if (!ignoreHistory) replaceHistory.add(elements, arguments);
if (elements.nodeType || typeof elements == 'string') elements = [ elements ];
CSS.ready(function() {
for (var i = 0, l = elements.length; i < l; ++i) {
var el = elements[i];
if (typeof el == 'string') api.replace(options.selector(el), options, true);
else replaceElement(el, options);
}
});
return api;
};

api.set = function(option, value) {
defaultOptions[option] = value;
return api;
};

return api;

})();

Cufon.registerEngine('canvas', (function() {

// Safari 2 doesn't support .apply() on native methods

var check = document.createElement('canvas');
if (!check || !check.getContext || !check.getContext.apply) return;
check = null;

var HAS_INLINE_BLOCK = Cufon.CSS.supports('display', 'inline-block');

// Firefox 2 w/ non-strict doctype (almost standards mode)
var HAS_BROKEN_LINEHEIGHT = !HAS_INLINE_BLOCK && (document.compatMode == 'BackCompat' || /frameset|transitional/i.test(document.doctype.publicId));

var styleSheet = document.createElement('style');
styleSheet.type = 'text/css';
styleSheet.appendChild(document.createTextNode((
'cufon{text-indent:0;}' +
'@media screen,projection{' +
'cufon{display:inline;display:inline-block;position:relative;vertical-align:middle;' +
(HAS_BROKEN_LINEHEIGHT
? ''
: 'font-size:1px;line-height:1px;') +
'}cufon cufontext{display:-moz-inline-box;display:inline-block;width:0;height:0;text-indent:-10000in;}' +
(HAS_INLINE_BLOCK
? 'cufon canvas{position:relative;}'
: 'cufon canvas{position:absolute;}') +
'}' +
'@media print{' +
'cufon{padding:0;}' + // Firefox 2
'cufon canvas{display:none;}' +
'}'
).replace(/;/g, '!important;')));
document.getElementsByTagName('head')[0].appendChild(styleSheet);

function generateFromVML(path, context) {
var atX = 0, atY = 0;
var code = [], re = /([mrvxe])([^a-z]*)/g, match;
generate: for (var i = 0; match = re.exec(path); ++i) {
var c = match[2].split(',');
switch (match[1]) {
case 'v':
code[i] = { m: 'bezierCurveTo', a: [ atX + ~~c[0], atY + ~~c[1], atX + ~~c[2], atY + ~~c[3], atX += ~~c[4], atY += ~~c[5] ] };
break;
case 'r':
code[i] = { m: 'lineTo', a: [ atX += ~~c[0], atY += ~~c[1] ] };
break;
case 'm':
code[i] = { m: 'moveTo', a: [ atX = ~~c[0], atY = ~~c[1] ] };
break;
case 'x':
code[i] = { m: 'closePath' };
break;
case 'e':
break generate;
}
context[code[i].m].apply(context, code[i].a);
}
return code;
}

function interpret(code, context) {
for (var i = 0, l = code.length; i < l; ++i) {
var line = code[i];
context[line.m].apply(context, line.a);
}
}

return function(font, text, style, options, node, el) {

var redraw = (text === null);

if (redraw) text = node.getAttribute('alt');

var viewBox = font.viewBox;

var size = style.getSize('fontSize', font.baseSize);

var expandTop = 0, expandRight = 0, expandBottom = 0, expandLeft = 0;
var shadows = options.textShadow, shadowOffsets = [];
if (shadows) {
for (var i = shadows.length; i--;) {
var shadow = shadows[i];
var x = size.convertFrom(parseFloat(shadow.offX));
var y = size.convertFrom(parseFloat(shadow.offY));
shadowOffsets[i] = [ x, y ];
if (y < expandTop) expandTop = y;
if (x > expandRight) expandRight = x;
if (y > expandBottom) expandBottom = y;
if (x < expandLeft) expandLeft = x;
}
}

var chars = Cufon.CSS.textTransform(text, style).split('');

var jumps = font.spacing(chars,
~~size.convertFrom(parseFloat(style.get('letterSpacing')) || 0),
~~size.convertFrom(parseFloat(style.get('wordSpacing')) || 0)
);

if (!jumps.length) return null; // there's nothing to render

var width = jumps.total;

expandRight += viewBox.width - jumps[jumps.length - 1];
expandLeft += viewBox.minX;

var wrapper, canvas;

if (redraw) {
wrapper = node;
canvas = node.firstChild;
}
else {
wrapper = document.createElement('cufon');
wrapper.className = 'cufon cufon-canvas';
wrapper.setAttribute('alt', text);

canvas = document.createElement('canvas');
wrapper.appendChild(canvas);

if (options.printable) {
var print = document.createElement('cufontext');
print.appendChild(document.createTextNode(text));
wrapper.appendChild(print);
}
}

var wStyle = wrapper.style;
var cStyle = canvas.style;

var height = size.convert(viewBox.height);
var roundedHeight = Math.ceil(height);
var roundingFactor = roundedHeight / height;
var stretchFactor = roundingFactor * Cufon.CSS.fontStretch(style.get('fontStretch'));
var stretchedWidth = width * stretchFactor;

var canvasWidth = Math.ceil(size.convert(stretchedWidth + expandRight - expandLeft));
var canvasHeight = Math.ceil(size.convert(viewBox.height - expandTop + expandBottom));

canvas.width = canvasWidth;
canvas.height = canvasHeight;

// needed for WebKit and full page zoom
cStyle.width = canvasWidth + 'px';
cStyle.height = canvasHeight + 'px';

// minY has no part in canvas.height
expandTop += viewBox.minY;

cStyle.top = Math.round(size.convert(expandTop - font.ascent)) + 'px';
cStyle.left = Math.round(size.convert(expandLeft)) + 'px';

var wrapperWidth = Math.max(Math.ceil(size.convert(stretchedWidth)), 0) + 'px';

if (HAS_INLINE_BLOCK) {
wStyle.width = wrapperWidth;
wStyle.height = size.convert(font.height) + 'px';
}
else {
wStyle.paddingLeft = wrapperWidth;
wStyle.paddingBottom = (size.convert(font.height) - 1) + 'px';
}

var g = canvas.getContext('2d'), scale = height / viewBox.height;

// proper horizontal scaling is performed later
g.scale(scale, scale * roundingFactor);
g.translate(-expandLeft, -expandTop);
g.save();

function renderText() {
var glyphs = font.glyphs, glyph, i = -1, j = -1, chr;
g.scale(stretchFactor, 1);
while (chr = chars[++i]) {
var glyph = glyphs[chars[i]] || font.missingGlyph;
if (!glyph) continue;
if (glyph.d) {
g.beginPath();
if (glyph.code) interpret(glyph.code, g);
else glyph.code = generateFromVML('m' + glyph.d, g);
g.fill();
}
g.translate(jumps[++j], 0);
}
g.restore();
}

if (shadows) {
for (var i = shadows.length; i--;) {
var shadow = shadows[i];
g.save();
g.fillStyle = shadow.color;
g.translate.apply(g, shadowOffsets[i]);
renderText();
}
}

var gradient = options.textGradient;
if (gradient) {
var stops = gradient.stops, fill = g.createLinearGradient(0, viewBox.minY, 0, viewBox.maxY);
for (var i = 0, l = stops.length; i < l; ++i) {
fill.addColorStop.apply(fill, stops[i]);
}
g.fillStyle = fill;
}
else g.fillStyle = style.get('color');

renderText();

return wrapper;

};

})());

Cufon.registerEngine('vml', (function() {

var ns = document.namespaces;
if (!ns) return;
ns.add('cvml', 'urn:schemas-microsoft-com:vml');
ns = null;

var check = document.createElement('cvml:shape');
check.style.behavior = 'url(#default#VML)';
if (!check.coordsize) return; // VML isn't supported
check = null;

var HAS_BROKEN_LINEHEIGHT = (document.documentMode || 0) < 8;

document.write(('<style type="text/css">' +
'cufoncanvas{text-indent:0;}' +
'@media screen{' +
'cvml\\:shape,cvml\\:rect,cvml\\:fill,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute;}' +
'cufoncanvas{position:absolute;text-align:left;}' +
'cufon{display:inline-block;position:relative;vertical-align:' +
(HAS_BROKEN_LINEHEIGHT
? 'middle'
: 'text-bottom') +
';}' +
'cufon cufontext{position:absolute;left:-10000in;font-size:1px;}' +
'a cufon{cursor:pointer}' + // ignore !important here
'}' +
'@media print{' +
'cufon cufoncanvas{display:none;}' +
'}' +
'</style>').replace(/;/g, '!important;'));

function getFontSizeInPixels(el, value) {
return getSizeInPixels(el, /(?:em|ex|%)$|^[a-z-]+$/i.test(value) ? '1em' : value);
}

// Original by Dead Edwards.
// Combined with getFontSizeInPixels it also works with relative units.
function getSizeInPixels(el, value) {
if (!isNaN(value) || /px$/i.test(value)) return parseFloat(value);
var style = el.style.left, runtimeStyle = el.runtimeStyle.left;
el.runtimeStyle.left = el.currentStyle.left;
el.style.left = value.replace('%', 'em');
var result = el.style.pixelLeft;
el.style.left = style;
el.runtimeStyle.left = runtimeStyle;
return result;
}

function getSpacingValue(el, style, size, property) {
var key = 'computed' + property, value = style[key];
if (isNaN(value)) {
value = style.get(property);
style[key] = value = (value == 'normal') ? 0 : ~~size.convertFrom(getSizeInPixels(el, value));
}
return value;
}

var fills = {};

function gradientFill(gradient) {
var id = gradient.id;
if (!fills[id]) {
var stops = gradient.stops, fill = document.createElement('cvml:fill'), colors = [];
fill.type = 'gradient';
fill.angle = 180;
fill.focus = '0';
fill.method = 'none';
fill.color = stops[0][1];
for (var j = 1, k = stops.length - 1; j < k; ++j) {
colors.push(stops[j][0] * 100 + '% ' + stops[j][1]);
}
fill.colors = colors.join(',');
fill.color2 = stops[k][1];
fills[id] = fill;
}
return fills[id];
}

return function(font, text, style, options, node, el, hasNext) {

var redraw = (text === null);

if (redraw) text = node.alt;

var viewBox = font.viewBox;

var size = style.computedFontSize || (style.computedFontSize = new Cufon.CSS.Size(getFontSizeInPixels(el, style.get('fontSize')) + 'px', font.baseSize));

var wrapper, canvas;

if (redraw) {
wrapper = node;
canvas = node.firstChild;
}
else {
wrapper = document.createElement('cufon');
wrapper.className = 'cufon cufon-vml';
wrapper.alt = text;

canvas = document.createElement('cufoncanvas');
wrapper.appendChild(canvas);

if (options.printable) {
var print = document.createElement('cufontext');
print.appendChild(document.createTextNode(text));
wrapper.appendChild(print);
}

// ie6, for some reason, has trouble rendering the last VML element in the document.
// we can work around this by injecting a dummy element where needed.
// @todo find a better solution
if (!hasNext) wrapper.appendChild(document.createElement('cvml:shape'));
}

var wStyle = wrapper.style;
var cStyle = canvas.style;

var height = size.convert(viewBox.height), roundedHeight = Math.ceil(height);
var roundingFactor = roundedHeight / height;
var stretchFactor = roundingFactor * Cufon.CSS.fontStretch(style.get('fontStretch'));
var minX = viewBox.minX, minY = viewBox.minY;

cStyle.height = roundedHeight;
cStyle.top = Math.round(size.convert(minY - font.ascent));
cStyle.left = Math.round(size.convert(minX));

wStyle.height = size.convert(font.height) + 'px';

var color = style.get('color');
var chars = Cufon.CSS.textTransform(text, style).split('');

var jumps = font.spacing(chars,
getSpacingValue(el, style, size, 'letterSpacing'),
getSpacingValue(el, style, size, 'wordSpacing')
);

if (!jumps.length) return null;

var width = jumps.total;
var fullWidth = -minX + width + (viewBox.width - jumps[jumps.length - 1]);

var shapeWidth = size.convert(fullWidth * stretchFactor), roundedShapeWidth = Math.round(shapeWidth);

var coordSize = fullWidth + ',' + viewBox.height, coordOrigin;
var stretch = 'r' + coordSize + 'ns';

var fill = options.textGradient && gradientFill(options.textGradient);

var glyphs = font.glyphs, offsetX = 0;
var shadows = options.textShadow;
var i = -1, j = 0, chr;

while (chr = chars[++i]) {

var glyph = glyphs[chars[i]] || font.missingGlyph, shape;
if (!glyph) continue;

if (redraw) {
// some glyphs may be missing so we can't use i
shape = canvas.childNodes[j];
while (shape.firstChild) shape.removeChild(shape.firstChild); // shadow, fill
}
else {
shape = document.createElement('cvml:shape');
canvas.appendChild(shape);
}

shape.stroked = 'f';
shape.coordsize = coordSize;
shape.coordorigin = coordOrigin = (minX - offsetX) + ',' + minY;
shape.path = (glyph.d ? 'm' + glyph.d + 'xe' : '') + 'm' + coordOrigin + stretch;
shape.fillcolor = color;

if (fill) shape.appendChild(fill.cloneNode(false));

// it's important to not set top/left or IE8 will grind to a halt
var sStyle = shape.style;
sStyle.width = roundedShapeWidth;
sStyle.height = roundedHeight;

if (shadows) {
// due to the limitations of the VML shadow element there
// can only be two visible shadows. opacity is shared
// for all shadows.
var shadow1 = shadows[0], shadow2 = shadows[1];
var color1 = Cufon.CSS.color(shadow1.color), color2;
var shadow = document.createElement('cvml:shadow');
shadow.on = 't';
shadow.color = color1.color;
shadow.offset = shadow1.offX + ',' + shadow1.offY;
if (shadow2) {
color2 = Cufon.CSS.color(shadow2.color);
shadow.type = 'double';
shadow.color2 = color2.color;
shadow.offset2 = shadow2.offX + ',' + shadow2.offY;
}
shadow.opacity = color1.opacity || (color2 && color2.opacity) || 1;
shape.appendChild(shadow);
}

offsetX += jumps[j++];
}

// addresses flickering issues on :hover

var cover = shape.nextSibling, coverFill, vStyle;

if (options.forceHitArea) {

if (!cover) {
cover = document.createElement('cvml:rect');
cover.stroked = 'f';
cover.className = 'cufon-vml-cover';
coverFill = document.createElement('cvml:fill');
coverFill.opacity = 0;
cover.appendChild(coverFill);
canvas.appendChild(cover);
}

vStyle = cover.style;

vStyle.width = roundedShapeWidth;
vStyle.height = roundedHeight;

}
else if (cover) canvas.removeChild(cover);

wStyle.width = Math.max(Math.ceil(size.convert(width * stretchFactor)), 0);

if (HAS_BROKEN_LINEHEIGHT) {

var yAdjust = style.computedYAdjust;

if (yAdjust === undefined) {
var lineHeight = style.get('lineHeight');
if (lineHeight == 'normal') lineHeight = '1em';
else if (!isNaN(lineHeight)) lineHeight += 'em'; // no unit
style.computedYAdjust = yAdjust = 0.5 * (getSizeInPixels(el, lineHeight) - parseFloat(wStyle.height));
}

if (yAdjust) {
wStyle.marginTop = Math.ceil(yAdjust) + 'px';
wStyle.marginBottom = yAdjust + 'px';
}

}

return wrapper;

};

})());
/*!
 * The following copyright notice may not be removed under any circumstances.
 * 
 * $Id: $
 * 
 * Copyright:
 * Part of the digitally encoded machine readable outline data for producing the
 * Typefaces provided is copyrighted © 1988 - 2006 Linotype GmbH, www.linotype.com.
 * All rights reserved. This software is the property of Linotype GmbH, and may not
 * be reproduced, used, displayed, modified, disclosed or transferred without the
 * express written approval of Linotype GmbH.  Copyright (c) 1988, 1990, 1993 Adobe
 * Systems Incorporated. All Rights Reserved. Helvetica is a trademark of
 * Heidelberger Druckmaschinen AG, exclusively licensed through Linotype GmbH, and
 * may be registered in certain jurisdictions. This typeface is original artwork of
 * Linotype Design Studio. The design may be protected in certain jurisdictions.
 * 
 * Trademark:
 * Helvetica is a trademark of Heidelberger Druckmaschinen AG, exclusively
 * licensed through Linotype GmbH, and may be registered in certain jurisdictions.
 * 
 * Description:
 * Helvetica is one of the most famous and popular typefaces in the world. It
 * lends an air of lucid efficiency to any typographic message with its clean,
 * no-nonsense shapes. The original typeface was called Haas Grotesk, and was
 * designed in 1957 by Max Miedinger for the Haas'sche Schriftgiesserei (Haas Type
 * Foundry) in Switzerland. In 1960 the name was changed to Helvetica (an
 * adaptation of "Helvetia", the Latin name for Switzerland). Over the years, the
 * Helvetica family was expanded to include many different weights, but these were
 * not as well coordinated with each other as they might have been. In 1983, D.
 * Stempel AG and Linotype re-designed and digitized Neue Helvetica and updated it
 * into a cohesive font family. Today, the original Helvetica family consists of 34
 * different font weights, and the Neue Helvetica family consists of 51 font
 * weights. The Helvetica family now forms an integral part of many digital
 * printers and operating systems and has become a stylistic anchor in our visual
 * culture. It is the quintessential sans serif font, timeless and neutral, and can
 * be used for all types of communication. Helvetica World, an update to the
 * classic Helvetica design using the OpenType font format, contains the following
 * Microsoft code pages: 1252 Latin 1, 1250 Latin 2 Eastern, 1251 Cyrillic, 1253
 * Greek, 1254 Turk, 1255 Hebrew, 1256 Arabic, 1257 Windows Baltic, 1258 Windows
 * Vietnamese, as well as a mixture of box drawing element glyphs and mathematical
 * symbols & operators. In total, each weight of Helvetica World contains more than
 * 1850 different glyph characters!
 * 
 * Manufacturer:
 * Linotype GmbH
 * 
 * Designer:
 * Linotype Design Studio
 * 
 * Vendor URL:
 * http://www.linotype.com
 * 
 * License information:
 * http://www.linotype.com/license
 */
Cufon.registerFont({"w":200,"face":{"font-family":"HelveticaNeue LT 55 Roman","font-weight":400,"font-stretch":"normal","units-per-em":"360","panose-1":"2 11 6 4 2 2 2 2 2 4","ascent":"288","descent":"-72","x-height":"4","bbox":"-60 -343.024 387 77.0901","underline-thickness":"18","underline-position":"-27","unicode-range":"U+0020-U+FB02"},"glyphs":{" ":{"w":100},"!":{"d":"64,-257v2,68,-4,130,-9,191r-16,0r-9,-112r0,-79r34,0xm27,-40r40,0r0,40r-40,0r0,-40","w":93},"\"":{"d":"39,-257r25,0r0,93r-25,0r0,-93xm90,-257r24,0r0,93r-24,0r0,-93","w":153},"#":{"d":"47,-74r-35,0r0,-25r39,0r7,-54r-36,0r0,-24r40,0r10,-74r25,0r-11,74r45,0r10,-74r25,0r-10,74r32,0r0,24r-35,0r-8,54r33,0r0,25r-37,0r-10,74r-25,0r11,-74r-45,0r-10,74r-25,0xm83,-153r-7,54r44,0r8,-54r-45,0"},"$":{"d":"90,-234v-43,-3,-57,65,-16,78v5,2,10,4,16,6r0,-84xm110,-23v51,5,63,-70,19,-84v-6,-2,-13,-4,-19,-6r0,90xm132,-139v82,14,68,152,-22,145r0,30r-20,0r0,-30v-48,-4,-77,-36,-81,-84r31,0v0,32,22,51,50,55r0,-95v-40,-10,-74,-20,-73,-70v1,-47,30,-70,73,-75r0,-24r20,0r0,24v40,5,63,31,71,71r-31,0v-5,-24,-18,-37,-40,-41r0,88"},"%":{"d":"261,-260r31,0r-193,268r-31,0xm269,4v-43,0,-58,-29,-58,-71v0,-42,16,-73,58,-73v43,0,58,29,58,72v0,41,-17,71,-58,72xm269,-120v-44,2,-43,102,-1,105v44,-1,45,-103,1,-105xm91,-111v-43,0,-58,-29,-58,-71v0,-42,16,-73,58,-73v43,0,58,29,58,72v0,41,-17,71,-58,72xm91,-235v-43,1,-44,102,-1,104v45,0,45,-103,1,-104","w":360},"&":{"d":"44,-66v0,55,87,52,104,13r-59,-71v-23,12,-45,25,-45,58xm102,-257v66,-5,80,79,32,107r-18,12r46,57v5,-13,7,-26,8,-40r29,0v-2,28,-7,45,-17,63r50,58r-40,0r-27,-32v-15,21,-38,36,-73,36v-50,0,-80,-25,-80,-70v0,-44,31,-61,60,-78v-11,-18,-29,-30,-28,-60v0,-35,23,-50,58,-53xm104,-230v-34,0,-37,44,-14,61r9,11v15,-11,33,-20,34,-45v0,-15,-12,-27,-29,-27","w":226},"'":{"d":"38,-257r24,0r0,93r-24,0r0,-93","w":100},"(":{"d":"97,-263v-63,85,-63,249,0,334r-24,0v-30,-49,-55,-96,-56,-168v0,-66,25,-124,56,-166r24,0","w":93},")":{"d":"76,-95v0,66,-25,124,-56,166r-24,0v63,-85,63,-249,0,-334r24,0v29,47,55,95,56,168","w":93},"*":{"d":"72,-216r39,-15r7,18r-39,13r24,33r-15,11r-25,-34r-23,34r-17,-11r24,-33r-38,-13r6,-18r38,15r0,-41r19,0r0,41","w":126},"+":{"d":"120,-103r79,0r0,24r-79,0r0,79r-24,0r0,-79r-79,0r0,-24r79,0r0,-79r24,0r0,79","w":216},",":{"d":"30,-40r40,0v2,46,-2,84,-40,93r0,-18v13,-5,21,-17,21,-35r-21,0r0,-40","w":100},"-":{"d":"18,-114r104,0r0,28r-104,0r0,-28","w":140},".":{"d":"30,-40r40,0r0,40r-40,0r0,-40","w":100},"\/":{"d":"100,-263r26,0r-106,269r-26,0","w":119},"0":{"d":"100,4v-72,0,-85,-58,-85,-129v0,-70,13,-130,85,-130v83,0,88,78,84,159v-3,57,-22,100,-84,100xm100,-228v-50,0,-51,51,-52,102v-1,49,2,103,52,103v56,0,54,-68,52,-123v-1,-44,-9,-82,-52,-82"},"1":{"d":"31,-207v41,0,68,-13,74,-48r23,0r0,255r-30,0r0,-183r-67,0r0,-24"},"2":{"d":"96,-228v-36,1,-48,29,-50,63r-30,0v-2,-56,28,-86,82,-90v85,-6,104,109,41,145v-31,28,-83,37,-95,83r131,0r0,27r-166,0v2,-96,101,-95,132,-159v16,-34,-7,-70,-45,-69"},"3":{"d":"151,-72v0,-39,-32,-53,-73,-48r0,-26v34,4,61,-8,62,-41v1,-26,-19,-41,-45,-41v-34,0,-47,23,-48,55r-31,0v3,-50,27,-81,79,-82v47,0,77,22,78,68v1,25,-19,42,-35,52v29,5,44,30,46,62v6,90,-145,103,-168,29v-4,-10,-5,-22,-5,-35r30,0v1,34,19,56,55,56v32,-1,55,-16,55,-49"},"4":{"d":"151,-87r34,0r0,27r-34,0r0,60r-29,0r0,-60r-112,0r0,-29r116,-166r25,0r0,168xm122,-87r-1,-125r-85,125r86,0"},"5":{"d":"151,-83v4,-60,-78,-74,-105,-34r-27,-1r24,-133r126,0r0,27r-103,0r-13,74v10,-11,28,-18,48,-18v53,2,78,32,82,87v6,90,-129,113,-164,43v-4,-9,-6,-19,-6,-31r30,0v4,28,22,46,54,46v36,0,52,-24,54,-60"},"6":{"d":"154,-79v0,-35,-16,-58,-51,-58v-35,0,-53,23,-53,57v0,34,18,57,53,57v34,-1,51,-23,51,-56xm14,-118v0,-75,19,-136,94,-137v43,0,68,25,72,65r-31,0v1,-36,-48,-48,-74,-29v-22,15,-32,54,-30,88v13,-22,33,-33,64,-33v51,0,78,34,78,83v0,52,-30,84,-85,85v-70,1,-88,-55,-88,-122"},"7":{"d":"51,0v9,-96,50,-168,101,-222r-134,0r0,-29r165,0r0,26v-50,54,-90,130,-98,225r-34,0"},"8":{"d":"101,-121v-33,0,-53,17,-54,49v0,30,23,50,54,49v32,0,52,-18,52,-49v0,-31,-22,-49,-52,-49xm59,-137v-20,-7,-36,-28,-36,-53v0,-42,32,-60,75,-65v79,-8,103,93,42,118v79,24,47,148,-39,141v-51,-4,-86,-25,-87,-77v0,-33,19,-55,45,-64xm100,-228v-26,0,-43,13,-44,39v0,28,18,40,45,41v24,0,42,-16,42,-41v0,-25,-19,-39,-43,-39"},"9":{"d":"95,-114v34,0,52,-22,52,-56v0,-35,-17,-58,-52,-58v-35,0,-50,24,-50,60v1,32,19,54,50,54xm184,-133v6,101,-59,172,-142,121v-15,-9,-22,-27,-24,-50r30,0v1,43,71,53,89,15v7,-16,17,-45,15,-75v-10,20,-32,35,-59,35v-53,0,-81,-31,-81,-85v0,-52,32,-83,84,-83v68,0,84,51,88,122"},":":{"d":"30,-40r40,0r0,40r-40,0r0,-40xm70,-146r-40,0r0,-40r40,0r0,40","w":100},";":{"d":"30,-40r40,0v2,46,-1,85,-40,93r0,-18v13,-5,21,-17,21,-35r-21,0r0,-40xm70,-146r-40,0r0,-40r40,0r0,40","w":100},"<":{"d":"199,-161r-153,70r153,69r0,25r-182,-83r0,-22r182,-83r0,24","w":216},"=":{"d":"199,-115r-182,0r0,-25r182,0r0,25xm17,-67r182,0r0,25r-182,0r0,-25","w":216},">":{"d":"17,-22r153,-69r-153,-70r0,-24r182,83r0,22r-182,83r0,-25","w":216},"?":{"d":"100,-236v-35,0,-49,24,-50,59r-30,0v2,-52,28,-82,80,-86v76,-6,99,93,45,133v-18,13,-34,32,-31,67r-30,0v-9,-70,60,-68,60,-131v0,-26,-18,-42,-44,-42xm78,-40r40,0r0,40r-40,0r0,-40"},"@":{"d":"125,-72v44,-2,75,-80,37,-107v-41,-11,-66,32,-68,72v-1,19,13,36,31,35xm151,-206v21,0,35,10,41,29r8,-22r22,0r-34,120v0,6,2,12,9,11v33,-7,50,-45,50,-82v0,-57,-40,-90,-98,-93v-100,-5,-138,129,-76,196v40,44,139,38,167,-10r23,0v-23,35,-57,63,-113,63v-83,0,-135,-55,-135,-136v0,-79,53,-133,134,-133v72,0,122,41,122,111v0,57,-33,98,-84,104v-14,2,-21,-11,-24,-23v-11,10,-26,24,-45,24v-32,0,-51,-23,-51,-57v0,-55,28,-102,84,-102","w":288},"A":{"d":"98,-257r38,0r100,257r-38,0r-28,-77r-108,0r-29,77r-36,0xm72,-106r87,0r-43,-120","w":233,"k":{"\u2019":27,"y":6,"w":6,"v":6,"Y":27,"W":9,"V":17,"T":33}},"B":{"d":"196,-75v0,-59,-78,-40,-134,-43r0,89v58,-2,134,15,134,-46xm230,-74v0,46,-30,73,-78,74r-124,0r0,-257v82,4,192,-21,192,63v0,30,-17,49,-39,58v30,6,49,28,49,62xm185,-188v0,-57,-71,-36,-123,-40r0,81v52,-3,123,15,123,-41","w":246},"C":{"d":"15,-128v-11,-124,149,-181,216,-88v6,10,10,22,12,36r-34,0v-9,-33,-31,-54,-72,-54v-62,0,-87,45,-87,104v0,62,25,107,87,107v47,0,70,-29,74,-74r35,0v-6,62,-44,103,-112,103v-81,-1,-112,-55,-119,-134","w":259},"D":{"d":"240,-135v1,87,-38,135,-124,135r-88,0r0,-257r88,0v81,0,124,40,124,122xm206,-130v-2,-61,-24,-98,-86,-98r-58,0r0,199v89,7,146,-14,144,-101","w":253},"E":{"d":"28,-257r178,0r0,29r-144,0r0,81r134,0r0,29r-134,0r0,89r145,0r0,29r-179,0r0,-257","w":219},"F":{"d":"28,-257r169,0r0,29r-135,0r0,81r118,0r0,29r-118,0r0,118r-34,0r0,-257","w":206,"k":{"A":20,".":57,",":57}},"G":{"d":"50,-125v-11,101,132,140,166,51v3,-10,4,-21,4,-33r-82,0r0,-28r113,0r0,135r-22,0r-9,-32v-18,23,-43,38,-82,38v-78,0,-115,-54,-123,-129v-13,-126,148,-188,220,-94v8,10,11,24,13,39r-34,0v-7,-37,-33,-56,-76,-56v-63,0,-81,48,-88,109","w":273},"H":{"d":"28,-257r34,0r0,110r136,0r0,-110r34,0r0,257r-34,0r0,-118r-136,0r0,118r-34,0r0,-257","w":259},"I":{"d":"30,-257r34,0r0,257r-34,0r0,-257","w":93},"J":{"d":"84,-23v31,0,40,-17,41,-46r0,-188r34,0r0,193v-2,45,-28,70,-76,70v-54,1,-80,-33,-75,-91r34,0v-1,36,5,62,42,62","w":186},"K":{"d":"28,-257r34,0r0,128r131,-128r44,0r-108,104r112,153r-43,0r-93,-130r-43,40r0,90r-34,0r0,-257","w":240},"L":{"d":"28,-257r34,0r0,228r136,0r0,29r-170,0r0,-257","k":{"\u2019":27,"y":13,"Y":40,"W":20,"V":33,"T":33}},"M":{"d":"29,-257r47,0r81,216r81,-216r47,0r0,257r-33,0r0,-214r-81,214r-29,0r-81,-214r0,214r-32,0r0,-257","w":313},"N":{"d":"28,-257r36,0r136,208r0,-208r33,0r0,257r-38,0r-135,-206r0,206r-32,0r0,-257","w":259},"O":{"d":"137,6v-81,0,-123,-54,-123,-135v0,-81,43,-134,123,-134v81,0,123,55,123,134v0,80,-42,135,-123,135xm137,-234v-62,0,-89,45,-89,105v0,60,27,106,89,106v62,0,89,-45,89,-106v0,-60,-28,-105,-89,-105","w":273},"P":{"d":"220,-181v0,48,-28,76,-79,76r-79,0r0,105r-34,0r0,-257r113,0v51,0,79,28,79,76xm185,-181v0,-58,-68,-46,-123,-47r0,94v55,-1,123,12,123,-47","w":233,"k":{"A":27,".":64,",":64}},"Q":{"d":"260,-129v0,43,-15,80,-39,103r34,27r-17,21r-40,-31v-17,10,-37,15,-61,15v-81,-3,-123,-54,-123,-135v0,-81,43,-134,123,-134v81,0,123,55,123,134xm48,-129v-3,73,52,125,124,99r-28,-23r18,-20r34,27v53,-51,36,-193,-59,-188v-62,3,-87,45,-89,105","w":273},"R":{"d":"193,-184v0,-60,-76,-41,-131,-44r0,89v57,-3,131,15,131,-45xm198,0v-16,-37,5,-110,-52,-110r-84,0r0,110r-34,0r0,-257v85,3,199,-21,199,67v0,35,-17,57,-44,66v54,5,27,91,53,124r-38,0","w":246,"k":{"Y":13,"W":6,"V":6,"T":6}},"S":{"d":"47,-140v-72,-60,13,-147,104,-118v34,11,57,34,58,76r-32,0v4,-64,-121,-74,-122,-8v18,72,161,13,165,119v3,97,-169,97,-198,27v-5,-12,-9,-25,-9,-41r33,0v1,43,31,57,75,62v57,6,91,-60,39,-82v-34,-15,-86,-12,-113,-35","w":233},"T":{"d":"86,-228r-85,0r0,-29r205,0r0,29r-85,0r0,228r-35,0r0,-228","w":206,"k":{"y":40,"w":40,"u":33,"s":40,"r":33,"o":40,"e":40,"c":40,"a":40,"A":33,";":40,":":40,".":40,"-":46,",":40}},"U":{"d":"132,-23v102,0,58,-143,67,-234r34,0r0,164v1,65,-37,99,-101,99v-67,-1,-105,-31,-105,-99r0,-164r34,0r0,164v0,46,25,70,71,70","w":259},"V":{"d":"129,0r-39,0r-90,-257r37,0r74,223r74,-223r36,0","w":219,"k":{"y":6,"u":13,"r":13,"o":20,"i":6,"e":20,"a":20,"A":17,";":17,":":17,".":46,"-":20,",":46}},"W":{"d":"260,0r-35,0r-60,-216r-59,216r-36,0r-66,-257r35,0r51,214r58,-214r37,0r58,214r52,-214r34,0","w":333,"k":{"u":6,"r":6,"o":21,"e":21,"a":13,"A":9,";":6,":":6,".":27,",":27}},"X":{"d":"89,-132r-84,-125r41,0r64,100r67,-100r38,0r-85,125r90,132r-41,0r-70,-106r-71,106r-38,0","w":219},"Y":{"d":"134,-105r0,105r-34,0r0,-105r-99,-152r40,0r77,122r76,-122r39,0","w":233,"k":{"v":20,"u":27,"q":33,"p":27,"o":40,"i":13,"e":40,"a":33,"A":27,";":33,":":33,".":50,"-":40,",":50}},"Z":{"d":"8,-29r160,-199r-148,0r0,-29r188,0r0,29r-159,199r163,0r0,29r-204,0r0,-29","w":219},"[":{"d":"93,-239r-38,0r0,286r38,0r0,24r-67,0r0,-334r67,0r0,24","w":93},"\\":{"d":"126,6r-26,0r-106,-269r26,0","w":119},"]":{"d":"0,47r39,0r0,-286r-39,0r0,-24r67,0r0,334r-67,0r0,-24","w":93},"^":{"d":"96,-251r24,0r78,156r-25,0r-65,-130r-64,130r-26,0","w":216},"_":{"d":"0,27r180,0r0,18r-180,0r0,-18","w":180},"`":{"d":"-8,-263r39,0r31,51r-23,0","w":79},"a":{"d":"81,-23v44,1,63,-25,57,-73v-28,18,-93,1,-93,46v0,20,15,27,36,27xm169,-44v-2,17,3,24,19,20r0,23v-19,10,-52,5,-48,-23v-26,39,-127,42,-127,-24v0,-66,78,-50,121,-71v15,-23,-8,-47,-37,-44v-26,2,-45,8,-46,35r-31,0v2,-45,33,-61,79,-62v40,-1,70,11,70,51r0,95","w":193},"b":{"d":"112,-23v42,0,56,-32,56,-72v0,-39,-17,-68,-57,-68v-40,0,-57,30,-57,70v0,41,17,69,58,70xm116,4v-29,0,-49,-11,-61,-29r0,25r-31,0r0,-257r31,0r0,96v9,-19,33,-29,60,-29v58,1,86,41,86,97v0,56,-26,97,-85,97","w":213},"c":{"d":"13,-91v-9,-93,112,-134,160,-64v5,7,7,18,8,29r-32,0v-4,-24,-19,-37,-46,-37v-42,1,-58,31,-58,72v0,38,15,68,55,68v30,0,47,-18,51,-45r31,0v-6,43,-33,72,-82,72v-59,-1,-81,-37,-87,-95","w":193},"d":{"d":"98,-190v29,0,48,12,61,29r0,-96r30,0r0,257r-30,0v-1,-8,2,-19,-1,-25v-9,19,-32,29,-59,29v-58,-2,-86,-40,-86,-98v0,-57,27,-95,85,-96xm101,-163v-41,1,-56,32,-56,72v0,38,17,69,58,68v40,-1,57,-30,57,-70v0,-41,-17,-70,-59,-70","w":213},"e":{"d":"45,-84v-10,66,95,83,107,25r30,0v-7,39,-36,63,-80,63v-60,-1,-84,-39,-89,-98v-7,-89,110,-130,155,-60v12,18,18,42,17,70r-140,0xm152,-111v3,-56,-85,-70,-102,-20v-3,6,-5,13,-5,20r107,0","w":193},"f":{"d":"107,-230v-18,-5,-41,-5,-41,18r0,26r36,0r0,27r-36,0r0,159r-30,0r0,-159r-32,0r0,-27r32,0v-8,-54,19,-85,71,-71r0,27","w":106,"k":{"\u2019":-6,"f":6}},"g":{"d":"45,-96v0,38,13,71,53,71v41,0,55,-32,55,-72v0,-36,-14,-66,-53,-66v-40,0,-55,29,-55,67xm99,-190v28,-1,44,14,56,31r0,-27r29,0v-6,118,37,292,-113,259v-27,-6,-49,-21,-51,-52r31,0v2,22,24,30,48,30v45,1,60,-38,55,-83v-10,21,-28,34,-58,34v-56,0,-83,-39,-83,-94v0,-57,27,-97,86,-98","w":206},"h":{"d":"109,-163v-76,0,-51,94,-55,163r-31,0r0,-257r31,0r0,98v11,-19,29,-31,59,-31v90,0,58,110,64,190r-30,0r0,-126v0,-22,-15,-37,-38,-37"},"i":{"d":"25,-186r30,0r0,186r-30,0r0,-186xm55,-220r-30,0r0,-37r30,0r0,37","w":79},"j":{"d":"-5,44v22,2,30,-2,30,-25r0,-205r30,0r0,210v1,37,-23,52,-60,46r0,-26xm55,-220r-30,0r0,-37r30,0r0,37","w":79},"k":{"d":"25,-257r30,0r0,152r85,-81r41,0r-73,68r79,118r-39,0r-64,-97r-29,26r0,71r-30,0r0,-257","w":186},"l":{"d":"25,-257r30,0r0,257r-30,0r0,-257","w":79},"m":{"d":"103,-163v-71,0,-44,97,-49,163r-31,0r0,-186r29,0v1,8,-2,21,1,27v20,-39,96,-44,111,0v20,-43,120,-46,120,23r0,136r-31,0r0,-122v1,-27,-10,-41,-36,-41v-71,0,-43,98,-48,163r-31,0r0,-122v2,-27,-10,-41,-35,-41","w":307},"n":{"d":"109,-163v-76,0,-51,94,-55,163r-31,0r0,-186r29,0v1,9,-2,22,1,29v11,-21,31,-32,60,-33v90,-4,58,110,64,190r-30,0r0,-126v0,-22,-15,-37,-38,-37"},"o":{"d":"103,4v-60,0,-90,-39,-90,-97v0,-58,30,-97,90,-97v60,0,91,38,91,97v0,59,-31,97,-91,97xm103,-163v-40,0,-58,30,-58,70v0,40,18,70,58,70v40,0,58,-29,58,-70v0,-41,-18,-70,-58,-70","w":206},"p":{"d":"112,-23v42,0,56,-32,56,-72v0,-39,-17,-68,-57,-68v-40,0,-57,30,-57,70v0,41,17,69,58,70xm116,4v-29,0,-49,-11,-61,-29r0,96r-31,0r0,-257r31,0r0,25v9,-19,33,-29,60,-29v58,1,86,41,86,97v0,56,-26,97,-85,97","w":213},"q":{"d":"98,-190v29,0,48,12,61,29r0,-25r30,0r0,257r-30,0r-1,-96v-9,19,-32,29,-59,29v-58,-2,-86,-40,-86,-98v0,-57,27,-95,85,-96xm101,-163v-41,1,-56,32,-56,72v0,38,17,69,58,68v40,-1,57,-30,57,-70v0,-41,-17,-70,-59,-70","w":213},"r":{"d":"120,-158v-80,-5,-67,82,-67,158r-31,0r0,-186r29,0r0,39v14,-27,31,-43,69,-43r0,32","w":119,"k":{"q":6,"o":6,"n":-6,"g":10,"e":6,"d":6,"c":6,".":33,"-":20,",":33}},"s":{"d":"150,-92v53,52,-15,116,-90,93v-28,-8,-48,-25,-49,-60r31,0v0,28,22,37,50,36v38,8,63,-37,26,-51v-41,-15,-102,-10,-103,-64v-2,-65,116,-67,139,-22v4,8,6,17,7,28r-31,0v-2,-22,-19,-32,-43,-31v-35,-8,-55,34,-20,45v28,9,60,12,83,26","w":180},"t":{"d":"103,0v-39,1,-68,1,-68,-41r0,-118r-32,0r0,-27r32,0r0,-56r31,0r0,56r37,0r0,27r-37,0r0,115v-4,21,18,16,37,17r0,27","w":113},"u":{"d":"91,-23v76,0,52,-93,56,-163r30,0r0,186r-29,0r0,-30v-11,21,-31,34,-61,34v-90,0,-59,-110,-64,-190r31,0r0,126v0,23,14,37,37,37"},"v":{"d":"107,0r-33,0r-69,-186r34,0r53,155r51,-155r32,0","w":180,"k":{".":27,",":27}},"w":{"d":"207,0r-32,0r-39,-148r-37,148r-33,0r-60,-186r34,0r43,152r37,-152r34,0r39,152r42,-152r32,0","w":272,"k":{".":20,",":20}},"x":{"d":"73,-98r-65,-88r40,0r44,65r47,-65r36,0r-64,86r72,100r-39,0r-52,-77r-52,77r-37,0","w":186},"y":{"d":"21,43v17,8,37,4,43,-12r13,-32r-74,-185r34,0r56,152r52,-152r32,0r-91,234v-9,20,-37,34,-65,23r0,-28","w":180,"k":{".":27,",":27}},"z":{"d":"8,-23r112,-136r-105,0r0,-27r145,0r0,21r-114,138r119,0r0,27r-157,0r0,-23","w":172},"{":{"d":"17,-108v73,-17,-23,-176,94,-155r0,21v-74,-12,0,127,-66,147v44,7,32,76,32,125v0,18,14,22,34,20r0,21v-69,11,-67,-48,-64,-112v1,-23,-12,-41,-30,-43r0,-24","w":119},"|":{"d":"28,-283r24,0r0,360r-24,0r0,-360","w":79},"}":{"d":"103,-84v-72,17,23,176,-94,155r0,-21v74,12,0,-127,66,-146v-42,-9,-28,-76,-32,-125v-1,-18,-13,-23,-34,-21r0,-21v69,-12,67,49,64,113v0,23,9,40,30,42r0,24","w":119},"~":{"d":"70,-113v42,2,87,51,108,-2r13,18v-11,15,-21,31,-45,31v-33,0,-45,-26,-78,-26v-17,0,-24,15,-30,28r-13,-18v8,-16,20,-32,45,-31","w":216},"\u20ac":{"d":"33,-162v6,-77,98,-130,168,-76r-17,30v-18,-30,-76,-33,-96,-2v-8,13,-16,31,-20,48r102,0r-10,22r-94,0v-2,4,-2,15,0,19r89,0r-9,22r-79,0v7,41,23,76,69,77v28,1,38,-12,55,-26r0,38v-17,12,-29,16,-55,16v-68,-1,-94,-46,-104,-105r-27,0r9,-22r17,0r0,-19r-26,0r9,-22r19,0"},"\u201a":{"d":"30,-40r40,0v1,43,4,91,-40,93r0,-18v17,-1,21,-17,21,-35r-21,0r0,-40","w":100},"\u0192":{"d":"172,-230v-21,-1,-38,-1,-43,19r-12,49r37,0r-5,25r-36,0v-15,58,-15,134,-43,179v-11,18,-39,18,-69,17r5,-27v33,2,45,-8,50,-36r25,-133r-33,0r5,-25r33,0v6,-55,18,-107,91,-95"},"\u201e":{"d":"24,-40r40,0v0,43,4,91,-40,93r0,-18v17,-1,21,-17,21,-35r-21,0r0,-40xm90,-40r40,0v0,43,4,91,-40,93r0,-18v17,-1,21,-17,21,-35r-21,0r0,-40","w":153},"\u2026":{"d":"40,-40r40,0r0,40r-40,0r0,-40xm160,-40r40,0r0,40r-40,0r0,-40xm280,-40r40,0r0,40r-40,0r0,-40","w":360},"\u2020":{"d":"85,-159r-70,0r0,-27r70,0r0,-71r29,0r0,71r71,0r0,27r-71,0r0,215r-29,0r0,-215"},"\u2021":{"d":"85,-15r-70,0r0,-27r70,0r0,-117r-70,0r0,-27r70,0r0,-71r29,0r0,71r71,0r0,27r-71,0r0,117r71,0r0,27r-71,0r0,71r-29,0r0,-71"},"\u02c6":{"d":"23,-263r34,0r37,51r-30,0r-25,-34r-25,34r-28,0","w":79},"\u2030":{"d":"78,-132v-36,0,-52,-24,-52,-61v0,-37,15,-62,53,-62v39,-1,52,24,53,61v0,36,-18,62,-54,62xm80,-235v-21,0,-27,19,-27,41v0,22,4,42,26,42v36,-1,36,-83,1,-83xm226,-260r31,0r-194,268r-31,0xm210,4v-37,0,-53,-23,-53,-60v0,-37,15,-62,54,-62v38,0,52,24,52,60v0,36,-16,63,-53,62xm212,-99v-38,0,-39,83,-2,84v36,-1,35,-81,2,-84xm334,4v-37,0,-53,-22,-52,-60v0,-38,14,-62,53,-62v38,0,52,24,52,60v0,36,-16,63,-53,62xm336,-99v-37,0,-38,83,-2,84v36,-1,35,-81,2,-84","w":413},"\u0160":{"d":"47,-140v-72,-60,13,-147,104,-118v34,11,57,34,58,76r-32,0v4,-64,-121,-74,-122,-8v18,72,161,13,165,119v3,97,-169,97,-198,27v-5,-12,-9,-25,-9,-41r33,0v1,43,31,57,75,62v57,6,91,-60,39,-82v-34,-15,-86,-12,-113,-35xm134,-276r-34,0r-37,-51r30,0r25,34r25,-34r28,0","w":233},"\u2039":{"d":"18,-84r0,-32r55,-43r0,31r-36,28r36,28r0,31","w":93},"\u0152":{"d":"48,-126v0,60,27,103,86,103v36,0,64,-17,64,-50r0,-121v-6,-25,-32,-40,-63,-40v-62,1,-87,47,-87,108xm134,-263v29,0,52,9,64,27r0,-21r172,0r0,29r-137,0r0,81r126,0r0,29r-126,0r0,89r139,0r0,29r-174,0r0,-25v-13,19,-36,31,-67,31v-79,0,-117,-54,-117,-134v0,-80,40,-135,120,-135","w":386},"\u017d":{"d":"8,-29r160,-199r-148,0r0,-29r188,0r0,29r-159,199r163,0r0,29r-204,0r0,-29xm127,-276r-34,0r-37,-51r30,0r25,34r25,-34r28,0","w":219},"\u2018":{"d":"70,-164r-40,0v0,-43,-4,-91,40,-93r0,18v-17,1,-21,17,-21,35r21,0r0,40","w":100,"k":{"\u2018":34}},"\u2019":{"d":"30,-257r40,0v1,43,4,91,-40,93r0,-18v17,-1,21,-17,21,-35r-21,0r0,-40","w":100,"k":{"\u2019":34,"t":6,"s":27}},"\u201c":{"d":"130,-164r-40,0v0,-42,-6,-92,39,-93r0,18v-17,1,-21,17,-21,35r22,0r0,40xm64,-164r-40,0v0,-42,-5,-91,39,-93r0,18v-17,1,-21,17,-21,35r22,0r0,40","w":153},"\u201d":{"d":"90,-257r40,0v0,43,4,91,-40,93r0,-18v17,-1,21,-17,21,-35r-21,0r0,-40xm24,-257r40,0v0,43,4,91,-40,93r0,-18v17,-1,21,-17,21,-35r-21,0r0,-40","w":153},"\u2022":{"d":"90,-64v-39,0,-64,-26,-64,-65v0,-38,26,-64,64,-64v39,0,64,25,64,64v0,39,-25,65,-64,65","w":180},"\u2013":{"d":"0,-114r180,0r0,28r-180,0r0,-28","w":180},"\u2014":{"d":"47,-114r266,0r0,28r-266,0r0,-28","w":360},"\u02dc":{"d":"17,-255v24,0,57,31,67,-1r19,0v-4,21,-13,41,-40,40v-21,-1,-47,-27,-64,-5v1,10,-12,5,-20,6v5,-20,14,-40,38,-40","w":79},"\u2122":{"d":"140,-237r-46,0r0,128r-25,0r0,-128r-46,0r0,-20r117,0r0,20xm334,-109r-25,0r0,-124r-49,124r-16,0r-49,-124r0,124r-24,0r0,-148r37,0r45,113r43,-113r38,0r0,148","w":356},"\u0161":{"d":"150,-92v53,52,-15,116,-90,93v-28,-8,-48,-25,-49,-60r31,0v0,28,22,37,50,36v38,8,63,-37,26,-51v-41,-15,-102,-10,-103,-64v-2,-65,116,-67,139,-22v4,8,6,17,7,28r-31,0v-2,-22,-19,-32,-43,-31v-35,-8,-55,34,-20,45v28,9,60,12,83,26xm107,-212r-34,0r-37,-51r30,0r25,34r25,-34r28,0","w":180},"\u203a":{"d":"75,-116r0,32r-54,43r0,-31r36,-28r-36,-28r0,-31","w":93},"\u0153":{"d":"162,-158v20,-42,109,-41,132,-1v11,20,19,44,17,75r-135,0v-10,67,91,81,104,25r29,0v-10,72,-119,85,-147,27v-10,23,-33,36,-64,36v-60,0,-85,-40,-85,-97v0,-58,26,-97,85,-97v32,1,54,7,64,32xm279,-111v5,-47,-59,-68,-89,-38v-9,10,-14,23,-14,38r103,0xm98,-23v39,0,51,-32,51,-71v0,-39,-12,-69,-51,-69v-41,0,-53,35,-53,74v0,37,16,66,53,66","w":320},"\u017e":{"d":"8,-23r112,-136r-105,0r0,-27r145,0r0,21r-114,138r119,0r0,27r-157,0r0,-23xm103,-212r-34,0r-37,-51r30,0r25,34r25,-34r28,0","w":172},"\u0178":{"d":"134,-105r0,105r-34,0r0,-105r-99,-152r40,0r77,122r76,-122r39,0xm135,-315r32,0r0,38r-32,0r0,-38xm67,-315r32,0r0,38r-32,0r0,-38","w":233},"\u00a0":{"w":100},"\u00a1":{"d":"30,71v-2,-68,4,-130,9,-191r16,0r9,112r0,79r-34,0xm67,-146r-40,0r0,-40r40,0r0,40","w":93},"\u00a2":{"d":"98,-163v-67,3,-65,139,0,140r0,-140xm186,-68v-6,40,-28,71,-74,72r0,38r-14,0r0,-38v-54,-3,-81,-39,-81,-95v0,-56,26,-96,81,-99r0,-35r14,0r0,35v42,1,68,23,73,64r-31,0v-4,-20,-17,-38,-42,-37r0,140v26,-2,40,-21,44,-45r30,0"},"\u00a3":{"d":"45,-23v37,-25,102,19,135,-11r16,24v-42,43,-120,-22,-162,14r-17,-24v28,-15,52,-61,31,-98r-31,0r0,-16r21,0v-37,-52,-8,-133,65,-129v56,3,86,33,85,93r-31,0v1,-39,-15,-66,-52,-66v-49,0,-64,53,-39,89v4,6,3,7,6,13r57,0r0,16r-49,0v20,39,-8,80,-35,95"},"\u00a4":{"d":"29,-73v-24,-23,-25,-84,1,-106r-21,-21r18,-17r20,20v23,-24,82,-25,106,-1r20,-20r18,19r-20,19v25,24,24,84,0,108r20,20r-17,17r-20,-21v-23,26,-85,26,-108,0r-20,21r-17,-17xm159,-126v0,-37,-22,-63,-58,-63v-37,0,-60,25,-60,63v0,38,23,63,60,63v36,0,58,-26,58,-63"},"\u00a5":{"d":"84,-63r-51,0r0,-21r51,0v1,-13,-2,-21,-7,-27r-44,0r0,-22r33,0r-66,-124r39,0r63,127r61,-127r37,0r-64,124r34,0r0,22r-46,0v-4,7,-7,15,-6,27r52,0r0,21r-52,0r0,63r-34,0r0,-63"},"\u00a6":{"d":"28,-58r24,0r0,90r-24,0r0,-90xm52,-148r-24,0r0,-90r24,0r0,90","w":79},"\u00a7":{"d":"130,-45v24,-5,37,-44,13,-59r-75,-47v-24,4,-37,45,-14,59xm51,-167v-36,-35,-5,-99,50,-96v41,3,67,22,66,66r-30,0v-1,-21,-13,-39,-37,-39v-37,0,-44,46,-15,60v36,29,101,34,101,94v0,27,-17,44,-38,52v44,33,15,101,-46,101v-42,0,-71,-27,-72,-68r30,0v-6,45,75,58,78,11v-18,-66,-125,-49,-125,-131v0,-26,17,-43,38,-50"},"\u00a8":{"d":"58,-251r32,0r0,38r-32,0r0,-38xm-10,-251r32,0r0,38r-32,0r0,-38","w":79},"\u00a9":{"d":"144,-263v120,-8,173,148,95,230v-43,45,-148,49,-190,0v-21,-24,-41,-53,-40,-96v3,-82,54,-129,135,-134xm144,-243v-69,0,-111,47,-111,114v0,69,41,115,111,115v70,0,111,-46,111,-115v0,-67,-41,-114,-111,-114xm93,-129v-9,63,89,87,100,26r23,0v-7,33,-30,57,-67,57v-51,0,-75,-32,-80,-83v-8,-89,132,-113,146,-27r-22,0v-20,-61,-105,-35,-100,27","w":288},"\u00aa":{"d":"67,-255v25,0,47,6,47,31r0,58v-2,10,5,13,13,10v1,13,0,19,-15,19v-12,0,-18,-5,-19,-16v-20,23,-84,25,-84,-16v0,-43,57,-29,83,-45v7,-15,-8,-23,-26,-23v-18,0,-29,4,-30,20r-22,0v1,-28,24,-37,53,-38xm33,-170v5,27,63,16,60,-10r0,-17v-17,11,-57,2,-60,27","w":136},"\u00ab":{"d":"89,-84r0,-32r54,-43r0,31r-36,28r36,28r0,31xm18,-84r0,-32r55,-43r0,31r-36,28r36,28r0,31","w":166},"\u00ac":{"d":"199,-39r-25,0r0,-76r-157,0r0,-25r182,0r0,101","w":216},"\u00ae":{"d":"144,-263v120,-8,173,148,95,230v-43,45,-148,49,-190,0v-21,-24,-41,-53,-40,-96v3,-82,54,-129,135,-134xm144,-243v-69,0,-111,47,-111,114v0,69,41,115,111,115v70,0,111,-46,111,-115v0,-67,-41,-114,-111,-114xm208,-162v0,27,-18,40,-42,42r45,70r-26,0r-43,-68r-26,0r0,68r-24,0r0,-157v53,1,116,-10,116,45xm183,-163v0,-31,-37,-24,-67,-25r0,50v30,-1,67,8,67,-25","w":288},"\u00af":{"d":"-21,-243r123,0r0,20r-123,0r0,-20","w":79},"\u00b0":{"d":"72,-152v-31,0,-52,-20,-52,-51v0,-32,21,-52,52,-52v31,0,52,20,52,52v0,31,-21,51,-52,51xm72,-237v-20,0,-34,13,-34,34v0,20,13,33,34,33v21,0,34,-13,34,-33v0,-21,-14,-34,-34,-34","w":144},"\u00b1":{"d":"17,-122r79,0r0,-60r24,0r0,60r79,0r0,24r-79,0r0,61r-24,0r0,-61r-79,0r0,-24xm17,-24r182,0r0,24r-182,0r0,-24","w":216},"\u00b2":{"d":"62,-235v-22,0,-29,16,-30,35r-24,0v0,-33,22,-55,55,-55v54,0,69,63,28,88v-22,13,-50,21,-61,46r84,0r0,20r-109,0v-1,-66,80,-53,87,-109v2,-15,-14,-25,-30,-25","w":119},"\u00b3":{"d":"93,-144v-1,-23,-20,-29,-45,-28r0,-18v21,2,38,-4,38,-23v0,-14,-12,-22,-28,-22v-19,0,-28,13,-28,31r-25,0v2,-31,20,-51,53,-51v51,0,71,58,28,72v17,5,31,16,31,38v0,57,-94,60,-111,18v-3,-6,-5,-14,-5,-22r25,0v0,20,12,31,33,31v16,1,35,-10,34,-26","w":119},"\u00b4":{"d":"49,-263r39,0r-47,51r-23,0","w":79},"\u00b5":{"d":"148,-30v-10,30,-69,48,-94,21r0,80r-31,0r0,-257r31,0r0,126v0,23,14,37,37,37v76,0,52,-93,56,-163r30,0r0,186r-29,0r0,-30"},"\u00b6":{"d":"17,-183v-4,-81,86,-77,168,-74r0,313r-24,0r0,-293r-44,0r0,293r-24,0r0,-172v-45,-1,-74,-25,-76,-67","w":216},"\u00b7":{"d":"50,-89v-11,0,-23,-12,-23,-23v0,-11,12,-23,23,-23v11,0,23,12,23,23v0,11,-12,23,-23,23","w":100},"\u00b8":{"d":"80,44v-2,34,-50,37,-78,25r6,-16v14,4,40,10,45,-7v-1,-12,-21,-13,-32,-8v-13,-14,10,-25,16,-38r15,0v-5,7,-11,12,-15,20v18,-8,44,3,43,24","w":79},"\u00b9":{"d":"24,-230v24,0,43,-5,48,-25r18,0r0,154r-25,0r0,-111r-41,0r0,-18","w":119},"\u00ba":{"d":"9,-195v0,-37,21,-60,60,-60v40,0,60,23,60,60v0,35,-22,59,-60,58v-38,-1,-60,-21,-60,-58xm105,-195v0,-25,-10,-43,-36,-42v-22,0,-36,17,-36,42v1,24,12,40,36,40v25,0,36,-16,36,-40","w":138},"\u00bb":{"d":"78,-116r0,32r-55,43r0,-31r36,-28r-36,-28r0,-31xm149,-116r0,32r-55,43r0,-31r36,-28r-36,-28r0,-31","w":166},"\u00bc":{"d":"260,-54r22,0r0,19r-22,0r0,35r-22,0r0,-35r-72,0r0,-20r76,-99r18,0r0,100xm184,-54r54,0v-1,-23,2,-49,-1,-70xm211,-261r23,0r-157,271r-23,0xm13,-230v25,0,43,-6,48,-25r18,0r0,154r-25,0r0,-111r-41,0r0,-18","w":300},"\u00bd":{"d":"205,-261r23,0r-156,271r-23,0xm13,-230v25,0,43,-6,48,-25r18,0r0,154r-25,0r0,-111r-41,0r0,-18xm235,-135v-22,0,-29,17,-30,36r-24,0v0,-33,22,-55,55,-55v55,0,68,64,27,88v-22,13,-49,23,-61,46r85,0r0,20r-109,0v-2,-67,79,-53,87,-109v2,-15,-15,-26,-30,-26","w":300},"\u00be":{"d":"266,-54r22,0r0,19r-22,0r0,35r-22,0r0,-35r-72,0r0,-20r76,-99r18,0r0,100xm190,-53r54,0r0,-69xm234,-261r23,0r-157,271r-23,0xm75,-255v50,0,71,59,27,72v58,19,28,90,-27,85v-33,-2,-57,-16,-57,-51r24,0v0,20,12,31,33,31v16,1,35,-10,34,-26v-1,-24,-20,-29,-45,-28r0,-18v21,2,38,-4,38,-23v0,-14,-11,-22,-27,-22v-20,0,-29,13,-29,31r-25,0v2,-31,21,-51,54,-51","w":300},"\u00bf":{"d":"100,49v35,0,51,-23,50,-60r31,0v0,53,-30,87,-81,87v-46,0,-75,-25,-76,-72v-1,-63,66,-60,63,-126r30,0v9,69,-60,67,-60,128v0,25,17,43,43,43xm121,-146r-40,0r0,-40r40,0r0,40"},"\u00c0":{"d":"98,-257r38,0r100,257r-38,0r-28,-77r-108,0r-29,77r-36,0xm72,-106r87,0r-43,-120xm69,-327r39,0r31,51r-23,0","w":233},"\u00c1":{"d":"98,-257r38,0r100,257r-38,0r-28,-77r-108,0r-29,77r-36,0xm72,-106r87,0r-43,-120xm126,-327r39,0r-47,51r-23,0","w":233},"\u00c2":{"d":"98,-257r38,0r100,257r-38,0r-28,-77r-108,0r-29,77r-36,0xm72,-106r87,0r-43,-120xm100,-327r34,0r37,51r-30,0r-25,-34r-25,34r-28,0","w":233},"\u00c3":{"d":"98,-257r38,0r100,257r-38,0r-28,-77r-108,0r-29,77r-36,0xm72,-106r87,0r-43,-120xm94,-319v24,0,57,31,67,-1r19,0v-4,21,-13,41,-40,40v-21,-1,-47,-27,-64,-5v1,10,-12,5,-20,6v5,-20,14,-40,38,-40","w":233},"\u00c4":{"d":"98,-257r38,0r100,257r-38,0r-28,-77r-108,0r-29,77r-36,0xm72,-106r87,0r-43,-120xm135,-315r32,0r0,38r-32,0r0,-38xm67,-315r32,0r0,38r-32,0r0,-38","w":233},"\u00c5":{"d":"98,-257r38,0r100,257r-38,0r-28,-77r-108,0r-29,77r-36,0xm72,-106r87,0r-43,-120xm117,-327v-14,0,-25,11,-25,25v0,13,12,24,25,24v13,0,24,-11,24,-24v0,-13,-11,-25,-24,-25xm158,-302v3,43,-64,54,-78,15v-10,-27,8,-57,37,-56v25,1,39,17,41,41","w":233},"\u00c6":{"d":"127,-257r193,0r0,29r-126,0r0,81r118,0r0,29r-118,0r0,89r128,0r0,29r-161,0r0,-75r-88,0r-37,75r-39,0xm147,-228r-61,124r75,0r0,-124r-14,0","w":333},"\u00c7":{"d":"15,-128v-11,-124,149,-181,216,-88v6,10,10,22,12,36r-34,0v-9,-33,-31,-54,-72,-54v-62,0,-87,45,-87,104v0,62,25,107,87,107v47,0,70,-29,74,-74r35,0v-5,62,-44,102,-109,103v-3,5,-8,8,-10,14v18,-8,44,3,43,24v-2,34,-50,37,-78,25r6,-16v14,4,40,10,45,-7v-1,-12,-21,-13,-32,-8v-12,-12,5,-22,11,-33v-72,-6,-100,-58,-107,-133","w":259},"\u00c8":{"d":"28,-257r178,0r0,29r-144,0r0,81r134,0r0,29r-134,0r0,89r145,0r0,29r-179,0r0,-257xm62,-327r39,0r31,51r-23,0","w":219},"\u00c9":{"d":"28,-257r178,0r0,29r-144,0r0,81r134,0r0,29r-134,0r0,89r145,0r0,29r-179,0r0,-257xm119,-327r39,0r-47,51r-23,0","w":219},"\u00ca":{"d":"28,-257r178,0r0,29r-144,0r0,81r134,0r0,29r-134,0r0,89r145,0r0,29r-179,0r0,-257xm93,-327r34,0r37,51r-30,0r-25,-34r-25,34r-28,0","w":219},"\u00cb":{"d":"28,-257r178,0r0,29r-144,0r0,81r134,0r0,29r-134,0r0,89r145,0r0,29r-179,0r0,-257xm128,-315r32,0r0,38r-32,0r0,-38xm60,-315r32,0r0,38r-32,0r0,-38","w":219},"\u00cc":{"d":"30,-257r34,0r0,257r-34,0r0,-257xm-1,-327r39,0r31,51r-23,0","w":93},"\u00cd":{"d":"30,-257r34,0r0,257r-34,0r0,-257xm56,-327r39,0r-47,51r-23,0","w":93},"\u00ce":{"d":"30,-257r34,0r0,257r-34,0r0,-257xm30,-327r34,0r37,51r-30,0r-25,-34r-25,34r-28,0","w":93},"\u00cf":{"d":"30,-257r34,0r0,257r-34,0r0,-257xm65,-315r32,0r0,38r-32,0r0,-38xm-3,-315r32,0r0,38r-32,0r0,-38","w":93},"\u00d0":{"d":"240,-135v1,87,-38,135,-124,135r-88,0r0,-122r-25,0r0,-25r25,0r0,-110r88,0v81,0,124,40,124,122xm206,-130v-2,-61,-24,-98,-86,-98r-58,0r0,81r77,0r0,25r-77,0r0,93v89,7,146,-14,144,-101","w":253},"\u00d1":{"d":"28,-257r36,0r136,208r0,-208r33,0r0,257r-38,0r-135,-206r0,206r-32,0r0,-257xm107,-319v24,0,57,31,67,-1r19,0v-4,21,-13,41,-40,40v-21,-1,-47,-27,-64,-5v1,10,-12,5,-20,6v5,-20,14,-40,38,-40","w":259},"\u00d2":{"d":"137,6v-81,0,-123,-54,-123,-135v0,-81,43,-134,123,-134v81,0,123,55,123,134v0,80,-42,135,-123,135xm137,-234v-62,0,-89,45,-89,105v0,60,27,106,89,106v62,0,89,-45,89,-106v0,-60,-28,-105,-89,-105xm89,-327r39,0r31,51r-23,0","w":273},"\u00d3":{"d":"137,6v-81,0,-123,-54,-123,-135v0,-81,43,-134,123,-134v81,0,123,55,123,134v0,80,-42,135,-123,135xm137,-234v-62,0,-89,45,-89,105v0,60,27,106,89,106v62,0,89,-45,89,-106v0,-60,-28,-105,-89,-105xm146,-327r39,0r-47,51r-23,0","w":273},"\u00d4":{"d":"137,6v-81,0,-123,-54,-123,-135v0,-81,43,-134,123,-134v81,0,123,55,123,134v0,80,-42,135,-123,135xm137,-234v-62,0,-89,45,-89,105v0,60,27,106,89,106v62,0,89,-45,89,-106v0,-60,-28,-105,-89,-105xm120,-327r34,0r37,51r-30,0r-25,-34r-25,34r-28,0","w":273},"\u00d5":{"d":"137,6v-81,0,-123,-54,-123,-135v0,-81,43,-134,123,-134v81,0,123,55,123,134v0,80,-42,135,-123,135xm137,-234v-62,0,-89,45,-89,105v0,60,27,106,89,106v62,0,89,-45,89,-106v0,-60,-28,-105,-89,-105xm114,-319v24,0,57,31,67,-1r19,0v-4,21,-13,41,-40,40v-21,-1,-47,-27,-64,-5v1,10,-12,5,-20,6v5,-20,14,-40,38,-40","w":273},"\u00d6":{"d":"137,6v-81,0,-123,-54,-123,-135v0,-81,43,-134,123,-134v81,0,123,55,123,134v0,80,-42,135,-123,135xm137,-234v-62,0,-89,45,-89,105v0,60,27,106,89,106v62,0,89,-45,89,-106v0,-60,-28,-105,-89,-105xm155,-315r32,0r0,38r-32,0r0,-38xm87,-315r32,0r0,38r-32,0r0,-38","w":273},"\u00d7":{"d":"26,-26r65,-65r-65,-65r17,-18r65,65r65,-65r17,18r-64,65r65,65r-17,17r-66,-65r-65,65","w":216},"\u00d8":{"d":"137,-234v-87,0,-109,109,-71,173r133,-147v-14,-15,-33,-26,-62,-26xm137,-23v86,0,109,-108,71,-172r-132,147v14,15,33,25,61,25xm137,-263v38,-1,64,13,83,32r29,-32r11,11r-29,32v18,22,29,54,29,91v0,80,-42,132,-123,135v-37,1,-64,-13,-83,-31r-29,32r-12,-11r31,-33v-19,-21,-30,-54,-30,-92v2,-81,43,-131,123,-134","w":273},"\u00d9":{"d":"132,-23v102,0,58,-143,67,-234r34,0r0,164v1,65,-37,99,-101,99v-67,-1,-105,-31,-105,-99r0,-164r34,0r0,164v0,46,25,70,71,70xm82,-327r39,0r31,51r-23,0","w":259},"\u00da":{"d":"132,-23v102,0,58,-143,67,-234r34,0r0,164v1,65,-37,99,-101,99v-67,-1,-105,-31,-105,-99r0,-164r34,0r0,164v0,46,25,70,71,70xm139,-327r39,0r-47,51r-23,0","w":259},"\u00db":{"d":"132,-23v102,0,58,-143,67,-234r34,0r0,164v1,65,-37,99,-101,99v-67,-1,-105,-31,-105,-99r0,-164r34,0r0,164v0,46,25,70,71,70xm113,-327r34,0r37,51r-30,0r-25,-34r-25,34r-28,0","w":259},"\u00dc":{"d":"132,-23v102,0,58,-143,67,-234r34,0r0,164v1,65,-37,99,-101,99v-67,-1,-105,-31,-105,-99r0,-164r34,0r0,164v0,46,25,70,71,70xm148,-315r32,0r0,38r-32,0r0,-38xm80,-315r32,0r0,38r-32,0r0,-38","w":259},"\u00dd":{"d":"134,-105r0,105r-34,0r0,-105r-99,-152r40,0r77,122r76,-122r39,0xm126,-327r39,0r-47,51r-23,0","w":233},"\u00de":{"d":"220,-140v0,48,-28,76,-79,76r-79,0r0,64r-34,0r0,-257r34,0r0,41r79,0v51,0,79,28,79,76xm185,-140v0,-59,-68,-46,-123,-47r0,94v55,-1,123,12,123,-47","w":233},"\u00df":{"d":"96,-236v-31,0,-42,18,-42,50r0,186r-31,0r0,-191v2,-45,26,-72,71,-72v42,0,75,21,75,63v0,29,-14,49,-38,56v32,5,49,29,49,65v0,56,-38,88,-98,82r0,-27v38,7,66,-16,66,-51v0,-43,-24,-55,-66,-54r0,-25v32,2,54,-10,54,-41v-1,-25,-15,-40,-40,-41"},"\u00e0":{"d":"81,-23v44,1,63,-25,57,-73v-28,18,-93,1,-93,46v0,20,15,27,36,27xm169,-44v-2,17,3,24,19,20r0,23v-19,10,-52,5,-48,-23v-26,39,-127,42,-127,-24v0,-66,78,-50,121,-71v15,-23,-8,-47,-37,-44v-26,2,-45,8,-46,35r-31,0v2,-45,33,-61,79,-62v40,-1,70,11,70,51r0,95xm49,-263r39,0r31,51r-23,0","w":193},"\u00e1":{"d":"81,-23v44,1,63,-25,57,-73v-28,18,-93,1,-93,46v0,20,15,27,36,27xm169,-44v-2,17,3,24,19,20r0,23v-19,10,-52,5,-48,-23v-26,39,-127,42,-127,-24v0,-66,78,-50,121,-71v15,-23,-8,-47,-37,-44v-26,2,-45,8,-46,35r-31,0v2,-45,33,-61,79,-62v40,-1,70,11,70,51r0,95xm106,-263r39,0r-47,51r-23,0","w":193},"\u00e2":{"d":"81,-23v44,1,63,-25,57,-73v-28,18,-93,1,-93,46v0,20,15,27,36,27xm169,-44v-2,17,3,24,19,20r0,23v-19,10,-52,5,-48,-23v-26,39,-127,42,-127,-24v0,-66,78,-50,121,-71v15,-23,-8,-47,-37,-44v-26,2,-45,8,-46,35r-31,0v2,-45,33,-61,79,-62v40,-1,70,11,70,51r0,95xm80,-263r34,0r37,51r-30,0r-25,-34r-25,34r-28,0","w":193},"\u00e3":{"d":"81,-23v44,1,63,-25,57,-73v-28,18,-93,1,-93,46v0,20,15,27,36,27xm169,-44v-2,17,3,24,19,20r0,23v-19,10,-52,5,-48,-23v-26,39,-127,42,-127,-24v0,-66,78,-50,121,-71v15,-23,-8,-47,-37,-44v-26,2,-45,8,-46,35r-31,0v2,-45,33,-61,79,-62v40,-1,70,11,70,51r0,95xm74,-255v24,0,57,31,67,-1r19,0v-4,21,-13,41,-40,40v-21,-1,-47,-27,-64,-5v1,10,-12,5,-20,6v5,-20,14,-40,38,-40","w":193},"\u00e4":{"d":"81,-23v44,1,63,-25,57,-73v-28,18,-93,1,-93,46v0,20,15,27,36,27xm169,-44v-2,17,3,24,19,20r0,23v-19,10,-52,5,-48,-23v-26,39,-127,42,-127,-24v0,-66,78,-50,121,-71v15,-23,-8,-47,-37,-44v-26,2,-45,8,-46,35r-31,0v2,-45,33,-61,79,-62v40,-1,70,11,70,51r0,95xm115,-251r32,0r0,38r-32,0r0,-38xm47,-251r32,0r0,38r-32,0r0,-38","w":193},"\u00e5":{"d":"81,-23v44,1,63,-25,57,-73v-28,18,-93,1,-93,46v0,20,15,27,36,27xm169,-44v-2,17,3,24,19,20r0,23v-19,10,-52,5,-48,-23v-26,39,-127,42,-127,-24v0,-66,78,-50,121,-71v15,-23,-8,-47,-37,-44v-26,2,-45,8,-46,35r-31,0v2,-45,33,-61,79,-62v40,-1,70,11,70,51r0,95xm97,-263v-14,0,-25,11,-25,25v0,13,12,24,25,24v13,0,24,-11,24,-24v0,-13,-11,-25,-24,-25xm138,-238v3,43,-64,54,-78,15v-10,-27,8,-57,37,-56v25,1,39,17,41,41","w":193},"\u00e6":{"d":"272,-111v5,-57,-83,-70,-100,-21v-2,6,-4,14,-4,21r104,0xm139,-96v-29,18,-94,1,-94,46v0,20,15,27,36,27v44,0,64,-24,58,-73xm20,-128v-6,-70,114,-82,141,-35v21,-39,107,-33,126,4v10,19,18,45,18,75r-137,0v-9,64,91,84,103,25r31,0v-4,68,-123,87,-148,27v-19,47,-141,56,-141,-16v0,-68,82,-48,123,-74v12,-26,-11,-47,-39,-41v-26,0,-45,8,-46,35r-31,0","w":313},"\u00e7":{"d":"13,-91v-9,-93,112,-134,160,-64v5,7,7,18,8,29r-32,0v-4,-24,-19,-37,-46,-37v-42,1,-58,31,-58,72v0,38,15,68,55,68v30,0,47,-18,51,-45r31,0v-6,42,-31,71,-77,72r-11,16v17,-8,43,2,42,24v-2,35,-50,37,-77,25r6,-16v12,5,42,10,44,-7v1,-13,-21,-13,-31,-8v-13,-13,7,-23,13,-34v-52,-5,-72,-40,-78,-95","w":193},"\u00e8":{"d":"45,-84v-10,66,95,83,107,25r30,0v-7,39,-36,63,-80,63v-60,-1,-84,-39,-89,-98v-7,-89,110,-130,155,-60v12,18,18,42,17,70r-140,0xm152,-111v3,-56,-85,-70,-102,-20v-3,6,-5,13,-5,20r107,0xm49,-263r39,0r31,51r-23,0","w":193},"\u00e9":{"d":"45,-84v-10,66,95,83,107,25r30,0v-7,39,-36,63,-80,63v-60,-1,-84,-39,-89,-98v-7,-89,110,-130,155,-60v12,18,18,42,17,70r-140,0xm152,-111v3,-56,-85,-70,-102,-20v-3,6,-5,13,-5,20r107,0xm106,-263r39,0r-47,51r-23,0","w":193},"\u00ea":{"d":"45,-84v-10,66,95,83,107,25r30,0v-7,39,-36,63,-80,63v-60,-1,-84,-39,-89,-98v-7,-89,110,-130,155,-60v12,18,18,42,17,70r-140,0xm152,-111v3,-56,-85,-70,-102,-20v-3,6,-5,13,-5,20r107,0xm80,-263r34,0r37,51r-30,0r-25,-34r-25,34r-28,0","w":193},"\u00eb":{"d":"45,-84v-10,66,95,83,107,25r30,0v-7,39,-36,63,-80,63v-60,-1,-84,-39,-89,-98v-7,-89,110,-130,155,-60v12,18,18,42,17,70r-140,0xm152,-111v3,-56,-85,-70,-102,-20v-3,6,-5,13,-5,20r107,0xm115,-251r32,0r0,38r-32,0r0,-38xm47,-251r32,0r0,38r-32,0r0,-38","w":193},"\u00ec":{"d":"25,0r0,-186r30,0r0,186r-30,0xm-8,-263r39,0r31,51r-23,0","w":79},"\u00ed":{"d":"25,0r0,-186r30,0r0,186r-30,0xm49,-263r39,0r-47,51r-23,0","w":79},"\u00ee":{"d":"25,0r0,-186r30,0r0,186r-30,0xm23,-263r34,0r37,51r-30,0r-25,-34r-25,34r-28,0","w":79},"\u00ef":{"d":"25,0r0,-186r30,0r0,186r-30,0xm58,-251r32,0r0,38r-32,0r0,-38xm-10,-251r32,0r0,38r-32,0r0,-38","w":79},"\u00f0":{"d":"13,-93v-5,-74,86,-115,136,-69v-10,-21,-26,-41,-44,-54r-42,19r-13,-14r39,-19r-25,-17r25,-16r28,20r43,-20r12,13r-41,19v39,32,63,74,63,138v0,59,-31,97,-91,97v-60,0,-86,-39,-90,-97xm161,-93v0,-38,-20,-61,-59,-62v-37,-1,-57,27,-57,62v0,40,18,70,58,70v40,0,58,-29,58,-70","w":206},"\u00f1":{"d":"109,-163v-76,0,-51,94,-55,163r-31,0r0,-186r29,0v1,9,-2,22,1,29v11,-21,31,-32,60,-33v90,-4,58,110,64,190r-30,0r0,-126v0,-22,-15,-37,-38,-37xm77,-255v24,0,57,31,67,-1r19,0v-4,21,-13,41,-40,40v-21,-1,-47,-27,-64,-5v1,10,-12,5,-20,6v5,-20,14,-40,38,-40"},"\u00f2":{"d":"103,4v-60,0,-90,-39,-90,-97v0,-58,30,-97,90,-97v60,0,91,38,91,97v0,59,-31,97,-91,97xm103,-163v-40,0,-58,30,-58,70v0,40,18,70,58,70v40,0,58,-29,58,-70v0,-41,-18,-70,-58,-70xm55,-263r39,0r31,51r-23,0","w":206},"\u00f3":{"d":"103,4v-60,0,-90,-39,-90,-97v0,-58,30,-97,90,-97v60,0,91,38,91,97v0,59,-31,97,-91,97xm103,-163v-40,0,-58,30,-58,70v0,40,18,70,58,70v40,0,58,-29,58,-70v0,-41,-18,-70,-58,-70xm112,-263r39,0r-47,51r-23,0","w":206},"\u00f4":{"d":"103,4v-60,0,-90,-39,-90,-97v0,-58,30,-97,90,-97v60,0,91,38,91,97v0,59,-31,97,-91,97xm103,-163v-40,0,-58,30,-58,70v0,40,18,70,58,70v40,0,58,-29,58,-70v0,-41,-18,-70,-58,-70xm86,-263r34,0r37,51r-30,0r-25,-34r-25,34r-28,0","w":206},"\u00f5":{"d":"103,4v-60,0,-90,-39,-90,-97v0,-58,30,-97,90,-97v60,0,91,38,91,97v0,59,-31,97,-91,97xm103,-163v-40,0,-58,30,-58,70v0,40,18,70,58,70v40,0,58,-29,58,-70v0,-41,-18,-70,-58,-70xm80,-255v24,0,57,31,67,-1r19,0v-4,21,-13,41,-40,40v-21,-1,-47,-27,-64,-5v1,10,-12,5,-20,6v5,-20,14,-40,38,-40","w":206},"\u00f6":{"d":"103,4v-60,0,-90,-39,-90,-97v0,-58,30,-97,90,-97v60,0,91,38,91,97v0,59,-31,97,-91,97xm103,-163v-40,0,-58,30,-58,70v0,40,18,70,58,70v40,0,58,-29,58,-70v0,-41,-18,-70,-58,-70xm121,-251r32,0r0,38r-32,0r0,-38xm53,-251r32,0r0,38r-32,0r0,-38","w":206},"\u00f7":{"d":"17,-103r182,0r0,24r-182,0r0,-24xm108,-142v-11,0,-23,-12,-23,-23v0,-11,12,-23,23,-23v11,0,23,12,23,23v0,11,-12,23,-23,23xm108,6v-11,0,-23,-12,-23,-23v0,-11,12,-23,23,-23v11,0,23,12,23,23v0,11,-12,23,-23,23","w":216},"\u00f8":{"d":"143,-147v-47,-43,-118,8,-95,78v2,7,5,14,8,20xm64,-39v47,42,116,-6,95,-78v-2,-7,-5,-13,-8,-19xm103,-190v28,0,46,8,61,21r21,-24r9,10r-21,24v43,57,17,163,-70,163v-25,0,-46,-9,-59,-20r-22,24r-10,-9r23,-25v-44,-54,-20,-164,68,-164","w":206},"\u00f9":{"d":"91,-23v76,0,52,-93,56,-163r30,0r0,186r-29,0r0,-30v-11,21,-31,34,-61,34v-90,0,-59,-110,-64,-190r31,0r0,126v0,23,14,37,37,37xm52,-263r39,0r31,51r-23,0"},"\u00fa":{"d":"91,-23v76,0,52,-93,56,-163r30,0r0,186r-29,0r0,-30v-11,21,-31,34,-61,34v-90,0,-59,-110,-64,-190r31,0r0,126v0,23,14,37,37,37xm109,-263r39,0r-47,51r-23,0"},"\u00fb":{"d":"91,-23v76,0,52,-93,56,-163r30,0r0,186r-29,0r0,-30v-11,21,-31,34,-61,34v-90,0,-59,-110,-64,-190r31,0r0,126v0,23,14,37,37,37xm83,-263r34,0r37,51r-30,0r-25,-34r-25,34r-28,0"},"\u00fc":{"d":"91,-23v76,0,52,-93,56,-163r30,0r0,186r-29,0r0,-30v-11,21,-31,34,-61,34v-90,0,-59,-110,-64,-190r31,0r0,126v0,23,14,37,37,37xm118,-251r32,0r0,38r-32,0r0,-38xm50,-251r32,0r0,38r-32,0r0,-38"},"\u00fd":{"d":"21,43v17,8,37,4,43,-12r13,-32r-74,-185r34,0r56,152r52,-152r32,0r-91,234v-9,20,-37,34,-65,23r0,-28xm99,-263r39,0r-47,51r-23,0","w":180},"\u00fe":{"d":"112,-23v42,0,56,-32,56,-72v0,-39,-17,-68,-57,-68v-40,0,-57,30,-57,70v0,41,17,69,58,70xm116,4v-29,0,-49,-11,-61,-29r0,96r-31,0r0,-328r31,0r0,96v9,-19,33,-29,60,-29v58,1,86,41,86,97v0,56,-26,97,-85,97","w":213},"\u00ff":{"d":"21,43v17,8,37,4,43,-12r13,-32r-74,-185r34,0r56,152r52,-152r32,0r-91,234v-9,20,-37,34,-65,23r0,-28xm108,-251r32,0r0,38r-32,0r0,-38xm40,-251r32,0r0,38r-32,0r0,-38","w":180},"\u0131":{"d":"25,0r0,-186r30,0r0,186r-30,0","w":79},"\u0141":{"d":"28,-86r-28,20r0,-28r28,-20r0,-143r34,0r0,119r82,-58r0,28r-82,57r0,82r136,0r0,29r-170,0r0,-86"},"\u0142":{"d":"25,-116r-25,20r0,-25r25,-20r0,-116r30,0r0,91r26,-20r0,26r-26,20r0,140r-30,0r0,-116","w":79},"\u02c7":{"d":"57,-212r-34,0r-37,-51r30,0r25,34r25,-34r28,0","w":79},"\u02d8":{"d":"96,-263v-1,44,-63,66,-95,37v-9,-9,-15,-21,-17,-37r18,0v6,20,19,30,40,30v23,0,28,-13,36,-30r18,0","w":79},"\u02d9":{"d":"56,-213r-32,0r0,-38r32,0r0,38","w":79},"\u02da":{"d":"40,-263v-14,0,-25,11,-25,25v0,13,12,24,25,24v13,0,24,-11,24,-24v0,-13,-11,-25,-24,-25xm81,-238v3,43,-64,54,-78,15v-10,-27,8,-57,37,-56v25,1,39,17,41,41","w":79},"\u02db":{"d":"27,46v2,-24,22,-33,41,-47r15,0v-14,13,-29,21,-31,43v-2,22,30,18,36,5r11,6v-9,29,-76,34,-72,-7","w":79},"\u02dd":{"d":"12,-263r38,0r-44,51r-23,0xm68,-263r38,0r-43,51r-24,0","w":79},"\u2044":{"d":"97,-261r23,0r-157,271r-23,0","w":60},"\u2212":{"d":"17,-103r182,0r0,24r-182,0r0,-24","w":216},"\ufb01":{"d":"107,-230v-18,-5,-41,-5,-41,18r0,26r36,0r0,27r-36,0r0,159r-30,0r0,-159r-32,0r0,-27r32,0v-8,-54,19,-85,71,-71r0,27xm131,-220r0,-37r31,0r0,37r-31,0xm131,0r0,-186r31,0r0,186r-31,0","w":186},"\ufb02":{"d":"107,-230v-18,-5,-41,-5,-41,18r0,26r36,0r0,27r-36,0r0,159r-30,0r0,-159r-32,0r0,-27r32,0v-8,-54,19,-85,71,-71r0,27xm131,-257r31,0r0,257r-31,0r0,-257","w":186}}});

/*!
 * The following copyright notice may not be removed under any circumstances.
 * 
 * Copyright:
 * Part of the digitally encoded machine readable outline data for producing the
 * Typefaces provided is copyrighted © 1988 - 2006 Linotype GmbH, www.linotype.com.
 * All rights reserved. This software is the property of Linotype GmbH, and may not
 * be reproduced, used, displayed, modified, disclosed or transferred without the
 * express written approval of Linotype GmbH.  Copyright (c) 1988, 1990, 1993 Adobe
 * Systems Incorporated. All Rights Reserved. Helvetica is a trademark of
 * Heidelberger Druckmaschinen AG, exclusively licensed through Linotype GmbH, and
 * may be registered in certain jurisdictions. This typeface is original artwork of
 * Linotype Design Studio. The design may be protected in certain jurisdictions.
 * 
 * Trademark:
 * Helvetica is a trademark of Heidelberger Druckmaschinen AG, exclusively
 * licensed through Linotype GmbH, and may be registered in certain jurisdictions.
 * 
 * Description:
 * Helvetica is one of the most famous and popular typefaces in the world. It
 * lends an air of lucid efficiency to any typographic message with its clean,
 * no-nonsense shapes. The original typeface was called Haas Grotesk, and was
 * designed in 1957 by Max Miedinger for the Haas'sche Schriftgiesserei (Haas Type
 * Foundry) in Switzerland. In 1960 the name was changed to Helvetica (an
 * adaptation of "Helvetia", the Latin name for Switzerland). Over the years, the
 * Helvetica family was expanded to include many different weights, but these were
 * not as well coordinated with each other as they might have been. In 1983, D.
 * Stempel AG and Linotype re-designed and digitized Neue Helvetica and updated it
 * into a cohesive font family. Today, the original Helvetica family consists of 34
 * different font weights, and the Neue Helvetica family consists of 51 font
 * weights. The Helvetica family now forms an integral part of many digital
 * printers and operating systems and has become a stylistic anchor in our visual
 * culture. It is the quintessential sans serif font, timeless and neutral, and can
 * be used for all types of communication. Helvetica World, an update to the
 * classic Helvetica design using the OpenType font format, contains the following
 * Microsoft code pages: 1252 Latin 1, 1250 Latin 2 Eastern, 1251 Cyrillic, 1253
 * Greek, 1254 Turk, 1255 Hebrew, 1256 Arabic, 1257 Windows Baltic, 1258 Windows
 * Vietnamese, as well as a mixture of box drawing element glyphs and mathematical
 * symbols & operators. In total, each weight of Helvetica World contains more than
 * 1850 different glyph characters!
 * 
 * Manufacturer:
 * Linotype GmbH
 * 
 * Designer:
 * Linotype Design Studio
 * 
 * Vendor URL:
 * http://www.linotype.com
 * 
 * License information:
 * http://www.linotype.com/license
 */
Cufon.registerFont({"w":226,"face":{"font-family":"HelveticaNeue LT 65 Medium","font-weight":800,"font-stretch":"normal","units-per-em":"360","panose-1":"2 11 8 4 2 2 2 2 2 4","ascent":"288","descent":"-72","x-height":"5","bbox":"-13 -295 347 77","underline-thickness":"18","underline-position":"-27","unicode-range":"U+0020-U+007E"},"glyphs":{" ":{"w":113},"!":{"d":"85,-257v3,66,-9,117,-17,172r-29,0v-8,-55,-20,-106,-17,-172r63,0xm20,-67r67,0r0,67r-67,0r0,-67","w":106},"\"":{"d":"106,-257r52,0r0,130r-52,0r0,-130xm22,-257r52,0r0,130r-52,0r0,-130","w":180},"#":{"d":"191,-68r-28,0r-9,68r-41,0r9,-68r-29,0r-9,68r-42,0r9,-68r-26,0r0,-38r32,0r5,-40r-26,0r0,-38r32,0r9,-67r41,0r-9,67r29,0r10,-67r41,0r-9,67r22,0r0,38r-28,0r-5,40r22,0r0,38xm104,-146r-6,40r29,0r6,-40r-29,0"},"$":{"d":"124,-46v25,2,47,-25,25,-42v-6,-4,-15,-7,-25,-10r0,52xm107,-211v-21,-2,-44,24,-22,37v6,3,13,6,22,9r0,-46xm9,-183v0,-55,44,-76,98,-79r0,-33r17,0r0,33v54,4,91,29,93,84r-67,0v0,-19,-11,-27,-26,-31r0,49v48,13,101,22,101,81v0,59,-43,82,-101,84r0,33r-17,0r0,-33v-60,-3,-105,-26,-105,-90r67,0v1,25,15,36,38,39r0,-57v-47,-12,-98,-23,-98,-80"},"%":{"d":"89,-225v-23,1,-20,29,-20,52v0,13,4,28,20,28v22,-1,19,-29,19,-52v0,-14,-4,-28,-19,-28xm94,10r145,-271r36,0r-146,271r-35,0xm89,-116v-43,0,-62,-27,-62,-69v0,-42,19,-69,62,-69v42,0,61,26,61,69v0,43,-18,69,-61,69xm279,3v-43,-1,-63,-25,-62,-69v1,-42,19,-69,62,-69v42,0,61,26,61,69v0,43,-18,69,-61,69xm279,-106v-23,0,-20,28,-20,52v0,15,5,28,20,28v23,-1,19,-29,19,-52v0,-14,-4,-28,-19,-28","w":366},"&":{"d":"71,-74v0,37,53,35,68,11r-38,-45v-12,8,-30,16,-30,34xm239,-125v-2,25,-14,47,-29,62r54,63r-74,0r-18,-22v-46,47,-164,31,-160,-51v2,-41,29,-60,59,-75v-44,-36,-17,-119,50,-114v43,3,73,24,73,66v0,33,-21,52,-44,64r27,32v5,-8,8,-16,9,-25r53,0xm122,-219v-31,1,-18,40,-2,51v22,-5,38,-50,2,-51","w":259},"'":{"d":"27,-257r52,0r0,130r-52,0r0,-130","w":106},"(":{"d":"13,-99v0,-70,22,-115,45,-163r52,0v-52,84,-52,240,0,325r-52,0v-23,-48,-45,-93,-45,-162","w":106},")":{"d":"-3,63v50,-86,51,-240,0,-325r52,0v24,47,45,94,45,163v0,68,-21,115,-45,162r-52,0","w":106},"*":{"d":"135,-143r-29,22r-27,-39r-26,39r-29,-21r29,-38r-44,-13r11,-34r42,16r0,-46r36,0r0,46r41,-16r11,34r-43,13","w":159},"+":{"d":"82,-182r52,0r0,65r65,0r0,52r-65,0r0,65r-52,0r0,-65r-65,0r0,-52r65,0r0,-65","w":216},",":{"d":"23,-67r67,0v5,68,-2,127,-67,130r0,-29v20,-6,27,-13,30,-34r-30,0r0,-67","w":113},"-":{"d":"17,-72r0,-52r112,0r0,52r-112,0","w":146},".":{"d":"23,-67r67,0r0,67r-67,0r0,-67","w":113},"\/":{"d":"94,-262r56,0r-97,267r-56,0","w":146},"0":{"d":"72,-126v0,38,3,80,41,80v47,0,43,-60,41,-106v-1,-27,-10,-53,-41,-52v-38,1,-41,40,-41,78xm214,-126v0,73,-29,129,-102,129v-73,0,-99,-57,-99,-129v0,-71,26,-128,99,-128v73,0,102,56,102,128"},"1":{"d":"38,-199v41,0,70,-15,74,-52r51,0r0,251r-65,0r0,-154r-60,0r0,-45"},"2":{"d":"210,-175v0,77,-79,79,-116,123r119,0r0,52r-201,0v1,-87,82,-104,128,-147v19,-20,6,-56,-23,-54v-30,1,-42,21,-42,51r-57,0v-2,-65,34,-104,98,-104v54,0,94,25,94,79"},"3":{"d":"153,-77v1,-33,-28,-36,-60,-34r0,-42v27,0,56,1,56,-26v1,-18,-18,-25,-36,-25v-23,0,-39,10,-38,35r-58,0v2,-56,39,-85,96,-85v52,0,94,19,94,69v0,27,-14,43,-35,50v26,7,42,26,43,58v4,99,-170,103,-198,28v-5,-12,-8,-26,-7,-42r58,0v-1,30,14,45,45,45v21,0,40,-8,40,-31"},"4":{"d":"215,-108r0,52r-33,0r0,56r-61,0r0,-56r-110,0r0,-57r112,-138r59,0r0,143r33,0xm123,-108v-1,-26,2,-57,-1,-81r-63,81r64,0"},"5":{"d":"212,-90v8,102,-152,123,-194,50v-6,-10,-9,-23,-10,-38r61,0v6,48,86,38,82,-9v6,-44,-62,-54,-79,-22r-56,0r25,-142r158,0r0,52r-111,0v-2,15,-9,33,-9,46v11,-11,27,-18,49,-18v54,0,80,29,84,81"},"6":{"d":"114,-127v-25,1,-39,16,-39,42v0,22,17,40,39,39v24,-1,43,-14,43,-39v0,-25,-16,-43,-43,-42xm13,-124v-5,-97,83,-163,168,-113v17,10,26,28,30,51r-58,0v-4,-34,-58,-26,-67,-2v-7,10,-15,28,-12,43v11,-18,31,-27,58,-27v51,0,82,33,82,83v0,60,-41,92,-101,92v-72,0,-96,-56,-100,-127"},"7":{"d":"58,0v8,-82,39,-150,84,-195r-120,0r0,-56r182,0r0,49v-43,47,-79,117,-80,202r-66,0"},"8":{"d":"156,-77v0,-23,-19,-36,-42,-36v-25,1,-41,11,-42,36v0,25,18,35,42,35v24,0,42,-11,42,-35xm114,3v-57,0,-104,-20,-104,-77v0,-33,22,-52,49,-60v-23,-5,-37,-25,-38,-51v0,-93,186,-93,186,0v-1,28,-17,44,-37,52v26,6,48,26,47,59v-2,56,-47,77,-103,77xm152,-180v0,-21,-17,-29,-38,-29v-22,0,-38,8,-38,29v0,22,16,29,38,29v21,-1,38,-7,38,-29"},"9":{"d":"111,-204v-37,0,-51,44,-30,68v22,26,75,9,72,-29v-1,-22,-17,-39,-42,-39xm214,-131v0,78,-31,134,-110,134v-49,0,-80,-24,-87,-68r57,0v4,30,58,28,69,4v5,-11,13,-30,10,-44v-10,18,-31,27,-56,27v-52,0,-84,-34,-84,-86v0,-56,39,-90,96,-90v73,0,105,50,105,123"},":":{"d":"90,-120r-67,0r0,-67r67,0r0,67xm23,-67r67,0r0,67r-67,0r0,-67","w":113},";":{"d":"23,-67r67,0v5,68,-2,127,-67,130r0,-29v20,-6,27,-13,30,-34r-30,0r0,-67xm90,-120r-67,0r0,-67r67,0r0,67","w":113},"<":{"d":"17,-66r0,-51r182,-68r0,55r-110,39r110,38r0,56","w":216},"=":{"d":"199,-110r-182,0r0,-52r182,0r0,52xm199,-21r-182,0r0,-51r182,0r0,51","w":216},">":{"d":"17,-53r110,-38r-110,-39r0,-55r182,68r0,51r-182,69r0,-56","w":216},"?":{"d":"105,-211v-22,0,-33,14,-31,38r-63,0v2,-58,36,-89,94,-89v51,0,87,22,90,73v4,62,-65,50,-68,104r-56,0v-11,-68,50,-59,58,-104v2,-13,-12,-22,-24,-22xm66,-67r66,0r0,67r-66,0r0,-67","w":206},"@":{"d":"112,-120v0,16,10,29,27,29v21,0,38,-17,37,-38v0,-18,-11,-29,-29,-29v-20,0,-35,15,-35,38xm51,-128v-6,92,109,125,172,79r35,0v-23,32,-55,54,-106,54v-84,0,-139,-51,-139,-133v0,-83,55,-134,137,-134v71,0,125,37,125,108v0,62,-33,97,-89,104v-14,1,-20,-7,-23,-17v-30,39,-94,4,-94,-47v0,-64,75,-111,117,-62r3,-17r34,0r-18,98v0,4,2,7,5,8v24,-4,33,-26,33,-55v-1,-58,-35,-87,-94,-87v-63,0,-94,39,-98,101","w":288},"A":{"d":"97,-96r59,0r-30,-90xm93,-257r68,0r96,257r-70,0r-16,-46r-89,0r-16,46r-69,0","w":253,"k":{"y":6,"w":6,"v":6,"Y":27,"W":9,"V":18,"T":33}},"B":{"d":"180,-82v0,-41,-51,-29,-90,-31r0,59v37,-3,90,12,90,-28xm247,-80v2,103,-126,77,-224,80r0,-257v87,5,210,-26,213,64v0,26,-16,43,-34,52v26,7,45,30,45,61xm169,-180v1,-36,-46,-23,-79,-25r0,49v32,-2,78,10,79,-24","w":259},"C":{"d":"15,-129v-10,-130,173,-178,234,-77v7,12,12,26,12,41r-67,0v-4,-25,-23,-41,-52,-40v-42,2,-60,32,-60,76v0,44,17,77,60,77v32,0,50,-18,52,-48r67,0v-6,67,-47,105,-118,105v-81,0,-122,-53,-128,-134","w":273},"D":{"d":"260,-130v0,83,-43,129,-126,130r-111,0r0,-257r111,0v80,2,126,46,126,127xm193,-130v0,-59,-41,-73,-103,-69r0,141v64,4,103,-9,103,-72","w":273},"E":{"d":"23,-257r205,0r0,54r-138,0r0,45r126,0r0,51r-126,0r0,49r141,0r0,58r-208,0r0,-257","w":246},"F":{"d":"23,-257r189,0r0,54r-122,0r0,52r106,0r0,52r-106,0r0,99r-67,0r0,-257","w":219,"k":{"A":20,".":46,",":46}},"G":{"d":"80,-129v0,43,17,77,60,77v31,0,54,-14,59,-39r-47,0r0,-50r108,0r0,141r-43,0r-4,-28v-14,20,-38,34,-72,33v-81,-3,-122,-53,-128,-134v-10,-128,168,-178,232,-82v8,12,12,25,13,41r-67,0v-3,-23,-25,-35,-51,-35v-43,0,-60,34,-60,76","w":280},"H":{"d":"22,-257r67,0r0,94r88,0r0,-94r67,0r0,257r-67,0r0,-106r-88,0r0,106r-67,0r0,-257","w":266},"I":{"d":"23,-257r67,0r0,257r-67,0r0,-257","w":113},"J":{"d":"99,-52v18,-1,24,-12,24,-34r0,-171r67,0r0,176v0,58,-30,86,-90,86v-67,0,-92,-40,-90,-107r63,0v-1,26,0,51,26,50","w":213},"K":{"d":"23,-257r67,0r0,99r85,-99r83,0r-95,101r107,156r-84,0r-69,-108r-27,29r0,79r-67,0r0,-257","w":266},"L":{"d":"23,-257r67,0r0,199r120,0r0,58r-187,0r0,-257","w":219,"k":{"y":20,"Y":46,"W":27,"V":40,"T":46}},"M":{"d":"23,-257r99,0r45,171r44,-171r99,0r0,257r-63,0r-1,-195r-54,195r-51,0r-55,-195r0,195r-63,0r0,-257","w":333},"N":{"d":"22,-257r69,0r90,158r0,-158r63,0r0,257r-69,0r-90,-160r0,160r-63,0r0,-257","w":266},"O":{"d":"140,5v-83,0,-127,-53,-127,-134v0,-80,45,-133,127,-133v82,0,127,53,127,133v0,81,-44,134,-127,134xm140,-205v-43,0,-60,34,-60,76v0,43,17,77,60,77v43,0,60,-33,60,-77v0,-44,-18,-76,-60,-76","w":280},"P":{"d":"238,-174v0,82,-64,93,-148,88r0,86r-67,0r0,-257v98,1,215,-20,215,83xm171,-170v0,-41,-43,-32,-81,-33r0,65v37,-1,81,8,81,-32","w":246,"k":{"A":27,".":46,",":46}},"Q":{"d":"267,-129v0,39,-11,72,-32,94r31,30r-31,32r-35,-35v-94,40,-193,-18,-187,-121v3,-80,45,-133,127,-133v82,0,127,53,127,133xm80,-129v0,47,23,84,73,75r-20,-19r30,-32r25,25v24,-45,12,-127,-48,-125v-43,1,-60,34,-60,76","w":280},"R":{"d":"186,0v-15,-31,3,-94,-45,-94r-51,0r0,94r-67,0r0,-257v94,4,221,-24,221,72v0,30,-15,57,-40,65v47,9,29,83,48,120r-66,0xm177,-176v0,-38,-51,-25,-87,-27r0,58v38,-2,87,11,87,-31","w":259,"k":{"Y":13,"W":6,"V":-2,"T":6}},"S":{"d":"185,-145v90,45,33,162,-65,150v-64,-8,-111,-25,-112,-91r67,0v1,30,20,37,49,40v37,4,58,-38,18,-50v-53,-16,-125,-19,-126,-88v-3,-96,165,-99,199,-33v6,10,9,23,9,37r-67,0v2,-36,-69,-44,-74,-9v12,35,69,27,102,44","w":240},"T":{"d":"227,-199r-77,0r0,199r-67,0r0,-199r-77,0r0,-58r221,0r0,58","w":233,"k":{"y":40,"w":40,"u":33,"s":40,"r":33,"o":40,"e":40,"c":40,"a":40,"A":33,";":31,":":31,".":40,"-":46,",":40}},"U":{"d":"133,-52v33,0,45,-16,45,-50r0,-155r67,0r0,151v-1,75,-34,111,-112,111v-78,0,-111,-36,-112,-111r0,-151r67,0r0,155v0,34,12,50,45,50","w":266},"V":{"d":"154,0r-77,0r-81,-257r70,0r51,191r50,-191r70,0","w":233,"k":{"y":6,"u":13,"r":13,"o":20,"i":6,"e":20,"a":20,"A":18,";":18,":":18,".":46,"-":20,",":46}},"W":{"d":"276,0r-67,0r-36,-177r-35,177r-69,0r-69,-257r67,0r37,188r38,-188r63,0r38,188r37,-188r67,0","w":346,"k":{"y":6,"u":13,"r":13,"o":13,"i":6,"e":13,"a":20,"A":13,";":5,":":13,".":33,"-":6,",":33}},"X":{"d":"89,-135r-84,-122r79,0r43,80r45,-80r77,0r-83,122r90,135r-81,0r-48,-86r-53,86r-77,0","w":253},"Y":{"d":"154,-96r0,96r-67,0r0,-96r-94,-161r76,0r51,104r51,-104r76,0","w":240,"k":{"v":20,"u":27,"q":33,"p":27,"o":33,"i":5,"e":33,"a":33,"A":27,";":24,":":24,".":40,"-":40,",":40}},"Z":{"d":"9,-55r131,-144r-123,0r0,-58r210,0r0,52r-135,147r139,0r0,58r-222,0r0,-55","w":240},"[":{"d":"25,-262r106,0r0,51r-49,0r0,222r49,0r0,52r-106,0r0,-325","w":133},"\\":{"d":"150,5r-56,0r-97,-267r56,0","w":146},"]":{"d":"108,63r-105,0r0,-52r48,0r0,-222r-48,0r0,-51r105,0r0,325","w":133},"^":{"d":"17,-120r58,-131r66,0r58,131r-58,0r-33,-85r-34,85r-57,0","w":216},"_":{"d":"0,45r0,-18r180,0r0,18r-180,0","w":180},"`":{"d":"87,-207r-43,0r-57,-54r65,0","w":106},"a":{"d":"135,-87v-20,11,-61,3,-63,33v-2,29,45,26,55,9v5,-9,9,-23,8,-42xm131,-121v12,-15,-6,-32,-25,-32v-18,0,-28,8,-31,24r-57,0v3,-47,40,-63,89,-63v50,-1,86,13,87,62v1,44,-6,96,7,130r-62,0v-2,-6,-2,-12,-3,-18v-32,36,-126,33,-126,-33v0,-65,75,-52,121,-70","w":213},"b":{"d":"215,-98v0,58,-24,103,-84,103v-23,1,-38,-11,-52,-27r0,22r-58,0r0,-257r61,0r0,91v12,-17,31,-26,54,-26v53,0,79,41,79,94xm117,-41v48,-1,51,-105,0,-104v-27,1,-37,20,-37,50v1,30,7,54,37,54"},"c":{"d":"12,-90v-12,-117,177,-141,190,-28r-60,0v0,-18,-13,-27,-30,-27v-31,0,-39,24,-39,55v0,52,67,67,71,17r59,0v-6,49,-39,78,-94,78v-61,0,-91,-36,-97,-95","w":213},"d":{"d":"147,-94v0,-28,-9,-50,-37,-51v-28,0,-37,23,-37,50v0,28,9,54,37,54v28,0,37,-25,37,-53xm12,-98v-6,-79,84,-125,132,-69r0,-90r62,0r0,257r-59,0r0,-22v-12,18,-30,27,-52,27v-59,-1,-79,-44,-83,-103"},"e":{"d":"149,-113v-1,-53,-73,-46,-76,0r76,0xm12,-94v-5,-93,122,-128,175,-65v15,19,25,48,23,81r-137,0v-5,44,62,57,76,21r58,0v-12,39,-43,62,-93,62v-64,-1,-98,-35,-102,-99","w":219},"f":{"d":"134,-213v-23,-3,-44,-3,-39,26r37,0r0,40r-37,0r0,147r-61,0r0,-147r-30,0r0,-40r30,0v-5,-62,39,-77,100,-69r0,43","w":133,"k":{"f":6}},"g":{"d":"106,-55v26,0,37,-18,37,-43v0,-26,-9,-47,-36,-47v-26,0,-36,20,-36,46v0,25,9,44,35,44xm10,-101v-6,-78,91,-123,133,-62r0,-24r58,0r0,164v15,93,-123,115,-174,59v-7,-7,-9,-18,-11,-30r61,0v3,16,14,20,33,20v31,0,35,-31,31,-61v-10,15,-26,27,-49,27v-57,-1,-78,-37,-82,-93","w":219},"h":{"d":"115,-142v-54,0,-27,90,-33,142r-61,0r0,-257r61,0r0,96v10,-18,29,-30,57,-31v94,-5,63,109,68,192r-62,0r0,-109v1,-22,-9,-33,-30,-33"},"i":{"d":"23,-187r61,0r0,187r-61,0r0,-187xm84,-210r-61,0r0,-47r61,0r0,47","w":106},"j":{"d":"-9,13v17,0,33,1,32,-17r0,-183r61,0r0,187v3,56,-36,67,-93,63r0,-50xm84,-210r-61,0r0,-47r61,0r0,47","w":106},"k":{"d":"21,-257r61,0r0,132r56,-62r70,0r-68,71r77,116r-74,0r-45,-75r-16,15r0,60r-61,0r0,-257","w":213},"l":{"d":"23,-257r61,0r0,257r-61,0r0,-257","w":106},"m":{"d":"80,-161v16,-35,93,-45,109,-1v13,-18,28,-30,58,-30v90,0,61,110,66,192r-61,0r0,-110v1,-18,-10,-32,-26,-32v-26,0,-29,24,-29,51r0,91r-61,0r0,-106v0,-21,-4,-36,-23,-36v-52,0,-24,92,-31,142r-61,0r0,-187r59,0r0,26","w":333},"n":{"d":"115,-142v-54,0,-27,90,-33,142r-61,0r0,-187r59,0v1,8,-2,20,1,26v11,-18,30,-30,58,-31v94,-5,63,109,68,192r-62,0r0,-109v1,-22,-9,-33,-30,-33"},"o":{"d":"110,-145v-29,0,-37,25,-37,52v0,27,9,52,37,52v28,0,37,-25,37,-52v0,-27,-8,-52,-37,-52xm110,5v-61,0,-98,-38,-98,-98v0,-60,37,-99,98,-99v61,0,98,39,98,99v0,60,-37,98,-98,98","w":219},"p":{"d":"117,-41v48,-1,51,-105,0,-104v-27,1,-37,20,-37,50v1,30,7,54,37,54xm215,-89v6,77,-84,125,-133,69r0,83r-61,0r0,-250r58,0v1,7,-2,17,1,22v12,-18,29,-27,51,-27v60,0,80,45,84,103"},"q":{"d":"110,-145v-48,0,-51,104,-1,104v26,0,38,-22,38,-51v0,-27,-8,-53,-37,-53xm12,-89v0,-59,24,-102,83,-103v22,0,40,9,52,27r0,-22r59,0r0,250r-62,0r0,-84v-13,17,-31,26,-54,26v-53,0,-78,-39,-78,-94"},"r":{"d":"153,-133v-33,-12,-70,5,-69,40r0,93r-61,0r0,-187r59,0v1,10,-2,25,1,33v9,-26,35,-40,70,-35r0,56","w":153,"k":{"q":6,"o":6,"g":6,"e":6,"d":6,"c":6,".":33,"-":20,",":33}},"s":{"d":"166,-103v57,42,5,108,-65,108v-51,0,-89,-17,-91,-67r58,0v-3,33,58,38,62,8v-20,-43,-118,-5,-117,-81v1,-79,175,-78,171,3r-56,0v2,-26,-48,-29,-54,-7v11,30,68,18,92,36","w":200},"t":{"d":"133,0v-60,7,-99,-1,-99,-64r0,-83r-31,0r0,-40r31,0r0,-56r61,0r0,56r38,0r0,40r-38,0r0,85v-1,21,19,18,38,17r0,45","w":140},"u":{"d":"112,-45v53,-3,27,-90,33,-142r61,0r0,187r-59,0v-1,-8,2,-20,-1,-26v-9,17,-32,31,-57,31v-93,0,-65,-108,-69,-192r61,0r0,109v0,23,9,34,31,33"},"v":{"d":"132,0r-71,0r-62,-187r64,0r35,124r34,-124r62,0","w":193,"k":{".":27,",":27}},"w":{"d":"242,0r-62,0r-31,-124r-29,124r-62,0r-58,-187r62,0r32,121r27,-121r58,0r28,121r31,-121r62,0","w":299,"k":{".":20,",":20}},"x":{"d":"62,-98r-59,-89r68,0r26,45r26,-45r65,0r-58,88r66,99r-68,0r-32,-54r-31,54r-68,0","w":193},"y":{"d":"15,13v55,11,44,-35,31,-70r-49,-130r65,0r36,122r36,-122r62,0r-74,204v-10,43,-52,48,-107,46r0,-50","w":193,"k":{".":33,",":33}},"z":{"d":"8,-48r93,-92r-86,0r0,-47r164,0r0,47r-93,93r100,0r0,47r-178,0r0,-48","w":193},"{":{"d":"37,-143v1,-55,-11,-124,49,-119r42,0r0,43v-72,-15,5,120,-75,118v53,-5,39,58,42,105v0,15,16,16,33,15r0,44v-52,3,-91,-2,-91,-54v0,-38,13,-90,-32,-87r0,-43v15,-1,32,-5,32,-22","w":133},"|":{"d":"14,-283r52,0r0,360r-52,0r0,-360","w":79},"}":{"d":"96,-53v0,55,8,118,-48,116r-43,0r0,-44v73,15,-6,-124,75,-121v-22,-2,-41,-10,-41,-35v0,-34,19,-91,-34,-82r0,-43v51,-3,91,0,91,51v0,38,-15,94,32,90r0,43v-17,1,-32,7,-32,25","w":133},"~":{"d":"70,-129v40,2,86,49,108,-2v17,37,11,77,-32,78v-33,0,-43,-25,-78,-24v-18,1,-25,14,-30,26r-13,-47v8,-16,20,-32,45,-31","w":216},"\u00a0":{"w":113}}});

function GSI_Widget_Minibasket(){this._mouseOver=[false,false]};GSI_Widget_Minibasket.prototype=new GSI_Widget();GSI_Widget_Minibasket.prototype.name='minibasket';GSI_Widget_Minibasket.prototype.loadOrder=9;GSI_Widget_Minibasket.prototype._firstAttemp=false;GSI_Widget_Minibasket.prototype._open=false;GSI_Widget_Minibasket.prototype._mouseOver=null;GSI_Widget_Minibasket.prototype._timeOutOn=false;GSI_Widget_Minibasket.prototype._imageSize='mini';GSI_Widget_Minibasket.prototype._imageKind='basket_img';GSI_Widget_Minibasket.prototype._containerPreviousTitle=$('#minicart-previous-title');GSI_Widget_Minibasket.prototype._containerPreviousItems=$('#minicart-previous-items');GSI_Widget_Minibasket.prototype._showPreviouslyAdded=false;GSI_Widget_Minibasket.prototype._itemsPreviouslyAdded=3;GSI_Widget_Minibasket.prototype._load=function(){var tRes=true;try{if(typeof GSI=="undefined")return false;if(!GSI.functions.isset(GSI.SID)){GSI.setError('Widget: '+this.name+' -> GSI.SID missing','WARNING');tRes=false};if($('#minicart').length!=1){GSI.setError('Widget: '+this.name+' -> template missing','WARNING');tRes=false};if($('#minicart-bar').length!=1){GSI.setError('Widget: '+this.name+' -> minicart bar missing','WARNING');tRes=false}}catch(e){return false};return tRes};GSI_Widget_Minibasket.prototype.loader=function(on){if(on){$('#minicart-bar').addClass('minicart-bar-loading');this.status(GSI.dict.getText("widgets","minicart_loading"))}else{$('#minicart-bar').removeClass('minicart-bar-loading');this.status('OK')}};GSI_Widget_Minibasket.prototype.status=function(str){$('#minicart-bar').html(str)};GSI_Widget_Minibasket.prototype.addToBasket=function(callback,item){var _mthis=this,addToBasketFeedback=function(){_mthis.loader(false);GSI.tracking.tag('CartAdded');_mthis.showLastAddedItem(item);if(callback)callback()};this.loader(true);try{if(!item){var tItem=GSI.activeItem;GSI.setError("Add to basket is adding the activeItem","ERROR")}else var tItem=item;GSI.basket.add(tItem,addToBasketFeedback)}catch(e){this.status('ERROR: '+e.message)}};GSI_Widget_Minibasket.prototype.removeFromBasket=function(lineNum,callback){var _mthis=this,removeFromBasketFeedback=function(){_mthis.loader(false);_mthis.draw()},tItem=GSI.basket.getItemByLineNumber(lineNum);if(!tItem)return false;this.loader(true);try{GSI.basket.remove(tItem,removeFromBasketFeedback)}catch(e){this.status('ERROR: '+e.message)}};GSI_Widget_Minibasket.prototype.refresh=function(callback,onlyHeader){var _mthis=this,refreshFeedback=function(){_mthis.loader(false);if(onlyHeader){_mthis.draw(0,true)}else _mthis.draw();if(callback)callback()};this.loader(true);try{GSI.basket.retrieve(refreshFeedback)}catch(e){this.status('ERROR: '+e.message)}};GSI_Widget_Minibasket.prototype.show=function(){var _mthis=this;$("#minicart-content").stop(true).css("height","auto").slideDown("slow",function(){_mthis._open=true;$("#minicart-bar").addClass("minibasket-displayed")});return false};GSI_Widget_Minibasket.prototype.hide=function(callback){var _mthis=this;$("#minicart-content").stop(true).slideUp("slow",function(){if(typeof callback=='function')callback();$("#minicart-bar").removeClass("minibasket-displayed")});_mthis._open=false;return false};GSI_Widget_Minibasket.prototype._drawServices=function(item){var _mthis=this,lines=GSI.basket.data['LINES'],tHtml='';for(var aLine in lines)if(lines[aLine]['product_type']=="9"&&item.lineid==lines[aLine]['masterlineid']){tHtml+='<div class="service-'+lines[aLine]['itemname']+'"><h3>'+lines[aLine]['itemname']+'</h3>';tHtml+='<span class="service_message">'+GSI.dict.getText('widgets','minicart_vas_message'+lines[aLine]['itemname'])+'</span><span>'+lines[aLine]['extinfo']['vas_message']+'</span>';tHtml+='<ul class="service_properties">'+this._drawProperties(lines[aLine])+'</ul></div>'};return tHtml};GSI_Widget_Minibasket.prototype._drawProperties=function(item){var tLi='';for(var aProp in item.PROPERTIES){if(aProp=='indexOf')continue;if(aProp=='PRIMARY_COLOR')continue;if(aProp=='NONE')continue;if(aProp=='COLOR'){tLi+='<li>'+GSI.dict.getText('widgets','minicart_'+aProp)+' <strong>'+GSI.dict.getText('colors',item.PROPERTIES[aProp])+'</strong></li>';continue};var entry=item.PROPERTIES[aProp],property=GSI.dict.getText('property_selector',entry+'_prop');property=property==='[property_selector.'+entry+'_prop]'?entry:property;tLi+='<li>'+GSI.dict.getText('widgets','minicart_'+aProp)+' <strong>'+property+'</strong></li>'};return tLi};GSI_Widget_Minibasket.prototype._initMiniBasketLine=function(item){var template=$('.minicart-line.ajax-template').clone().removeClass('ajax-template').html(),activeLine=item.lineposition;$('.minicart-message').html(GSI.dict.getText('widgets','minicart_items_in_cart'));try{var tItem=item,tLi=this._drawProperties(item),imgSrc=GSI_CATALOG_IMG_PATH+this._imageSize+"/"+item.extinfo[this._imageKind],imgSrc="<img src='"+imgSrc+"' alt='__itemName__' title='__itemName__' class='minicart-image' />",imgSwatch=GSI_CATALOG_IMG_PATH+"swatch/"+item.extinfo['swatch_img'],imgSwatch="<img src='"+imgSwatch+"' class='minicart-product-swatch' alt='' title='' />",price=GSI.functions.moneyFormat(item.itemprice_currency,item.currencyid),itemSku=item.item_sku,linePrice=GSI.functions.moneyFormat(item.linetotal_currency,item.currencyid),name=item.itemname,qty=item.quantity,services=this._drawServices(item),html=template.replace(/__itemImage__/g,imgSrc);html=html.replace(/__itemSwatch__/g,imgSwatch);html=html.replace(/__itemName__/g,name);html=html.replace(/__itemSku__/g,itemSku);html=html.replace(/__itemPrice__/g,price);html=html.replace(/__linePrice__/g,linePrice);html=html.replace(/__itemQuantity__/g,qty);html=html.replace(/__itemServices__/g,services);var tDiv=$(html);$('.minicart-line-content-details',tDiv).empty();$('.minicart-line-content-details',tDiv).append(tLi);return tDiv}catch(e){var html=template.replace(/__itemImage__/g,'NOK');html=html.replace(/__itemName__/g,'NOK');html=html.replace(/__itemSize__/g,'NOK');html=html.replace(/__itemPrice__/g,'NOK');html=html.replace(/__basketLine__/g,activeLine);$('.minicart-line-content',tDiv).append(html);if(!GSI.functions.isset(onlyHeader))$('#minicart-lines').append(tDiv);GSI.setError('Minibasket: Unable to draw Item: '+e.message,'ERROR')};return true};GSI_Widget_Minibasket.prototype.draw=function(limit,onlyHeader){var _mthis=this;$('#minicart-error').hide();var onlyHeader=onlyHeader,endRetrieve=function(){_mthis.loader(false);if(_mthis.draw(limit))_mthis.show()};if(!GSI.basket.loaded){this.loader(true);try{if(this._firstAttemp)GSI.basket.retrieve(endRetrieve);this._firstAttemp=false}catch(e){this.status('ERROR: '+e.message)};return false};var totalLength=GSI.functions.count(GSI.basket.data['LINES']);if(totalLength<=0){this.hide();this._drawSummary();this.status(this._getStatusString());$('#minicart-bar').removeClass('enabled').addClass('disabled');$('.GSI_Minicart_link').removeClass('enabled').addClass('disabled');return false}else{$('#minicart-bar').addClass('enabled').removeClass('disabled');$('.GSI_Minicart_link').addClass('enabled').removeClass('disabled')};if(!GSI.functions.isset(limit)){limit=totalLength}else limit=(limit>totalLength)?totalLength:limit;if(!GSI.functions.isset(onlyHeader))$('#minicart-lines').empty();for(var aLine=totalLength-1;aLine>=(totalLength-limit);aLine--){if(GSI.basket.data['LINES'][aLine]['extra_data']['VOUCHER']||GSI.basket.data['LINES'][aLine]['product_type']=="9"){if(limit<totalLength)limit++;continue};$('#minicart-lines').append(this._initMiniBasketLine(GSI.basket.data['LINES'][aLine]))};this.status(this._getStatusString());this._drawSummary();return true};GSI_Widget_Minibasket.prototype._drawSummary=function(){var numItemsCart=GSI.basket.getData('num_items'),subTotal=GSI.basket.getData('subtotal_gross'),grandTotal=GSI.basket.getData('grandtotal'),shippingFull=GSI.basket.getData('shippingfull');if(subTotal==undefined)subTotal="0";if(grandTotal==undefined)grandTotal="0";if(shippingFull==undefined)shippingFull="0";$('#minicart-total-qty').html(numItemsCart+' '+GSI.dict.getText('shared','items'));$("#minicart-subtotal").html(GSI.functions.moneyFormat(subTotal,GSI.basket.getData('currencyid')));$('#minicart-ship').html(GSI.functions.moneyFormat(shippingFull,GSI.basket.getData('currencyid')));$("#minicart-grandtotal").html(GSI.functions.moneyFormat(grandTotal,GSI.basket.getData('currencyid')))};GSI_Widget_Minibasket.prototype._drawPreviouslyAdded=function(items_added){var _mthis=this,count=0,item,aLine,basket_items=GSI.functions.count(GSI.basket.data['LINES']),prev_added=basket_items-items_added,max_items_prev=_mthis._itemsPreviouslyAdded;$('.minicart-previous').show();_mthis._containerPreviousTitle.empty();_mthis._containerPreviousItems.empty();prev_added=prev_added-1;if(basket_items>items_added){_mthis._containerPreviousTitle.html(GSI.dict.getText('widgets','minicart_previous_items'));count=0;for(aLine=prev_added;aLine>=0&&count<max_items_prev;aLine--){item=GSI.basket.data['LINES'][aLine];if(item.extra_data['VOUCHER']||item.product_type=="9")continue;_mthis._containerPreviousItems.append(this._initMiniBasketLine(item));count++}}else _mthis._hidePreviouslyAdded();return true};GSI_Widget_Minibasket.prototype._hidePreviouslyAdded=function(){$('.minicart-previous').hide();this._containerPreviousTitle.empty();this._containerPreviousItems.empty()};GSI_Widget_Minibasket.prototype._showError=function(){$('.minicart-content-wrapper').hide();$('#minicart-error').show()};GSI_Widget_Minibasket.prototype._resetTemplate=function(){$('#minicart-error').hide();$('.minicart-content-wrapper').hide();$('#minicart-content').hide()};GSI_Widget_Minibasket.prototype._getStatusString=function(){var totalItems=0,total=GSI.basket.getData('subtotal_gross');totalItems=GSI.basket.data['num_items']?parseInt(GSI.basket.data['num_items']):0;if(total==undefined)total=0;if(totalItems==0){tRes=GSI.dict.getText('widgets','minicart_cart_is_empty')}else tRes='<span class="minicart-total-items">'+totalItems+'</span>&nbsp;<span class="minicart-total-price">'+GSI.dict.getText("widgets","minicart_items_in_cart")+'&nbsp;'+GSI.functions.moneyFormat(total,GSI.basket.data.currencyid)+'</span>&nbsp;';return tRes};GSI_Widget_Minibasket.prototype.showLastAddedItem=function(item){var _mthis=this,cartHidden=(GSI.functions.getScrollXY()[1]>=21)?true:false,endHide=function(){GSI.setError('Running endHide method for last added','INFO');$("#minicart-content").removeClass('minicart-posfixed');if(GSI.functions.browserVersion('msie',6))$("#minicart-content").appendTo('#minicart')};if(GSI.functions.browserVersion('msie',6)){document.location.href="#";cartHidden=false};if(cartHidden){$("#minicart-content").addClass('minicart-posfixed');if(GSI.functions.browserVersion('msie',6))$("#minicart-content").prependTo(document.body)};$('.minicart-slide-line-info').show();var items_count=1;if(item.items!=undefined)items_count=GSI.functions.count(item.items);if(_mthis._showPreviouslyAdded)_mthis._drawPreviouslyAdded(items_count);this.draw(items_count);this.status(GSI.dict.getText('widgets','minicart_added_to_cart'));$('.minicart-message').html(GSI.dict.getText('widgets','minicart_just_added_to_cart'));this.show();this._timeOutOn=true;setTimeout(function(){if(!_mthis.isMouseOver()){_mthis.hide(endHide);unbindEvents();_mthis._hidePreviouslyAdded()};_mthis._timeOutOn=false;_mthis.status(_mthis._getStatusString())},3000);var onBarMouseOver=function(){_mthis._mouseOver[0]=true;if(!$(this).hasClass('disabled'))$(this).addClass('minicart-bar-hover')},onBarMouseOut=function(){_mthis._mouseOver[0]=false;$(this).removeClass('minicart-bar-hover');if(!_mthis._timeOutOn){var doHide=function(){if(!_mthis.isMouseOver()){_mthis.hide(endHide);unbindEvents()}};setTimeout(doHide,500)}},onContentMouseOver=function(){_mthis._mouseOver[1]=true},onContentMouseOut=function(){_mthis._mouseOver[1]=false;if(!_mthis._timeOutOn){var doHide=function(){if(!_mthis.isMouseOver()){_mthis._hidePreviouslyAdded();_mthis.hide(endHide);unbindEvents()}};setTimeout(doHide,500)}},unbindEvents=function(){GSI.setError('Unbinding events from minicart Last Added','INFO');$('#minicart-bar').unbind('mouseover',onBarMouseOver).unbind('mouseout',onBarMouseOut);$('#minicart-content').unbind('mouseover',onContentMouseOver).unbind('mouseout',onContentMouseOut)};GSI.setError('binding events from minicart Last Added','INFO');$('#minicart-bar').mouseover(onBarMouseOver).mouseout(onBarMouseOut);$('#minicart-content').mouseover(onContentMouseOver).mouseout(onContentMouseOut)};GSI_Widget_Minibasket.prototype.isMouseOver=function(){for(var anOver in this._mouseOver)if(this._mouseOver[anOver])return true;return false};GSI_Widget_Minibasket.prototype.init=function(){var _mthis=this;if(!this._load())return false;$('#minicart-bar').click(function(){if(!_mthis._open){if(_mthis.draw(5))_mthis.show()}else _mthis.hide();return false});$('.GSI_Minicart_link').click(function(){if($(this).hasClass('disabled')){return false}else return true});this.refresh(null,true);this.loaded=true;return true};var tW=new GSI_Widget_Minibasket();GSI.widgets.loadWidget(tW);
function GSI_ICC_Widget_Minibasket(){this._showPreviouslyAdded=true};GSI_ICC_Widget_Minibasket.prototype={init:function(){var _mthis=this,content=$("#minicart-content"),bar=$('#minicart-bar');if(!this._load())return false;bar.hover(function(){$(this).data('over',true);if(!_mthis._open&&_mthis.draw(5))_mthis.show()},function(){$(this).data('over',false);setTimeout(function(){if(!content.data('over'))_mthis.hide()},3000)});content.hover(function(){$(this).data('over',true)},function(){$(this).data('over',false);setTimeout(function(){if(!bar.data('over'))_mthis.hide()},3000)});$('.GSI_Minicart_Bar').click(function(){if($(this).hasClass('disabled')){return false}else return true});this.refresh(null,true);this.loaded=true;return true},_getStatusString:function(){var totalItems=0,total=GSI.basket.getData('subtotal_gross');totalItems=GSI.basket.data['num_items']?parseInt(GSI.basket.data['num_items']):0;if(total==undefined)total=0;if(totalItems==0){tRes=GSI.dict.getText('widgets','minicart_cart_is_empty')}else tRes=GSI.dict.getText("widgets","minicart_items_in_cart")+'<span class="minicart-total-items">'+totalItems+'</span>'+GSI.dict.getText('item','item');return tRes}};var tW=GSI_ICC_Widget_Minibasket.prototype;GSI_ICC_Widget_Minibasket.prototype=new GSI_Widget_Minibasket();$.extend(GSI_ICC_Widget_Minibasket.prototype,tW);GSI.widgets.loadWidget(new GSI_ICC_Widget_Minibasket());
function GSI_Widget_ExpressItem(){this._collection=GSI.se.collection;this._itemBox=null;this.width=700;this.height=591;this._imageBoxMainSize='mid'};GSI_Widget_ExpressItem.prototype=new GSI_Widget();GSI_Widget_ExpressItem.prototype.name='expressitem';GSI_Widget_ExpressItem.prototype.height=null;GSI_Widget_ExpressItem.prototype.width=null;GSI_Widget_ExpressItem.prototype.loadOrder=9;GSI_Widget_ExpressItem.prototype._imageBox=null;GSI_Widget_ExpressItem.prototype._loaderObj;GSI_Widget_ExpressItem.prototype._stockLoader;GSI_Widget_ExpressItem.prototype._itemBox;GSI_Widget_ExpressItem.prototype._maxDescLength=null;GSI_Widget_ExpressItem.prototype._loadSteps=1;GSI_Widget_ExpressItem.prototype.getLoadSteps=function(){return this._loadSteps};GSI_Widget_ExpressItem.prototype._collection=null;GSI_Widget_ExpressItem.prototype._load=function(){var tRes=true;try{if(typeof GSI=="undefined")return false;if($('#express-shop').length!=1){GSI.setError('Widget: '+this.name+' -> template missing','WARNING');tRes=false};if(!GSI.functions.isset($.nyroModalManual)){GSI.setError('Widget: '+this.name+' -> jQuery plugin: nyroModal missing','WARNING');tRes=false};if(typeof GSI_Element_Loader=="undefined"){GSI.setError('Widget: '+this.name+' -> Loader class missing','WARNING');tRes=false};return tRes}catch(e){return false};return true};GSI_Widget_ExpressItem.prototype.setCollection=function(cn){this._collection=cn};GSI_Widget_ExpressItem.prototype.getCollection=function(){return this._collection};GSI_Widget_ExpressItem.prototype.show=function(id){var _mthis=this;this.loader(true);var doShow=function(){GSI.setError('Nyromodal is saying endShowContent to XpressItem','INFO');_mthis.loader(true);if(id)if(!_mthis._collection.getItem(id)){GSI.setError('XpressItem: Item '+id+' NOT found!','INFO');try{_mthis._collection.insert(id);_mthis._activateItem(id)}catch(e){_mthis.setError('The collection does not allow insert() @ xpressItem','WARNING')}}else{GSI.setError('XpressItem: Item '+id+' found!','INFO');_mthis._activateItem(id)};if(GSI.widgets.metatracker)GSI.widgets.metatracker._showMeta()},doRemove=function(){GSI.setError('calling destroy itembox','INFO');_mthis._itemBox.destroy();$.fn.nyroModal.settings.endRemove=null};$.fn.nyroModal.settings.endRemove=doRemove;$.nyroModalManual({url:'#express-shop',minWidth:this.width,minHeight:this.height,padding:0,endShowContent:doShow})};GSI_Widget_ExpressItem.prototype.hide=function(){$.nyroModalRemove()};GSI_Widget_ExpressItem.prototype.addToBasket=function(callback){var _mthis=this;if(minibasket=GSI.widgets.getWidget('minibasket')){minibasket.addToBasket(callback,this._item);return true}else{var addToBasketFeedback=function(){GSI.tracking.tag('CartAdded');var loader=new GSI_Element_Loader_Inline();loader.start($(document.body),{loaderSize:'large'});loader.on();document.location.href=GSI_URL_BASKET;if(callback)callback()};this.loader(true);try{var tItem=GSI.activeItem;GSI.basket.add(tItem,addToBasketFeedback)}catch(e){this.status('ERROR: '+e.message)}};try{this.setError('Trying external addToBasket function','INFO');this.loader(true);addToBasket();return true}catch(e){};this.setError('addToBasket not executed!','ERROR');return false};GSI_Widget_ExpressItem.prototype.loader=function(on){if(on){$('#express-images').hide();$('#express-details').hide();$('#express-shop-loader').show()}else{$('#express-shop-loader').hide();$('#express-images').show();$('#express-details').show()}};GSI_Widget_ExpressItem.prototype._activateItem=function(id,callback){var _mthis=this;if(!GSI.functions.isset(callback))callback=function(){};var retrieveItemCallback=function(){var endAddRvpFb=function(){var tRVPBox=GSI.widgets.getWidget('rvpbox');if(tRVPBox)tRVPBox.refresh()};$('#'+GSI_PLACEHOLDER_ID_XPRESSITEM_DYN).empty();_mthis._draw();setTimeout(function(){_mthis.loader(false)},500);GSI.rvp.add(GSI.activeItem,GSI.activeItem.filters,endAddRvpFb);GSI.tracking.tag('ItemViewed');callback()};this.loader(true);var item=this._collection.getItem(id);if(GSI.setActiveItem(item)){if(!GSI.activeItem.loaded){GSI.activeItem.retrieve(retrieveItemCallback)}else{GSI.activeItem.quantity=1;retrieveItemCallback()}}else{this.hide();this.setError('ERROR setting active the ITEM '+id,'ERROR')}};GSI_Widget_ExpressItem.prototype._drawPrice=function(){var orgPrice=GSI.activeItem.getData('orgprice'),offrPrice=GSI.activeItem.getData('offrprice'),currencyId=GSI.activeItem.getData('currencyid');if(offrPrice){$('.old-price',"#express-shop-price").html(GSI.functions.moneyFormat(orgPrice,currencyId));$('.new-price',"#express-shop-price").html(GSI.functions.moneyFormat(offrPrice,currencyId));$('.discount-percentage',"#express-shop-price").html(GSI.activeItem.getData('savings_percentage'));$('.price',"#express-shop-price").hide();$(".item-price-data","#express-shop-price").show()}else{$('.price',"#express-shop-price").html(GSI.functions.moneyFormat(orgPrice,currencyId)).show();$(".item-price-data","#express-shop-price").hide()}};GSI_Widget_ExpressItem.prototype._drawDetails=function(){var _mthis=this,id=GSI.activeItem.getData('id'),getDescriptionText=function(){var descText=GSI.activeItem.getData('description');if(descText&&_mthis._maxDescLength&&descText.length>_mthis._maxDescLength){descText=descText.substring(0,_mthis._maxDescLength);descText+='... <a href="'+GSI.activeItem.getData('url')+'"> '+GSI.dict.getText('item','read_more')+'</a>'};return descText?descText:''};$("#express-shop-name").html(GSI.activeItem.getData('name'));if(GSI_SHOWMETA)$("#express-shop-name").attr('data-meta','ITEM.'+id+'.INFO.name').addClass('gsi_showmeta');$("#express-shop-sku").html(GSI.dict.getText('shared','item')+'<span class="item-sku">'+GSI.activeItem.getData('id')+'</span>');$("#express-shop-description").html(getDescriptionText());if(GSI_SHOWMETA)$("#express-shop-description").attr('data-meta','ITEM.'+id+'.INFO.desc_short').addClass('gsi_showmeta');$('.GSI_Express_Link a').attr('href',GSI.activeItem.getData('url'));var services=GSI.activeItem.getData('services');if(services&&services.ENGRAVING_1){$('.express-service-link-a').show().html(GSI.dict.getText('widgets','express_service_'+services.ENGRAVING_1['service_name']))}else $('.express-service-link-a').hide()};GSI_Widget_ExpressItem.prototype._draw=function(){var _mthis=this,id=GSI.activeItem.getData('id');this._drawDetails();this._drawPrice();this._createItemBox();var defaultSku=(GSI.activeItem.getData('default_option_id'))?GSI.activeItem.getData('default_option_id'):null,aColour=(GSI.activeItem.data.content.INFO.default_color)?GSI.activeItem.data.content.INFO.default_color:null;if(aColour){GSI.activeItem.addFilter('COLOR',aColour);GSI.activeItem.refreshAvailableProperties()}else try{aColour=GSI.activeItem.data['PROPERTIES']['COLOR'][0];GSI.activeItem.addFilter('COLOR',aColour);GSI.activeItem.refreshAvailableProperties()}catch(e){GSI.setError('ERROR','Error setting the default color');return};this._doDraw()};GSI_Widget_ExpressItem.prototype._doDraw=function(){};GSI_Widget_ExpressItem.prototype._doCreateItemBox=function(){return new GSI_Element_ItemBox()};GSI_Widget_ExpressItem.prototype._createItemBox=function(){try{var _mthis=this;_mthis._itemBox=_mthis._doCreateItemBox();_mthis._itemBox.start(GSI.activeItem,$('#express-shop-wrapper'),{itemDyn:$("#"+GSI_PLACEHOLDER_ID_XPRESSITEM_DYN),imageBoxPlaceholder:$('#express-shop-wrapper'),altViews:$(".imagebox_alt","#express-images"),allowZoom:false,allowVideo:false,qtyInput:null,addToCartButtton:$('#express-addbtn'),checkStockPlaceholder:null,imageBoxMainSize:this._imageBoxMainSize,imageBoxFloating:true,floating:true,endAddToBasket:null})}catch(e){GSI.setError('ERROR creating itemBox: '+e.message,'ERROR')}};GSI_Widget_ExpressItem.prototype._disableGUI=function(){$('#express-shop-basket-add').attr('disabled','disabled').trigger("disable")};GSI_Widget_ExpressItem.prototype._enableGUI=function(){$('#express-shop-basket-add').removeAttr('disabled').trigger("disable")};GSI_Widget_ExpressItem.prototype._initGUI=function(){};GSI_Widget_ExpressItem.prototype.init=function(){var _mthis=this,getMissingKey=function(){for(var akey in GSI.activeItem.availProperties){if(akey=='indexOf')continue;for(var afilter in GSI.activeItem.filters){if(afilter=='indexOf')continue;var isFound=false;if(akey==afilter){isFound=true;break}};if(!isFound)return akey};if(GSI.functions.isset(GSI.activeItem.data.available))if(!GSI.activeItem.inStock())return false;if(!$('.item-quantity',this._placeHolder).val()||parseInt($('.item-quantity',this._placeHolder).val())<=0||parseInt($('.item-quantity',this._placeHolder).val())>parseInt(GSI.activeItem.data['iol_stock_qty']))return'quantity';return false};if(!this._load()){GSI.updateProgressBar(this.name+" "+GSI.dict.getText('JSAPI','widget_initiation_error'));return false};this.loaded=true;GSI.updateProgressBar(this.name+" "+GSI.dict.getText('JSAPI','widget_initiated'));$('.GSI_XpressLink').click(function(){if(this.getAttribute('data-sku')){_mthis.show(this.getAttribute('data-sku'));return false}else return true});this._initGUI();return true}
function showExpressItem(ID){var tWidget=GSI.widgets.getWidget('expressitem');if(tWidget){tWidget.show(ID);return false}else{var item=GSI.getItem(ID);document.location.href=item.getData('url');return false}};var tW=new GSI_Widget_ExpressItem();GSI.widgets.loadWidget(tW);
function GSI_ICC_MATINIQUE_Widget_ExpressItem(){this._collection=GSI.se.collection;this._itemBox=null;this.width=812;this.height=545;this._imageBoxMainSize='mid';this._maxDescLength=124};GSI_ICC_MATINIQUE_Widget_ExpressItem.prototype=new GSI_Widget_ExpressItem();GSI_ICC_MATINIQUE_Widget_ExpressItem.prototype._doCreateItemBox=function(){return new GSI_ICC_MATINIQUE_Element_ItemBox()};GSI_ICC_MATINIQUE_Widget_ExpressItem.prototype._drawDetails=function(){var _mthis=this,id=GSI.activeItem.getData('id'),getDescriptionText=function(){var descText=GSI.activeItem.getData('description');if(descText&&_mthis._maxDescLength&&descText.length>_mthis._maxDescLength){descText=descText.substring(0,_mthis._maxDescLength);descText+='... <a href="'+GSI.activeItem.getData('url')+'"> '+GSI.dict.getText('item','read_more')+'</a>'};return descText?descText:''};$("#express-shop-name").html(GSI.activeItem.getData('name'));$("#express-shop-sku").html(GSI.dict.getText('item','style')+GSI.activeItem.getData('id'));$("#express-shop-description").html(getDescriptionText());$('.GSI_Express_Link a').attr('href',GSI.activeItem.getData('url'))};var tW=new GSI_ICC_MATINIQUE_Widget_ExpressItem();GSI.widgets.loadWidget(tW);
var GSI_Element_ItemBox=function(){};GSI_Element_ItemBox.prototype=new GSI_Element();GSI_Element_ItemBox.prototype._item=null;GSI_Element_ItemBox.prototype._placeHolder=null;GSI_Element_ItemBox.prototype._settings=null;GSI_Element_ItemBox.prototype._stockLoader;GSI_Element_ItemBox.prototype._loaded;GSI_Element_ItemBox.prototype._onItemRefresh;GSI_Element_ItemBox.prototype._onAddToCartClick;GSI_Element_ItemBox.prototype._selectorsArray=null;GSI_Element_ItemBox.prototype._imageBox=null;GSI_Element_ItemBox.prototype._init=function(){this._settings={itemDyn:$("#"+GSI_PLACEHOLDER_ID_ITEM_DYN),colourPickersPlaceholder:null,imageBoxPlaceholder:this._placeHolder,qtyInput:null,addToCartButtton:$('.add-to-cart',this._placeHolder),enableAddButton:checkEnabledButton(),addCustomSelectMsg:false,addToCartExpress:$('.GSI_ItemBox_expressCheckout',this._placeHolder),notifyMeHolder:$('.notifyme-buttons',this._placeHolder),checkStockPlaceholder:null,altViews:$('.alternative-view',this._placeHolder),altViewImgSize:'thumb',allowZoom:false,allowVideo:false,imageBoxMainSize:'large',imageBoxFloating:false,endAddToBasket:null,floating:false,arrowHeight:null,doNotDestroy:false,qtyBoxValue:"1"}
function checkEnabledButton(){if(typeof GSI_FORCE_PRIVATE!='undefined'){if(GSI_FORCE_PRIVATE==true){return false}else return true}else return true};this._selectorsArray=new Array();this._loaded=false};GSI_Element_ItemBox.prototype.start=function(item,placeholder,settings){var _mthis=this;this._item=item;this._placeHolder=$(placeholder);this._init();this._settings=this._mergeSettings(settings);this._checkSettings();$(this._settings['itemDyn'],placeholder).empty();if(!this._settings.colourPickersPlaceholder)this._settings.colourPickersPlaceholder=this._settings.itemDyn;this._initImageBox();this._initSelectors();this._initQty();this._settings.enableAddButton?this._initAddButton():null;this._settings.addCustomSelectMsg?this._initAddCustomSelectMsg():null;this._initStockLoader();if(this._item.getData('services'))this._initValAddServices();this._loaded=true;this._bindRefresh();this.checkStock()};GSI_Element_ItemBox.prototype._checkSettings=function(){var placeHolders=['itemDyn','colourPickersPlaceholder','imageBoxPlaceholder','qtyInput','addToCartButtton','notifyMeHolder','checkStockPlaceholder'];for(var aPlaceHolder in placeHolders){var aSetting=placeHolders[aPlaceHolder];if(!this._settings[aSetting]){GSI.setError('ItemBox: '+aSetting+' was not defined','WARNING')}else if(this._settings[aSetting].length<=0){GSI.setError('ItemBox: '+aSetting+' defined but not found in the DOM','WARNING')}else if(this._settings[aSetting].length>1)GSI.setError('ItemBox: '+aSetting+' found in the DOM more than once','WARNING')}};GSI_Element_ItemBox.prototype._bindRefresh=function(){var _mthis=this,onItemRefresh=function(){_mthis.checkStock()};this._onItemRefresh=onItemRefresh;$(this._item).bind('refresh',onItemRefresh)};GSI_Element_ItemBox.prototype.destroy=function(){if(this._settings.doNotDestroy){GSI.setError('ItemBox destroy called but doNotDestroy set','INFO');return};$(this._item).unbind('refresh',this._onItemRefresh);if(this._settings.enableAddButton){$(this._settings['addToCartButtton']).unbind('click',this._onAddToCartClick);$(this._settings['addToCartButtton']).unbind('touchstart',this._onAddToCartClick);$(this._settings['addToCartButtton']).unbind('mouseenter mouseleave')};this._imageBox.destroy()};GSI_Element_ItemBox.prototype._createImageBox=function(){return new GSI_Element_ImageBox()};GSI_Element_ItemBox.prototype._createPicker=function(){return new GSI_Element_Selector_Picker()};GSI_Element_ItemBox.prototype._initImageBox=function(){this._imageBox=this._createImageBox();this._imageBox.start(this._item,this._settings['imageBoxPlaceholder'],{colorPickersPlaceHolder:this._settings['colourPickersPlaceholder'],altViewsPlaceHolder:this._settings['altViews'],altViewImgSize:this._settings['altViewImgSize'],allowZoom:this._settings['allowZoom'],zoomAnimLength:this._settings['zoomAnimLength'],allowVideo:this._settings['allowVideo'],mainSize:this._settings['imageBoxMainSize'],floating:this._settings['imageBoxFloating']},true)};GSI_Element_ItemBox.prototype._initSelect=function(k,values){var aPickerObj=this._createPicker(),aPlaceHolder=$('<div class="item-option GSI_item_options"></div>');aPickerObj.start(k,this._item,aPlaceHolder,this._settings.floating);this._settings['itemDyn'].append(aPlaceHolder);this._selectorsArray.push(aPickerObj)};GSI_Element_ItemBox.prototype._initSelectors=function(){var itemPropsOrder={SIZE:1,WAIST:1,'default':1},ItemProp=this._item.data.PROPERTIES;if(!ItemProp)return false;for(var aPos in itemPropsOrder){if(aPos=='indexOf')continue;if(aPos=="default"){for(var optName in ItemProp){if(optName=='indexOf')continue;if(optName=='PRIMARY_COLOR')continue;if(optName=='COLOR')continue;if(!itemPropsOrder[optName]){this._initSelect(optName,ItemProp[optName]);continue}else continue};continue}else if(ItemProp[aPos]){this._initSelect(aPos,ItemProp[aPos]);continue}else continue};return true};GSI_Element_ItemBox.prototype._initQty=function(){if(typeof GSI_FORCE_PRIVATE!='undefined'&&GSI_FORCE_PRIVATE)return;var _mthis=this,numbersOnly=function(e){var unicode=e.charCode?e.charCode:e.keyCode;if(unicode!=8){if(unicode<48||unicode>57){return false}else return true}else return true};if(!this._settings['qtyInput']){GSI.setError('Item Box qtyInput not defined!, Inserting default control','WARNING');var qtyStr=this._getHtml()};this._settings['qtyInput'].change(function(){_mthis._item.quantity=$(this).val();_mthis.checkQty()}).keypress(function(e,keyCode){keyCode=e.charCode?e.charCode:e.keyCode;if(numbersOnly(e)){var aQty=$(this).val();if(aQty==''&&keyCode==48){return false}else return true}else return false}).keyup(function(e,keyCode){var aQty=$(this).val();_mthis._item.quantity=aQty;_mthis.checkQty()}).blur(function(e,keyCode){$(this).val()?"":$(this).val("1");_mthis.checkQty()});this._item.quantity=1};GSI_Element_ItemBox.prototype._getHtml=function(){var _mthis=this,qtyStr='<div class="elements qty-element"><span class="elements-text">'+GSI.dict.getText('item','qty')+' </span><input class="item-quantity" type="text" value="1" maxlength="2" /></div>';this._settings['itemDyn'].append(qtyStr);this._settings['qtyInput']=$('.item-quantity',this._placeHolder);return qtyStr};GSI_Element_ItemBox.prototype._initAddButton=function(){var _mthis=this,onAddToCartClick=function(){if($(this).hasClass('disabled'))return false;var that=this;$(this).addClass('disabled');_mthis._stockLoader.on();var endAddToBasket=function(){$(that).removeClass('disabled');_mthis._stockLoader.off();if(_mthis._item.getData('services')&&_mthis._item.getData('paringKey')){var tWidget=GSI.widgets.getWidget('vasbox');if(tWidget)tWidget.resetVAS(_mthis._item,$('.GSI_ItemBox_Service',this._placeHolder))};_mthis.destroy();if(typeof (_mthis._settings['endAddToBasket'])==Function)_mthis._settings['endAddToBasket']};if(_mthis._item.getData('services')&&_mthis._item.getData('paringKey')&&_mthis._item.quantity>1){var tWidget=GSI.widgets.getWidget('vasbox');if(tWidget)tWidget.showWarning(_mthis._item,function(){_mthis.addToBasket(endAddToBasket)})}else _mthis.addToBasket(endAddToBasket);return false};this._onAddToCartClick=onAddToCartClick;_mthis._settings['addToCartButtton'].click(onAddToCartClick);_mthis._settings['addToCartButtton'].bind('touchstart',onAddToCartClick);_mthis._settings['addToCartButtton'].hover(function(){_mthis._addButtonHoverOn()},function(){_mthis._addButtonHoverOff()})};GSI_Element_ItemBox.prototype._initAddCustomSelectMsg=function(){var ItemProp=this._item.data.PROPERTIES;if(!ItemProp)return false;var filters=new Array();for(var optName in ItemProp){if(optName=='indexOf')continue;if(optName=='COLOR')continue;filters.push(GSI.dict.getText('item','selector_'+optName))};if(GSI.functions.count(filters)){var filtersTxt=filters.join(", ");$('.GSI_Itembox_Custom_Message').text(GSI.dict.getText('item','select_property').replace("properties",filtersTxt))}else $('.GSI_Itembox_Custom_Message').text(GSI.dict.getText('item','select_QUANTITY'))};GSI_Element_ItemBox.prototype._initValAddServices=function(){var _mthis=this,itemServices=this._item.getData('services');if(!itemServices)return false;var tWidget=GSI.widgets.getWidget('vasbox');if(tWidget){$('.GSI_ItemBox_Service',this._placeHolder).each(function(){var summary=$(this);$('.GSI_ItemBox_ServiceAdd',this).click(function(){tWidget.show(this.getAttribute("data-sku"),_mthis._item,summary);return false});$('.GSI_ItemBox_ServiceRemove',this).click(function(){tWidget.remove(this.getAttribute("data-sku"),_mthis._item,summary);return false});$('.GSI_ItemBox_ServiceEdit',this).click(function(){tWidget.edit(this.getAttribute("data-sku"),_mthis._item,summary);return false})})}else{GSI.setError('ERROR in itemBox _initValAddServices: Widget VASBox missing ','ERROR');return false};return true};GSI_Element_ItemBox.prototype._addButtonHoverOn=function(){};GSI_Element_ItemBox.prototype._addButtonHoverOff=function(){};GSI_Element_ItemBox.prototype._initStockLoader=function(){if(this._loaded)return;if(!this._settings['checkStockPlaceholder']){GSI.setError('Item Box checkStockPlaceholder not defined!, Inserting default control','WARNING');var qtyStr='<div class="elements stock-check-wrp"><span class="stock-check"></span></div>';this._settings['itemDyn'].append(qtyStr);this._settings['checkStockPlaceholder']=$('.stock-check',this._placeHolder)};this._stockLoader=new GSI_Element_Loader();this._stockLoader.start(this._settings['checkStockPlaceholder'],{_loaderSize:'small',_zIndex:'99'})};GSI_Element_ItemBox.prototype.checkStock=function(){var _mthis=this;if(typeof GSI_FORCE_PRIVATE!='undefined'&&GSI_FORCE_PRIVATE)return;if(!this._loaded)return;var whenStock=function(){try{if(!_mthis._item.data.available&&!GSI_STOCK_CHECK_OFF){$(_mthis._item).trigger('stock_checked');var notifymeW=GSI.widgets.getWidget('notifyme');if(notifymeW&&notifymeW.isEnabledItemOption()){if(_mthis._settings.enableAddButton)_mthis._settings['addToCartButtton'].addClass("disabled").hide().get(0).stock_checked=false;_mthis._settings['checkStockPlaceholder'].html(GSI.dict.getText('availability','out_of_stock'));_mthis._settings['itemDyn'].addClass('option-out-of-stock');_mthis._settings['notifyMeHolder'].show();if(_mthis._settings['qtyInput'].val()!="X")_mthis._settings['qtyBoxValue']=_mthis._settings['qtyInput'].val();_mthis._settings['qtyInput'].attr("disabled","disabled").val("X")}else{_mthis._settings['itemDyn'].removeClass('option-out-of-stock');_mthis._settings['notifyMeHolder'].hide();if(_mthis._settings.enableAddButton)_mthis._settings['addToCartButtton'].addClass("disabled").show().get(0).stock_checked=false;_mthis._settings['checkStockPlaceholder'].html(GSI.dict.getText('availability','out_of_stock'))};return};if(_mthis._settings.enableAddButton)_mthis._settings['addToCartButtton'].removeClass('disabled').show().get(0).stock_checked=true;_mthis._settings['itemDyn'].removeClass('option-out-of-stock');_mthis._settings['notifyMeHolder'].hide();if(_mthis._settings['qtyInput'].val()=="X")_mthis._settings['qtyInput'].removeAttr("disabled").val(_mthis._settings['qtyBoxValue']);_mthis._stockLoader.off();_mthis.checkQty()}catch(e){GSI.setError('ERROR in itemBox checkStock '+e.message,'ERROR')}};try{this._settings['checkStockPlaceholder'].empty();if(!this._item.getStock(whenStock)){if(this._settings.enableAddButton){this._settings.notifyMeHolder.hide();this._settings['addToCartButtton'].addClass("disabled").show()}}else{if(GSI_STOCK_CHECK_OFF)return whenStock();this._stockLoader.on(true)}}catch(e){GSI.setError('ERROR in itemBox checkStock '+e.message,'ERROR')}};GSI_Element_ItemBox.prototype.checkQty=function(){$(this._item).trigger('stock_checked');if(!this._item.canCheckStock())return false;if(GSI_STOCK_CHECK_OFF){if(this._settings.enableAddButton)this._settings['addToCartButtton'].removeClass('disabled');return true};if(!this._settings['qtyInput'].val()||parseInt(this._settings['qtyInput'].val())>parseInt(this._item.data['iol_stock_qty'])||this._settings['qtyInput'].val()<=0){if(this._settings.enableAddButton){this._settings['addToCartButtton'].addClass("disabled")}else this._settings['checkStockPlaceholder'].html(GSI.dict.getText('availability','qty_exceed_stock'));return false}else{if(this._settings.enableAddButton){this._settings['addToCartButtton'].removeClass('disabled')}else this._settings['checkStockPlaceholder'].html('');return true}};GSI_Element_ItemBox.prototype.addToBasket=function(callback){var minibasket=null;if(minibasket=GSI.widgets.getWidget('minibasket')){minibasket.addToBasket(callback,this._item);return true}else{var addToBasketFeedback=function(){var loader=new GSI_Element_Loader_Inline();loader.start($(document.body),{loaderSize:'large'});loader.on();GSI.tracking.tag('CartAdded');document.location.href=GSI_URL_BASKET;if(callback)callback()};try{GSI.basket.add(this._item,addToBasketFeedback)}catch(e){GSI.setError('addToBasket not executed (from ItemBox)! ERROR: '+e.message,'ERROR')}};try{return true}catch(e){GSI.setError('addToBasket not executed (from ItemBox)!','ERROR');return false}};
function GSI_Element_ImageBox(){};GSI_Element_ImageBox.prototype=new GSI_Element();GSI_Element_ImageBox.prototype._loader=function(on){return;if(on){$('#imagebox_contents').hide();$('#imagebox_loader').show()}else{$('#imagebox_loader').hide();$('#imagebox_contents').show()}};GSI_Element_ImageBox.prototype.zoom=function(){this._zoomElement.toggle()};GSI_Element_ImageBox.prototype.activate=function(){var _mthis=this;$('.imagebox-color-pickers',this._settings['placeHolder']).removeClass('inactive').addClass('active');this._settings['colorPickersImages'].fadeTo("fast",1);$('.imagebox_zoom_control a',this._settings['placeHolder']).bind("click",function(){_mthis.zoom()});$('.imagebox_zoom_control',this._settings['placeHolder']).fadeTo("fast",1)};GSI_Element_ImageBox.prototype.deactivate=function(){var _mthis=this;$('.imagebox-color-pickers',this._settings['placeHolder']).removeClass('active').addClass('inactive');this._settings['colorPickersImages'].fadeTo("fast",0.33);$('.imagebox_zoom_control a',this._settings['placeHolder']).unbind("click",function(){_mthis.zoom()});$('.imagebox_zoom_control',this._settings['placeHolder']).fadeTo("fast",0.33)};GSI_Element_ImageBox.prototype.setPlaceHolder=function(obj){this._settings['placeHolder']=$(obj)};GSI_Element_ImageBox.prototype.reset=function(){this._settings['colorPickersImages'].each(function(){$(this).removeClass('disabled').removeClass('colour-selected').addClass('available')});this._settings['item_imgBox'].removeFilter('COLOR');this._settings['item_imgBox'].refreshAvailableProperties();if(this._settings['allowZoom']&&this._zoomElement.isOn())this._zoomElement.toggle();this.refresh()};GSI_Element_ImageBox.prototype._setFilter=function(k,v){var key=k;this._settings['item_imgBox'].addFilter(key,v);this._settings['item_imgBox'].refreshAvailableProperties()};GSI_Element_ImageBox.prototype.refreshMainView=function(){if(this._settings['allowZoom']){this._zoomElement.refresh()}else{var imBig=this._settings['item_imgBox'].getImage(this._settings['mainSize']),itemName=this._settings['item_imgBox'].getData('name'),attrArray={src:imBig,alt:itemName,title:itemName};$(".imagebox_main",this._settings['placeHolder']).attr(attrArray)};this._lastColor=this._settings['item_imgBox'].filters['COLOR']};GSI_Element_ImageBox.prototype._refreshAltViews=function(){var _mthis=this,altViewStr='',previousViewName=this._settings['item_imgBox'].activeViewName;try{if(GSI.functions.isset(this._settings['item_imgBox'].data['content']['IMG']['aview'])){this._settings['item_imgBox'].setView('main');if(previousViewName=='main'){selected='selected'}else selected='';var altImgSrc=this._settings['item_imgBox'].getImage(this._settings['altViewImgSize']);if(altImgSrc.split('/').pop()!='notavailable.gif')altViewStr+='<a href="#" name="main" class="alternative-view-box '+selected+'"><img src="'+this._settings['item_imgBox'].getImage(this._settings['altViewImgSize'])+'" class="alternative-view-img" alt="main" /></a>';for(var aView in this._settings['item_imgBox'].data.content.IMG.aview){if(aView=='indexOf')continue;if(aView=='main')continue;this._settings['item_imgBox'].setView(aView);if(previousViewName==aView){selected='selected'}else selected='';var altImgSrc=this._settings['item_imgBox'].getImage(this._settings['altViewImgSize']);if(altImgSrc.split('/').pop()=='notavailable.gif')continue;altViewStr+='<a href="#" name='+aView+' class="alternative-view-box '+selected+'"><img src="'+this._settings['item_imgBox'].getImage(this._settings['altViewImgSize'])+'" class="alternative-view-img" alt="'+aView+'" /></a>'};this._settings['item_imgBox'].setView(previousViewName);this._settings['altViewsPlaceHolder'].hide().html(altViewStr).fadeIn();$('a',this._settings['altViewsPlaceHolder']).click(function(){if(this.name==_mthis._settings['item_imgBox'].activeViewName)return false;_mthis._settings['item_imgBox'].setView(this.name);$('a',_mthis._settings['altViewsPlaceHolder']).removeClass('selected');$(this).addClass('selected');if(_mthis._settings['allowZoom'])_mthis._zoomElement.activate(false);_mthis.refreshMainView();return false})}}catch(e){GSI.setError('ERROR while refreshing alt views in imageBox: '+e.message,'ERROR');return false}};GSI_Element_ImageBox.prototype.refresh=function(){if(this._settings['item_imgBox'].filters['COLOR']&&this._lastColor==this._settings['item_imgBox'].filters['COLOR'])return;if(this._settings['allowZoom']&&this._zoomElement.isOn())if(!this._settings['item_imgBox'].hasImage('zoom')){this._zoomElement.toggle();this._settings['item_imgBox'].setView('main')};if(!this._settings['item_imgBox'].hasImage(this._settings['mainSize']))this._settings['item_imgBox'].setView('main');if(this._settings['allowAltViews'])this._refreshAltViews();this.refreshMainView()};GSI_Element_ImageBox.prototype.draw=function(){this.refresh()};GSI_Element_ImageBox.prototype.start=function(item,mainPlaceholder,xtraConf,forceRedrawing){var _mthis=this;this.init();if(this._settings['item_imgBox']!=item){this._settings['item_imgBox']=item;$(this._settings['item_imgBox']).bind('refresh',function(){_mthis.refresh()})};this._settings['placeHolder']=mainPlaceholder;for(var aConf in xtraConf)_mthis._settings[aConf]=xtraConf[aConf];if(xtraConf.colorPickersPlaceHolder){this._settings['colorPickersPlaceHolder']=xtraConf.colorPickersPlaceHolder}else this._settings['colorPickersPlaceHolder']=$('.imagebox-color-pickers');if(xtraConf.altViewsPlaceHolder){this._settings['altViewsPlaceHolder']=xtraConf.altViewsPlaceHolder}else this._settings['altViewsPlaceHolder']=$('.alternative-view',this._settings['placeHolder']);var initiated=($('.imagebox-color-pickers img',this._settings['placeHolder']).length==1);if(!initiated||forceRedrawing)this._initColourPicker();if(this._settings['allowPickers'])this._settings['colorPickersImages']=$('.imagebox-color-pickers a',this._settings['placeHolder']);if(this._settings['allowZoom'])this._initZoom();if(this._settings['allowVideo'])this._initVideo();if(this._settings['item_imgBox'].loaded)this._settings['allowAltViews']=true;this.draw()};GSI_Element_ImageBox.prototype.destroy=function(){try{this._zoomElement.destroy()}catch(e){GSI.setError('ImageBox:  Error initiating video','WARNING')}};GSI_Element_ImageBox.prototype._initColourPicker=function(){var aPickerObj=new GSI_Element_Selector_ColourPicker();aPickerObj.start('COLOR',this._settings['item_imgBox'],this._settings['colorPickersPlaceHolder'],this._settings['floating']);return true};GSI_Element_ImageBox.prototype._createVideo=function(){return new GSI_Element_Video_Flash()};GSI_Element_ImageBox.prototype._initVideo=function(){try{var videoSrc=this._settings['item_imgBox'].getData('video');if(videoSrc){this._videoElement=this._createVideo();this._videoElement.start(videoSrc,$(".active-video",this._settings['placeHolder']),{control:$('.video',this._settings['placeHolder'])});var videoObj=this._videoElement;$(this._settings['item_imgBox']).bind('refresh',function(){videoObj.refresh()})}else $('.video',this._settings['placeHolder']).addClass('disabled')}catch(e){GSI.setError('ImageBox:  Error initiating video','WARNING')}};GSI_Element_ImageBox.prototype._toggleVideo=function(){};GSI_Element_ImageBox.prototype._initZoom=function(){this._zoomElement=new GSI_Element_Zoom_Embedded();this._zoomElement.start(this._settings['item_imgBox'],$(".active-view",this._settings['placeHolder']),{_orgSize:this._settings['mainSize'],_animationDuration:this._settings['zoomAnimLength'],_zoomTooltip:this._settings['zoomTooltip']?true:false,_zoomControl:$('.imagebox_zoom_control .zoom',this._settings['placeHolder'])})};GSI_Element_ImageBox.prototype.init=function(){this._zoomElement=null;this._videoElement=null;this._lastColor=null;this._settings=this._mergeSettings({allowAltViews:false,allowPickers:true,allowVideo:false,allowZoom:true,altViewsPlaceHolder:null,altViewImgSize:'thumb',colorPickersImages:null,colorPickersPlaceHolder:null,floating:false,mainSize:'large',item_imgBox:null,lastColor:null,placeHolder:null});this.loaded=true;return true};
var GSI_Element_Selector=function(){this._item;this._placeHolder;this._key;this._values;this._elements;this._elementsInput;this._sku;this._floating;this._outStockMessage;this._allowTooltip=false};GSI_Element_Selector.prototype.draw=function(){};GSI_Element_Selector.prototype.reset=function(){this._elements.each(function(){$(this).removeClass('disabled').removeClass('selected').addClass('available')});this._item.removeFilter(this._key);this._item.refreshAvailableProperties();this.refresh()};GSI_Element_Selector.prototype.refresh=function(){if(this.hasChanged())this.doRefresh()};GSI_Element_Selector.prototype._isInStock=function(value,checkAllOptions){try{if(!this._item.loaded)return true;if(!GSI_STOCK_ALL_OPTIONS)if(this._item.data['available']){return true}else return false;if((GSI.functions.count(this._item.filters)+1)==GSI.functions.count(this._item.availProperties)){var tArray=this._item.filter()}else if(GSI.functions.count(this._item.filters)==GSI.functions.count(this._item.availProperties)){var tArray=this._item.filter(this._key)}else tArray=new Array();var stockString='';if(checkAllOptions==undefined||checkAllOptions==false){for(var i in tArray){if(i=='indexOf')continue;if(tArray[i].PROPERTIES[this._key]==value){if(this._item.filters[this._key])if(tArray[i].STOCK.available==1)return true;if(tArray[i].STOCK.available==0)return false}};return true}else{var options=this._item.data.options;for(var i in options){if(i=='indexOf')continue;if(options[i].PROPERTIES[this._key]==value){var filters=GSI.functions.cloneObject(this._item.filters);if(this._key=='COLOR')this._item.filters=new Array();this._item.addFilter(this._key,value);var tempOptions=this._item.filter(),available=0;for(var j in tempOptions)if(tempOptions[j].STOCK.available)available++;this._item.filters=filters;if(available==0){return false}else return true}}}}catch(e){GSI.setError('The property '+this._key+' triggered an error on _isInStock()','ERROR');this._resetAvailableValues();return true}};GSI_Element_Selector.prototype._resetAvailableValues=function(){this._availableValues=this._item.getPropertyAvailability(this._key);this._currentValue=this._item.filter[this._key]};GSI_Element_Selector.prototype.hasChanged=function(){var _mthis=this;try{if(GSI_STOCK_ALL_OPTIONS){this._resetAvailableValues();return true};if(this._item.filters[this._key]!=this._currentValue){this._resetAvailableValues();return true};if(this._item.availProperties[this._key])if(this._item.availProperties[this._key].length!=this._availableValues.length){this._resetAvailableValues();return true};for(var aValue in this._item.availProperties[this._key])if(this._availableValues[aValue]!=this._item.availProperties[this._key][aValue]){this._resetAvailableValues();return true};this._resetAvailableValues();return false}catch(e){GSI.setError('The property '+this._key+' triggered an error on hasChanged()','ERROR');this._resetAvailableValues();return true}};GSI_Element_Selector.prototype.doRefresh=function(){};GSI_Element_Selector.prototype.change=function(DomObj){if($('.elements',this._placeHolder).hasClass('inactive'))return;if($(DomObj).hasClass('disabled')){return}else this._setFilter(this._key,unescape(DomObj.value))};GSI_Element_Selector.prototype.click=function(DOMObj){this._justClicked=true;if($('.elements',this._placeHolder).hasClass('inactive'))return false;if($(DOMObj).hasClass('disabled')){return false}else{this._setFilter(this._key,unescape(DOMObj.getAttribute('name')));return false};return false};GSI_Element_Selector.prototype.radioClick=function(DOMObj){this._justClicked=true;if($('.elements',this._placeHolder).hasClass('inactive'))return;if(DOMObj.disabled=='disabled'){return false}else{this._setFilter(this._key,unescape(DOMObj.value));return false};return false};GSI_Element_Selector.prototype.hoverOn=function(dom){if(this._allowTooltip)if($(dom).hasClass('disabled')){if(GSI.widgets.tooltip)GSI.widgets.tooltip.show(dom,null,GSI.dict.getText('item','not_available'),null,150,'t',dom._floating,15)}else if(($(dom).hasClass('GSI_Selector_OutOfStock'))&&(GSI_STOCK_TOOLTIP))if(GSI.widgets.tooltip)GSI.widgets.tooltip.show(dom,null,GSI.dict.getText('item','out_of_stock_tooltip'),null,230,'t',dom._floating,15)};GSI_Element_Selector.prototype.hoverOff=function(dom){if(GSI.widgets.tooltip)GSI.widgets.tooltip.hide()};GSI_Element_Selector.prototype.activate=function(){$('.elements',this._placeHolder).removeClass('inactive').addClass('active')};GSI_Element_Selector.prototype.deactivate=function(){$('.elements',this._placeHolder).removeClass('active').addClass('inactive')};GSI_Element_Selector.prototype._setFilter=function(k,v){var key=k;this._item.addFilter(key,v);this._item.refreshAvailableProperties()};GSI_Element_Selector.prototype.start=function(key,aItem,placeHolder,afloat){var _mthis=this;this._availableValues=[];this._placeHolder=$(placeHolder);if(this._placeHolder.length==0)return false;this._item=aItem;if(!(aItem instanceof GSI_Resource_Item))return false;this._sku=this._item.getData('id');this._key=key;this._floating=afloat;this._values=this._item.data['PROPERTIES'][key]?this._item.data['PROPERTIES'][key]:this._item.predata[key];this.draw();$(this._item).bind('refresh',function(){_mthis.refresh()});if(GSI_STOCK_ALL_OPTIONS)$(this._item).bind('endStock',function(){_mthis.refresh()});this._doStart()};GSI_Element_Selector.prototype._getHtml=function(pickerValues){};GSI_Element_Selector.prototype._doStart=function(){};
function GSI_Element_Selector_Picker(){};GSI_Element_Selector_Picker.prototype=new GSI_Element_Selector();GSI_Element_Selector_Picker.prototype.draw=function(){var _mthis=this,pickerValues=_mthis._values;if(!pickerValues)return false;var html=this._getHtml(pickerValues),domObj=$(html);$('.picker',domObj).click(function(){_mthis.hoverOff(this);_mthis.click(this);return false});$('.picker',domObj).hover(function(){_mthis.hoverOn(this)},function(){_mthis.hoverOff(this)});$(_mthis._placeHolder).empty().append(domObj);if(pickerValues=='NONE')$(_mthis._placeHolder).addClass('GSI_none_option');_mthis._elements=$('.picker',_mthis._placeHolder)};GSI_Element_Selector_Picker.prototype._getHtml=function(pickerValues){var html='<div class="elements item-dynamic-element '+this._key+'"><label class="elements-text">'+GSI.dict.getText('property_selector',this._key+'_selector')+'</label>',picker_selector_text='<span class="element-selector-text" style="display:none">'+GSI.dict.getText('item',this._key+'_selector_text')+'</span>';for(var aValue in pickerValues){if(aValue=='indexOf')continue;var v=pickerValues[aValue],stockString='',classString='',iconString='';if(GSI_STOCK_ALL_OPTIONS)if(!this._isInStock(v)){var classString='GSI_Selector_OutOfStock',outStockMessage='';if(this._outStockMessage)outStockMessage=GSI.dict.getText('item','optionOutOfStock')};html+='<div class="picker" name = "'+escape(v)+'"><a class="option-2 '+classString+'" href="#" name = "'+escape(v)+'">'+picker_selector_text+v+'<span class="no_stock_icon">'+outStockMessage+'</span></a></div>'};html+="</div>";return html};GSI_Element_Selector_Picker.prototype.doRefresh=function(){var _mthis=this,availProps=_mthis._availableValues,_FLAG=(GSI.functions.count(_mthis._item.availProperties[_mthis._key])==1)?true:false;_mthis._elements.each(function(){$(this).removeClass('selected').addClass('unselected');if(GSI.functions.count(_mthis._values)==1)_mthis._item.filters[_mthis._key]=unescape(this.getAttribute('name'));if(_mthis._item.filters[_mthis._key]==unescape(this.getAttribute('name'))){$(".GSI_Selector_Current",_mthis._placeHolder).html(GSI.dict.getText('property_selector',_mthis._key+'_'+unescape(this.getAttribute('name'))));$(this).addClass('selected').removeClass('unselected')};if($(this).hasClass('selected')){var available=false;for(var aProp in availProps)if(unescape(this.getAttribute('name'))==availProps[aProp])available=true;if(!available){_mthis._item.removeFilter(_mthis._key);$(this).removeClass('selected').addClass('unselected');_mthis._item.refreshAvailableProperties()}};$(this).addClass('disabled').removeClass('GSI_Selector_OutOfStock').find('.no_stock_icon').remove();if(GSI_STOCK_ALL_OPTIONS){var outStockMessage="";if(_mthis._outStockMessage)outStockMessage=GSI.dict.getText('item','optionOutOfStock');if(!_mthis._isInStock(unescape(this.getAttribute('name')),true)){var notifymeW=GSI.widgets.getWidget('notifyme');if(notifymeW){if(!notifymeW.isEnabledItemOption()){if(!$(this).hasClass("GSI_Selector_OutOfStock"))$(this).addClass('GSI_Selector_OutOfStock').append("<span class=\"no_stock_icon\">"+outStockMessage+"</span>")}else $(this).removeClass('GSI_Selector_OutOfStock').find('.no_stock_icon').remove()}else if(!$(this).hasClass("GSI_Selector_OutOfStock")){$(this).addClass('GSI_Selector_OutOfStock').append("<span class=\"no_stock_icon\">"+outStockMessage+"</span>")}else $(this).removeClass('GSI_Selector_OutOfStock').find('.no_stock_icon').remove()}};for(var aProp in availProps)if(unescape(this.getAttribute('name'))==availProps[aProp]){$(this).removeClass('disabled');break}})};GSI_Element_Selector_Picker.prototype._doStart=function(){this.refresh()};
function GSI_Element_Selector_ColourPicker(){};GSI_Element_Selector_ColourPicker.prototype=new GSI_Element_Selector();GSI_Element_Selector_ColourPicker.prototype.draw=function(){var _mthis=this,colors=_mthis._values;if(!colors)return false;var previousColor=_mthis._item.filters['COLOR']?_mthis._item.filters['COLOR']:null,html=this._getHtml(),domObj=$(html);if(previousColor){_mthis._item.addFilter('COLOR',previousColor)}else _mthis._item.removeFilter('COLOR');$('.picker',domObj).click(function(){_mthis.hoverOff(this);_mthis.click(this);return false});$('.picker',domObj).hover(function(){_mthis.hoverOn(this)},function(){_mthis.hoverOff(this)});$(_mthis._placeHolder).empty().append(domObj);_mthis._elements=$('.picker',_mthis._placeHolder)};GSI_Element_Selector_ColourPicker.prototype._getHtml=function(){var cnt=GSI.functions.count(this._values),html='<div class="elements color-element count-'+cnt+' imagebox-dynamic-element"><label>'+GSI.dict.getText('property_selector','COLOR')+'</label>';for(var aColor in this._values){this._item.addFilter('COLOR',this._values[aColor]);try{var aSwatchImg=this._item.getImage('swatch');html+='<div class="picker" name="'+this._values[aColor]+'"><a class="option-1" href="#" name="'+this._values[aColor]+'"><img src="'+aSwatchImg+'" alt="'+GSI.dict.getText('colors',this._values[aColor])+'" title="'+GSI.dict.getText('colors',this._values[aColor])+'" /></a></div>'}catch(e){GSI.setError('this color I do not like it!!! -> '+colors[aColor],'WARNING')}};html+='</div><span class="element-selected-colour GSI_Selector_Current" style="display:none"></span>';return html};GSI_Element_Selector_ColourPicker.prototype.doRefresh=function(){var _mthis=this;GSI.setError('executing ItemBox::doRefresh','INFO');var availProps=_mthis._availableValues,_FLAG=(GSI.functions.count(_mthis._item.availProperties[_mthis._key])==1)?true:false;try{_mthis._elements.each(function(){$(this).removeClass('selected').addClass('unselected');if(_mthis._item.filters[_mthis._key]==unescape(this.getAttribute('name'))){$(this).addClass('selected').removeClass('unselected');$(".GSI_Selector_Current",_mthis._placeHolder).html(GSI.dict.getText('colors',unescape(this.getAttribute('name'))))};$(this).removeClass('GSI_Selector_OutOfStock').find('.no_stock_icon').remove();if(GSI_STOCK_ALL_OPTIONS)if(!_mthis._isInStock(unescape(this.getAttribute('name')),true)){var notifymeW=GSI.widgets.getWidget('notifyme');if(notifymeW){if(!notifymeW.isEnabledItemOption()){if(!$(this).hasClass("GSI_Selector_OutOfStock"))$(this).addClass('GSI_Selector_OutOfStock').append("<span class=\"no_stock_icon\"></span>")}else $(this).removeClass('GSI_Selector_OutOfStock').find('.no_stock_icon').remove()}else if(!$(this).hasClass("GSI_Selector_OutOfStock")){$(this).addClass('GSI_Selector_OutOfStock').append("<span class=\"no_stock_icon\"></span>")}else $(this).removeClass('GSI_Selector_OutOfStock').find('.no_stock_icon').remove()};for(var aProp in availProps)if(unescape(this.getAttribute('name'))==availProps[aProp]){$(this).removeClass('disabled');break}});this._refreshGUI()}catch(e){GSI.setError('The property '+this._key+' triggered an error on doRefresh()','ERROR')}};GSI_Element_Selector_ColourPicker.prototype._doStart=function(){this.refresh()};GSI_Element_Selector_ColourPicker.prototype._refreshGUI=function(){if(!GSI_STOCK_ALL_OPTIONS)return;if(this._item.filters[this._key]!=undefined&&!this._isInStock(this._item.filters[this._key],true)){this._hideGUI()}else this._showGUI()};GSI_Element_Selector_ColourPicker.prototype._showGUI=function(){};GSI_Element_Selector_ColourPicker.prototype._hideGUI=function(){};
function GSI_Element_Zoom(){this._orgSize='large'};GSI_Element_Zoom.prototype=new GSI_Element();GSI_Element_Zoom.prototype._item=null;GSI_Element_Zoom.prototype._placeHolder=null;GSI_Element_Zoom.prototype._orgSize=null;GSI_Element_Zoom.prototype._on=false;GSI_Element_Zoom.prototype.active=true;GSI_Element_Zoom.prototype.start=function(item,placeholder){};GSI_Element_Zoom.prototype.toggle=function(){};GSI_Element_Zoom.prototype.refresh=function(){};GSI_Element_Zoom.prototype.activate=function(on){};GSI_Element_Zoom.prototype.isOn=function(){return _mthis._on};
function GSI_Element_Zoom_Embedded(){this._imageObjOriginal=null;this._imageObjZoom=null;this._loaderObj=null;this._viewPort=null;this._on=false;this._loading=false;this._item=null;this._placeHolder;this._dim={};this._animationDuration=400;this._orgSize='large';this._zoomControl=null;this._zoomTooltip=false;this.active=true;this._originalSizes={width:null,height:null};this._settings=this._mergeSettings({viewportWidth:null,viewportHeight:null});this._previousImages={org:'',zoom:''};this._clickFunction=null};GSI_Element_Zoom_Embedded.prototype=new GSI_Element_Zoom();GSI_Element_Zoom_Embedded.prototype.start=function(item,placeholder,settings){var _mthis=this;this._item=item;this._placeHolder=$(placeholder);for(var aSetting in settings)_mthis[aSetting]=settings[aSetting];var zoomSrc=this._item.getImage('zoom'),zoomPath=!zoomSrc?this._item.getImage(this._orgSize):zoomSrc;this._imageObjOriginal=$($('img',this._placeHolder).get(0));this._imageObjZoom=$('<img class="zoom-image" src="'+zoomPath+'" />');var imgZoomCss={display:'none',left:'0px',top:'0px',position:'relative',cursor:'crosshair'};this._imageObjZoom.css(imgZoomCss);var viewportCss={position:"relative",overflow:"hidden"};this._viewPort=$('<div class="zoom_viewport">');this._viewPort.css(viewportCss);this._viewPort.html(this._imageObjOriginal);this._placeHolder.html(this._viewPort);this._dim.x=0;this._dim.y=0;this._dim.cursor='crosshair';this._dim.panCursor='move';var orgSrc=this._item.getImage(this._orgSize);this.active=false;this._assignBehavior();this._loaderObj=new GSI_Element_Loader();this._loaderObj.start(this._viewPort,{imageSize:'large'});if(this._zoomTooltip)this._zoomControl.hover(function(){if(GSI.widgets['tooltip'])GSI.widgets.tooltip.show(this,null,GSI.dict.getText('item','zoom'),null,150,'t',null,15)},function(){if(GSI.widgets['tooltip'])GSI.widgets.tooltip.hide()});this._preloadImages(orgSrc,zoomSrc)};GSI_Element_Zoom_Embedded.prototype.destroy=function(){this._zoomControl.unbind('click',this._clickFunction)};GSI_Element_Zoom_Embedded.prototype._assignBehavior=function(){var _mthis=this,aClickFunc=function(){_mthis.toggle();return false};this._clickFunction=aClickFunc;if(this._zoomControl)this._zoomControl.bind('click',aClickFunc);this._imageObjOriginal.dblclick(function(e){_mthis.toggle(e);return false})};GSI_Element_Zoom_Embedded.prototype._assignZoomBehavior=function(){var _mthis=this;_mthis._imageObjZoom.mousedown(function(e){_mthis._handleMouseDown(e)}).dblclick(function(e){_mthis.toggle(e);return false}).inserted=true};GSI_Element_Zoom_Embedded.prototype.isOn=function(){return this._on};GSI_Element_Zoom_Embedded.prototype.isLoading=function(){return this._loading};GSI_Element_Zoom_Embedded.prototype.toggle=function(e,callback){if(!this.active||this.isLoading())return false;if(this._on){this.activate(false,null,callback);this._zoomControl.trigger('e_zoom_off')}else{this.activate(true,e,callback);this._zoomControl.trigger('e_zoom_on')};return true};GSI_Element_Zoom_Embedded.prototype.activate=function(on,e,callback){var _mthis=this;if(typeof callback!="function")callback=function(){};if(!on){if(!this._on)return true;this._imageObjZoom.stop(true,false).animate({width:this._originalSizes.width+'px',height:this._originalSizes.height+'px',left:'0px',top:'0px'},this._animationDuration,function(){_mthis._imageObjOriginal.show();_mthis._imageObjZoom.css("cursor",'default').hide();callback()});this._zoomControlStatus(false);this._on=false}else{if(e){var offsets=_mthis._imageObjOriginal.offset(),clickX=e.pageX-offsets.left,clickY=e.pageY-offsets.top,ratioX=((clickX/this._originalSizes.width)*this._dim.width),ratioY=((clickY/this._originalSizes.height)*this._dim.height),halfViewportX=(this._dim.viewportWidth/2),halfViewportY=(this._dim.viewportHeight/2);this._dim.x=-(ratioX-halfViewportX);this._dim.y=-(ratioY-halfViewportY);var diferentialX=((this._dim.viewportWidth-this._originalSizes.width)/2),diferentialY=((this._dim.viewportHeight-this._originalSizes.height)/2);if(this._dim.x>0)this._dim.x=0;if(this._dim.x<-(this._dim.width-this._dim.viewportWidth))this._dim.x=-(this._dim.width-this._dim.viewportWidth);if(this._dim.y>0)this._dim.y=0;if(this._dim.y<-(this._dim.height-this._dim.viewportHeight))this._dim.y=-(this._dim.height-this._dim.viewportHeight);this._dim.x-=diferentialX;this._dim.y-=diferentialY}else{this._dim.x=-(this._dim.width-this._dim.viewportWidth)/2;this._dim.y=-(this._dim.height-this._dim.viewportHeight)/2};this._imageObjOriginal.hide();this._imageObjZoom.show().stop(true,false).animate({width:this._dim.width+'px',height:this._dim.height+'px',left:this._dim.x+'px',top:this._dim.y+'px'},this._animationDuration,function(){callback()});this._imageObjZoom.css("cursor",this._dim.cursor);this._zoomControlStatus(true);this._on=true};return true};GSI_Element_Zoom_Embedded.prototype._zoomControlStatus=function(status){if(status){this._zoomControl.addClass('zoom-selected')}else this._zoomControl.removeClass('zoom-selected')};GSI_Element_Zoom_Embedded.prototype.refresh=function(){this._preloadImages(this._item.getImage(this._orgSize),this._item.getImage('zoom'))};GSI_Element_Zoom_Embedded.prototype._loader=function(on){var _mthis=this;if(on){if(this._dim['viewportWidth']){this._loaderObj.on();this._loading=true}}else{this._loaderObj.off();this._loading=false}};GSI_Element_Zoom_Embedded.prototype._setup=function(){var _mthis=this;if(this.active){this._loader(false);return};var viewportCss={width:this._settings['viewportWidth'],height:this._settings['viewportHeight']};this._viewPort.css(viewportCss);var imgZoomCss={width:this._originalSizes.width+'px',height:this._originalSizes.height+'px'};this._imageObjZoom.css(imgZoomCss);this._imageObjZoom.css("cursor",'default');this._loader(false);this.active=true};GSI_Element_Zoom_Embedded.prototype._preloadImages=function(orgSrc,zoomSrc){try{var _mthis=this;if(this._previousImages['org']==orgSrc&&this._previousImages['zoom']==zoomSrc){GSI.setError('The images are still the same: '+orgSrc,'INFO');return};GSI.setError('Reloading Images: '+orgSrc,'INFO');this._previousImages['org']=orgSrc;this._previousImages['zoom']=zoomSrc;var token=parseInt(Math.random()*Math.random()*1000000),imgOrg=new Image(),imgZoom=new Image();imgOrg.token=token;imgZoom.token=token;this._dim['width']=0;this._dim['height']=0;this._zoomControl.addClass('disabled');$(imgZoom).load(function(){if(this.token!=token)return;_mthis._dim.width=this.width;_mthis._dim.height=this.height;_mthis._dim.minX=-_mthis._dim.width+_mthis._dim.viewportWidth;_mthis._dim.minY=-_mthis._dim.height+_mthis._dim.viewportHeight;_mthis._imageObjZoom.attr('src',zoomSrc);_mthis._setup();_mthis._zoomControl.removeClass('disabled')}).error(function(){_mthis.activate(false);_mthis.active=false;_mthis._zoomControl.addClass('disabled');_mthis._imageObjZoom.remove().inserted=false});$(imgOrg).load(function(){if(this.token!=token)return;_mthis._originalSizes.width=this.width;_mthis._originalSizes.height=this.height;if(!(_mthis._settings['viewportWidth']))_mthis._settings['viewportWidth']=_mthis._originalSizes.width;if(!(_mthis._settings['viewportHeight']))_mthis._settings['viewportHeight']=_mthis._originalSizes.height;_mthis._dim.viewportWidth=_mthis._settings['viewportWidth'];_mthis._dim.viewportHeight=_mthis._settings['viewportHeight'];_mthis._imageObjOriginal.attr('src',orgSrc);if(!zoomSrc){_mthis.activate(false);_mthis._setup();_mthis.active=false;_mthis._imageObjZoom.remove().inserted=false}else{if(!_mthis._imageObjZoom.inserted){_mthis._viewPort.prepend(_mthis._imageObjZoom);_mthis._assignZoomBehavior()};imgZoom.src=zoomSrc}}).error(function(){_mthis._imageObjOriginal.attr('src',orgSrc);_mthis._setup();_mthis.active=false});_mthis._loader(true);imgOrg.src=orgSrc}catch(e){GSI.setError('ERROR while _preloadImages at embedded zoom','ERROR')}};GSI_Element_Zoom_Embedded.prototype._pan=function(e){var _mthis=this;if(!this._panOn)return;e.preventDefault();var deltaX=this._dim.origoX-e.clientX,deltaY=this._dim.origoY-e.clientY;this._dim.origoX=e.clientX;this._dim.origoY=e.clientY;var targetX=this._dim.x-deltaX,targetY=this._dim.y-deltaY;this._dim.x=targetX;this._dim.y=targetY;if(this._dim.x>0){this._dim.x=0}else if(this._dim.x<this._dim.minX)this._dim.x=this._dim.minX;if(this._dim.y>0){this._dim.y=0}else if(this._dim.y<this._dim.minY)this._dim.y=this._dim.minY;this._imageObjZoom.css({left:this._dim.x+"px",top:this._dim.y+"px"})};GSI_Element_Zoom_Embedded.prototype._handleMouseDown=function(mousedownEvent){var _mthis=this;if(!this._on)return;mousedownEvent.preventDefault();this._dim.origoX=mousedownEvent.clientX;this._dim.origoY=mousedownEvent.clientY;$(mousedownEvent.target).css("cursor",_mthis._dim.panCursor);$("body").css("cursor",this._dim.panCursor);$(document).mousemove(function(e){_mthis._panOn=true;_mthis._pan(e)});$(document).mouseup(function(){$("body").css("cursor","default");_mthis._imageObjZoom.css("cursor",_mthis._dim.cursor);$(this).unbind("mousemove").unbind("mouseup");_mthis._panOn=false});return false};
function GSI_ICC_Element_Selector_Picker(){};GSI_ICC_Element_Selector_Picker.prototype=new GSI_Element_Selector_Picker();GSI_ICC_Element_Selector_Picker.prototype._getHtml=function(pickerValues){var html='<td class="elements" class="item-dynamic-element">'+GSI.dict.getText('item',this._key)+'</td><td class="item-element-size">';for(var aValue in pickerValues){if(aValue=='indexOf')continue;var v=pickerValues[aValue];html+='<a class="option-2 picker" href="#" name = "'+escape(v)+'">'+v+'</a>'};html+="</td>";return html};
function GSI_ICC_Element_Selector_ColourPicker(){};GSI_ICC_Element_Selector_ColourPicker.prototype=new GSI_Element_Selector_ColourPicker();GSI_ICC_Element_Selector_ColourPicker.prototype._getHtml=function(){var colors=this._values,html='<td class="elements" class="imagebox-dynamic-element">'+GSI.dict.getText('item','COLOUR')+'</td><td>';for(var aColor in colors){this._item.addFilter('COLOR',colors[aColor]);try{var aSwatchImg=this._item.getImage('swatch');html+='<a class="option-1 picker" href="#" name="'+colors[aColor]+'"><img src="'+aSwatchImg+'" alt="'+GSI.dict.getText('colors',colors[aColor])+'" title="'+GSI.dict.getText('colors',colors[aColor])+'" /></a>'}catch(e){}};html+='<span class="element-selected-colour GSI_Selector_Current" style="display:none"></span></td>';return html};
function GSI_ICC_MATINIQUE_Element_ImageBox(){};GSI_ICC_MATINIQUE_Element_ImageBox.prototype=new GSI_Element_ImageBox();GSI_ICC_MATINIQUE_Element_ImageBox.prototype._createVideo=function(){return new GSI_ICC_MATINIQUE_Element_Video_Flash()};GSI_ICC_MATINIQUE_Element_ImageBox.prototype._initColourPicker=function(){var _mthis=this,aPickerObj=new GSI_ICC_Element_Selector_ColourPicker(),placeHolder=$('<tr class="item-option"></tr>');aPickerObj.start('COLOR',this._settings['item_imgBox'],placeHolder,this._settings['floating']);$(this._settings['colorPickersPlaceHolder']).append(placeHolder);return};
function GSI_ICC_Element_ItemBox(){};GSI_ICC_Element_ItemBox.prototype={_imageLoaderObj:null,_sizeChartWidth:470,_sizeChartHeight:660,_addCartTooltip:null,_createPicker:function(){return new GSI_ICC_Element_Selector_Picker()},_createImageBox:function(){return new GSI_ICC_Element_ImageBox()},_initQty:function(){var _mthis=this,numbersOnly=function(e){var unicode=e.charCode?e.charCode:e.keyCode;if(unicode!=8){if(unicode<48||unicode>57){return false}else return true}else return true};if(!this._settings['qtyInput'])this._getHtml();this._settings['qtyInput'].change(function(){_mthis._item.quantity=$(this).val();_mthis.checkQty()}).keypress(function(e,keyCode){keyCode=e.charCode?e.charCode:e.keyCode;if(numbersOnly(e)){var aQty=$(this).val();if(aQty==''&&keyCode==48){return false}else return true}else return false}).keyup(function(e,keyCode){var aQty=$(this).val();_mthis._item.quantity=aQty;_mthis.checkQty()}).blur(function(e,keyCode){$(this).val()?"":$(this).val("1");_mthis.checkQty()});this._item.quantity=1},_initSelect:function(k,values){var aPickerObj=this._createPicker(),placeHolder=$('<tr class="item-option GSI_item_options"></tr>');aPickerObj.start(k,this._item,placeHolder,true);this._settings['itemDyn'].append(placeHolder)},_addButtonHoverOn:function(){var _mthis=this,getMissingKey=function(){for(var akey in _mthis._item.availProperties){if(akey=='indexOf')continue;for(var afilter in _mthis._item.filters){if(afilter=='indexOf')continue;var isFound=false;if(akey==afilter){isFound=true;break}};if(!isFound)return akey};if(GSI.functions.isset(_mthis._item.data.available))if(!_mthis._item.inStock())return false;if(!_mthis._settings['qtyInput'].val()||parseInt(_mthis._settings['qtyInput'].val())<=0||parseInt(_mthis._settings['qtyInput'].val())>parseInt(_mthis._item.data['iol_stock_qty'])){return'quantity'}else return false};if(!this._addCartTooltip){var factory=GSI.factories.getFactory('element');this._addCartTooltip=factory.createTooltip('ItemBox');this._addCartTooltip.start(this._settings['addToCartButtton'],"",{activateOnHover:false,floating:this._settings['floating'],arrowHeight:this._settings['arrowHeight'],position:'t'})};missingKey=getMissingKey();if(missingKey){if((missingKey=="quantity")&&(_mthis._settings['addToCartButtton'].hasClass('disabled'))){this._addCartTooltip.resetContent(GSI.dict.getText('item','notEnoughStock'));this._addCartTooltip.show()}else{this._addCartTooltip.resetContent(GSI.dict.getText('item','select_property')+' '+GSI.dict.getText('item','selector_'+missingKey)+'.');this._addCartTooltip.show()}}else if($(this).hasClass('disabled'))return false;if(navigator.platform.indexOf("iPad")!=-1)setTimeout(function(){_mthis._addButtonHoverOff()},1000)},_addButtonHoverOff:function(){var _mthis=this;this._addCartTooltip.hide()},_getHtml:function(){var qtyStr='<tr class="item-option GSI_item_options" id="item-option-qtyLine"><td class="elements">'+GSI.dict.getText('item','qty')+'</td><td><input class="item-quantity" type="text" value="1" maxlength="2" /><div class="stock-check" style="position:relative"></div></td></tr>';this._settings['itemDyn'].append(qtyStr);if(!this._settings['checkStockPlaceholder'])this._settings['checkStockPlaceholder']=$('.stock-check',this._placeHolder);this._settings['qtyInput']=$('.item-quantity',this._placeHolder);return qtyStr},_initAddButton:function(){var _mthis=this,onAddToCartClick=function(){if($(this).hasClass('disabled'))return false;var that=this;$(this).addClass('disabled');_mthis._stockLoader.on();var endAddToBasket=function(){$(that).removeClass('disabled');_mthis._stockLoader.off();$.nyroModalRemove();if(_mthis._item.getData('services')&&_mthis._item.getData('paringKey')){var tWidget=GSI.widgets.getWidget('vasbox');if(tWidget)tWidget.resetVAS(_mthis._item,$('.GSI_ItemBox_Service',this._placeHolder))};_mthis.destroy();if(typeof (_mthis._settings['endAddToBasket'])==Function)_mthis._settings['endAddToBasket']};if(_mthis._item.getData('services')&&_mthis._item.getData('paringKey')&&_mthis._item.quantity>1){var tWidget=GSI.widgets.getWidget('vasbox');if(tWidget)tWidget.showWarning(_mthis._item,function(){_mthis.addToBasket(endAddToBasket)})}else _mthis.addToBasket(endAddToBasket);return false};this._onAddToCartClick=onAddToCartClick;_mthis._settings['addToCartButtton'].click(onAddToCartClick);_mthis._settings['addToCartButtton'].bind('touchstart',onAddToCartClick);_mthis._settings['addToCartButtton'].hover(function(){_mthis._addButtonHoverOn()},function(){_mthis._addButtonHoverOff()})}};var tE=GSI_ICC_Element_ItemBox.prototype;GSI_ICC_Element_ItemBox.prototype=new GSI_Element_ItemBox();$.extend(true,GSI_ICC_Element_ItemBox.prototype,tE);
function GSI_ICC_MATINIQUE_Element_ItemBox(){};GSI_ICC_MATINIQUE_Element_ItemBox.prototype=new GSI_ICC_Element_ItemBox();GSI_ICC_MATINIQUE_Element_ItemBox.prototype._sizeChartWidth=837;GSI_ICC_MATINIQUE_Element_ItemBox.prototype._sizeChartHeight=540;GSI_ICC_MATINIQUE_Element_ItemBox.prototype._createImageBox=function(){this._settings['itemDyn'].fadeIn(350);return new GSI_ICC_MATINIQUE_Element_ImageBox()};GSI_ICC_MATINIQUE_Element_ItemBox.prototype._initSelect=function(k,values){var _mthis=this,aPickerObj=_mthis._createPicker(),placeHolder=$('<tr class="item-option"></tr>');aPickerObj.start(k,this._item,placeHolder,true);if(k=='SIZE'){var sizingChartLink=$("<span class='sizing-chart'><a href='/popup?page=sizing_chart&NYRO_WIDTH=837&NYRO_HEIGHT=540' target='_blank' >"+GSI.dict.getText('item','sizing_chart')+"</a></span>"),tab='centimeters';$('a',sizingChartLink).click(function(){$.nyroModalManual({url:"/popup?page=sizing_chart&NYRO_WIDTH="+_mthis._sizeChartWidth+"&NYRO_HEIGHT="+_mthis._sizeChartHeight,width:_mthis._sizeChartWidth,height:_mthis._sizeChartHeight,minWidth:_mthis._sizeChartWidth,minHeight:_mthis._sizeChartHeight,endShowContent:function(){var sizingChartTab=new GSI_ICC_Element_Container_Menu_Tab_SizeChartMenu();sizingChartTab.start('#tabs_sizechart_wrp',{activeTab:tab})}});return false});$('td:last-child',placeHolder).append(sizingChartLink)};this._settings['itemDyn'].append(placeHolder)};GSI_ICC_MATINIQUE_Element_ItemBox.prototype._initAddButton=function(){var _mthis=this,onAddToCartClick=function(){if($(this).hasClass('disabled'))return false;var that=this;$(this).addClass('disabled');_mthis._stockLoader.on();var endAddToBasket=function(){$(that).removeClass('disabled');_mthis._stockLoader.off();$.nyroModalRemove();if(_mthis._item.getData('services')&&_mthis._item.getData('paringKey')){var tWidget=GSI.widgets.getWidget('vasbox');if(tWidget)tWidget.resetVAS(_mthis._item,$('.GSI_ItemBox_Service',this._placeHolder))};_mthis.destroy();if(typeof (_mthis._settings['endAddToBasket'])==Function)_mthis._settings['endAddToBasket']};if(_mthis._item.getData('services')&&_mthis._item.getData('paringKey')&&_mthis._item.quantity>1){var tWidget=GSI.widgets.getWidget('vasbox');if(tWidget)tWidget.showWarning(_mthis._item,function(){_mthis.addToBasket(endAddToBasket)})}else _mthis.addToBasket(endAddToBasket);return false};this._onAddToCartClick=onAddToCartClick;_mthis._settings['addToCartButtton'].click(onAddToCartClick);_mthis._settings['addToCartButtton'].bind('touchstart',onAddToCartClick);_mthis._settings['addToCartButtton'].hover(function(){_mthis._addButtonHoverOn()},function(){_mthis._addButtonHoverOff()})};var tE=GSI_ICC_MATINIQUE_Element_ItemBox.prototype;GSI_ICC_MATINIQUE_Element_ItemBox.prototype=new GSI_ICC_Element_ItemBox();$.extend(true,GSI_ICC_MATINIQUE_Element_ItemBox.prototype,tE);
function GSI_Element_Tooltip(){this._placeHolder;this._settings=this._mergeSettings({activateOnHover:true,forceHeight:false,position:'t',floating:false,width:250,height:100,arrowWidth:null,arrowHeight:null,sufix:null});this._tooltipObj=null;this._content=null};GSI_Element_Tooltip.prototype={start:function(aPlaceHolder,content,xtraSettings){var _mthis=this;this._placeHolder=$(aPlaceHolder);if(this._placeHolder.length!=1){GSI.setError('ERROR, a Tooltip got badly initiated Placeholder length not one','ERROR');return};this._settings=GSI.functions.array_merge(this._settings,xtraSettings);if(!this._settings['title'])this._settings['title']="&nbsp;";this._settings['position']=this._settings['position'].toLowerCase();this._content=content;this._create(this._content);if(this._settings['activateOnHover'])this._placeHolder.hover(function(){_mthis.show()},function(){_mthis.hide()})},show:function(){this._tooltipObj.appendTo('body').css(this._calculatePos()).show()},hide:function(){if(this._tooltipObj){this._tooltipObj.remove()}else GSI.setError('Calling Hide on non existent _tooltipObj variable','WARNING')},resetContent:function(content){this._content=content;$('.GSI_Tooltip_Copy',this._tooltipObj).html('<span>'+this._content+'</span>')},resetPlaceHolder:function(content,placeHolder){this._content=content;this._placeHolder=$(placeHolder);$('.GSI_Tooltip_Copy',this._tooltipObj).html('<span>'+this._content+'</span>')},_create:function(content){var _sufixClass="";if(this._settings['sufix'])_sufixClass=" GSI_Tooltip_specificFor_"+this._settings['sufix'];this._tooltipObj=$("<div class='GSI_Tooltip_Container"+_sufixClass+"'><div class='GSI_Tooltip_Arrow'><span></span></div><div class='GSI_Tooltip_Title'><span>"+this._settings['title']+"</span></div><div class='GSI_Tooltip_Copy'><span>"+content+"</span></div></div>");this._tooltipObj.appendTo('body');this._tooltipObj.css({width:this._settings['width']+'px',height:this._settings['height']+'px'});this._tooltipObj.css(this._calculatePos());this._tooltipObj.hide().remove()},_calculatePos:function(){var DOM=this._placeHolder.get(0),pos=this._settings['position'],de=document.documentElement,winWidth=self.innerWidth||(de&&de.clientWidth)||document.body.clientWidth,winHeight=self.innerHeight||(de&&de.clientHeight)||document.body.clientHeight,hasArea=winWidth-this._getAbsoluteLeft(DOM),ttWidth=this._tooltipObj.width(),objWidth=this._getElementWidth(DOM),posTop=null,posBot=null,posLeft=null,arrowOffset=null,css=new Array();if(pos=="l"&&hasArea>(parseInt(this._settings['width'])+this._placeHolder.width()+30)){$('.GSI_Tooltip_Arrow',this._tooltipObj).addClass('GSI_Tooltip_Arrow_Left').removeClass('GSI_Tooltip_Arrow_Right');arrowOffset=this._getElementWidth(DOM)+this._settings['arrowWidth'];posLeft=this._getAbsoluteLeft(DOM)+arrowOffset;css.left=posLeft+"px";css.top=this._getAbsoluteTop(DOM)+"px"}else if(pos=="r"||pos=="l"){$('.GSI_Tooltip_Arrow',this._tooltipObj).addClass('GSI_Tooltip_Arrow_Right').removeClass('GSI_Tooltip_Arrow_Left');posLeft=this._getAbsoluteLeft(DOM)-this._settings['width']-this._settings['arrowWidth'];css.left=posLeft+"px";css.top=this._getAbsoluteTop(DOM)+"px"}else if(pos=="t"){$('.GSI_Tooltip_Arrow',this._tooltipObj).addClass('GSI_Tooltip_Arrow_Top').removeClass('GSI_Tooltip_Arrow_Bottom');posBot=winHeight-this._getAbsoluteTop(DOM)+this._settings['arrowHeight'];posLeft=this._getAbsoluteLeft(DOM);if(ttWidth>objWidth){var offSet=(ttWidth-objWidth)/2;posLeft-=offSet}else{var offSet=(objWidth-ttWidth)/2;posLeft+=offSet};css.left=posLeft+"px";css.bottom=posBot+"px"}else{$('.GSI_Tooltip_Arrow',this._tooltipObj).addClass('GSI_Tooltip_Arrow_Bottom').removeClass('GSI_Tooltip_Arrow_Top');posTop=this._getAbsoluteTop(DOM)+this._getElementHeight(DOM)+this._settings['arrowHeight'];posLeft=this._getAbsoluteLeft(DOM);if(ttWidth>objWidth){var offSet=(ttWidth-objWidth)/2;posLeft-=offSet}else{var offSet=(objWidth-ttWidth)/2;posLeft+=offSet};css.left=posLeft+"px";css.top=posTop+"px"};if(this._settings['floating']){css.position='fixed'}else css.position='absolute';return css},_getElementWidth:function(DOMobject){return DOMobject.offsetWidth},_getElementHeight:function(DOMobject){return DOMobject.offsetHeight},_getAbsoluteLeft:function(DOMobject){o=DOMobject;var oLeft=o.offsetLeft;while(o.offsetParent!=null){oParent=o.offsetParent;oLeft+=oParent.offsetLeft;o=oParent};return oLeft},_getAbsoluteTop:function(DOMobject){o=DOMobject;oTop=o.offsetTop;while(o.offsetParent!=null){oParent=o.offsetParent;oTop+=oParent.offsetTop;o=oParent};return oTop}};var tE=GSI_Element_Tooltip.prototype;GSI_Element_Tooltip.prototype=new GSI_Element();$.extend(GSI_Element_Tooltip.prototype,tE);
function GSI_ICC_MATINIQUE_Element_Tooltip_ItemBox(){this._settings=this._mergeSettings({position:'t',width:150,height:50,arrowWidth:14,arrowHeight:12})};GSI_ICC_MATINIQUE_Element_Tooltip_ItemBox.prototype=new GSI_Element_Tooltip();
function GSI_Widget_NotifyMe(){};GSI_Widget_NotifyMe.prototype=new GSI_Widget();GSI_Widget_NotifyMe.prototype.name='notifyme';GSI_Widget_NotifyMe.prototype.loadOrder=1;GSI_Widget_NotifyMe.prototype.height=250;GSI_Widget_NotifyMe.prototype.width=350;GSI_Widget_NotifyMe.prototype._load=function(){var res=true;try{if(typeof GSI=="undefined")res=false;if($('#notifyme').length!=1){GSI.setError('Widget: '+this.name+' -> Template #notifyme missing!','WARNING');res=false};if(!GSI.functions.isset($.nyroModalManual)){GSI.setError('Widget: '+this.name+' -> jQuery plugin: nyroModal missing','WARNING');res=false}}catch(e){return false};return res};GSI_Widget_NotifyMe.prototype.loader=function(on){if(on){$('.GSI_NotifyMe_Content').hide();$('.GSI_NotifyMe_Loader').show()}else{$('.GSI_NotifyMe_Loader').hide();$('.GSI_NotifyMe_Content').show()}};GSI_Widget_NotifyMe.prototype.show=function(id){var _mthis=this;this._showMessage('');this.loader(false);$('.GSI_NotifyMe_Forms').show();$('#notifyme-wrp h1').show();$.nyroModalManual({url:'#notifyme',width:_mthis.width,height:_mthis.height,minHeight:_mthis.height,minWidth:_mthis.width});GSI.tracking.tag('NotifyMeInitiated')};GSI_Widget_NotifyMe.prototype.hide=function(){$.nyroModalRemove();$('#notifyme').hide()};GSI_Widget_NotifyMe.prototype._disableButton=function(on){if(on){$("#notifyme_subscribe_button").addClass('disabled')}else $("#notifyme_subscribe_button").removeClass('disabled')};GSI_Widget_NotifyMe.prototype.subscribe=function(email,callback){var _mthis=this;if($("#notifyme_subscribe_button").hasClass("disabled"))return false;var subscribeFeedback=function(res){_mthis.loader(false);if(res.errormsg){_mthis._showError(res);callback();return false};_mthis._showSuccess(res);callback()};if(!GSI.functions.isset(callback))callback=function(){};this.loader(true);if(!GSI.functions.isEmailValid(email,true)){this.loader(false);this._showMessage(GSI.dict.getText('widgets','notifyme_error_invalid_mail'),'ERROR')}else GSI.activeItem.subscribeToNotifyMe(email,subscribeFeedback,subscribeFeedback)};GSI_Widget_NotifyMe.prototype._showMessage=function(content,type){if(content==""){$('.GSI_NotifyMe_Result').removeClass('errors-small').removeClass('confirmation-small')}else if(type=="ERROR"){$('.GSI_NotifyMe_Result').addClass('errors-small').removeClass('confirmation-small')}else $('.GSI_NotifyMe_Result').removeClass('errors-small').addClass('confirmation-small');$('.GSI_NotifyMe_Result').html(content)};GSI_Widget_NotifyMe.prototype.isEnabledItemOption=function(){try{var disable_nm_item=GSI.activeItem.data.content.INFO['disable_notifyme_item'];if(disable_nm_item=="Y"||disable_nm_item=="y")return false;var optionSKU=GSI.activeItem.getOptionSku(),optionSKUDisableNM=GSI.activeItem.data.content.INFO['disable_notifyme_options'][optionSKU];if(optionSKU&&(optionSKUDisableNM=="Y"||optionSKUDisableNM=="y"))return false;return true}catch(e){GSI.setError('Warning in isEnabledItemOption(): Some NotifyMe options where not found','INFO');return true}};GSI_Widget_NotifyMe.prototype._showSuccess=function(res){$('.GSI_NotifyMe_Forms').hide();this._showMessage(GSI.dict.getText('widgets','notifyme_'+res.message));$('#notifyme_email_input').val('');$('#notifyme_email1_input').val('');$('#notifyme_email2_input').val('');$('#notifyme-buttons').trigger('notifyme_show_message');GSI.tracking.tag('NotifyMeSubscribed');this._doShowSuccess()};GSI_Widget_NotifyMe.prototype._doShowSuccess=function(){};GSI_Widget_NotifyMe.prototype._showError=function(res){this._showMessage(GSI.dict.getText('widgets','notifyme_'+res.errormsg),'ERROR')};GSI_Widget_NotifyMe.prototype.init=function(){if(!this._load())return false;var _mthis=this;$(".notify_me").click(function(){_mthis.show();return false});$("#notifyme_subscribe_button").click(function(){_mthis.subscribe($("#notifyme_email_input").val())});$("#notifyme_email_input").bind("change keyup",function(){if($("#notifyme_subscribe_button").hasClass("disabled"))_mthis._disableButton(false)});this.loaded=true;return true};var tW=new GSI_Widget_NotifyMe();GSI.widgets.loadWidget(tW);
function GSI_Widget_NotifyMe_DoubleEmail(){};GSI_Widget_NotifyMe_DoubleEmail.prototype=new GSI_Widget_NotifyMe();GSI_Widget_NotifyMe_DoubleEmail.prototype.height=182;GSI_Widget_NotifyMe_DoubleEmail.prototype.width=398;GSI_Widget_NotifyMe_DoubleEmail.prototype.show=function(id){var _mthis=this;this.loader(false);this._showMessage('');$.nyroModalManual({url:'#notifyme',width:_mthis.width,height:_mthis.height,minHeight:_mthis.height,minWidth:_mthis.width});$('.notifyme-info, .required-field, .form-field-medium, .button-main','#notifyme_form').show();$('#notifyme-wrp h1').show();GSI.tracking.tag('NotifyMeInitiated');if($('#notifyme_email1_input').val()==="")$('#radio_newsletter').attr({disabled:true,checked:false})};GSI_Widget_NotifyMe_DoubleEmail.prototype.subscribe=function(email1,email2,callback){var _mthis=this;if($("#notifyme_subscribe_button").hasClass("disabled"))return false;var subscribeFeedback=function(res){_mthis.loader(false);if(res.errormsg){_mthis._showError(res);callback();return false};_mthis._showSuccess(res);callback()};if(!GSI.functions.isset(callback))callback=function(){};this.loader(true);if(email1!=email2){this.loader(false);this._showMessage(GSI.dict.getText('widgets','notifyme_error_mismatch_emails'),'ERROR')}else if(!GSI.functions.isEmailValid(email1,true)){this.loader(false);this._showMessage(GSI.dict.getText('widgets','notifyme_error_invalid_mail'),'ERROR')}else GSI.activeItem.subscribeToNotifyMe(email1,subscribeFeedback,subscribeFeedback)};GSI_Widget_NotifyMe_DoubleEmail.prototype.init=function(){if(!this._load())return false;var _mthis=this;$(".notify_me").click(function(){_mthis.show();return false});$("#notifyme_subscribe_button").click(function(){_mthis.subscribe($("#notifyme_email1_input").val(),$("#notifyme_email2_input").val())});$("#notifyme_email1_input","#notifyme_email2_input").bind("change keyup",function(){if($("#notifyme_subscribe_button").hasClass("disabled"))_mthis._disableButton(false)});$("#notifyme_email1_input").focus(function(){$('#notifyme_email2_input').val('')});this.loaded=true;return true};var tW=new GSI_Widget_NotifyMe_DoubleEmail();GSI.widgets.loadWidget(tW);
function GSI_Element_Tooltip_Tablet(){this._placeHolder;this._settings=this._mergeSettings({});this._position='r';this._tooltipObj=null;this._content=null;this.qTipSettings={}};GSI_Element_Tooltip_Tablet.prototype={start:function(aPlaceHolder,content,xtraSettings){var _mthis=this;this._placeHolder=$(aPlaceHolder);if(this._placeHolder.length!=1){GSI.setError('ERROR, a Tooltip got badly initiated Placeholder length not one','ERROR');return};this._settings=GSI.functions.array_merge(this._settings,xtraSettings);if(!this._settings['title'])this._settings['title']="&nbsp;";this._settings['position']=this._settings['position'].toLowerCase();this._content=content;this.tooltip=this._placeHolder.qtip(this._getSettings())},_getSettings:function(){if(this._settings.position==='t'){this.qTipSettings['position']={my:'bottom center',at:'top center'}}else if(this._settings.position==='r'){this.qTipSettings['position']={my:'left center',at:'right center'}}else if(this._settings.position==='l'){this.qTipSettings['position']={my:'bottom left',at:'top left'}}else if(this._settings.position==='b')this.qTipSettings['position']={my:'top center',at:'bottom center'};if(this._settings.activateOnHover==true){this.qTipSettings['show']={event:'hover'}}else if(this._settings.activateOnHover==false)this.qTipSettings['show']={event:'click'};this.qTipSettings['content']={text:this._content,title:{text:this._placeHolder.attr('data-title')+'',button:true}};this.qTipSettings['show']={event:'click',ready:true,solo:true,effect:function(){$(this).fadeIn(500)}},this.qTipSettings['hide']={event:'unfocus',target:$('.ui-tooltip'),effect:function(){$(this).fadeOut(300)}};return this.qTipSettings}};var tE=GSI_Element_Tooltip_Tablet.prototype;GSI_Element_Tooltip_Tablet.prototype=new GSI_Element_Tooltip();$.extend(GSI_Element_Tooltip_Tablet.prototype,tE);
/*
* qTip2 - Pretty powerful tooltips
* http://craigsworks.com/projects/qtip2/
*
* Version: nightly
* Copyright 2009-2010 Craig Michael Thompson - http://craigsworks.com
*
* Dual licensed under MIT or GPLv2 licenses
*   http://en.wikipedia.org/wiki/MIT_License
*   http://en.wikipedia.org/wiki/GNU_General_Public_License
*
* Date: Tue Jan 31 10:16:34.0000000000 2012
*/

/*jslint browser: true, onevar: true, undef: true, nomen: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: true */
/*global window: false, jQuery: false, console: false */


(function($, window, undefined) {

	"use strict"; // Enable ECMAScript "strict" operation for this function. See more: http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/
	
	// Munge the primitives - Paul Irish tip
	var TRUE = true,
		FALSE = false,
		NULL = null,
		
		// Shortcut vars
		QTIP, PLUGINS, MOUSE,
		usedIDs = {},
		uitooltip = 'ui-tooltip',
		widget = 'ui-widget',
		disabled = 'ui-state-disabled',
		selector = 'div.qtip.'+uitooltip,
		defaultClass = uitooltip + '-default',
		focusClass = uitooltip + '-focus',
		hoverClass = uitooltip + '-hover',
		fluidClass = uitooltip + '-fluid',
		hideOffset = '-31000px',
		replaceSuffix = '_replacedByqTip',
		oldtitle = 'oldtitle',
		trackingBound;
		
	/* Thanks to Paul Irish for this one: http://paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/ */
	function log() {
		log.history = log.history || [];
		log.history.push(arguments);
		
		// Make sure console is present
		if('object' === typeof console) {

			// Setup console and arguments
			var c = console[ console.warn ? 'warn' : 'log' ],
			args = Array.prototype.slice.call(arguments), a;

			// Add qTip2 marker to first argument if it's a string
			if(typeof arguments[0] === 'string') { args[0] = 'qTip2: ' + args[0]; }

			// Apply console.warn or .log if not supported
			a = c.apply ? c.apply(console, args) : c(args);
		}
	}

// Option object sanitizer
function sanitizeOptions(opts)
{
	var content;

	if(!opts || 'object' !== typeof opts) { return FALSE; }

	if(opts.metadata === NULL || 'object' !== typeof opts.metadata) {
		opts.metadata = {
			type: opts.metadata
		};
	}

	if('content' in opts) {
		if(opts.content === NULL || 'object' !== typeof opts.content || opts.content.jquery) {
			opts.content = {
				text: opts.content
			};
		}

		content = opts.content.text || FALSE;
		if(!$.isFunction(content) && ((!content && !content.attr) || content.length < 1 || ('object' === typeof content && !content.jquery))) {
			opts.content.text = FALSE;
		}

		if('title' in opts.content) {
			if(opts.content.title === NULL || 'object' !== typeof opts.content.title) {
				opts.content.title = {
					text: opts.content.title
				};
			}

			content = opts.content.title.text || FALSE;
			if(!$.isFunction(content) && ((!content && !content.attr) || content.length < 1 || ('object' === typeof content && !content.jquery))) {
				opts.content.title.text = FALSE;
			}
		}
	}

	if('position' in opts) {
		if(opts.position === NULL || 'object' !== typeof opts.position) {
			opts.position = {
				my: opts.position,
				at: opts.position
			};
		}
	}

	if('show' in opts) {
		if(opts.show === NULL || 'object' !== typeof opts.show) {
			if(opts.show.jquery) {
				opts.show = { target: opts.show };
			}
			else {
				opts.show = { event: opts.show };
			}
		}
	}

	if('hide' in opts) {
		if(opts.hide === NULL || 'object' !== typeof opts.hide) {
			if(opts.hide.jquery) {
				opts.hide = { target: opts.hide };
			}
			else {
				opts.hide = { event: opts.hide };
			}
		}
	}

	if('style' in opts) {
		if(opts.style === NULL || 'object' !== typeof opts.style) {
			opts.style = {
				classes: opts.style
			};
		}
	}

	// Sanitize plugin options
	$.each(PLUGINS, function() {
		if(this.sanitize) { this.sanitize(opts); }
	});
	
	return opts;
}

/*
* Core plugin implementation
*/
function QTip(target, options, id, attr)
{
	// Declare this reference
	var self = this,
		docBody = document.body,
		tooltipID = uitooltip + '-' + id,
		isPositioning = 0,
		isDrawing = 0,
		tooltip = $(),
		namespace = '.qtip-' + id,
		elements, cache;

	// Setup class attributes
	self.id = id;
	self.rendered = FALSE;
	self.elements = elements = { target: target };
	self.timers = { img: {} };
	self.options = options;
	self.checks = {};
	self.plugins = {};
	self.cache = cache = {
		event: {},
		target: $(),
		disabled: FALSE,
		attr: attr,
		onTarget: FALSE
	};

	/*
	* Private core functions
	*/
	function convertNotation(notation)
	{
		var i = 0, obj, option = options, 

		// Split notation into array
		levels = notation.split('.');

		// Loop through
		while( option = option[ levels[i++] ] ) {
			if(i < levels.length) { obj = option; }
		}

		return [obj || options, levels.pop()];
	}

	function setWidget() {
		var on = options.style.widget;

		tooltip.toggleClass(widget, on).toggleClass(defaultClass, options.style['default'] && !on);
		elements.content.toggleClass(widget+'-content', on);
		
		if(elements.titlebar){
			elements.titlebar.toggleClass(widget+'-header', on);
		}
		if(elements.button){
			elements.button.toggleClass(uitooltip+'-icon', !on);
		}
	}

	function removeTitle(reposition)
	{
		if(elements.title) {
			elements.titlebar.remove();
			elements.titlebar = elements.title = elements.button = NULL;

			// Reposition if enabled
			if(reposition !== FALSE) { self.reposition(); }
		}
	}

	function createButton()
	{
		var button = options.content.title.button,
			isString = typeof button === 'string',
			close = isString ? button : 'Close tooltip';

		if(elements.button) { elements.button.remove(); }

		// Use custom button if one was supplied by user, else use default
		if(button.jquery) {
			elements.button = button;
		}
		else {
			elements.button = $('<a />', {
				'class': 'ui-state-default ui-tooltip-close ' + (options.style.widget ? '' : uitooltip+'-icon'),
				'title': close,
				'aria-label': close
			})
			.prepend(
				$('<span />', {
					'class': 'ui-icon ui-icon-close',
					'html': '&times;'
				})
			);
		}

		// Create button and setup attributes
		elements.button.appendTo(elements.titlebar)
			.attr('role', 'button')
			.click(function(event) {
				if(!tooltip.hasClass(disabled)) { self.hide(event); }
				return FALSE;
			});

		// Redraw the tooltip when we're done
		self.redraw();
	}

	function createTitle()
	{
		var id = tooltipID+'-title';

		// Destroy previous title element, if present
		if(elements.titlebar) { removeTitle(); }

		// Create title bar and title elements
		elements.titlebar = $('<div />', {
			'class': uitooltip + '-titlebar ' + (options.style.widget ? 'ui-widget-header' : '')
		})
		.append(
			elements.title = $('<div />', {
				'id': id,
				'class': uitooltip + '-title',
				'aria-atomic': TRUE
			})
		)
		.insertBefore(elements.content)

		// Button-specific events
		.delegate('.ui-tooltip-close', 'mousedown keydown mouseup keyup mouseout', function(event) {
			$(this).toggleClass('ui-state-active ui-state-focus', event.type.substr(-4) === 'down');
		})
		.delegate('.ui-tooltip-close', 'mouseover mouseout', function(event){
			$(this).toggleClass('ui-state-hover', event.type === 'mouseover');
		});

		// Create button if enabled
		if(options.content.title.button) { createButton(); }

		// Redraw the tooltip dimensions if it's rendered
		else if(self.rendered){ self.redraw(); } 
	}

	function updateButton(button)
	{
		var elem = elements.button,
			title = elements.title;

		// Make sure tooltip is rendered and if not, return
		if(!self.rendered) { return FALSE; }

		if(!button) {
			elem.remove();
		}
		else {
			if(!title) {
				createTitle();
			}
			createButton();
		}
	}

	function updateTitle(content, reposition)
	{
		var elem = elements.title;

		// Make sure tooltip is rendered and if not, return
		if(!self.rendered || !content) { return FALSE; }

		// Use function to parse content
		if($.isFunction(content)) {
			content = content.call(target, cache.event, self);
		}

		// Remove title if callback returns false
		if(content === FALSE) { return removeTitle(FALSE); }

		// Append new content if its a DOM array and show it if hidden
		else if(content.jquery && content.length > 0) {
			elem.empty().append(content.css({ display: 'block' }));
		}

		// Content is a regular string, insert the new content
		else { elem.html(content); }

		// Redraw and reposition
		self.redraw();
		if(reposition !== FALSE && self.rendered && tooltip.is(':visible')) {
			self.reposition(cache.event);
		}
	}

	function updateContent(content, reposition)
	{
		var elem = elements.content;

		// Make sure tooltip is rendered and content is defined. If not return
		if(!self.rendered || !content) { return FALSE; }

		// Use function to parse content
		if($.isFunction(content)) {
			content = content.call(target, cache.event, self) || '';
		}

		// Append new content if its a DOM array and show it if hidden
		if(content.jquery && content.length > 0) {
			elem.empty().append(content.css({ display: 'block' }));
		}

		// Content is a regular string, insert the new content
		else { elem.html(content); }

		// Image detection
		function detectImages(next) {
			var images, srcs = {};

			function imageLoad(image) {
				// Clear src from object and any timers and events associated with the image
				if(image) {
					delete srcs[image.src];
					clearTimeout(self.timers.img[image.src]);
					$(image).unbind(namespace);
				}

				// If queue is empty after image removal, update tooltip and continue the queue
				if($.isEmptyObject(srcs)) {
					self.redraw();
					if(reposition !== FALSE) {
						self.reposition(cache.event);
					}
					
					next();
				}
			}

			// Find all content images without dimensions, and if no images were found, continue
			if((images = elem.find('img:not([height]):not([width])')).length === 0) { return imageLoad(); }

			// Apply timer to each image to poll for dimensions
			images.each(function(i, elem) {
				// Skip if the src is already present
				if(srcs[elem.src] !== undefined) { return; }

        // Keep track of how many times we poll for image dimensions.
        // If it doesn't return in a reasonable amount of time, it's better
        // to display the tooltip, rather than hold up the queue.
        var iterations = 0, maxIterations = 3;

				(function timer(){
					// When the dimensions are found, remove the image from the queue
					if(elem.height || elem.width || (iterations > maxIterations)) { return imageLoad(elem); }

          iterations += 1;

					// Restart timer
					self.timers.img[elem.src] = setTimeout(timer, 700);
				}());  

				// Also apply regular load/error event handlers
				$(elem).bind('error'+namespace+' load'+namespace, function(){ imageLoad(this); });

				// Store the src and element in our object
				srcs[elem.src] = elem;
			});
		}

		/*
		 * If we're still rendering... insert into 'fx' queue our image dimension
		 * checker which will halt the showing of the tooltip until image dimensions
		 * can be detected properly.
		 */
		if(self.rendered < 0) { tooltip.queue('fx', detectImages); }

		// We're fully rendered, so reset isDrawing flag and proceed without queue delay
		else { isDrawing = 0; detectImages($.noop); }

		return self;
	}

	function assignEvents()
	{
		var posOptions = options.position,
			targets = {
				show: options.show.target,
				hide: options.hide.target,
				viewport: $(posOptions.viewport),
				document: $(document),
				body: $(document.body),
				window: $(window)
			},
			events = {
				show: $.trim('' + options.show.event).split(' '),
				hide: $.trim('' + options.hide.event).split(' ')
			},
			IE6 = $.browser.msie && parseInt($.browser.version, 10) === 6;

		// Define show event method
		function showMethod(event)
		{
			if(tooltip.hasClass(disabled)) { return FALSE; }

			// Clear hide timers
			clearTimeout(self.timers.show);
			clearTimeout(self.timers.hide);

			// Start show timer
			var callback = function(){ self.toggle(TRUE, event); };
			if(options.show.delay > 0) {
				self.timers.show = setTimeout(callback, options.show.delay);
			}
			else{ callback(); }
		}

		// Define hide method
		function hideMethod(event)
		{
			if(tooltip.hasClass(disabled) || isPositioning || isDrawing) { return FALSE; }

			// Check if new target was actually the tooltip element
			var relatedTarget = $(event.relatedTarget || event.target),
				ontoTooltip = relatedTarget.closest(selector)[0] === tooltip[0],
				ontoTarget = relatedTarget[0] === targets.show[0];

			// Clear timers and stop animation queue
			clearTimeout(self.timers.show);
			clearTimeout(self.timers.hide);

			// Prevent hiding if tooltip is fixed and event target is the tooltip. Or if mouse positioning is enabled and cursor momentarily overlaps
			if((posOptions.target === 'mouse' && ontoTooltip) || (options.hide.fixed && ((/mouse(out|leave|move)/).test(event.type) && (ontoTooltip || ontoTarget)))) {
				try { event.preventDefault(); event.stopImmediatePropagation(); } catch(e) {} return;
			}

			// If tooltip has displayed, start hide timer
			if(options.hide.delay > 0) {
				self.timers.hide = setTimeout(function(){ self.hide(event); }, options.hide.delay);
			}
			else{ self.hide(event); }
		}

		// Define inactive method
		function inactiveMethod(event)
		{
			if(tooltip.hasClass(disabled)) { return FALSE; }

			// Clear timer
			clearTimeout(self.timers.inactive);
			self.timers.inactive = setTimeout(function(){ self.hide(event); }, options.hide.inactive);
		}

		function repositionMethod(event) {
			if(tooltip.is(':visible')) { self.reposition(event); }
		}

		// On mouseenter/mouseleave...
		tooltip.bind('mouseenter'+namespace+' mouseleave'+namespace, function(event) {
			var state = event.type === 'mouseenter';

			// Focus the tooltip on mouseenter (z-index stacking)
			if(state) { self.focus(event); }

			// Add hover class
			tooltip.toggleClass(hoverClass, state);
		});

		// Enable hide.fixed
		if(options.hide.fixed) {
			// Add tooltip as a hide target
			targets.hide = targets.hide.add(tooltip);

			// Clear hide timer on tooltip hover to prevent it from closing
			tooltip.bind('mouseover'+namespace, function() {
				if(!tooltip.hasClass(disabled)) { clearTimeout(self.timers.hide); }
			});
		}

		// If using mouseout/mouseleave as a hide event...
		if(/mouse(out|leave)/i.test(options.hide.event)) {
			// Hide tooltips when leaving current window/frame (but not select/option elements)
			if(options.hide.leave === 'window') {
				targets.window.bind('mouseout'+namespace+' blur'+namespace, function(event) {
					if(/select|option/.test(event.target) && !event.relatedTarget) { self.hide(event); }
				});
			}
		}

		/*
		 * Make sure hoverIntent functions properly by using mouseleave to clear show timer if
		 * mouseenter/mouseout is used for show.event, even if it isn't in the users options.
		 */
		else if(/mouse(over|enter)/i.test(options.show.event)) {
			targets.hide.bind('mouseleave'+namespace, function(event) {
				clearTimeout(self.timers.show);
			});
		}

		// Hide tooltip on document mousedown if unfocus events are enabled
		if(('' + options.hide.event).indexOf('unfocus') > -1) {
			targets.body.bind('mousedown'+namespace, function(event) {
				var $target = $(event.target),
					enabled = !tooltip.hasClass(disabled) && tooltip.is(':visible');

				if($target[0] !== tooltip[0] && $target.parents(selector).length === 0 && $target.add(target).length > 1 && !$target.attr('disabled')) {
					self.hide(event);
				}
			});
		}

		// Check if the tooltip hides when inactive
		if('number' === typeof options.hide.inactive) {
			// Bind inactive method to target as a custom event
			targets.show.bind('qtip-'+id+'-inactive', inactiveMethod);
			
			// Define events which reset the 'inactive' event handler
			$.each(QTIP.inactiveEvents, function(index, type){
				targets.hide.add(elements.tooltip).bind(type+namespace+'-inactive', inactiveMethod);
			});
		}

		// Apply hide events
		$.each(events.hide, function(index, type) {
			var showIndex = $.inArray(type, events.show),
					targetHide = $(targets.hide);

			// Both events and targets are identical, apply events using a toggle
			if((showIndex > -1 && targetHide.add(targets.show).length === targetHide.length) || type === 'unfocus')
			{
				targets.show.bind(type+namespace, function(event) {
					if(tooltip.is(':visible')) { hideMethod(event); }
					else { showMethod(event); }
				});

				// Don't bind the event again
				delete events.show[ showIndex ];
			}

			// Events are not identical, bind normally
			else { targets.hide.bind(type+namespace, hideMethod); }
		});

		// Apply show events
		$.each(events.show, function(index, type) {
			targets.show.bind(type+namespace, showMethod);
		});

		// Check if the tooltip hides when mouse is moved a certain distance
		if('number' === typeof options.hide.distance) {
			// Bind mousemove to target to detect distance difference
			targets.show.add(tooltip).bind('mousemove'+namespace, function(event) {
				var origin = cache.origin || {},
					limit = options.hide.distance,
					abs = Math.abs;

				// Check if the movement has gone beyond the limit, and hide it if so
				if(abs(event.pageX - origin.pageX) >= limit || abs(event.pageY - origin.pageY) >= limit) {
					self.hide(event);
				}
			});
		}

		// Mouse positioning events
		if(posOptions.target === 'mouse') {
			// Cache mousemove coords on show targets
			targets.show.bind('mousemove'+namespace, function(event) {
				MOUSE = { pageX: event.pageX, pageY: event.pageY, type: 'mousemove' };
			});

			// If mouse adjustment is on...
			if(posOptions.adjust.mouse) {
				// Apply a mouseleave event so we don't get problems with overlapping
				if(options.hide.event) {
					// Hide when we leave the tooltip and not onto the show target
					tooltip.bind('mouseleave'+namespace, function(event) {
						if((event.relatedTarget || event.target) !== targets.show[0]) { self.hide(event); }
					});

					// Track if we're on the target or not
					elements.target.bind('mouseenter'+namespace+' mouseleave'+namespace, function(event) {
						cache.onTarget = event.type === 'mouseenter';
					});
				}

				// Update tooltip position on mousemove
				targets.document.bind('mousemove'+namespace, function(event) {
					// Update the tooltip position only if the tooltip is visible and adjustment is enabled
					if(cache.onTarget && !tooltip.hasClass(disabled) && tooltip.is(':visible')) {
						self.reposition(event || MOUSE);
					}
				});
			}
		}

		// Adjust positions of the tooltip on window resize if enabled
		if(posOptions.adjust.resize || targets.viewport.length) {
			($.event.special.resize ? targets.viewport : targets.window).bind('resize'+namespace, repositionMethod);
		}

		// Adjust tooltip position on scroll if screen adjustment is enabled
		if(targets.viewport.length || (IE6 && tooltip.css('position') === 'fixed')) {
			targets.viewport.bind('scroll'+namespace, repositionMethod);
		}
	}

	function unassignEvents()
	{
		var targets = [
				options.show.target[0],
				options.hide.target[0],
				self.rendered && elements.tooltip[0],
				options.position.container[0],
				options.position.viewport[0],
				window,
				document
			];

		// Check if tooltip is rendered
		if(self.rendered) {
			$([]).pushStack( $.grep(targets, function(i){ return typeof i === 'object'; }) ).unbind(namespace);
		}

		// Tooltip isn't yet rendered, remove render event
		else { options.show.target.unbind(namespace+'-create'); }
	}

	// Setup builtin .set() option checks
	self.checks.builtin = {
		// Core checks
		'^id$': function(obj, o, v) {
			var id = v === TRUE ? QTIP.nextid : v,
				tooltipID = uitooltip + '-' + id;

			if(id !== FALSE && id.length > 0 && !$('#'+tooltipID).length) {
				tooltip[0].id = tooltipID;
				elements.content[0].id = tooltipID + '-content';
				elements.title[0].id = tooltipID + '-title';
			}
		},

		// Content checks
		'^content.text$': function(obj, o, v){ updateContent(v); },
		'^content.title.text$': function(obj, o, v) {
			// Remove title if content is null
			if(!v) { return removeTitle(); }

			// If title isn't already created, create it now and update
			if(!elements.title && v) { createTitle(); }
			updateTitle(v);
		},
		'^content.title.button$': function(obj, o, v){ updateButton(v); },

		// Position checks
		'^position.(my|at)$': function(obj, o, v){
			// Parse new corner value into Corner objecct
			if('string' === typeof v) {
				obj[o] = new PLUGINS.Corner(v);
			}
		},
		'^position.container$': function(obj, o, v){
			if(self.rendered) { tooltip.appendTo(v); }
		},

		// Show checks
		'^show.ready$': function() {
			if(!self.rendered) { self.render(1); }
			else { self.toggle(TRUE); }
		},

		// Style checks
		'^style.classes$': function(obj, o, v) { 
			tooltip.attr('class', uitooltip + ' qtip ui-helper-reset ' + v);
		},
		'^style.widget|content.title': setWidget,

		// Events check
		'^events.(render|show|move|hide|focus|blur)$': function(obj, o, v) {
			tooltip[($.isFunction(v) ? '' : 'un') + 'bind']('tooltip'+o, v);
		},

		// Properties which require event reassignment
		'^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)': function() {
			var posOptions = options.position;

			// Set tracking flag
			tooltip.attr('tracking', posOptions.target === 'mouse' && posOptions.adjust.mouse);

			// Reassign events
			unassignEvents(); assignEvents();
		}
	};

	/*
	* Public API methods
	*/
	$.extend(self, {
		render: function(show)
		{
			if(self.rendered) { return self; } // If tooltip has already been rendered, exit

			var text = options.content.text,
				title = options.content.title.text,
				posOptions = options.position,
				callback = $.Event('tooltiprender');

			// Add ARIA attributes to target
			$.attr(target[0], 'aria-describedby', tooltipID);

			// Create tooltip element
			tooltip = elements.tooltip = $('<div/>', {
					'id': tooltipID,
					'class': uitooltip + ' qtip ui-helper-reset ' + defaultClass + ' ' + options.style.classes + ' '+ uitooltip + '-pos-' + options.position.my.abbrev(),
					'width': options.style.width || '',
					'height': options.style.height || '',
					'tracking': posOptions.target === 'mouse' && posOptions.adjust.mouse,

					/* ARIA specific attributes */
					'role': 'alert',
					'aria-live': 'polite',
					'aria-atomic': FALSE,
					'aria-describedby': tooltipID + '-content',
					'aria-hidden': TRUE
				})
				.toggleClass(disabled, cache.disabled)
				.data('qtip', self)
				.appendTo(options.position.container)
				.append(
					// Create content element
					elements.content = $('<div />', {
						'class': uitooltip + '-content',
						'id': tooltipID + '-content',
						'aria-atomic': TRUE
					})
				);

			// Set rendered flag and prevent redundant redraw/reposition calls for now
			self.rendered = -1;
			isDrawing = 1; isPositioning = 1;

			// Create title...
			if(title) { 
				createTitle();

				// Update title only if its not a callback (called in toggle if so)
				if(!$.isFunction(title)) { updateTitle(title, FALSE); }
			}

			// Set proper rendered flag and update content if not a callback function (called in toggle)
			if(!$.isFunction(text)) { updateContent(text, FALSE); }
			self.rendered = TRUE;

			// Setup widget classes
			setWidget();

			// Assign passed event callbacks (before plugins!)
			$.each(options.events, function(name, callback) {
				if($.isFunction(callback)) {
					tooltip.bind(name === 'toggle' ? 'tooltipshow tooltiphide' : 'tooltip'+name, callback);
				}
			});

			// Initialize 'render' plugins
			$.each(PLUGINS, function() {
				if(this.initialize === 'render') { this(self); }
			});

			// Assign events
			assignEvents();

			/* Queue this part of the render process in our fx queue so we can
			 * load images before the tooltip renders fully.
			 *
			 * See: updateContent method
			*/
			tooltip.queue('fx', function(next) {
				// Trigger tooltiprender event and pass original triggering event as original
				callback.originalEvent = cache.event;
				tooltip.trigger(callback, [self]);

				// Reset flags
				isDrawing = 0; isPositioning = 0;

				// Redraw the tooltip manually now we're fully rendered
				self.redraw();

				// Show tooltip if needed
				if(options.show.ready || show) {
					self.toggle(TRUE, cache.event, FALSE);
				}

				next(); // Move on to next method in queue
			});

			return self;
		},

		get: function(notation)
		{
			var result, o;

			switch(notation.toLowerCase())
			{
				case 'dimensions':
					result = {
						height: tooltip.outerHeight(), width: tooltip.outerWidth()
					};
				break;

				case 'offset':
					result = PLUGINS.offset(tooltip, options.position.container);
				break;

				default:
					o = convertNotation(notation.toLowerCase());
					result = o[0][ o[1] ];
					result = result.precedance ? result.string() : result;
				break;
			}

			return result;
		},

		set: function(option, value)
		{
			var rmove = /^position\.(my|at|adjust|target|container)|style|content|show\.ready/i,
				rdraw = /^content\.(title|attr)|style/i,
				reposition = FALSE,
				redraw = FALSE,
				checks = self.checks,
				name;

			function callback(notation, args) {
				var category, rule, match;

				for(category in checks) {
					for(rule in checks[category]) {
						if(match = (new RegExp(rule, 'i')).exec(notation)) {
							args.push(match);
							checks[category][rule].apply(self, args);
						}
					}
				}
			}

			// Convert singular option/value pair into object form
			if('string' === typeof option) {
				name = option; option = {}; option[name] = value;
			}
			else { option = $.extend(TRUE, {}, option); }

			// Set all of the defined options to their new values
			$.each(option, function(notation, value) {
				var obj = convertNotation( notation.toLowerCase() ), previous;

				// Set new obj value
				previous = obj[0][ obj[1] ];
				obj[0][ obj[1] ] = 'object' === typeof value && value.nodeType ? $(value) : value;

				// Set the new params for the callback
				option[notation] = [obj[0], obj[1], value, previous];

				// Also check if we need to reposition / redraw
				reposition = rmove.test(notation) || reposition;
				redraw = rdraw.test(notation) || redraw;
			});

			// Re-sanitize options
			sanitizeOptions(options);

			/*
			 * Execute any valid callbacks for the set options
			 * Also set isPositioning/isDrawing so we don't get loads of redundant repositioning
			 * and redraw calls.
			 */
			isPositioning = isDrawing = 1; $.each(option, callback); isPositioning = isDrawing = 0;

			// Update position / redraw if needed
			if(tooltip.is(':visible') && self.rendered) {
				if(reposition) {
					self.reposition( options.position.target === 'mouse' ? NULL : cache.event );
				}
				if(redraw) { self.redraw(); }
			}

			return self;
		},

		toggle: function(state, event)
		{
			// Render the tooltip if showing and it isn't already
			if(!self.rendered) { return state ? self.render(1) : self; }

			var type = state ? 'show' : 'hide',
				opts = options[type],
				visible = tooltip.is(':visible'),
				sameTarget = !event || options[type].target.length < 2 || cache.target[0] === event.target,
				posOptions = options.position,
				contentOptions = options.content,
				delay,
				callback;

			// Detect state if valid one isn't provided
			if((typeof state).search('boolean|number')) { state = !visible; }

			// Return if element is already in correct state
			if(!tooltip.is(':animated') && visible === state && sameTarget) { return self; }

			// Try to prevent flickering when tooltip overlaps show element
			if(event) {
				if((/over|enter/).test(event.type) && (/out|leave/).test(cache.event.type) &&
					event.target === options.show.target[0] && tooltip.has(event.relatedTarget).length) {
					return self;
				}

				// Cache event
				cache.event = $.extend({}, event);
			}

			// Call API methods
			callback = $.Event('tooltip'+type);
			callback.originalEvent = event ? cache.event : NULL;
			tooltip.trigger(callback, [self, 90]);
			if(callback.isDefaultPrevented()){ return self; }

			// Set ARIA hidden status attribute
			$.attr(tooltip[0], 'aria-hidden', !!!state);

			// Execute state specific properties
			if(state) {
				// Store show origin coordinates
				cache.origin = $.extend({}, MOUSE);

				// Focus the tooltip
				self.focus(event);

				// Update tooltip content & title if it's a dynamic function
				if($.isFunction(contentOptions.text)) { updateContent(contentOptions.text, FALSE); }
				if($.isFunction(contentOptions.title.text)) { updateTitle(contentOptions.title.text, FALSE); }

				// Cache mousemove events for positioning purposes (if not already tracking)
				if(!trackingBound && posOptions.target === 'mouse' && posOptions.adjust.mouse) {
					$(document).bind('mousemove.qtip', function(event) {
						MOUSE = { pageX: event.pageX, pageY: event.pageY, type: 'mousemove' };
					});
					trackingBound = TRUE;
				}

				// Update the tooltip position
				self.reposition(event, arguments[2]);

				// Hide other tooltips if tooltip is solo, using it as the context
				if((callback.solo = !!opts.solo)) { $(selector, opts.solo).not(tooltip).qtip('hide', callback); }
			}
			else {
				// Clear show timer if we're hiding 
				clearTimeout(self.timers.show);

				// Remove cached origin on hide
				delete cache.origin;

				// Remove mouse tracking event if not needed (all tracking qTips are hidden)
				if(trackingBound && !$(selector+'[tracking="true"]:visible', opts.solo).not(tooltip).length) {
					$(document).unbind('mousemove.qtip');
					trackingBound = FALSE;
				}
				
				// Blur the tooltip
				self.blur(event);
			}

			// Define post-animation, state specific properties
			function after() {
				if(state) {
					// Prevent antialias from disappearing in IE by removing filter
					if($.browser.msie) { tooltip[0].style.removeAttribute('filter'); }

					// Remove overflow setting to prevent tip bugs
					tooltip.css('overflow', '');

					// Autofocus elements if enabled
					if('string' === typeof opts.autofocus) {
						$(opts.autofocus, tooltip).focus();
					}

					// Call API method
					callback = $.Event('tooltipvisible');
					callback.originalEvent = event ? cache.event : NULL;
					tooltip.trigger(callback, [self]);

					// If set, hide tooltip when inactive for delay period
					opts.target.trigger('qtip-'+id+'-inactive');
				}
				else {
					// Reset CSS states
					tooltip.css({
						display: '',
						visibility: '',
						opacity: '',
						left: '',
						top: ''
					});
				}
			}

			// Clear animation queue if same target
			if(sameTarget) { tooltip.stop(0, 1); }

			// If no effect type is supplied, use a simple toggle
			if(opts.effect === FALSE) {
				tooltip[ type ]();
				after.call(tooltip);
			}

			// Use custom function if provided
			else if($.isFunction(opts.effect)) {
				opts.effect.call(tooltip, self);
				tooltip.queue('fx', function(n){ after(); n(); });
			}

			// Use basic fade function by default
			else { tooltip.fadeTo(90, state ? 1 : 0, after); }

			// If inactive hide method is set, active it
			if(state) { opts.target.trigger('qtip-'+id+'-inactive'); }

			return self;
		},

		show: function(event){ return self.toggle(TRUE, event); },

		hide: function(event){ return self.toggle(FALSE, event); },

		focus: function(event)
		{
			if(!self.rendered) { return self; }

			var qtips = $(selector),
				curIndex = parseInt(tooltip[0].style.zIndex, 10),
				newIndex = QTIP.zindex + qtips.length,
				cachedEvent = $.extend({}, event),
				focusedElem, callback;

			// Only update the z-index if it has changed and tooltip is not already focused
			if(!tooltip.hasClass(focusClass))
			{
				// Call API method
				callback = $.Event('tooltipfocus');
				callback.originalEvent = cachedEvent;
				tooltip.trigger(callback, [self, newIndex]);

				// If default action wasn't prevented...
				if(!callback.isDefaultPrevented()) {
					// Only update z-index's if they've changed
					if(curIndex !== newIndex) {
						// Reduce our z-index's and keep them properly ordered
						qtips.each(function() {
							if(this.style.zIndex > curIndex) {
								this.style.zIndex = this.style.zIndex - 1;
							}
						});
						
						// Fire blur event for focused tooltip
						qtips.filter('.' + focusClass).qtip('blur', cachedEvent);
					}

					// Set the new z-index
					tooltip.addClass(focusClass)[0].style.zIndex = newIndex;
				}
			}

			return self;
		},

		blur: function(event) {
			var cachedEvent = $.extend({}, event),
				callback;

			// Set focused status to FALSE
			tooltip.removeClass(focusClass);

			// Trigger blur event
			callback = $.Event('tooltipblur');
			callback.originalEvent = cachedEvent;
			tooltip.trigger(callback, [self]);

			return self;
		},

		reposition: function(event, effect)
		{
			if(!self.rendered || isPositioning) { return self; }

			// Set positioning flag
			isPositioning = 1;
	
			var target = options.position.target,
				posOptions = options.position,
				my = posOptions.my, 
				at = posOptions.at,
				adjust = posOptions.adjust,
				method = adjust.method.split(' '),
				elemWidth = tooltip.outerWidth(),
				elemHeight = tooltip.outerHeight(),
				targetWidth = 0,
				targetHeight = 0,
				callback = $.Event('tooltipmove'),
				fixed = tooltip.css('position') === 'fixed',
				viewport = posOptions.viewport,
				position = { left: 0, top: 0 },
				container = posOptions.container,
				flipoffset = FALSE,
				tip = self.plugins.tip,
				readjust = {
					// Axis detection and readjustment indicator
					horizontal: method[0],
					vertical: (method[1] = method[1] || method[0]),
					enabled: viewport.jquery && target[0] !== window && target[0] !== docBody && adjust.method !== 'none',
			 
					// Reposition methods
					left: function(posLeft) {
						var isShift = readjust.horizontal === 'shift',
							viewportScroll = -container.offset.left + viewport.offset.left + viewport.scrollLeft,
							myWidth = my.x === 'left' ? elemWidth : my.x === 'right' ? -elemWidth : -elemWidth / 2,
							atWidth = at.x === 'left' ? targetWidth : at.x === 'right' ? -targetWidth : -targetWidth / 2,
							tipWidth = tip && tip.size ? tip.size.width || 0 : 0,
							tipAdjust = tip && tip.corner && tip.corner.precedance === 'x' && !isShift ? tipWidth : 0,
							overflowLeft = viewportScroll - posLeft + tipAdjust,
							overflowRight = posLeft + elemWidth - viewport.width - viewportScroll + tipAdjust,
							offset = myWidth - (my.precedance === 'x' || my.x === my.y ? atWidth : 0) - (at.x === 'center' ? targetWidth / 2 : 0),
							isCenter = my.x === 'center';

						// Optional 'shift' style repositioning
						if(isShift) {
							tipAdjust = tip && tip.corner && tip.corner.precedance === 'y' ? tipWidth : 0;
							offset = (my.x === 'left' ? 1 : -1) * myWidth - tipAdjust;

							// Adjust position but keep it within viewport dimensions
							position.left += overflowLeft > 0 ? overflowLeft : overflowRight > 0 ? -overflowRight : 0;
							position.left = Math.max(
								-container.offset.left + viewport.offset.left + (tipAdjust && tip.corner.x === 'center' ? tip.offset : 0),
								posLeft - offset,
								Math.min(
									Math.max(-container.offset.left + viewport.offset.left + viewport.width, posLeft + offset),
									position.left
								)
							);
						}

						// Default 'flip' repositioning
						else {
							if(overflowLeft > 0 && (my.x !== 'left' || overflowRight > 0)) {
								position.left -= offset;
							}
							else if(overflowRight > 0 && (my.x !== 'right' || overflowLeft > 0)  ) {
								position.left -= isCenter ? -offset : offset;
							}
							if(position.left !== posLeft && isCenter) { position.left -= adjust.x; }
							
							// Make sure we haven't made things worse with the adjustment and return the adjusted difference
							if(position.left < viewportScroll && -position.left > overflowRight) { position.left = posLeft; }
						}

						return position.left - posLeft;
					},
					top: function(posTop) {
						var isShift = readjust.vertical === 'shift',
							viewportScroll = -container.offset.top + viewport.offset.top + viewport.scrollTop,
							myHeight = my.y === 'top' ? elemHeight : my.y === 'bottom' ? -elemHeight : -elemHeight / 2,
							atHeight = at.y === 'top' ? targetHeight : at.y === 'bottom' ? -targetHeight : -targetHeight / 2,
							tipHeight = tip && tip.size ? tip.size.height || 0 : 0,
							tipAdjust = tip && tip.corner && tip.corner.precedance === 'y' && !isShift ? tipHeight : 0,
							overflowTop = viewportScroll - posTop + tipAdjust,
							overflowBottom = posTop + elemHeight - viewport.height - viewportScroll + tipAdjust,
							offset = myHeight - (my.precedance === 'y' || my.x === my.y ? atHeight : 0) - (at.y === 'center' ? targetHeight / 2 : 0),
							isCenter = my.y === 'center';
							
						// Optional 'shift' style repositioning
						if(isShift) {
							tipAdjust = tip && tip.corner && tip.corner.precedance === 'x' ? tipHeight : 0;
							offset = (my.y === 'top' ? 1 : -1) * myHeight - tipAdjust;

							// Adjust position but keep it within viewport dimensions
							position.top += overflowTop > 0 ? overflowTop : overflowBottom > 0 ? -overflowBottom : 0;
							position.top = Math.max(
								-container.offset.top + viewport.offset.top + (tipAdjust && tip.corner.x === 'center' ? tip.offset : 0),
								posTop - offset,
								Math.min(
									Math.max(-container.offset.top + viewport.offset.top + viewport.height, posTop + offset),
									position.top
								)
							);
						}

						// Default 'flip' repositioning
						else {
							if(overflowTop > 0 && (my.y !== 'top' || overflowBottom > 0)) {
								position.top -= offset;
							}
							else if(overflowBottom > 0 && (my.y !== 'bottom' || overflowTop > 0)  ) {
								position.top -= isCenter ? -offset : offset;
							}
							if(position.top !== posTop && isCenter) { position.top -= adjust.y; }

							// Make sure we haven't made things worse with the adjustment and return the adjusted difference
							if(position.top < 0 && -position.top > overflowBottom) { position.top = posTop; }
						}

						return position.top - posTop;
					}
				},
				win;

			// Check if absolute position was passed
			if($.isArray(target) && target.length === 2) {
				// Force left top and set position
				at = { x: 'left', y: 'top' };
				position = { left: target[0], top: target[1] };
			}

			// Check if mouse was the target
			else if(target === 'mouse' && ((event && event.pageX) || cache.event.pageX)) {
				// Force left top to allow flipping
				at = { x: 'left', y: 'top' };

				// Use cached event if one isn't available for positioning
				event = (event && (event.type === 'resize' || event.type === 'scroll') ? cache.event :
					event && event.pageX && event.type === 'mousemove' ? event :
					MOUSE && MOUSE.pageX && (adjust.mouse || !event || !event.pageX) ? { pageX: MOUSE.pageX, pageY: MOUSE.pageY } :
					!adjust.mouse && cache.origin && cache.origin.pageX && options.show.distance ? cache.origin :
					event) || event || cache.event || MOUSE || {};

				// Use event coordinates for position
				position = { top: event.pageY, left: event.pageX };
			}

			// Target wasn't mouse or absolute...
			else {
				// Check if event targetting is being used
				if(target === 'event') {
					if(event && event.target && event.type !== 'scroll' && event.type !== 'resize') {
						target = cache.target = $(event.target);
					}
					else {
						target = cache.target;
					}
				}
				else {
					target = cache.target = $(target.jquery ? target : elements.target);
				}

				// Parse the target into a jQuery object and make sure there's an element present
				target = $(target).eq(0);
				if(target.length === 0) { return self; }

				// Check if window or document is the target
				else if(target[0] === document || target[0] === window) {
					targetWidth = PLUGINS.iOS ? window.innerWidth : target.width();
					targetHeight = PLUGINS.iOS ? window.innerHeight : target.height();

					if(target[0] === window) {
						position = {
							top: (viewport || target).scrollTop(),
							left: (viewport || target).scrollLeft()
						};
					}
				}

				// Use Imagemap/SVG plugins if needed
				else if(target.is('area') && PLUGINS.imagemap) {
					position = PLUGINS.imagemap(target, at, readjust.enabled ? method : FALSE);
				}
				else if(target[0].namespaceURI === 'http://www.w3.org/2000/svg' && PLUGINS.svg) {
					position = PLUGINS.svg(target, at);
				}

				else {
					targetWidth = target.outerWidth();
					targetHeight = target.outerHeight();

					position = PLUGINS.offset(target, container);
				}

				// Parse returned plugin values into proper variables
				if(position.offset) {
					targetWidth = position.width;
					targetHeight = position.height;
					flipoffset = position.flipoffset;
					position = position.offset;
				}

				// Adjust for position.fixed tooltips (and also iOS scroll bug in v3.2 - v4.0)
				if((PLUGINS.iOS < 4.1 && PLUGINS.iOS > 3.1) || PLUGINS.iOS == 4.3 || (!PLUGINS.iOS && fixed)) {
					win = $(window);
					position.left -= win.scrollLeft();
					position.top -= win.scrollTop();
				}

				// Adjust position relative to target
				position.left += at.x === 'right' ? targetWidth : at.x === 'center' ? targetWidth / 2 : 0;
				position.top += at.y === 'bottom' ? targetHeight : at.y === 'center' ? targetHeight / 2 : 0;
			}

			// Adjust position relative to tooltip
			position.left += adjust.x + (my.x === 'right' ? -elemWidth : my.x === 'center' ? -elemWidth / 2 : 0);
			position.top += adjust.y + (my.y === 'bottom' ? -elemHeight : my.y === 'center' ? -elemHeight / 2 : 0);

			// Calculate collision offset values if viewport positioning is enabled
			if(readjust.enabled) {
				// Cache our viewport details
				viewport = {
					elem: viewport,
					height: viewport[ (viewport[0] === window ? 'h' : 'outerH') + 'eight' ](),
					width: viewport[ (viewport[0] === window ? 'w' : 'outerW') + 'idth' ](),
					scrollLeft: fixed ? 0 : viewport.scrollLeft(),
					scrollTop: fixed ? 0 : viewport.scrollTop(),
					offset: viewport.offset() || { left: 0, top: 0 }
				};
				container = {
					elem: container,
					scrollLeft: container.scrollLeft(),
					scrollTop: container.scrollTop(),
					offset: container.offset() || { left: 0, top: 0 }
				};

				// Adjust position based onviewport and adjustment options
				position.adjusted = {
					left: readjust.horizontal !== 'none' ? readjust.left(position.left) : 0,
					top: readjust.vertical !== 'none' ? readjust.top(position.top) : 0
				};

				// Set tooltip position class
				if(position.adjusted.left + position.adjusted.top) {
					tooltip.attr('class', tooltip[0].className.replace(/ui-tooltip-pos-\w+/i, uitooltip + '-pos-' + my.abbrev()));
				}

				// Apply flip offsets supplied by positioning plugins
				if(flipoffset && position.adjusted.left) { position.left += flipoffset.left; }
				if(flipoffset && position.adjusted.top) {  position.top += flipoffset.top; }
			}

			//Viewport adjustment is disabled, set values to zero
			else { position.adjusted = { left: 0, top: 0 }; }

			// Call API method
			callback.originalEvent = $.extend({}, event);
			tooltip.trigger(callback, [self, position, viewport.elem || viewport]);
			if(callback.isDefaultPrevented()){ return self; }
			delete position.adjusted;

			// If effect is disabled, target it mouse, no animation is defined or positioning gives NaN out, set CSS directly
			if(effect === FALSE || isNaN(position.left) || isNaN(position.top) || target === 'mouse' || !$.isFunction(posOptions.effect)) {
				tooltip.css(position);
			}
			
			// Use custom function if provided
			else if($.isFunction(posOptions.effect)) {
				posOptions.effect.call(tooltip, self, $.extend({}, position));
				tooltip.queue(function(next) {
					// Reset attributes to avoid cross-browser rendering bugs
					$(this).css({ opacity: '', height: '' });
					if($.browser.msie) { this.style.removeAttribute('filter'); }

					next();
				});
			}

			// Set positioning flag
			isPositioning = 0;

			return self;
		},

		// Max/min width simulator function for all browsers.. yeaaah!
		redraw: function()
		{
			if(self.rendered < 1 || isDrawing) { return self; }

			var container = options.position.container,
				perc, width, max, min;

			// Set drawing flag
			isDrawing = 1;

			// If tooltip has a set height, just set it... like a boss!
			if(options.style.height) { tooltip.css('height', options.style.height); }

			// If tooltip has a set width, just set it... like a boss!
			if(options.style.width) { tooltip.css('width', options.style.width); }

			// Otherwise simualte max/min width...
			else {
				// Reset width and add fluid class
				tooltip.css('width', '').addClass(fluidClass);

				// Grab our tooltip width (add 1 so we don't get wrapping problems.. huzzah!)
				width = tooltip.width() + 1;

				// Grab our max/min properties
				max = tooltip.css('max-width') || '';
				min = tooltip.css('min-width') || '';

				// Parse into proper pixel values
				perc = (max + min).indexOf('%') > -1 ? container.width() / 100 : 0;
				max = ((max.indexOf('%') > -1 ? perc : 1) * parseInt(max, 10)) || width;
				min = ((min.indexOf('%') > -1 ? perc : 1) * parseInt(min, 10)) || 0;

				// Determine new dimension size based on max/min/current values
				width = max + min ? Math.min(Math.max(width, min), max) : width;

				// Set the newly calculated width and remvoe fluid class
				tooltip.css('width', Math.round(width)).removeClass(fluidClass);
			}

			// Set drawing flag
			isDrawing = 0;

			return self;
		},

		disable: function(state)
		{
			if('boolean' !== typeof state) {
				state = !(tooltip.hasClass(disabled) || cache.disabled);
			}
			 
			if(self.rendered) {
				tooltip.toggleClass(disabled, state);
				$.attr(tooltip[0], 'aria-disabled', state);
			}
			else {
				cache.disabled = !!state;
			}

			return self;
		},
		
		enable: function() { return self.disable(FALSE); },

		destroy: function()
		{
			var t = target[0],
				title = $.attr(t, oldtitle),
				elemAPI = target.data('qtip');

			// Destroy tooltip and  any associated plugins if rendered
			if(self.rendered) {
				tooltip.remove();
				
				$.each(self.plugins, function() {
					if(this.destroy) { this.destroy(); }
				});
			}

			// Clear timers and remove bound events
			clearTimeout(self.timers.show);
			clearTimeout(self.timers.hide);
			unassignEvents();

			// If the API if actually this qTip API...
			if(!elemAPI || self === elemAPI) {
				// Remove api object
				$.removeData(t, 'qtip');

				// Reset old title attribute if removed
				if(options.suppress && title) {
					$.attr(t, 'title', title);
					target.removeAttr(oldtitle);
				}

				// Remove ARIA attributes
				target.removeAttr('aria-describedby');
			}

			// Remove qTip events associated with this API
			target.unbind('.qtip-'+id);

			// Remove ID from sued id object
			delete usedIDs[self.id];

			return target;
		}
	});
}

// Initialization method
function init(id, opts)
{
	var obj, posOptions, attr, config, title,

	// Setup element references
	elem = $(this),
	docBody = $(document.body),

	// Use document body instead of document element if needed
	newTarget = this === document ? docBody : elem,

	// Grab metadata from element if plugin is present
	metadata = (elem.metadata) ? elem.metadata(opts.metadata) : NULL,

	// If metadata type if HTML5, grab 'name' from the object instead, or use the regular data object otherwise
	metadata5 = opts.metadata.type === 'html5' && metadata ? metadata[opts.metadata.name] : NULL,

	// Grab data from metadata.name (or data-qtipopts as fallback) using .data() method,
	html5 = elem.data(opts.metadata.name || 'qtipopts');

	// If we don't get an object returned attempt to parse it manualyl without parseJSON
	try { html5 = typeof html5 === 'string' ? (new Function("return " + html5))() : html5; }
	catch(e) { log('Unable to parse HTML5 attribute data: ' + html5); }

	// Merge in and sanitize metadata
	config = $.extend(TRUE, {}, QTIP.defaults, opts, 
		typeof html5 === 'object' ? sanitizeOptions(html5) : NULL,
		sanitizeOptions(metadata5 || metadata));

	// Re-grab our positioning options now we've merged our metadata and set id to passed value
	posOptions = config.position;
	config.id = id;
	
	// Setup missing content if none is detected
	if('boolean' === typeof config.content.text) {
		attr = elem.attr(config.content.attr);

		// Grab from supplied attribute if available
		//console.log(config.content.attr !== FALSE && attr);
		//console.log(config.content.attr);
		//console.log(elem.attr(config.content.attr));
		if(config.content.attr !== FALSE && attr) { config.content.text = attr; }

		// No valid content was found, abort render
		else {
			log('Unable to locate content for tooltip! Aborting render of tooltip on element: ', elem);
			return FALSE;
		}
	}

	// Setup target options
	if(!posOptions.container.length) { posOptions.container = docBody; }
	if(posOptions.target === FALSE) { posOptions.target = newTarget; }
	if(config.show.target === FALSE) { config.show.target = newTarget; }
	if(config.show.solo === TRUE) { config.show.solo = docBody; }
	if(config.hide.target === FALSE) { config.hide.target = newTarget; }
	if(config.position.viewport === TRUE) { config.position.viewport = posOptions.container; }

	// Convert position corner values into x and y strings
	posOptions.at = new PLUGINS.Corner(posOptions.at);
	posOptions.my = new PLUGINS.Corner(posOptions.my);

	// Destroy previous tooltip if overwrite is enabled, or skip element if not
	if($.data(this, 'qtip')) {
		if(config.overwrite) {
			elem.qtip('destroy');
		}
		else if(config.overwrite === FALSE) {
			return FALSE;
		}
	}

	// Remove title attribute and store it if present
	if(config.suppress && (title = $.attr(this, 'title'))) {
		$(this).removeAttr('title').attr(oldtitle, title);
	}

	// Initialize the tooltip and add API reference
	obj = new QTip(elem, config, id, !!attr);
	$.data(this, 'qtip', obj);

	// Catch remove events on target element to destroy redundant tooltip
	elem.bind('remove.qtip-'+id, function(){ obj.destroy(); });

	return obj;
}

// jQuery $.fn extension method
QTIP = $.fn.qtip = function(options, notation, newValue)
{
	var command = ('' + options).toLowerCase(), // Parse command
		returned = NULL,
		args = $.makeArray(arguments).slice(1),
		event = args[args.length - 1],
		opts = this[0] ? $.data(this[0], 'qtip') : NULL;

	// Check for API request
	if((!arguments.length && opts) || command === 'api') {
		return opts;
	}

	// Execute API command if present
	else if('string' === typeof options)
	{
		this.each(function()
		{
			var api = $.data(this, 'qtip');
			if(!api) { return TRUE; }

			// Cache the event if possible
			if(event && event.timeStamp) { api.cache.event = event; }

			// Check for specific API commands
			if((command === 'option' || command === 'options') && notation) {
				if($.isPlainObject(notation) || newValue !== undefined) {
					api.set(notation, newValue);
				}
				else {
					returned = api.get(notation);
					return FALSE;
				}
			}

			// Execute API command
			else if(api[command]) {
				api[command].apply(api[command], args);
			}
		});

		return returned !== NULL ? returned : this;
	}

	// No API commands. validate provided options and setup qTips
	else if('object' === typeof options || !arguments.length)
	{
		opts = sanitizeOptions($.extend(TRUE, {}, options));

		// Bind the qTips
		return QTIP.bind.call(this, opts, event);
	}
};

// $.fn.qtip Bind method
QTIP.bind = function(opts, event)
{
	return this.each(function(i) {
		var options, targets, events, namespace, api, id;

		// Find next available ID, or use custom ID if provided
		id = $.isArray(opts.id) ? opts.id[i] : opts.id;
		id = !id || id === FALSE || id.length < 1 || usedIDs[id] ? QTIP.nextid++ : (usedIDs[id] = id);

		// Setup events namespace
		namespace = '.qtip-'+id+'-create';

		// Initialize the qTip and re-grab newly sanitized options
		api = init.call(this, id, opts);
		if(api === FALSE) { return TRUE; }
		options = api.options;

		// Initialize plugins
		$.each(PLUGINS, function() {
			if(this.initialize === 'initialize') { this(api); }
		});

		// Determine hide and show targets
		targets = { show: options.show.target, hide: options.hide.target };
		events = {
			show: $.trim('' + options.show.event).replace(/ /g, namespace+' ') + namespace,
			hide: $.trim('' + options.hide.event).replace(/ /g, namespace+' ') + namespace
		};

		/*
		 * Make sure hoverIntent functions properly by using mouseleave as a hide event if
		 * mouseenter/mouseout is used for show.event, even if it isn't in the users options.
		 */
		if(/mouse(over|enter)/i.test(events.show) && !/mouse(out|leave)/i.test(events.hide)) {
			events.hide += ' mouseleave' + namespace;
		}

		/*
		 * Also make sure initial mouse targetting works correctly by caching mousemove coords
		 * on show targets before the tooltip has rendered.
		 *
		 * Also set onTarget when triggered to keep mouse tracking working
		 */
		targets.show.bind('mousemove'+namespace, function(event) {
			MOUSE = { pageX: event.pageX, pageY: event.pageY, type: 'mousemove' };
			api.cache.onTarget = TRUE;
		});

		// Define hoverIntent function
		function hoverIntent(event) {
			function render() {
				// Cache mouse coords,render and render the tooltip
				api.render(typeof event === 'object' || options.show.ready);

				// Unbind show and hide events
				targets.show.add(targets.hide).unbind(namespace);
			}

			// Only continue if tooltip isn't disabled
			if(api.cache.disabled) { return FALSE; }

			// Cache the event data
			api.cache.event = $.extend({}, event);
			api.cache.target = event ? $(event.target) : [undefined];

			// Start the event sequence
			if(options.show.delay > 0) {
				clearTimeout(api.timers.show);
				api.timers.show = setTimeout(render, options.show.delay);
				if(events.show !== events.hide) {
					targets.hide.bind(events.hide, function() { clearTimeout(api.timers.show); });
				}
			}
			else { render(); }
		}

		// Bind show events to target
		targets.show.bind(events.show, hoverIntent);

		// Prerendering is enabled, create tooltip now
		if(options.show.ready || options.prerender) { hoverIntent(event); }
	});
};

// Setup base plugins
PLUGINS = QTIP.plugins = {
	// Corner object parser
	Corner: function(corner) {
		corner = ('' + corner).replace(/([A-Z])/, ' $1').replace(/middle/gi, 'center').toLowerCase();
		this.x = (corner.match(/left|right/i) || corner.match(/center/) || ['inherit'])[0].toLowerCase();
		this.y = (corner.match(/top|bottom|center/i) || ['inherit'])[0].toLowerCase();

		var f = corner.charAt(0); this.precedance = (f === 't' || f === 'b' ? 'y' : 'x');

		this.string = function() { return this.precedance === 'y' ? this.y+this.x : this.x+this.y; };
		this.abbrev = function() { 
			var x = this.x.substr(0,1), y = this.y.substr(0,1);
			return x === y ? x : (x === 'c' || (x !== 'c' && y !== 'c')) ? y + x : x + y;
		};

		this.clone = function() {
			return { x: this.x, y: this.y, precedance: this.precedance, string: this.string, abbrev: this.abbrev, clone: this.clone };
		};
	},

	// Custom (more correct for qTip!) offset calculator
	offset: function(elem, container) {
		var pos = elem.offset(),
			parent = container,
			deep = 0,
			docBody = document.body,
			coffset, overflow;

		function scroll(e, i) {
			pos.left += i * e.scrollLeft();
			pos.top += i * e.scrollTop();
		}

		if(parent) {
			// Compensate for non-static containers offset
			do {
				if(parent.css('position') !== 'static') {
					coffset = parent[0] === docBody ?
						{ left: parseInt(parent.css('left'), 10) || 0, top: parseInt(parent.css('top'), 10) || 0 } :
						parent.position();

					pos.left -= coffset.left + (parseInt(parent.css('borderLeftWidth'), 10) || 0) + (parseInt(parent.css('marginLeft'), 10) || 0);
					pos.top -= coffset.top + (parseInt(parent.css('borderTopWidth'), 10) || 0);

					overflow = parent.css('overflow');
					if(overflow === 'scroll' || overflow === 'auto') { deep++; }
				}
				
				if(parent[0] === docBody) { break; }
			}
			while(parent = parent.offsetParent());

			// Compensate for containers scroll if it also has an offsetParent
			if(container[0] !== docBody && deep) { scroll( container, 1 ); }
		}

		return pos;
	},
	
	/*
	 * iOS 3.2 - 4.0 scroll fix detection used in offset() function.
	 */
	iOS: parseFloat(
		('' + (/CPU.*OS ([0-9_]{1,3})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent) || [0,''])[1])
			.replace('undefined', '3_2').replace('_','.')
	) || FALSE,
	
	/*
	 * jQuery-specific $.fn overrides
	 */
	fn: {
		/* Allow other plugins to successfully retrieve the title of an element with a qTip applied */
		attr: function(attr, val) {
			if(this.length) {
				var self = this[0],
					title = 'title',
					api = $.data(self, 'qtip');

				if(attr === title && api && 'object' === typeof api && api.options.suppress) {
					if(arguments.length < 2) {
						return $.attr(self, oldtitle);
					}
					else {
						// If qTip is rendered and title was originally used as content, update it
						if(api && api.options.content.attr === title && api.cache.attr) {
							api.set('content.text', val);
						}

						// Use the regular attr method to set, then cache the result
						return this.attr(oldtitle, val);
					}
				}
			}

			return $.fn['attr'+replaceSuffix].apply(this, arguments);
		},
		
		/* Allow clone to correctly retrieve cached title attributes */
		clone: function(keepData) {
			var titles = $([]), title = 'title',

			// Clone our element using the real clone method
			elems = $.fn['clone'+replaceSuffix].apply(this, arguments);

			// Grab all elements with an oldtitle set, and change it to regular title attribute, if keepData is false
			if(!keepData) {
				elems.filter('['+oldtitle+']').attr('title', function() {
					return $.attr(this, oldtitle);
				})
				.removeAttr(oldtitle);
			}

			return elems;
		},

		/* 
		 * Taken directly from jQuery 1.8.2 widget source code
		 * Trigger 'remove' event on all elements on removal
		 */
		remove: $.ui ? NULL : function( selector, keepData ) {
			if($.ui) { return; } // We don't need to do this if jQuery UI is present!

			$(this).each(function() {
				if (!keepData) {
					if (!selector || $.filter( selector, [ this ] ).length) {
						$('*', this).add(this).each(function() {
							$(this).triggerHandler('remove');
						});
					}
				}
			});
		}
	}
};

// Apply the fn overrides above
$.each(PLUGINS.fn, function(name, func) {
	if(!func || $.fn[name+replaceSuffix]) { return TRUE; }
	
	var old = $.fn[name+replaceSuffix] = $.fn[name];
	$.fn[name] = function() {
		return func.apply(this, arguments) || old.apply(this, arguments);
	};
});

// Set global qTip properties
QTIP.version = 'nightly';
QTIP.nextid = 0;
QTIP.inactiveEvents = 'click dblclick mousedown mouseup mousemove mouseleave mouseenter'.split(' ');
QTIP.zindex = 15000;

// Define configuration defaults
QTIP.defaults = {
	prerender: FALSE,
	id: FALSE,
	overwrite: TRUE,
	suppress: TRUE,
	content: {
		text: TRUE,
		attr: 'title',
		title: {
			text: FALSE,
			button: FALSE
		}
	},
	position: {
		my: 'top left',
		at: 'bottom right',
		target: FALSE,
		container: FALSE,
		viewport: FALSE,
		adjust: {
			x: 0, y: 0,
			mouse: TRUE,
			resize: TRUE,
			method: 'flip flip'
		},
		effect: function(api, pos, viewport) {
			$(this).animate(pos, {
				duration: 200,
				queue: FALSE
			});
		}
	},
	show: {
		target: FALSE,
		event: 'mouseenter',
		effect: TRUE,
		delay: 90,
		solo: FALSE,
		ready: FALSE,
		autofocus: FALSE
	},
	hide: {
		target: FALSE,
		event: 'mouseleave',
		effect: TRUE,
		delay: 0,
		fixed: FALSE,
		inactive: FALSE,
		leave: 'window',
		distance: FALSE
	},
	style: {
		classes: '',
		widget: FALSE,
		width: FALSE,
		height: FALSE,
		'default': TRUE
	},
	events: {
		render: NULL,
		move: NULL,
		show: NULL,
		hide: NULL,
		toggle: NULL,
		visible: NULL,
		focus: NULL,
		blur: NULL
	}
};

function Ajax(api)
{
	var self = this,
		tooltip = api.elements.tooltip,
		opts = api.options.content.ajax,
		namespace = '.qtip-ajax',
		rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
		first = TRUE;

	api.checks.ajax = {
		'^content.ajax': function(obj, name, v) {
			// If content.ajax object was reset, set our local var
			if(name === 'ajax') { opts = v; }

			if(name === 'once') {
				self.init();
			}
			else if(opts && opts.url) {
				self.load();
			}
			else {
				tooltip.unbind(namespace);
			}
		}
	};

	$.extend(self, {
		init: function() {
			// Make sure ajax options are enabled and bind event
			if(opts && opts.url) {
				tooltip.unbind(namespace)[ opts.once ? 'one' : 'bind' ]('tooltipshow'+namespace, self.load);
			}

			return self;
		},

		load: function(event, first) {
			var hasSelector = opts.url.indexOf(' '),
				url = opts.url,
				selector,
				hideFirst = opts.once && !opts.loading && first;

			// If loading option is disabled, prevent the tooltip showing until we've completed the request
			if(hideFirst) { try{ event.preventDefault(); } catch(e) {} }

			// Make sure default event hasn't been prevented
			else if(event && event.isDefaultPrevented()) { return self; }
			
			// Check if user delcared a content selector like in .load()
			if(hasSelector > -1) {
				selector = url.substr(hasSelector);
				url = url.substr(0, hasSelector);
			}

			// Define common after callback for both success/error handlers
			function after() {
				// Re-display tip if loading and first time, and reset first flag
				if(hideFirst) { api.show(event.originalEvent); first = FALSE; }

				// Call users complete if it was defined
				if($.isFunction(opts.complete)) { opts.complete.apply(this, arguments); }
			}

			// Define success handler
			function successHandler(content) {
				if(selector) {
					// Create a dummy div to hold the results and grab the selector element
					content = $('<div/>')
						// inject the contents of the document in, removing the scripts
						// to avoid any 'Permission Denied' errors in IE
						.append(content.replace(rscript, ""))
						
						// Locate the specified elements
						.find(selector);
				}

				// Set the content
				api.set('content.text', content);
			}

			// Error handler
			function errorHandler(xh, status, error) {
				if (xh.status === 0) { return; }
				api.set('content.text', status + ': ' + error);
			}

			// Setup $.ajax option object and process the request
			$.ajax( $.extend({ success: successHandler, error: errorHandler, context: api }, opts, { url: url, complete: after }) );
		}
	});

	self.init();
}


PLUGINS.ajax = function(api)
{
	var self = api.plugins.ajax;
	
	return 'object' === typeof self ? self : (api.plugins.ajax = new Ajax(api));
};

PLUGINS.ajax.initialize = 'render';

// Setup plugin sanitization
PLUGINS.ajax.sanitize = function(options)
{
	var content = options.content, opts;
	if(content && 'ajax' in content) {
		opts = content.ajax;
		if(typeof opts !== 'object') { opts = options.content.ajax = { url: opts }; }
		if('boolean' !== typeof opts.once && opts.once) { opts.once = !!opts.once; }
	}
};

// Extend original api defaults
$.extend(TRUE, QTIP.defaults, {
	content: {
		ajax: {
			loading: TRUE,
			once: TRUE
		}
	}
});

PLUGINS.imagemap = function(area, corner, flip)
{
	if(!area.jquery) { area = $(area); }

	var shape = (area[0].shape || area.attr('shape')).toLowerCase(),
		baseCoords = (area[0].coords || area.attr('coords')).split(','),
		coords = [],
		image = $('img[usemap="#'+area.parent('map').attr('name')+'"]'),
		imageOffset = image.offset(),
		result = {
			width: 0, height: 0,
			offset: { top: 1e10, right: 0, bottom: 0, left: 1e10 }
		},
		i = 0, next = 0, dimensions;

	// POLY area coordinate calculator
	//	Special thanks to Ed Cradock for helping out with this.
	//	Uses a binary search algorithm to find suitable coordinates.
	function polyCoordinates(result, coords, corner)
	{
		var i = 0,
			compareX = 1, compareY = 1,
			realX = 0, realY = 0,
			newWidth = result.width,
			newHeight = result.height;

		// Use a binary search algorithm to locate most suitable coordinate (hopefully)
		while(newWidth > 0 && newHeight > 0 && compareX > 0 && compareY > 0)
		{
			newWidth = Math.floor(newWidth / 2);
			newHeight = Math.floor(newHeight / 2);

			if(corner.x === 'left'){ compareX = newWidth; }
			else if(corner.x === 'right'){ compareX = result.width - newWidth; }
			else{ compareX += Math.floor(newWidth / 2); }

			if(corner.y === 'top'){ compareY = newHeight; }
			else if(corner.y === 'bottom'){ compareY = result.height - newHeight; }
			else{ compareY += Math.floor(newHeight / 2); }

			i = coords.length; while(i--)
			{
				if(coords.length < 2){ break; }

				realX = coords[i][0] - result.offset.left;
				realY = coords[i][1] - result.offset.top;

				if((corner.x === 'left' && realX >= compareX) ||
				(corner.x === 'right' && realX <= compareX) ||
				(corner.x === 'center' && (realX < compareX || realX > (result.width - compareX))) ||
				(corner.y === 'top' && realY >= compareY) ||
				(corner.y === 'bottom' && realY <= compareY) ||
				(corner.y === 'center' && (realY < compareY || realY > (result.height - compareY)))) {
					coords.splice(i, 1);
				}
			}
		}

		return { left: coords[0][0], top: coords[0][1] };
	}

	// Make sure we account for padding and borders on the image
	imageOffset.left += Math.ceil((image.outerWidth() - image.width()) / 2);
	imageOffset.top += Math.ceil((image.outerHeight() - image.height()) / 2);

	// Parse coordinates into proper array
	if(shape === 'poly') {
		i = baseCoords.length; while(i--)
		{
			next = [ parseInt(baseCoords[--i], 10), parseInt(baseCoords[i+1], 10) ];

			if(next[0] > result.offset.right){ result.offset.right = next[0]; }
			if(next[0] < result.offset.left){ result.offset.left = next[0]; }
			if(next[1] > result.offset.bottom){ result.offset.bottom = next[1]; }
			if(next[1] < result.offset.top){ result.offset.top = next[1]; }

			coords.push(next);
		}
	}
	else {
		coords = $.map(baseCoords, function(coord){ return parseInt(coord, 10); });
	}

	// Calculate details
	switch(shape)
	{
		case 'rect':
			result = {
				width: Math.abs(coords[2] - coords[0]),
				height: Math.abs(coords[3] - coords[1]),
				offset: {
					left: Math.min(coords[0], coords[2]),
					top: Math.min(coords[1], coords[3])
				}
			};
		break;

		case 'circle':
			result = {
				width: coords[2] + 2,
				height: coords[2] + 2,
				offset: { left: coords[0], top: coords[1] }
			};
		break;

		case 'poly':
			$.extend(result, {
				width: Math.abs(result.offset.right - result.offset.left),
				height: Math.abs(result.offset.bottom - result.offset.top)
			});

			if(corner.string() === 'centercenter') {
				result.offset = {
					left: result.offset.left + (result.width / 2),
					top: result.offset.top + (result.height / 2)
				};
			}
			else {
				result.offset = polyCoordinates(result, coords.slice(), corner);

				// If flip adjustment is enabled, also calculate the closest opposite point
				if(flip && (flip[0] === 'flip' || flip[1] === 'flip')) {
					result.flipoffset = polyCoordinates(result, coords.slice(), {
						x: corner.x === 'left' ? 'right' : corner.x === 'right' ? 'left' : 'center',
						y: corner.y === 'top' ? 'bottom' : corner.y === 'bottom' ? 'top' : 'center'
					});

					result.flipoffset.left -= result.offset.left;
					result.flipoffset.top -= result.offset.top;
				}
			}

			result.width = result.height = 0;
		break;
	}

	// Add image position to offset coordinates
	result.offset.left += imageOffset.left;
	result.offset.top += imageOffset.top;

	return result;
};

// Tip coordinates calculator
function calculateTip(corner, width, height)
{	
	var width2 = Math.ceil(width / 2), height2 = Math.ceil(height / 2),

	// Define tip coordinates in terms of height and width values
	tips = {
		bottomright:	[[0,0],				[width,height],		[width,0]],
		bottomleft:		[[0,0],				[width,0],				[0,height]],
		topright:		[[0,height],		[width,0],				[width,height]],
		topleft:			[[0,0],				[0,height],				[width,height]],
		topcenter:		[[0,height],		[width2,0],				[width,height]],
		bottomcenter:	[[0,0],				[width,0],				[width2,height]],
		rightcenter:	[[0,0],				[width,height2],		[0,height]],
		leftcenter:		[[width,0],			[width,height],		[0,height2]]
	};

	// Set common side shapes
	tips.lefttop = tips.bottomright; tips.righttop = tips.bottomleft;
	tips.leftbottom = tips.topright; tips.rightbottom = tips.topleft;

	return tips[ corner.string() ];
}


function Tip(qTip, command)
{
	var self = this,
		opts = qTip.options.style.tip,
		elems = qTip.elements,
		tooltip = elems.tooltip,
		cache = { top: 0, left: 0 },
		size = {
			width: opts.width,
			height: opts.height
		},
		color = { },
		border = opts.border || 0,
		namespace = '.qtip-tip',
		hasCanvas = !!($('<canvas />')[0] || {}).getContext;

	self.corner = NULL;
	self.mimic = NULL;
	self.border = border;
	self.offset = opts.offset;
	self.size = size;

	// Add new option checks for the plugin
	qTip.checks.tip = {
		'^position.my|style.tip.(corner|mimic|border)$': function() {
			// Make sure a tip can be drawn
			if(!self.init()) {
				self.destroy();
			}

			// Reposition the tooltip
			qTip.reposition();
		},
		'^style.tip.(height|width)$': function() {
			// Re-set dimensions and redraw the tip
			size = {
				width: opts.width,
				height: opts.height
			};
			self.create();
			self.update();

			// Reposition the tooltip
			qTip.reposition();
		},
		'^content.title.text|style.(classes|widget)$': function() {
			if(elems.tip) {
				self.update();
			}
		}
	};

	function reposition(event, api, pos, viewport) {
		if(!elems.tip) { return; }

		var newCorner = self.corner.clone(),
			adjust = pos.adjusted,
			method = qTip.options.position.adjust.method.split(' '),
			horizontal = method[0],
			vertical = method[1] || method[0],
			shift = { left: FALSE, top: FALSE, x: 0, y: 0 },
			offset, css = {}, props;

		// Make sure our tip position isn't fixed e.g. doesn't adjust with viewport
		if(self.corner.fixed !== TRUE) {
			// Horizontal - Shift or flip method
			if(horizontal === 'shift' && newCorner.precedance === 'x' && adjust.left && newCorner.y !== 'center') {
				newCorner.precedance = newCorner.precedance === 'x' ? 'y' : 'x';
			}
			else if(horizontal === 'flip' && adjust.left){
				newCorner.x = newCorner.x === 'center' ? (adjust.left > 0 ? 'left' : 'right') : (newCorner.x === 'left' ? 'right' : 'left');
			}

			// Vertical - Shift or flip method
			if(vertical === 'shift' && newCorner.precedance === 'y' && adjust.top && newCorner.x !== 'center') {
				newCorner.precedance = newCorner.precedance === 'y' ? 'x' : 'y';
			}
			else if(vertical === 'flip' && adjust.top) {
				newCorner.y = newCorner.y === 'center' ? (adjust.top > 0 ? 'top' : 'bottom') : (newCorner.y === 'top' ? 'bottom' : 'top');
			}

			// Update and redraw the tip if needed (check cached details of last drawn tip)
			if(newCorner.string() !== cache.corner.string() && (cache.top !== adjust.top || cache.left !== adjust.left)) {
				self.update(newCorner, FALSE);
			}
		}

		// Setup tip offset properties
		offset = self.position(newCorner, adjust);
		if(offset.right !== undefined) { offset.left = -offset.right; }
		if(offset.bottom !== undefined) { offset.top = -offset.bottom; }
		offset.user = Math.max(0, opts.offset);

		// Viewport "shift" specific adjustments
		if(shift.left = (horizontal === 'shift' && !!adjust.left)) {
			if(newCorner.x === 'center') {
				css['margin-left'] = shift.x = offset['margin-left'] - adjust.left;
			}
			else {
				props = offset.right !== undefined ?
					[ adjust.left, -offset.left ] : [ -adjust.left, offset.left ];

				if( (shift.x = Math.max(props[0], props[1])) > props[0] ) {
					pos.left -= adjust.left;
					shift.left = FALSE;
				}
				
				css[ offset.right !== undefined ? 'right' : 'left' ] = shift.x;
			}
		}
		if(shift.top = (vertical === 'shift' && !!adjust.top)) {
			if(newCorner.y === 'center') {
				css['margin-top'] = shift.y = offset['margin-top'] - adjust.top;
			}
			else {
				props = offset.bottom !== undefined ?
					[ adjust.top, -offset.top ] : [ -adjust.top, offset.top ];

				if( (shift.y = Math.max(props[0], props[1])) > props[0] ) {
					pos.top -= adjust.top;
					shift.top = FALSE;
				}

				css[ offset.bottom !== undefined ? 'bottom' : 'top' ] = shift.y;
			}
		}

		/*
		 * If the tip is adjusted in both dimensions, or in a
		 * direction that would cause it to be anywhere but the
		 * outer border, hide it!
		 */
		elems.tip.css(css).toggle(
			!((shift.x && shift.y) || (newCorner.x === 'center' && shift.y) || (newCorner.y === 'center' && shift.x))
		);

		// Adjust position to accomodate tip dimensions
		pos.left -= offset.left.charAt ? offset.user : horizontal !== 'shift' || shift.top || !shift.left && !shift.top ? offset.left : 0;
		pos.top -= offset.top.charAt ? offset.user : vertical !== 'shift' || shift.left || !shift.left && !shift.top ? offset.top : 0;

		// Cache details
		cache.left = adjust.left; cache.top = adjust.top;
		cache.corner = newCorner.clone();
	}

	/* border width calculator */
	function borderWidth(corner, side, backup) {
		side = !side ? corner[corner.precedance] : side;
		
		var isFluid = tooltip.hasClass(fluidClass),
			isTitleTop = elems.titlebar && corner.y === 'top',
			elem = isTitleTop ? elems.titlebar : elems.content,
			css = 'border-' + side + '-width',
			val;

		// Grab the border-width value (add fluid class if needed)
		tooltip.addClass(fluidClass);
		val = parseInt(elem.css(css), 10);
		val = (backup ? val || parseInt(tooltip.css(css), 10) : val) || 0;
		tooltip.toggleClass(fluidClass, isFluid);

		return val;
	}

	function borderRadius(corner) {
		var isTitleTop = elems.titlebar && corner.y === 'top',
			elem = isTitleTop ? elems.titlebar : elems.content,
			moz = $.browser.mozilla,
			prefix = moz ? '-moz-' : $.browser.webkit ? '-webkit-' : '',
			side = corner.y + (moz ? '' : '-') + corner.x,
			css = prefix + (moz ? 'border-radius-' + side : 'border-' + side + '-radius');

		return parseInt(elem.css(css), 10) || parseInt(tooltip.css(css), 10) || 0;
	}

	function calculateSize(corner) {
		var y = corner.precedance === 'y',
			width = size [ y ? 'width' : 'height' ],
			height = size [ y ? 'height' : 'width' ],
			isCenter = corner.string().indexOf('center') > -1,
			base = width * (isCenter ? 0.5 : 1),
			pow = Math.pow,
			round = Math.round,
			bigHyp, ratio, result,

		smallHyp = Math.sqrt( pow(base, 2) + pow(height, 2) ),
		
		hyp = [
			(border / base) * smallHyp, (border / height) * smallHyp
		];
		hyp[2] = Math.sqrt( pow(hyp[0], 2) - pow(border, 2) );
		hyp[3] = Math.sqrt( pow(hyp[1], 2) - pow(border, 2) );

		bigHyp = smallHyp + hyp[2] + hyp[3] + (isCenter ? 0 : hyp[0]);
		ratio = bigHyp / smallHyp;

		result = [ round(ratio * height), round(ratio * width) ];
		return { height: result[ y ? 0 : 1 ], width: result[ y ? 1 : 0 ] };
	}

	$.extend(self, {
		init: function()
		{
			var enabled = self.detectCorner() && (hasCanvas || $.browser.msie);

			// Determine tip corner and type
			if(enabled) {
				// Create a new tip and draw it
				self.create();
				self.update();

				// Bind update events
				tooltip.unbind(namespace).bind('tooltipmove'+namespace, reposition);
			}
			
			return enabled;
		},

		detectCorner: function()
		{
			var corner = opts.corner,
				posOptions = qTip.options.position,
				at = posOptions.at,
				my = posOptions.my.string ? posOptions.my.string() : posOptions.my;

			// Detect corner and mimic properties
			if(corner === FALSE || (my === FALSE && at === FALSE)) {
				return FALSE;
			}
			else {
				if(corner === TRUE) {
					self.corner = new PLUGINS.Corner(my);
				}
				else if(!corner.string) {
					self.corner = new PLUGINS.Corner(corner);
					self.corner.fixed = TRUE;
				}
			}

			// Cache it
			cache.corner = new PLUGINS.Corner( self.corner.string() );

			return self.corner.string() !== 'centercenter';
		},

		detectColours: function(actual) {
			var i, fill, border,
				tip = elems.tip.css('cssText', ''),
				corner = actual || self.corner,
				precedance = corner[ corner.precedance ],

				borderSide = 'border-' + precedance + '-color',
				borderSideCamel = 'border' + precedance.charAt(0) + precedance.substr(1) + 'Color',

				invalid = /rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i,
				backgroundColor = 'background-color',
				transparent = 'transparent',
				important = ' !important',

				bodyBorder = $(document.body).css('color'),
				contentColour = qTip.elements.content.css('color'),

				useTitle = elems.titlebar && (corner.y === 'top' || (corner.y === 'center' && tip.position().top + (size.height / 2) + opts.offset < elems.titlebar.outerHeight(1))),
				colorElem = useTitle ? elems.titlebar : elems.content;

			// Apply the fluid class so we can see our CSS values properly
			tooltip.addClass(fluidClass);

			// Detect tip colours from CSS styles
			color.fill = fill = tip.css(backgroundColor);
			color.border = border = tip[0].style[ borderSideCamel ] || tip.css(borderSide) || tooltip.css(borderSide);

			// Make sure colours are valid
			if(!fill || invalid.test(fill)) {
				color.fill = colorElem.css(backgroundColor) || transparent;
				if(invalid.test(color.fill)) {
					color.fill = tooltip.css(backgroundColor) || fill;
				}
			}
			if(!border || invalid.test(border) || border === bodyBorder) {
				color.border = colorElem.css(borderSide) || transparent;
				if(invalid.test(color.border)) {
					color.border = border;
				}
			}

			// Reset background and border colours
			$('*', tip).add(tip).css('cssText', backgroundColor+':'+transparent+important+';border:0'+important+';');

			// Remove fluid class
			tooltip.removeClass(fluidClass);
		},

		create: function()
		{
			var width = size.width,
				height = size.height,
				vml;

			// Remove previous tip element if present
			if(elems.tip) { elems.tip.remove(); }

			// Create tip element and prepend to the tooltip
			elems.tip = $('<div />', { 'class': 'ui-tooltip-tip' }).css({ width: width, height: height }).prependTo(tooltip);

			// Create tip drawing element(s)
			if(hasCanvas) {
				// save() as soon as we create the canvas element so FF2 doesn't bork on our first restore()!
				$('<canvas />').appendTo(elems.tip)[0].getContext('2d').save();
			}
			else {
				vml = '<vml:shape coordorigin="0,0" style="display:inline-block; position:absolute; behavior:url(#default#VML);"></vml:shape>';
				elems.tip.html(vml + vml);

				// Prevent mousing down on the tip since it causes problems with .live() handling in IE due to VML
				$('*', elems.tip).bind('click mousedown', function(event) { event.stopPropagation(); });
			}
		},

		update: function(corner, position)
		{
			var tip = elems.tip,
				inner = tip.children(),
				width = size.width,
				height = size.height,
				regular = 'px solid ',
				transparent = 'px dashed transparent', // Dashed IE6 border-transparency hack. Awesome!
				mimic = opts.mimic,
				round = Math.round,
				precedance, context, coords, translate, newSize;

			// Re-determine tip if not already set
			if(!corner) { corner = cache.corner || self.corner; }

			// Use corner property if we detect an invalid mimic value
			if(mimic === FALSE) { mimic = corner; }

			// Otherwise inherit mimic properties from the corner object as necessary
			else {
				mimic = new PLUGINS.Corner(mimic);
				mimic.precedance = corner.precedance;

				if(mimic.x === 'inherit') { mimic.x = corner.x; }
				else if(mimic.y === 'inherit') { mimic.y = corner.y; }
				else if(mimic.x === mimic.y) {
					mimic[ corner.precedance ] = corner[ corner.precedance ];
				}
			}
			precedance = mimic.precedance;

			// Update our colours
			self.detectColours(corner);

			// Detect border width, taking into account colours
			if(color.border !== 'transparent' && color.border !== '#123456') {
				// Grab border width
				border = borderWidth(corner, NULL, TRUE);

				// If border width isn't zero, use border color as fill (1.0 style tips)
				if(opts.border === 0 && border > 0) { color.fill = color.border; }

				// Set border width (use detected border width if opts.border is true)
				self.border = border = opts.border !== TRUE ? opts.border : border;
			}

			// Border colour was invalid, set border to zero
			else { self.border = border = 0; }

			// Calculate coordinates
			coords = calculateTip(mimic, width , height);

			// Determine tip size
			self.size = newSize = calculateSize(corner);
			tip.css(newSize);

			// Calculate tip translation
			if(corner.precedance === 'y') {
				translate = [
					round(mimic.x === 'left' ? border : mimic.x === 'right' ? newSize.width - width - border : (newSize.width - width) / 2),
					round(mimic.y === 'top' ?  newSize.height - height : 0)
				];
			}
			else {
				translate = [
					round(mimic.x === 'left' ? newSize.width - width : 0),
					round(mimic.y === 'top' ? border : mimic.y === 'bottom' ? newSize.height - height - border : (newSize.height - height) / 2)
				];
			}

			// Canvas drawing implementation
			if(hasCanvas) {
				// Set the canvas size using calculated size
				inner.attr(newSize);
				
				// Grab canvas context and clear/save it
				context = inner[0].getContext('2d');
				context.restore(); context.save();
				context.clearRect(0,0,3000,3000);
				
				// Translate origin
				context.translate(translate[0], translate[1]);
				
				// Draw the tip
				context.beginPath();
				context.moveTo(coords[0][0], coords[0][1]);
				context.lineTo(coords[1][0], coords[1][1]);
				context.lineTo(coords[2][0], coords[2][1]);
				context.closePath();
				context.fillStyle = color.fill;
				context.strokeStyle = color.border;
				context.lineWidth = border * 2;
				context.lineJoin = 'miter';
				context.miterLimit = 100;
				if(border) { context.stroke(); }
				context.fill();
			}

			// VML (IE Proprietary implementation)
			else {
				// Setup coordinates string
				coords = 'm' + coords[0][0] + ',' + coords[0][1] + ' l' + coords[1][0] +
					',' + coords[1][1] + ' ' + coords[2][0] + ',' + coords[2][1] + ' xe';

				// Setup VML-specific offset for pixel-perfection
				translate[2] = border && /^(r|b)/i.test(corner.string()) ?
					parseFloat($.browser.version, 10) === 8 ? 2 : 1 : 0;

				// Set initial CSS
				inner.css({
					antialias: ''+(mimic.string().indexOf('center') > -1),
					left: translate[0] - (translate[2] * Number(precedance === 'x')),
					top: translate[1] - (translate[2] * Number(precedance === 'y')),
					width: width + border,
					height: height + border
				})
				.each(function(i) {
					var $this = $(this);

					// Set shape specific attributes
					$this[ $this.prop ? 'prop' : 'attr' ]({
						coordsize: (width+border) + ' ' + (height+border),
						path: coords,
						fillcolor: color.fill,
						filled: !!i,
						stroked: !!!i
					})
					.css({ display: border || i ? 'block' : 'none' });

					// Check if border is enabled and add stroke element
					if(!i && $this.html() === '') {
						$this.html(
							'<vml:stroke weight="'+(border*2)+'px" color="'+color.border+'" miterlimit="1000" joinstyle="miter" ' +
							' style="behavior:url(#default#VML); display:inline-block;" />'
						);
					}
				});
			}

			// Position if needed
			if(position !== FALSE) { self.position(corner); }
		},

		// Tip positioning method
		position: function(corner)
		{
			var tip = elems.tip,
				position = {},
				userOffset = Math.max(0, opts.offset),
				precedance, dimensions, corners;

			// Return if tips are disabled or tip is not yet rendered
			if(opts.corner === FALSE || !tip) { return FALSE; }

			// Inherit corner if not provided
			corner = corner || self.corner;
			precedance = corner.precedance;

			// Determine which tip dimension to use for adjustment
			dimensions = calculateSize(corner);

			// Setup corners and offset array
			corners = [ corner.x, corner.y ];
			if(precedance === 'x') { corners.reverse(); }

			// Calculate tip position
			$.each(corners, function(i, side) {
				var b, br;

				if(side === 'center') {
					b = precedance === 'y' ? 'left' : 'top';
					position[ b ] = '50%';
					position['margin-' + b] = -Math.round(dimensions[ precedance === 'y' ? 'width' : 'height' ] / 2) + userOffset;
				}
				else {
					b = borderWidth(corner, side, TRUE);
					br = borderRadius(corner);
					
					position[ side ] = i ?
						border ? borderWidth(corner, side) : 0 : 
						userOffset + (br > b ? br : 0);
				}
			});

			// Adjust for tip dimensions
			position[ corner[precedance] ] -= dimensions[ precedance === 'x' ? 'width' : 'height' ];

			// Set and return new position
			tip.css({ top: '', bottom: '', left: '', right: '', margin: '' }).css(position);
			return position;
		},
		
		destroy: function()
		{
			// Remov tip and bound events
			if(elems.tip) { elems.tip.remove(); }
			tooltip.unbind(namespace);
		}
	});

	self.init();
}

PLUGINS.tip = function(api)
{
	var self = api.plugins.tip;
	
	return 'object' === typeof self ? self : (api.plugins.tip = new Tip(api));
};

// Initialize tip on render
PLUGINS.tip.initialize = 'render';

// Setup plugin sanitization options
PLUGINS.tip.sanitize = function(options)
{
	var style = options.style, opts;
	if(style && 'tip' in style) {
		opts = options.style.tip;
		if(typeof opts !== 'object'){ options.style.tip = { corner: opts }; }
		if(!(/string|boolean/i).test(typeof opts.corner)) { opts.corner = TRUE; }
		if(typeof opts.width !== 'number'){ delete opts.width; }
		if(typeof opts.height !== 'number'){ delete opts.height; }
		if(typeof opts.border !== 'number' && opts.border !== TRUE){ delete opts.border; }
		if(typeof opts.offset !== 'number'){ delete opts.offset; }
	}
};

// Extend original qTip defaults
$.extend(TRUE, QTIP.defaults, {
	style: {
		tip: {
			corner: TRUE,
			mimic: FALSE,
			width: 6,
			height: 6,
			border: TRUE,
			offset: 0
		}
	}
});

PLUGINS.svg = function(svg, corner)
{
	var doc = $(document),
		elem = svg[0],
		result = {
			width: 0, height: 0,
			offset: { top: 1e10, left: 1e10 }
		},
		box, mtx, root, point, tPoint;

	if (elem.getBBox && elem.parentNode) {
		box = elem.getBBox();
		mtx = elem.getScreenCTM();
		root = elem.farthestViewportElement || elem;

		// Return if no method is found
		if(!root.createSVGPoint) { return result; }

		// Create our point var
		point = root.createSVGPoint();

		// Adjust top and left
		point.x = box.x;
		point.y = box.y;
		tPoint = point.matrixTransform(mtx);
		result.offset.left = tPoint.x;
		result.offset.top = tPoint.y;

		// Adjust width and height
		point.x += box.width;
		point.y += box.height;
		tPoint = point.matrixTransform(mtx);
		result.width = tPoint.x - result.offset.left;
		result.height = tPoint.y - result.offset.top;

		// Adjust by scroll offset
		result.offset.left += doc.scrollLeft();
		result.offset.top += doc.scrollTop();
	}

	return result;
};

function Modal(api)
{
	var self = this,
		options = api.options.show.modal,
		elems = api.elements,
		tooltip = elems.tooltip,
		overlaySelector = '#qtip-overlay',
		globalNamespace = '.qtipmodal',
		namespace = globalNamespace + api.id,
		attr = 'is-modal-qtip',
		docBody = $(document.body),
		overlay;

	// Setup option set checks
	api.checks.modal = {
		'^show.modal.(on|blur)$': function() {
			// Initialise
			self.init();
			
			// Show the modal if not visible already and tooltip is visible
			elems.overlay.toggle( tooltip.is(':visible') );
		}
	};

	$.extend(self, {
		init: function()
		{
			// If modal is disabled... return
			if(!options.on) { return self; }

			// Create the overlay if needed
			overlay = self.create();

			// Add unique attribute so we can grab modal tooltips easily via a selector
			tooltip.attr(attr, TRUE)

			// Set z-index
			.css('z-index', PLUGINS.modal.zindex + $(selector+'['+attr+']').length)
			
			// Remove previous bound events in globalNamespace
			.unbind(globalNamespace).unbind(namespace)

			// Apply our show/hide/focus modal events
			.bind('tooltipshow'+globalNamespace+' tooltiphide'+globalNamespace, function(event, api, duration) {
				var oEvent = event.originalEvent;

				// Make sure mouseout doesn't trigger a hide when showing the modal and mousing onto backdrop
				if(event.target === tooltip[0]) {
					if(oEvent && event.type === 'tooltiphide' && /mouse(leave|enter)/.test(oEvent.type) && $(oEvent.relatedTarget).closest(overlay[0]).length) {
						try { event.preventDefault(); } catch(e) {}
					}
					else if(!oEvent || (oEvent && !oEvent.solo)) {
						self[ event.type.replace('tooltip', '') ](event, duration);
					}
				}
			})

			// Adjust modal z-index on tooltip focus
			.bind('tooltipfocus'+globalNamespace, function(event) {
				// If focus was cancelled before it reearch us, don't do anything
				if(event.isDefaultPrevented() || event.target !== tooltip[0]) { return; }

				var qtips = $(selector).filter('['+attr+']'),

				// Keep the modal's lower than other, regular qtips
				newIndex = PLUGINS.modal.zindex + qtips.length,
				curIndex = parseInt(tooltip[0].style.zIndex, 10);

				// Set overlay z-index
				overlay[0].style.zIndex = newIndex - 1;

				// Reduce modal z-index's and keep them properly ordered
				qtips.each(function() {
					if(this.style.zIndex > curIndex) {
						this.style.zIndex -= 1;
					}
				});

				// Fire blur event for focused tooltip
				qtips.end().filter('.' + focusClass).qtip('blur', event.originalEvent);

				// Set the new z-index
				tooltip.addClass(focusClass)[0].style.zIndex = newIndex;

				// Prevent default handling
				try { event.preventDefault(); } catch(e) {}
			})

			// Focus any other visible modals when this one hides
			.bind('tooltiphide'+globalNamespace, function(event) {
				if(event.target === tooltip[0]) {
					$('[' + attr + ']').filter(':visible').not(tooltip).last().qtip('focus', event);
				}
			});

			// Apply keyboard "Escape key" close handler
			if(options.escape) {
				$(window).unbind(namespace).bind('keydown'+namespace, function(event) {
					if(event.keyCode === 27 && tooltip.hasClass(focusClass)) {
						api.hide(event);
					}
				});
			}

			// Apply click handler for blur option
			if(options.blur) {
				elems.overlay.unbind(namespace).bind('click'+namespace, function(event) {
					if(tooltip.hasClass(focusClass)) { api.hide(event); }
				});
			}

			return self;
		},

		create: function()
		{
			var elem = $(overlaySelector);

			// Return if overlay is already rendered
			if(elem.length) {
				// Modal overlay should always be below all tooltips if possible
				return (elems.overlay = elem.insertAfter( $(selector).last() ));
			}

			// Create document overlay
			overlay = elems.overlay = $('<div />', {
				id: overlaySelector.substr(1),
				html: '<div></div>',
				mousedown: function() { return FALSE; }
			})
			.insertAfter( $(selector).last() );

			// Update position on window resize or scroll
			function resize() {
				overlay.css({
					height: $(window).height(),
					width: $(window).width()
				});
			}
			$(window).unbind(globalNamespace).bind('resize'+globalNamespace, resize);
			resize(); // Fire it initially too

			return overlay;
		},

		toggle: function(event, state, duration)
		{
			// Make sure default event hasn't been prevented
			if(event && event.isDefaultPrevented()) { return self; }

			var effect = options.effect,
				type = state ? 'show': 'hide',
				visible = overlay.is(':visible'),
				modals = $('[' + attr + ']').filter(':visible').not(tooltip),
				zindex;

			// Create our overlay if it isn't present already
			if(!overlay) { overlay = self.create(); }

			// Prevent modal from conflicting with show.solo, and don't hide backdrop is other modals are visible
			if((overlay.is(':animated') && visible === state) || (!state && modals.length)) { return self; }

			// State specific...
			if(state) {
				// Set position
				overlay.css({ left: 0, top: 0 });

				// Toggle backdrop cursor style on show
				overlay.toggleClass('blurs', options.blur);

				// Make sure we can't focus anything outside the tooltip
				docBody.bind('focusin'+namespace, function(event) {
					var target = $(event.target),
						container = target.closest('.qtip'),

					// Determine if input container target is above this
					targetOnTop = container.length < 1 ? FALSE : 
						(parseInt(container[0].style.zIndex, 10) > parseInt(tooltip[0].style.zIndex, 10)); 

					// If we're showing a modal, but focus has landed on an input below
					// this modal, divert focus to the first visible input in this modal
					if(!targetOnTop && ($(event.target).closest(selector)[0] !== tooltip[0])) {
						tooltip.find('input:visible').filter(':first').focus();
					}
				});
			}
			else {
				// Undelegate focus handler
				docBody.undelegate('*', 'focusin'+namespace);
			}

			// Stop all animations
			overlay.stop(TRUE, FALSE);

			// Use custom function if provided
			if($.isFunction(effect)) {
				effect.call(overlay, state);
			}

			// If no effect type is supplied, use a simple toggle
			else if(effect === FALSE) {
				overlay[ type ]();
			}

			// Use basic fade function
			else {
				overlay.fadeTo( parseInt(duration, 10) || 90, state ? 1 : 0, function() {
					if(!state) { $(this).hide(); }
				});
			}

			// Reset position on hide
			if(!state) {
				overlay.queue(function(next) {
					overlay.css({ left: '', top: '' });
					next();
				});
			}

			return self;
		},

		show: function(event, duration) { return self.toggle(event, TRUE, duration); },
		hide: function(event, duration) { return self.toggle(event, FALSE, duration); },

		destroy: function()
		{
			var delBlanket = overlay;

			if(delBlanket) {
				// Check if any other modal tooltips are present
				delBlanket = $('[' + attr + ']').not(tooltip).length < 1;

				// Remove overlay if needed
				if(delBlanket) {
					elems.overlay.remove();
					$(window).unbind(globalNamespace);
				}
				else {
					elems.overlay.unbind(globalNamespace+api.id);
				}

				// Undelegate focus handler
				docBody.undelegate('*', 'focusin'+namespace);
			}

			// Remove bound events
			return tooltip.removeAttr(attr).unbind(globalNamespace);
		}
	});

	self.init();
}

PLUGINS.modal = function(api) {
	var self = api.plugins.modal;

	return 'object' === typeof self ? self : (api.plugins.modal = new Modal(api));
};

// Plugin needs to be initialized on render
PLUGINS.modal.initialize = 'render';

// Setup sanitiztion rules
PLUGINS.modal.sanitize = function(opts) {
	if(opts.show) { 
		if(typeof opts.show.modal !== 'object') { opts.show.modal = { on: !!opts.show.modal }; }
		else if(typeof opts.show.modal.on === 'undefined') { opts.show.modal.on = TRUE; }
	}
};

// Base z-index for all modal tooltips (use qTip core z-index as a base)
PLUGINS.modal.zindex = QTIP.zindex + 1000;

// Extend original api defaults
$.extend(TRUE, QTIP.defaults, {
	show: {
		modal: {
			on: FALSE,
			effect: TRUE,
			blur: TRUE,
			escape: TRUE
		}
	}
});

/* 
 * BGIFrame adaption (http://plugins.jquery.com/project/bgiframe)
 * Special thanks to Brandon Aaron
 */
function BGIFrame(api)
{
	var self = this,
		elems = api.elements,
		tooltip = elems.tooltip,
		namespace = '.bgiframe-' + api.id;

	$.extend(self, {
		init: function()
		{
			// Create the BGIFrame element
			elems.bgiframe = $('<iframe class="ui-tooltip-bgiframe" frameborder="0" tabindex="-1" src="javascript:\'\';" ' +
				' style="display:block; position:absolute; z-index:-1; filter:alpha(opacity=0); ' +
					'-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";"></iframe>');

			// Append the new element to the tooltip
			elems.bgiframe.appendTo(tooltip);

			// Update BGIFrame on tooltip move
			tooltip.bind('tooltipmove'+namespace, self.adjust);
		},

		adjust: function()
		{
			var dimensions = api.get('dimensions'), // Determine current tooltip dimensions
				plugin = api.plugins.tip,
				tip = elems.tip,
				tipAdjust, offset;

			// Adjust border offset
			offset = parseInt(tooltip.css('border-left-width'), 10) || 0;
			offset = { left: -offset, top: -offset };

			// Adjust for tips plugin
			if(plugin && tip) {
				tipAdjust = (plugin.corner.precedance === 'x') ? ['width', 'left'] : ['height', 'top'];
				offset[ tipAdjust[1] ] -= tip[ tipAdjust[0] ]();
			}

			// Update bgiframe
			elems.bgiframe.css(offset).css(dimensions);
		},

		destroy: function()
		{
			// Remove iframe
			elems.bgiframe.remove();

			// Remove bound events
			tooltip.unbind(namespace);
		}
	});

	self.init();
}

PLUGINS.bgiframe = function(api)
{
	var browser = $.browser,
		self = api.plugins.bgiframe;
	
		// Proceed only if the browser is IE6 and offending elements are present
		if($('select, object').length < 1 || !(browser.msie && (''+browser.version).charAt(0) === '6')) {
		return FALSE;
	}

	return 'object' === typeof self ? self : (api.plugins.bgiframe = new BGIFrame(api));
};

// Plugin needs to be initialized on render
PLUGINS.bgiframe.initialize = 'render';


}(jQuery, window));
function GSI_Widget_Tooltip(){this._width=200;this._heigth=100;this._arrowWidth=10;this._arrowHeight=10;this._activateOnHover=true;this._position='t';this._aTooltip=null;this._sufix=null;this._instances=[]};GSI_Widget_Tooltip.prototype=new GSI_Widget();GSI_Widget_Tooltip.prototype.name='tooltip';GSI_Widget_Tooltip.prototype.loadOrder=1;GSI_Widget_Tooltip.prototype.overTooltip=false;GSI_Widget_Tooltip.prototype._active=true;GSI_Widget_Tooltip.prototype._loadSteps=1;GSI_Widget_Tooltip.prototype.getLoadSteps=function(){return this._loadSteps};GSI_Widget_Tooltip.prototype._load=function(){var tRes=true;try{if(typeof GSI=="undefined")return false;if(!GSI.functions.isset(GSI.SID)){GSI.setError('Widget: '+this.name+' -> GSI.SID missing','WARNING');tRes=false};if(typeof GSI_Element_Tooltip=="undefined"){GSI.setError('Element: GSI_Element_Tooltip -> missing','WARNING');tRes=false}}catch(e){return false};return tRes};GSI_Widget_Tooltip.prototype.show=function(DOM,title,content,URL,width,pos,floating,height){var params=this._parseQuery(URL);params.width=width;params.position=pos;params.floating=floating;params.height=height;params.arrowWidth=10;params.arrowHeight=10;params.activateOnHover=false;params.sufix=null;this._aTooltip.start(DOM,content,params);this._aTooltip.show()};GSI_Widget_Tooltip.prototype.hide=function(){if(this._aTooltip)this._aTooltip.hide()};GSI_Widget_Tooltip.prototype._parseQuery=function(query){var Params=new Object();if(!query)return Params;var Pairs=query.split(/[;&]/);for(var i=0;i<Pairs.length;i++){var KeyVal=Pairs[i].split('=');if(!KeyVal||KeyVal.length!=2)continue;var key=unescape(KeyVal[0]),val=unescape(KeyVal[1]);val=val.replace(/\+/g,' ');Params[key]=val};return Params};GSI_Widget_Tooltip.prototype._createTooltip=function(){if(GSI_IS_TABLET){return new GSI_Element_Tooltip_Tablet()}else return new GSI_Element_Tooltip()};GSI_Widget_Tooltip.prototype.init=function(){var _mthis=this;if(!this._load()){GSI.updateProgressBar(this.name+" "+GSI.dict.getText('JSAPI','widget_initiation_error'));return false};this.loaded=true;GSI.updateProgressBar(this.name+" "+GSI.dict.getText('JSAPI','widget_initiated'));this._aTooltip=GSI.factories.getFactory('element').createTooltip();$('.GSI_Tooltip').live('mouseover mouseleave',function(event){if(this['tooltip_initiated'])return;var aTitle=$('.GSI_Tooltip_Content',this).attr('title'),params=_mthis._parseQuery(aTitle);if($(this).hasClass("tooltip-floating"))params.floating=1;var aTooltip=_mthis._createTooltip();aTooltip.start(this,$('.GSI_Tooltip_Content',this).html(),{activateOnHover:_mthis._activateOnHover,position:params.position?params.position:_mthis._position,floating:params.floating==1?true:false,width:params.width?params.width:_mthis._width,height:params.height?params.height:_mthis._heigth,arrowWidth:params.arrowWidth?parseInt(params.arrowWidth):_mthis._arrowWidth,arrowHeight:params.arrowHeight?parseInt(params.arrowHeight):_mthis._arrowHeight,sufix:params.sufix?parseInt(params.sufix):_mthis._sufix});this.tooltip_initiated=true;_mthis._instances.push(aTooltip);if(GSI_IS_TABLET==false)if(event.type=='mouseover'){aTooltip.show();return}else{aTooltip.hide();return}});return true};var tW=new GSI_Widget_Tooltip();GSI.widgets.loadWidget(tW);

/**
* $Id: Omniture.js 33621 2010-04-08 11:06:22Z iargent $
*@author: eherrera 
*@constructor
*/
function GSI_Tracker_Omniture(){
	
	function F(){};
	F.prototype = new GSI_Tracker;
	
	F.prototype.type = null;
	F.prototype.execute = function(request){
		var _mthis =this;
		
		_mthis.request = request;
		
		_mthis._run(); 
	};
	
	F.prototype._run = function(){
		var _mthis = this;
		_mthis._doExecute('');
	};
	
	F.prototype._doExecute = function(omnitureFileContent){
		var _mthis = this;
		
		var obj = _mthis._evalTrackingLines(_mthis._getTrackingLines());
		if (GSI.functions.count(obj) == 0) return;
		_mthis._clearValues(GSI_Omniture);
		GSI_Omniture = GSI.functions.array_merge(GSI_Omniture, obj);
		void(GSI_Omniture.t());		
	};
	
	F.prototype._evalTrackingLines = function(arrayTags){
		var s={};
		for(var aTag in arrayTags){
			if (aTag == 'indexOf') continue;
			eval(arrayTags[aTag]);
		}
		return s;
	};
	
	F.prototype._getTrackingLines = function(){
		//this method will be overwritten
	};
	
	F.prototype._clearValues = function(obj){
		for (var key in obj){
			var keyVal = key.substr(0,4);
			if (keyVal == 'prop' 
				|| keyVal == 'eVar'
				|| keyVal == 'g_eV'
				|| keyVal == 'g_pr') obj[key] = "";			
		}
		obj.pageName = "";
		obj.g_pageName = "";
		obj.channel = "";
		obj.g_channel = "";
		obj.events = "";
		obj.g_events = "";
		obj.products = "";		
		obj.g_products = "";
		obj._purchaseID = "";
	};
	
	return new F;
};
