bplist00_WebSubresources_WebMainResource^ "&*.26:>BFJNRW\`dhlptx|      _WebResourceResponse_WebResourceData^WebResourceURL_WebResourceMIMETypeObplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse! )/078?KWZNS.objectsWNS.keys@ABCDEFGHIJLMNOPQRSTUV _Content-EncodingTVary]Last-Modified]Cache-Control]Accept-RangesVServer^Content-LengthTDate\X-Powered-ByTEtag\Content-TypeTgzip_Accept-Encoding_Wed, 29 Aug 2007 17:02:00 GMT_+max-age=7200,post-check=3600,pre-check=7200Ubytes_Microsoft-IIS/6.0S819_Fri, 28 Dec 2007 09:06:30 GMTWASP.NET_"07465505eeac71:74ec"12noop6_NSMutableDictionary\NSDictionary12rss6_NSHTTPURLResponseInternal12uvvw6_NSHTTPURLResponse]NSURLResponse$)2DILbd  '3579ns|   */=KY`ot6>V[_uxO #map { position: relative; width: 520px; height: 504px; overflow: hidden; background:url(../images/homepage-background.png); } #overlay { position: absolute; width: 520px; height: 504px; top: 0; left: 0; background: url(../assets/store-locator-map-overlay.png); } * html #overlay { background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/assets/store-locator-map-overlay.png',sizingMethod='scale'); } #map-image { position: absolute; top: 0; left: 0; z-index: 0; } ul#regions li, ul#countries li, ul#cities li { font-size: 11px; line-height: 18px; cursor: pointer; width: 120px; text-transform: lowercase; } ul#countries li { width: 138px; } ul#cities li { width: 156px; } #regions { position: absolute; top: 0; left: 0; padding-left: 33px; padding-top: 27px; z-index: 1; } #countries { position: absolute; top: 27px; left: 173px; z-index: 1; } #cities { position: absolute; top: 27px; left: 331px; z-index: 1; } #stores { width: 756px; height: 504px; position: relative; overflow: hidden; text-transform: lowercase; } #stores-background { position: absolute; width: 756px; height: 504px; overflow: hidden; left: 821px; width: 756px; height: 504px; } #city-description { font-size: 11px; position: absolute; top: 0px; left: -252px; width: 204px; padding-right: 24px; padding-left: 24px; padding-top: 27px; margin-bottom: 15px; } #stores ul { width: 252px; height: 477px; color: #2a200d; font-size: 11px; position: absolute; } #stores-1-background, #stores-2-background, #stores-3-background { width: 252px; height: 477px; position: absolute; } #stores-1, #stores-1-background { padding-top: 57px; left: -252px; } #stores-1-background { background: url(../images/store-locator-panel-1.png); } * html #stores-1-background { background: transparent; overflow: hidden; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/store-locator-panel-1.png',sizingMethod='crop'); } #stores-2, #stores-2-background { padding-top: 27px; left: -252px; } #stores-2-background { background: url(../images/store-locator-panel-2.png); } * html #stores-2-background { background: transparent; overflow: hidden; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/store-locator-panel-2.png',sizingMethod='crop'); } #stores-3, #stores-3-background { padding-top: 27px; left: -252px; } #stores-3-background { background: url(../images/store-locator-panel-3.png); } * html #stores-3-background { background: transparent; overflow: hidden; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/store-locator-panel-3.png',sizingMethod='crop'); } #wrapper{ width: 1813px; } #layout{ width: 1813px; } #store-container{ position: absolute; width:756px; height: 504px; top:0; left:821px; } #stores-overlay { position: absolute; width:756px; height: 504px; top:0; left:0; background:url(../images/homepage-background.png); } #stores ul li { padding-left: 24px; display: block; opacity: 0.999; width: 204px; } #stores ul li div { height: auto; margin-bottom: 20px; line-height: 15px; } a.active { font-weight: bold; font-size: 10px; }_2http://www.gucci.com/stylesheets/store-locator.cssXtext/css Obplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse! )/078?KWZNS.objectsWNS.keys@ABCDEFGHIJLMNOPQRSTUV _Content-EncodingTVary]Last-Modified]Cache-Control]Accept-RangesVServer^Content-LengthTDate\X-Powered-ByTEtag\Content-TypeTgzip_Accept-Encoding_Wed, 29 Aug 2007 17:02:00 GMT_+max-age=7200,post-check=3600,pre-check=7200Ubytes_Microsoft-IIS/6.0T1623_Fri, 28 Dec 2007 09:06:34 GMTWASP.NET_"07465505eeac71:74ec"12noop6_NSMutableDictionary\NSDictionary12rss6_NSHTTPURLResponseInternal12uvvw6_NSHTTPURLResponse]NSURLResponse$)2DILbd  '3579hmv   $)7ESZin{ 19QVZp}xO%/* LIGHTBOXES */ div.lightbox.format-catalog { float: none; position: absolute; top: 0; left: 0; width: 780px; height: 504px; z-index: 100000; display: none; overflow: hidden; } div.lightbox.format-catalog div.container { position: absolute; width: 780px; left: -260px; z-index: 1; } div.lightbox.format-catalog div.details-wrapper, div.lightbox.format-catalog div.shopper-wrapper, div.lightbox.format-catalog div.styles-wrapper, div.lightbox.format-catalog div.size-guide { background: transparent; } div.lightbox.format-catalog div.product-image { background: url(../images/shop-loading.gif); } div.lightbox.format-catalog ul.headline, div.lightbox.format-catalog ul.functions { background: transparent; border-bottom: 1px solid #eadcbd; } div.lightbox.format-catalog ul.functions.bottom { background: transparent; border: 0; border-top: 1px solid #eadcbd; } div.lightbox.format-catalog div.shopper-style { margin-top: 66px; background: url(../images/catalog-description-background.png); border-top: 1px solid #e2d2af; border-bottom: 1px solid #e2d2af; } div.lightbox.format-catalog div.size-guide table thead tr { background: url(../images/catalog-description-background.png); border-top: 1px solid #e2d2af; border-bottom: 1px solid #e2d2af; } div.lightbox.format-catalog div.current-style { background: url(../images/catalog-description-background.png); } * html div.lightbox.format-catalog div.current-style { background: url(../images/catalog-description-background.png) !important; filter: none; } div.lightbox.format-catalog div.details-wrapper div.active-style { background: url(../images/catalog-description-background.png); border-top: 1px solid #e2d2af; border-bottom: 1px solid #e2d2af; } * html div.lightbox.format-catalog div.details-wrapper div.active-style { background: url(../images/catalog-description-background.png) !important; margin: 0; border-top: 2px solid #e2d2af; } *+html div.lightbox.format-catalog div.details-wrapper div.active-style { background: url(../images/catalog-description-background.png) !important; filter: none; } div.lightbox.format-catalog div.styles-wrapper div.active-style { background: #dfd2b9; color: #000; } * html div.lightbox.format-catalog div.styles-wrapper div.active-style { background: #dfd2b9 !important; filter: none; } *+html div.lightbox.format-catalog div.styles-wrapper div.active-style { background: #dfd2b9 !important; filter: none; } div.lightbox.format-catalog div.more-styles-wrapper { background: url(../images/catalog-description-background.png); border-bottom: 1px solid #e2d2af; margin-top: -1px; position: relative; } * html div.lightbox.format-catalog div.more-styles-wrapper { background: url(../images/catalog-description-background.png) !important; filter: none; } *+html div.lightbox.format-catalog div.more-styles-wrapper { background: url(../images/catalog-description-background.png) !important; filter: none; } div.lightbox.format-catalog div.size { background: url(../images/catalog-description-background.png); border-top: 1px solid #e2d2af; border-bottom: 1px solid #e2d2af; margin-top: -1px; } * html div.lightbox.format-catalog div.size { background: url(../images/catalog-description-background.png) !important; filter: none; } div.lightbox.format-catalog p.info { color: #2C200A; font: 10px/14px Verdana; padding-top: 0; } div.lightbox.format-catalog div.button { font-weight: bold; } div.lightbox.format-catalog div.size-guide table td { border-top: 1px solid #e2d2af; } div.lightbox.format-catalog div.unavailable { margin-top: 66px; padding-top: 5px; padding-left: 0px; padding-right: 0px; margin-left: 19px; margin-right: 20px; padding-bottom: 60px; border-bottom: 1px solid #eadcbd; } div.lightbox.format-catalog div.unavailable p { padding-bottom: 5px; padding-left: 0px; padding-right: 0px; margin-left: 0px; margin-right: 0px; } div.lightbox.format-catalog div.unavailable a { color: #2B200D; } div.lightbox.format-catalog div.unavailable a:hover { color: #89693b; } div.lightbox.format-catalog div.style-number { color: #6b5020; } div.lightbox.format-catalog div.configuration-info { background: none; } div.lightbox.format-catalog input, div.lightbox.format-catalog select, div.lightbox.format-catalog textarea { background-color: #ede8de; color: #2C200A; border: 1px solid #B49E70; } div.lightbox.format-catalog div.form-row.radio input { background: none; border: none; } div.lightbox div.style-list-top, div.lightbox div.style-list-bottom { background: transparent; } * html div.lightbox div.style-list-top { filter: none; } * html div.lightbox div.style-list-bottom { filter: none; } div.lightbox div.details { width: 260px; } * html div.lightbox div.details { background: transparent; } * html div.lightbox div.shopper { background: transparent; } /* CATALOG PAGES */ div.catalog-page { float: left; position: relative; width: 780px; height: 504px; background: url(/images/homepage-background.png); } div.catalog-page div.indicator { position: absolute; width: 780px; height: 504px; } div.catalog-page.loading div.indicator { background: no-repeat center center url(../../images/homepage-loading.gif); position: absolute; width: 780px; height: 504px; z-index: 0; } div.catalog-page img { position: relative; z-index: 1; border: 0; } div.catalog-page img.map { position: absolute; left: 0; right: 0; width: 780px; height: 504px; z-index: 10000; } div.catalog-page div.panel1 { overflow: hidden; width: 260px; height: 504px; position: absolute; left: -260px; top: 0; opacity: 0.99; z-index: 100; } div.panel1-background { width: 260px; height: 504px; position: absolute; left: -260px; top: 0; z-index: 0; background: url(../images/catalog-panel-1.png); } * html div.panel1-background { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/catalog-panel-1.png'); } div.catalog-page div.panel2 { overflow: hidden; width: 260px; height: 504px; position: absolute; left: -260px; top: 0; opacity: 0.99; z-index: 100; } div.panel2-background { width: 260px; height: 504px; position: absolute; left: -260px; top: 0; z-index: 0; background: url(../images/catalog-panel-2.png); } * html div.panel2-background { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/catalog-panel-2.png'); } div.catalog-page div.panel3 { overflow: hidden; width: 260px; height: 504px; position: absolute; left: -260px; top: 0; opacity: 0.99; z-index: 100; } div.panel3-background { width: 260px; height: 504px; position: absolute; left: -260px; top: 0; z-index: 0; background: url(../images/catalog-panel-3.png); } * html div.panel3-background { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/catalog-panel-3.png'); } div.thumbs-column { float: left; position: relative; width: 250px; height: 504px; } div.thumbs-column div.shadow { position: absolute; top: 0; left: 0; z-index: 0; width: 256px; height: 510px; background: url(/images/catalog-thumbs-background.jpg); } div.thumbs-column img { float:left; cursor:pointer; width: 250px; height: 162px; position: relative; margin-bottom: 9px; z-index: 1; opacity: 0; } div.catalog-page a.close { display: block; margin-top: 28px; text-align: right; margin-right: 15px; display: none; } #thumbs-icon { cursor: pointer; width: 20px; height: 19px; position: fixed; right: 106px; bottom: 100px; } * html #thumbs-icon { position: absolute; bottom: 100px; left: expression(Position.getPageSize().window.width+Position.scrollX()-120+'px'); } div.photo_note { display: none; } div.details-button { color: #000; cursor: pointer; position: absolute; bottom: 16px; left: 20px; font: 10px/9px Verdana; height: 15px; text-align: center; z-index: 1000; } div.details-button div.end { background: url(/images/reset-button-end.png); float: left; height: 18px; width: 9px; } * html div.details-button div.end { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/reset-button-end.png',sizingMethod='crop'); } div.details-button div.content { background: url(/images/reset-button.png) top left; float: left; height: 15px; padding-left: 9px; padding-top: 3px; } * html div.details-button div.content { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/reset-button.png',sizingMethod='crop'); } _,http://www.gucci.com/stylesheets/catalog.cssObplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?JUZNS.objectsWNS.keys@ABCDEFGHIKLMNOPQRST _Content-EncodingTVary]Last-Modified]Cache-Control]Accept-RangesVServer^Content-LengthTDateTEtag\Content-TypeTgzip_Accept-Encoding_Wed, 29 Aug 2007 22:23:49 GMT_+max-age=7200,post-check=3600,pre-check=7200Ubytes_Microsoft-IIS/6.0T1211_Fri, 28 Dec 2007 09:02:46 GMT_"80875458beac71:74ec"12jkkl6_NSMutableDictionary\NSDictionary12noo6_NSHTTPURLResponseInternal12qrrs6_NSHTTPURLResponse]NSURLResponse$)2DILbd  %1357]bkvz  %*8FT[jot%=BF\inqtO // name - name of the desired cookie // * return string containing value of specified cookie or null if cookie does not exist function getCookie(name) { var dc = document.cookie; var prefix = name + "="; var begin = dc.indexOf("; " + prefix); if (begin == -1) { begin = dc.indexOf(prefix); if (begin != 0) return null; } else begin += 2; var end = document.cookie.indexOf(";", begin); if (end == -1) end = dc.length; return unescape(dc.substring(begin + prefix.length, end)); } function setCookie (name, value) { var argv = setCookie.arguments; var argc = setCookie.arguments.length; var expires = (argc > 2) ? argv[2] : null; var path = (argc > 3) ? argv[3] : null; var domain = (argc > 4) ? argv[4] : null; var secure = (argc > 5) ? argv[5] : false; document.cookie = name + "=" + escape (value) + "; path=/"; } function deleteCookie (name) { var exp = new Date(); exp.setTime (exp.getTime() - 1); var cval = getCookie (name); document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString(); } var site = getCookie('site'); var language = getCookie('language'); var sourceId = getCookie('sourceId'); var country = site; // do we need this anymore? function redirect(site,language,sourceId) { if (!siteExists(site) || !langExists(language) || (isSelling(site) && (!sourceId || sourceId == ""))) { document.location = "/index.asp"; } else { var url = new String(document.location); if(url.indexOf("/" + site + "/") == -1) { document.location = "/" + site + "/index2.html"; } } } function siteExists(site) { if(!site) {return false;} site = site.toLowerCase(); if( site == "us" || site == "uk" || site == "fr" || site == "de" || site == "jp" || site == "at" || site == "be" || site == "ie" || site == "nl" || site == "kr" || site == "it" || site == "ch" || site == "int" ) return true; return false; } function langExists(lang) { if(!lang) {return false;} lang = lang.toLowerCase(); if( lang == "us-english" || lang == "uk-english" || lang == "french" || lang == "german" || lang == "japanese" || lang == "korean" || lang == "italian" ) return true; return false; } function isSelling(site) { if(!site) {return false;} if( site=="jp" || site=="kr" || site=="int" ) { return false; } return true; } // check if cookies are enabled for the browser, // would rather do this in ASP but // server side assumes they are always enabled setCookie("test","site"); if(getCookie("test") == null || getCookie("test") != "site") document.location = "/enable_cookies.html"; else { deleteCookie("test"); var urlSite = location.href.split('/')[3]; if(!siteExists(urlSite)) { redirect(site,language,sourceId); } else if(urlSite != site) { var d = location.href; d = d.replace("#", "%23"); document.location = d.replace("/"+urlSite+"/", "/guccicampaign.asp?page="+"/"+urlSite+"/"); } } var localizedMenu = '/json/menu-'+urlSite+'.js'; if(getCookie('language')=='korean'){ document.write(''); } _#http://www.gucci.com/js/localize.js_application/x-javascriptObplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?JUZNS.objectsWNS.keys@ABCDEFGHIKLMNOPQRST _Content-EncodingTVary]Last-Modified]Cache-Control]Accept-RangesVServer^Content-LengthTDateTEtag\Content-TypeTgzip_Accept-Encoding_Wed, 29 Aug 2007 19:25:02 GMT_+max-age=7200,post-check=3600,pre-check=7200Ubytes_Microsoft-IIS/6.0U21167_Fri, 28 Dec 2007 09:00:55 GMT_"0bbaa4b72eac71:74ec"12jkkl6_NSMutableDictionary\NSDictionary12noo6_NSHTTPURLResponseInternal12qrrs6_NSHTTPURLResponse]NSURLResponse$)2DILbd  '3579inw  16DR`gv{ 2JOSiv{~tOw./* Prototype JavaScript framework, version 1.5.1 * (c) 2005-2007 Sam Stephenson * * Prototype is freely distributable under the terms of an MIT-style license. * For details, see the Prototype web site: http://www.prototypejs.org/ * /*--------------------------------------------------------------------------*/ var Prototype = { Version: '1.5.1', Browser: { IE: !!(window.attachEvent && !window.opera), Opera: !!window.opera, WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1, Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1 }, BrowserFeatures: { XPath: !!document.evaluate, ElementExtensions: !!window.HTMLElement, SpecificElementExtensions: (document.createElement('div').__proto__ !== document.createElement('form').__proto__) }, ScriptFragment: ']*>([\u0001-\uFFFF]*?)', JSONFilter: /^\/\*-secure-\s*(.*)\s*\*\/\s*$/, emptyFunction: function() { }, K: function(x) { return x } } var Class = { create: function() { return function() { this.initialize.apply(this, arguments); } } } var Abstract = new Object(); Object.extend = function(destination, source) { for (var property in source) { destination[property] = source[property]; } return destination; } Object.extend(Object, { inspect: function(object) { try { if (object === undefined) return 'undefined'; if (object === null) return 'null'; return object.inspect ? object.inspect() : object.toString(); } catch (e) { if (e instanceof RangeError) return '...'; throw e; } }, toJSON: function(object) { var type = typeof object; switch(type) { case 'undefined': case 'function': case 'unknown': return; case 'boolean': return object.toString(); } if (object === null) return 'null'; if (object.toJSON) return object.toJSON(); if (object.ownerDocument === document) return; var results = []; for (var property in object) { var value = Object.toJSON(object[property]); if (value !== undefined) results.push(property.toJSON() + ': ' + value); } return '{' + results.join(', ') + '}'; }, keys: function(object) { var keys = []; for (var property in object) keys.push(property); return keys; }, values: function(object) { var values = []; for (var property in object) values.push(object[property]); return values; }, clone: function(object) { return Object.extend({}, object); } }); Function.prototype.bind = function() { var __method = this, args = $A(arguments), object = args.shift(); return function() { return __method.apply(object, args.concat($A(arguments))); } } Function.prototype.bindAsEventListener = function(object) { var __method = this, args = $A(arguments), object = args.shift(); return function(event) { return __method.apply(object, [event || window.event].concat(args)); } } Object.extend(Number.prototype, { toColorPart: function() { return this.toPaddedString(2, 16); }, succ: function() { return this + 1; }, times: function(iterator) { $R(0, this, true).each(iterator); return this; }, toPaddedString: function(length, radix) { var string = this.toString(radix || 10); return '0'.times(length - string.length) + string; }, toJSON: function() { return isFinite(this) ? this.toString() : 'null'; } }); Date.prototype.toJSON = function() { return '"' + this.getFullYear() + '-' + (this.getMonth() + 1).toPaddedString(2) + '-' + this.getDate().toPaddedString(2) + 'T' + this.getHours().toPaddedString(2) + ':' + this.getMinutes().toPaddedString(2) + ':' + this.getSeconds().toPaddedString(2) + '"'; }; var Try = { these: function() { var returnValue; for (var i = 0, length = arguments.length; i < length; i++) { var lambda = arguments[i]; try { returnValue = lambda(); break; } catch (e) {} } return returnValue; } } /*--------------------------------------------------------------------------*/ var PeriodicalExecuter = Class.create(); PeriodicalExecuter.prototype = { initialize: function(callback, frequency) { this.callback = callback; this.frequency = frequency; this.currentlyExecuting = false; this.registerCallback(); }, registerCallback: function() { this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); }, stop: function() { if (!this.timer) return; clearInterval(this.timer); this.timer = null; }, onTimerEvent: function() { if (!this.currentlyExecuting) { try { this.currentlyExecuting = true; this.callback(this); } finally { this.currentlyExecuting = false; } } } } Object.extend(String, { interpret: function(value) { return value == null ? '' : String(value); }, specialChar: { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\\': '\\\\' } }); Object.extend(String.prototype, { gsub: function(pattern, replacement) { var result = '', source = this, match; replacement = arguments.callee.prepareReplacement(replacement); while (source.length > 0) { if (match = source.match(pattern)) { result += source.slice(0, match.index); result += String.interpret(replacement(match)); source = source.slice(match.index + match[0].length); } else { result += source, source = ''; } } return result; }, sub: function(pattern, replacement, count) { replacement = this.gsub.prepareReplacement(replacement); count = count === undefined ? 1 : count; return this.gsub(pattern, function(match) { if (--count < 0) return match[0]; return replacement(match); }); }, scan: function(pattern, iterator) { this.gsub(pattern, iterator); return this; }, truncate: function(length, truncation) { length = length || 30; truncation = truncation === undefined ? '...' : truncation; return this.length > length ? this.slice(0, length - truncation.length) + truncation : this; }, strip: function() { return this.replace(/^\s+/, '').replace(/\s+$/, ''); }, stripTags: function() { return this.replace(/<\/?[^>]+>/gi, ''); }, stripScripts: function() { return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); }, extractScripts: function() { var matchAll = new RegExp(Prototype.ScriptFragment, 'img'); var matchOne = new RegExp(Prototype.ScriptFragment, 'im'); return (this.match(matchAll) || []).map(function(scriptTag) { return (scriptTag.match(matchOne) || ['', ''])[1]; }); }, evalScripts: function() { return this.extractScripts().map(function(script) { return eval(script) }); }, escapeHTML: function() { var self = arguments.callee; self.text.data = this; return self.div.innerHTML; }, unescapeHTML: function() { var div = document.createElement('div'); div.innerHTML = this.stripTags(); return div.childNodes[0] ? (div.childNodes.length > 1 ? $A(div.childNodes).inject('', function(memo, node) { return memo+node.nodeValue }) : div.childNodes[0].nodeValue) : ''; }, toQueryParams: function(separator) { var match = this.strip().match(/([^?#]*)(#.*)?$/); if (!match) return {}; return match[1].split(separator || '&').inject({}, function(hash, pair) { if ((pair = pair.split('='))[0]) { var key = decodeURIComponent(pair.shift()); var value = pair.length > 1 ? pair.join('=') : pair[0]; if (value != undefined) value = decodeURIComponent(value); if (key in hash) { if (hash[key].constructor != Array) hash[key] = [hash[key]]; hash[key].push(value); } else hash[key] = value; } return hash; }); }, toArray: function() { return this.split(''); }, succ: function() { return this.slice(0, this.length - 1) + String.fromCharCode(this.charCodeAt(this.length - 1) + 1); }, times: function(count) { var result = ''; for (var i = 0; i < count; i++) result += this; return result; }, camelize: function() { var parts = this.split('-'), len = parts.length; if (len == 1) return parts[0]; var camelized = this.charAt(0) == '-' ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1) : parts[0]; for (var i = 1; i < len; i++) camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1); return camelized; }, capitalize: function() { return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); }, underscore: function() { return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase(); }, dasherize: function() { return this.gsub(/_/,'-'); }, inspect: function(useDoubleQuotes) { var escapedString = this.gsub(/[\x00-\x1f\\]/, function(match) { var character = String.specialChar[match[0]]; return character ? character : '\\u00' + match[0].charCodeAt().toPaddedString(2, 16); }); if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"'; return "'" + escapedString.replace(/'/g, '\\\'') + "'"; }, toJSON: function() { return this.inspect(true); }, unfilterJSON: function(filter) { return this.sub(filter || Prototype.JSONFilter, '#{1}'); }, evalJSON: function(sanitize) { var json = this.unfilterJSON(); try { if (!sanitize || (/^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/.test(json))) return eval('(' + json + ')'); } catch (e) { } throw new SyntaxError('Badly formed JSON string: ' + this.inspect()); }, include: function(pattern) { return this.indexOf(pattern) > -1; }, startsWith: function(pattern) { return this.indexOf(pattern) === 0; }, endsWith: function(pattern) { var d = this.length - pattern.length; return d >= 0 && this.lastIndexOf(pattern) === d; }, empty: function() { return this == ''; }, blank: function() { return /^\s*$/.test(this); } }); if (Prototype.Browser.WebKit || Prototype.Browser.IE) Object.extend(String.prototype, { escapeHTML: function() { return this.replace(/&/g,'&').replace(//g,'>'); }, unescapeHTML: function() { return this.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>'); } }); String.prototype.gsub.prepareReplacement = function(replacement) { if (typeof replacement == 'function') return replacement; var template = new Template(replacement); return function(match) { return template.evaluate(match) }; } String.prototype.parseQuery = String.prototype.toQueryParams; Object.extend(String.prototype.escapeHTML, { div: document.createElement('div'), text: document.createTextNode('') }); with (String.prototype.escapeHTML) div.appendChild(text); var Template = Class.create(); Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; Template.prototype = { initialize: function(template, pattern) { this.template = template.toString(); this.pattern = pattern || Template.Pattern; }, evaluate: function(object) { return this.template.gsub(this.pattern, function(match) { var before = match[1]; if (before == '\\') return match[2]; return before + String.interpret(object[match[3]]); }); } } var $break = {}, $continue = new Error('"throw $continue" is deprecated, use "return" instead'); var Enumerable = { each: function(iterator) { var index = 0; try { this._each(function(value) { iterator(value, index++); }); } catch (e) { if (e != $break) throw e; } return this; }, eachSlice: function(number, iterator) { var index = -number, slices = [], array = this.toArray(); while ((index += number) < array.length) slices.push(array.slice(index, index+number)); return slices.map(iterator); }, all: function(iterator) { var result = true; this.each(function(value, index) { result = result && !!(iterator || Prototype.K)(value, index); if (!result) throw $break; }); return result; }, any: function(iterator) { var result = false; this.each(function(value, index) { if (result = !!(iterator || Prototype.K)(value, index)) throw $break; }); return result; }, collect: function(iterator) { var results = []; this.each(function(value, index) { results.push((iterator || Prototype.K)(value, index)); }); return results; }, detect: function(iterator) { var result; this.each(function(value, index) { if (iterator(value, index)) { result = value; throw $break; } }); return result; }, findAll: function(iterator) { var results = []; this.each(function(value, index) { if (iterator(value, index)) results.push(value); }); return results; }, grep: function(pattern, iterator) { var results = []; this.each(function(value, index) { var stringValue = value.toString(); if (stringValue.match(pattern)) results.push((iterator || Prototype.K)(value, index)); }) return results; }, include: function(object) { var found = false; this.each(function(value) { if (value == object) { found = true; throw $break; } }); return found; }, inGroupsOf: function(number, fillWith) { fillWith = fillWith === undefined ? null : fillWith; return this.eachSlice(number, function(slice) { while(slice.length < number) slice.push(fillWith); return slice; }); }, inject: function(memo, iterator) { this.each(function(value, index) { memo = iterator(memo, value, index); }); return memo; }, invoke: function(method) { var args = $A(arguments).slice(1); return this.map(function(value) { return value[method].apply(value, args); }); }, max: function(iterator) { var result; this.each(function(value, index) { value = (iterator || Prototype.K)(value, index); if (result == undefined || value >= result) result = value; }); return result; }, min: function(iterator) { var result; this.each(function(value, index) { value = (iterator || Prototype.K)(value, index); if (result == undefined || value < result) result = value; }); return result; }, partition: function(iterator) { var trues = [], falses = []; this.each(function(value, index) { ((iterator || Prototype.K)(value, index) ? trues : falses).push(value); }); return [trues, falses]; }, pluck: function(property) { var results = []; this.each(function(value, index) { results.push(value[property]); }); return results; }, reject: function(iterator) { var results = []; this.each(function(value, index) { if (!iterator(value, index)) results.push(value); }); return results; }, sortBy: function(iterator) { return this.map(function(value, index) { return {value: value, criteria: iterator(value, index)}; }).sort(function(left, right) { var a = left.criteria, b = right.criteria; return a < b ? -1 : a > b ? 1 : 0; }).pluck('value'); }, toArray: function() { return this.map(); }, zip: function() { var iterator = Prototype.K, args = $A(arguments); if (typeof args.last() == 'function') iterator = args.pop(); var collections = [this].concat(args).map($A); return this.map(function(value, index) { return iterator(collections.pluck(index)); }); }, size: function() { return this.toArray().length; }, inspect: function() { return '#'; } } Object.extend(Enumerable, { map: Enumerable.collect, find: Enumerable.detect, select: Enumerable.findAll, member: Enumerable.include, entries: Enumerable.toArray }); var $A = Array.from = function(iterable) { if (!iterable) return []; if (iterable.toArray) { return iterable.toArray(); } else { var results = []; for (var i = 0, length = iterable.length; i < length; i++) results.push(iterable[i]); return results; } } if (Prototype.Browser.WebKit) { $A = Array.from = function(iterable) { if (!iterable) return []; if (!(typeof iterable == 'function' && iterable == '[object NodeList]') && iterable.toArray) { return iterable.toArray(); } else { var results = []; for (var i = 0, length = iterable.length; i < length; i++) results.push(iterable[i]); return results; } } } Object.extend(Array.prototype, Enumerable); if (!Array.prototype._reverse) Array.prototype._reverse = Array.prototype.reverse; Object.extend(Array.prototype, { _each: function(iterator) { for (var i = 0, length = this.length; i < length; i++) iterator(this[i]); }, clear: function() { this.length = 0; return this; }, first: function() { return this[0]; }, last: function() { return this[this.length - 1]; }, compact: function() { return this.select(function(value) { return value != null; }); }, flatten: function() { return this.inject([], function(array, value) { return array.concat(value && value.constructor == Array ? value.flatten() : [value]); }); }, without: function() { var values = $A(arguments); return this.select(function(value) { return !values.include(value); }); }, indexOf: function(object) { for (var i = 0, length = this.length; i < length; i++) if (this[i] == object) return i; return -1; }, reverse: function(inline) { return (inline !== false ? this : this.toArray())._reverse(); }, reduce: function() { return this.length > 1 ? this : this[0]; }, uniq: function(sorted) { return this.inject([], function(array, value, index) { if (0 == index || (sorted ? array.last() != value : !array.include(value))) array.push(value); return array; }); }, clone: function() { return [].concat(this); }, size: function() { return this.length; }, inspect: function() { return '[' + this.map(Object.inspect).join(', ') + ']'; }, toJSON: function() { var results = []; this.each(function(object) { var value = Object.toJSON(object); if (value !== undefined) results.push(value); }); return '[' + results.join(', ') + ']'; } }); Array.prototype.toArray = Array.prototype.clone; function $w(string) { string = string.strip(); return string ? string.split(/\s+/) : []; } if (Prototype.Browser.Opera){ Array.prototype.concat = function() { var array = []; for (var i = 0, length = this.length; i < length; i++) array.push(this[i]); for (var i = 0, length = arguments.length; i < length; i++) { if (arguments[i].constructor == Array) { for (var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++) array.push(arguments[i][j]); } else { array.push(arguments[i]); } } return array; } } var Hash = function(object) { if (object instanceof Hash) this.merge(object); else Object.extend(this, object || {}); }; Object.extend(Hash, { toQueryString: function(obj) { var parts = []; parts.add = arguments.callee.addPair; this.prototype._each.call(obj, function(pair) { if (!pair.key) return; var value = pair.value; if (value && typeof value == 'object') { if (value.constructor == Array) value.each(function(value) { parts.add(pair.key, value); }); return; } parts.add(pair.key, value); }); return parts.join('&'); }, toJSON: function(object) { var results = []; this.prototype._each.call(object, function(pair) { var value = Object.toJSON(pair.value); if (value !== undefined) results.push(pair.key.toJSON() + ': ' + value); }); return '{' + results.join(', ') + '}'; } }); Hash.toQueryString.addPair = function(key, value, prefix) { key = encodeURIComponent(key); if (value === undefined) this.push(key); else this.push(key + '=' + (value == null ? '' : encodeURIComponent(value))); } Object.extend(Hash.prototype, Enumerable); Object.extend(Hash.prototype, { _each: function(iterator) { for (var key in this) { var value = this[key]; if (value && value == Hash.prototype[key]) continue; var pair = [key, value]; pair.key = key; pair.value = value; iterator(pair); } }, keys: function() { return this.pluck('key'); }, values: function() { return this.pluck('value'); }, merge: function(hash) { return $H(hash).inject(this, function(mergedHash, pair) { mergedHash[pair.key] = pair.value; return mergedHash; }); }, remove: function() { var result; for(var i = 0, length = arguments.length; i < length; i++) { var value = this[arguments[i]]; if (value !== undefined){ if (result === undefined) result = value; else { if (result.constructor != Array) result = [result]; result.push(value) } } delete this[arguments[i]]; } return result; }, toQueryString: function() { return Hash.toQueryString(this); }, inspect: function() { return '#'; }, toJSON: function() { return Hash.toJSON(this); } }); function $H(object) { if (object instanceof Hash) return object; return new Hash(object); }; // Safari iterates over shadowed properties if (function() { var i = 0, Test = function(value) { this.key = value }; Test.prototype.key = 'foo'; for (var property in new Test('bar')) i++; return i > 1; }()) Hash.prototype._each = function(iterator) { var cache = []; for (var key in this) { var value = this[key]; if ((value && value == Hash.prototype[key]) || cache.include(key)) continue; cache.push(key); var pair = [key, value]; pair.key = key; pair.value = value; iterator(pair); } }; ObjectRange = Class.create(); Object.extend(ObjectRange.prototype, Enumerable); Object.extend(ObjectRange.prototype, { initialize: function(start, end, exclusive) { this.start = start; this.end = end; this.exclusive = exclusive; }, _each: function(iterator) { var value = this.start; while (this.include(value)) { iterator(value); value = value.succ(); } }, include: function(value) { if (value < this.start) return false; if (this.exclusive) return value < this.end; return value <= this.end; } }); var $R = function(start, end, exclusive) { return new ObjectRange(start, end, exclusive); } var Ajax = { getTransport: function() { return Try.these( function() {return new XMLHttpRequest()}, function() {return new ActiveXObject('Msxml2.XMLHTTP')}, function() {return new ActiveXObject('Microsoft.XMLHTTP')} ) || false; }, activeRequestCount: 0 } Ajax.Responders = { responders: [], _each: function(iterator) { this.responders._each(iterator); }, register: function(responder) { if (!this.include(responder)) this.responders.push(responder); }, unregister: function(responder) { this.responders = this.responders.without(responder); }, dispatch: function(callback, request, transport, json) { this.each(function(responder) { if (typeof responder[callback] == 'function') { try { responder[callback].apply(responder, [request, transport, json]); } catch (e) {} } }); } }; Object.extend(Ajax.Responders, Enumerable); Ajax.Responders.register({ onCreate: function() { Ajax.activeRequestCount++; }, onComplete: function() { Ajax.activeRequestCount--; } }); Ajax.Base = function() {}; Ajax.Base.prototype = { setOptions: function(options) { this.options = { method: 'post', asynchronous: true, contentType: 'application/x-www-form-urlencoded', encoding: 'UTF-8', parameters: '' } Object.extend(this.options, options || {}); this.options.method = this.options.method.toLowerCase(); if (typeof this.options.parameters == 'string') this.options.parameters = this.options.parameters.toQueryParams(); } } Ajax.Request = Class.create(); Ajax.Request.Events = ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; Ajax.Request.prototype = Object.extend(new Ajax.Base(), { _complete: false, initialize: function(url, options) { this.transport = Ajax.getTransport(); this.setOptions(options); this.request(url); }, request: function(url) { this.url = url; this.method = this.options.method; var params = Object.clone(this.options.parameters); if (!['get', 'post'].include(this.method)) { // simulate other verbs over post params['_method'] = this.method; this.method = 'post'; } this.parameters = params; if (params = Hash.toQueryString(params)) { // when GET, append parameters to URL if (this.method == 'get') this.url += (this.url.include('?') ? '&' : '?') + params; else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) params += '&_='; } try { if (this.options.onCreate) this.options.onCreate(this.transport); Ajax.Responders.dispatch('onCreate', this, this.transport); this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous); if (this.options.asynchronous) setTimeout(function() { this.respondToReadyState(1) }.bind(this), 10); this.transport.onreadystatechange = this.onStateChange.bind(this); this.setRequestHeaders(); this.body = this.method == 'post' ? (this.options.postBody || params) : null; this.transport.send(this.body); /* Force Firefox to handle ready state 4 for synchronous requests */ if (!this.options.asynchronous && this.transport.overrideMimeType) this.onStateChange(); } catch (e) { this.dispatchException(e); } }, onStateChange: function() { var readyState = this.transport.readyState; if (readyState > 1 && !((readyState == 4) && this._complete)) this.respondToReadyState(this.transport.readyState); }, setRequestHeaders: function() { var headers = { 'X-Requested-With': 'XMLHttpRequest', 'X-Prototype-Version': Prototype.Version, 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' }; if (this.method == 'post') { headers['Content-type'] = this.options.contentType + (this.options.encoding ? '; charset=' + this.options.encoding : ''); /* Force "Connection: close" for older Mozilla browsers to work * around a bug where XMLHttpRequest sends an incorrect * Content-length header. See Mozilla Bugzilla #246651. */ if (this.transport.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) headers['Connection'] = 'close'; } // user-defined headers if (typeof this.options.requestHeaders == 'object') { var extras = this.options.requestHeaders; if (typeof extras.push == 'function') for (var i = 0, length = extras.length; i < length; i += 2) headers[extras[i]] = extras[i+1]; else $H(extras).each(function(pair) { headers[pair.key] = pair.value }); } for (var name in headers) this.transport.setRequestHeader(name, headers[name]); }, success: function() { return !this.transport.status || (this.transport.status >= 200 && this.transport.status < 300); }, respondToReadyState: function(readyState) { var state = Ajax.Request.Events[readyState]; var transport = this.transport, json = this.evalJSON(); if (state == 'Complete') { try { this._complete = true; (this.options['on' + this.transport.status] || this.options['on' + (this.success() ? 'Success' : 'Failure')] || Prototype.emptyFunction)(transport, json); } catch (e) { this.dispatchException(e); } var contentType = this.getHeader('Content-type'); if (contentType && contentType.strip(). match(/^(text|application)\/(x-)?(java|ecma)script(;.*)?$/i)) this.evalResponse(); } try { (this.options['on' + state] || Prototype.emptyFunction)(transport, json); Ajax.Responders.dispatch('on' + state, this, transport, json); } catch (e) { this.dispatchException(e); } if (state == 'Complete') { // avoid memory leak in MSIE: clean up this.transport.onreadystatechange = Prototype.emptyFunction; } }, getHeader: function(name) { try { return this.transport.getResponseHeader(name); } catch (e) { return null } }, evalJSON: function() { try { var json = this.getHeader('X-JSON'); return json ? json.evalJSON() : null; } catch (e) { return null } }, evalResponse: function() { try { return eval((this.transport.responseText || '').unfilterJSON()); } catch (e) { this.dispatchException(e); } }, dispatchException: function(exception) { (this.options.onException || Prototype.emptyFunction)(this, exception); Ajax.Responders.dispatch('onException', this, exception); } }); Ajax.Updater = Class.create(); Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), { initialize: function(container, url, options) { this.container = { success: (container.success || container), failure: (container.failure || (container.success ? null : container)) } this.transport = Ajax.getTransport(); this.setOptions(options); var onComplete = this.options.onComplete || Prototype.emptyFunction; this.options.onComplete = (function(transport, param) { this.updateContent(); onComplete(transport, param); }).bind(this); this.request(url); }, updateContent: function() { var receiver = this.container[this.success() ? 'success' : 'failure']; var response = this.transport.responseText; if (!this.options.evalScripts) response = response.stripScripts(); if (receiver = $(receiver)) { if (this.options.insertion) new this.options.insertion(receiver, response); else receiver.update(response); } if (this.success()) { if (this.onComplete) setTimeout(this.onComplete.bind(this), 10); } } }); Ajax.PeriodicalUpdater = Class.create(); Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), { initialize: function(container, url, options) { this.setOptions(options); this.onComplete = this.options.onComplete; this.frequency = (this.options.frequency || 2); this.decay = (this.options.decay || 1); this.updater = {}; this.container = container; this.url = url; this.start(); }, start: function() { this.options.onComplete = this.updateComplete.bind(this); this.onTimerEvent(); }, stop: function() { this.updater.options.onComplete = undefined; clearTimeout(this.timer); (this.onComplete || Prototype.emptyFunction).apply(this, arguments); }, updateComplete: function(request) { if (this.options.decay) { this.decay = (request.responseText == this.lastText ? this.decay * this.options.decay : 1); this.lastText = request.responseText; } this.timer = setTimeout(this.onTimerEvent.bind(this), this.decay * this.frequency * 1000); }, onTimerEvent: function() { this.updater = new Ajax.Updater(this.container, this.url, this.options); } }); function $(element) { if (arguments.length > 1) { for (var i = 0, elements = [], length = arguments.length; i < length; i++) elements.push($(arguments[i])); return elements; } if (typeof element == 'string') element = document.getElementById(element); return Element.extend(element); } if (Prototype.BrowserFeatures.XPath) { document._getElementsByXPath = function(expression, parentElement) { var results = []; var query = document.evaluate(expression, $(parentElement) || document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0, length = query.snapshotLength; i < length; i++) results.push(query.snapshotItem(i)); return results; }; document.getElementsByClassName = function(className, parentElement) { var q = ".//*[contains(concat(' ', @class, ' '), ' " + className + " ')]"; return document._getElementsByXPath(q, parentElement); } } else document.getElementsByClassName = function(className, parentElement) { var children = ($(parentElement) || document.body).getElementsByTagName('*'); var elements = [], child; for (var i = 0, length = children.length; i < length; i++) { child = children[i]; if (Element.hasClassName(child, className)) elements.push(Element.extend(child)); } return elements; }; /*--------------------------------------------------------------------------*/ if (!window.Element) var Element = {}; Element.extend = function(element) { var F = Prototype.BrowserFeatures; if (!element || !element.tagName || element.nodeType == 3 || element._extended || F.SpecificElementExtensions || element == window) return element; var methods = {}, tagName = element.tagName, cache = Element.extend.cache, T = Element.Methods.ByTag; // extend methods for all tags (Safari doesn't need this) if (!F.ElementExtensions) { Object.extend(methods, Element.Methods), Object.extend(methods, Element.Methods.Simulated); } // extend methods for specific tags if (T[tagName]) Object.extend(methods, T[tagName]); for (var property in methods) { var value = methods[property]; if (typeof value == 'function' && !(property in element)) element[property] = cache.findOrStore(value); } element._extended = Prototype.emptyFunction; return element; }; Element.extend.cache = { findOrStore: function(value) { return this[value] = this[value] || function() { return value.apply(null, [this].concat($A(arguments))); } } }; Element.Methods = { visible: function(element) { return $(element).style.display != 'none'; }, toggle: function(element) { element = $(element); Element[Element.visible(element) ? 'hide' : 'show'](element); return element; }, hide: function(element) { $(element).style.display = 'none'; return element; }, show: function(element) { $(element).style.display = ''; return element; }, remove: function(element) { element = $(element); element.parentNode.removeChild(element); return element; }, update: function(element, html) { html = typeof html == 'undefined' ? '' : html.toString(); $(element).innerHTML = html.stripScripts(); setTimeout(function() {html.evalScripts()}, 10); return element; }, replace: function(element, html) { element = $(element); html = typeof html == 'undefined' ? '' : html.toString(); if (element.outerHTML) { element.outerHTML = html.stripScripts(); } else { var range = element.ownerDocument.createRange(); range.selectNodeContents(element); element.parentNode.replaceChild( range.createContextualFragment(html.stripScripts()), element); } setTimeout(function() {html.evalScripts()}, 10); return element; }, inspect: function(element) { element = $(element); var result = '<' + element.tagName.toLowerCase(); $H({'id': 'id', 'className': 'class'}).each(function(pair) { var property = pair.first(), attribute = pair.last(); var value = (element[property] || '').toString(); if (value) result += ' ' + attribute + '=' + value.inspect(true); }); return result + '>'; }, recursivelyCollect: function(element, property) { element = $(element); var elements = []; while (element = element[property]) if (element.nodeType == 1) elements.push(Element.extend(element)); return elements; }, ancestors: function(element) { return $(element).recursivelyCollect('parentNode'); }, descendants: function(element) { return $A($(element).getElementsByTagName('*')).each(Element.extend); }, firstDescendant: function(element) { element = $(element).firstChild; while (element && element.nodeType != 1) element = element.nextSibling; return $(element); }, immediateDescendants: function(element) { if (!(element = $(element).firstChild)) return []; while (element && element.nodeType != 1) element = element.nextSibling; if (element) return [element].concat($(element).nextSiblings()); return []; }, previousSiblings: function(element) { return $(element).recursivelyCollect('previousSibling'); }, nextSiblings: function(element) { return $(element).recursivelyCollect('nextSibling'); }, siblings: function(element) { element = $(element); return element.previousSiblings().reverse().concat(element.nextSiblings()); }, match: function(element, selector) { if (typeof selector == 'string') selector = new Selector(selector); return selector.match($(element)); }, up: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(element.parentNode); var ancestors = element.ancestors(); return expression ? Selector.findElement(ancestors, expression, index) : ancestors[index || 0]; }, down: function(element, expression, index) { element = $(element); if (arguments.length == 1) return element.firstDescendant(); var descendants = element.descendants(); return expression ? Selector.findElement(descendants, expression, index) : descendants[index || 0]; }, previous: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element)); var previousSiblings = element.previousSiblings(); return expression ? Selector.findElement(previousSiblings, expression, index) : previousSiblings[index || 0]; }, next: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element)); var nextSiblings = element.nextSiblings(); return expression ? Selector.findElement(nextSiblings, expression, index) : nextSiblings[index || 0]; }, getElementsBySelector: function() { var args = $A(arguments), element = $(args.shift()); return Selector.findChildElements(element, args); }, getElementsByClassName: function(element, className) { return document.getElementsByClassName(className, element); }, readAttribute: function(element, name) { element = $(element); if (Prototype.Browser.IE) { if (!element.attributes) return null; var t = Element._attributeTranslations; if (t.values[name]) return t.values[name](element, name); if (t.names[name]) name = t.names[name]; var attribute = element.attributes[name]; return attribute ? attribute.nodeValue : null; } return element.getAttribute(name); }, getHeight: function(element) { return $(element).getDimensions().height; }, getWidth: function(element) { return $(element).getDimensions().width; }, classNames: function(element) { return new Element.ClassNames(element); }, hasClassName: function(element, className) { if (!(element = $(element))) return; var elementClassName = element.className; if (elementClassName.length == 0) return false; if (elementClassName == className || elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)"))) return true; return false; }, addClassName: function(element, className) { if (!(element = $(element))) return; Element.classNames(element).add(className); return element; }, removeClassName: function(element, className) { if (!(element = $(element))) return; Element.classNames(element).remove(className); return element; }, toggleClassName: function(element, className) { if (!(element = $(element))) return; Element.classNames(element)[element.hasClassName(className) ? 'remove' : 'add'](className); return element; }, observe: function() { Event.observe.apply(Event, arguments); return $A(arguments).first(); }, stopObserving: function() { Event.stopObserving.apply(Event, arguments); return $A(arguments).first(); }, // removes whitespace-only text node children cleanWhitespace: function(element) { element = $(element); var node = element.firstChild; while (node) { var nextNode = node.nextSibling; if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) element.removeChild(node); node = nextNode; } return element; }, empty: function(element) { return $(element).innerHTML.blank(); }, descendantOf: function(element, ancestor) { element = $(element), ancestor = $(ancestor); while (element = element.parentNode) if (element == ancestor) return true; return false; }, scrollTo: function(element) { element = $(element); var pos = Position.cumulativeOffset(element); window.scrollTo(pos[0], pos[1]); return element; }, getStyle: function(element, style) { element = $(element); style = style == 'float' ? 'cssFloat' : style.camelize(); var value = element.style[style]; if (!value) { var css = document.defaultView.getComputedStyle(element, null); value = css ? css[style] : null; } if (style == 'opacity') return value ? parseFloat(value) : 1.0; return value == 'auto' ? null : value; }, getOpacity: function(element) { return $(element).getStyle('opacity'); }, setStyle: function(element, styles, camelized) { element = $(element); var elementStyle = element.style; for (var property in styles) if (property == 'opacity') element.setOpacity(styles[property]) else elementStyle[(property == 'float' || property == 'cssFloat') ? (elementStyle.styleFloat === undefined ? 'cssFloat' : 'styleFloat') : (camelized ? property : property.camelize())] = styles[property]; return element; }, setOpacity: function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }, getDimensions: function(element) { element = $(element); var display = $(element).getStyle('display'); if (display != 'none' && display != null) // Safari bug return {width: element.offsetWidth, height: element.offsetHeight}; // All *Width and *Height properties give 0 on elements with display none, // so enable the element temporarily var els = element.style; var originalVisibility = els.visibility; var originalPosition = els.position; var originalDisplay = els.display; els.visibility = 'hidden'; els.position = 'absolute'; els.display = 'block'; var originalWidth = element.clientWidth; var originalHeight = element.clientHeight; els.display = originalDisplay; els.position = originalPosition; els.visibility = originalVisibility; return {width: originalWidth, height: originalHeight}; }, makePositioned: function(element) { element = $(element); var pos = Element.getStyle(element, 'position'); if (pos == 'static' || !pos) { element._madePositioned = true; element.style.position = 'relative'; // Opera returns the offset relative to the positioning context, when an // element is position relative but top and left have not been defined if (window.opera) { element.style.top = 0; element.style.left = 0; } } return element; }, undoPositioned: function(element) { element = $(element); if (element._madePositioned) { element._madePositioned = undefined; element.style.position = element.style.top = element.style.left = element.style.bottom = element.style.right = ''; } return element; }, makeClipping: function(element) { element = $(element); if (element._overflow) return element; element._overflow = element.style.overflow || 'auto'; if ((Element.getStyle(element, 'overflow') || 'visible') != 'hidden') element.style.overflow = 'hidden'; return element; }, undoClipping: function(element) { element = $(element); if (!element._overflow) return element; element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; element._overflow = null; return element; } }; Object.extend(Element.Methods, { childOf: Element.Methods.descendantOf, childElements: Element.Methods.immediateDescendants }); if (Prototype.Browser.Opera) { Element.Methods._getStyle = Element.Methods.getStyle; Element.Methods.getStyle = function(element, style) { switch(style) { case 'left': case 'top': case 'right': case 'bottom': if (Element._getStyle(element, 'position') == 'static') return null; default: return Element._getStyle(element, style); } }; } else if (Prototype.Browser.IE) { Element.Methods.getStyle = function(element, style) { element = $(element); style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize(); var value = element.style[style]; if (!value && element.currentStyle) value = element.currentStyle[style]; if (style == 'opacity') { if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) if (value[1]) return parseFloat(value[1]) / 100; return 1.0; } if (value == 'auto') { if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none')) return element['offset'+style.capitalize()] + 'px'; return null; } return value; }; Element.Methods.setOpacity = function(element, value) { element = $(element); var filter = element.getStyle('filter'), style = element.style; if (value == 1 || value === '') { style.filter = filter.replace(/alpha\([^\)]*\)/gi,''); return element; } else if (value < 0.00001) value = 0; style.filter = filter.replace(/alpha\([^\)]*\)/gi, '') + 'alpha(opacity=' + (value * 100) + ')'; return element; }; // IE is missing .innerHTML support for TABLE-related elements Element.Methods.update = function(element, html) { element = $(element); html = typeof html == 'undefined' ? '' : html.toString(); var tagName = element.tagName.toUpperCase(); if (['THEAD','TBODY','TR','TD'].include(tagName)) { var div = document.createElement('div'); switch (tagName) { case 'THEAD': case 'TBODY': div.innerHTML = '' + html.stripScripts() + '
'; depth = 2; break; case 'TR': div.innerHTML = '' + html.stripScripts() + '
'; depth = 3; break; case 'TD': div.innerHTML = '
' + html.stripScripts() + '
'; depth = 4; } $A(element.childNodes).each(function(node) { element.removeChild(node) }); depth.times(function() { div = div.firstChild }); $A(div.childNodes).each(function(node) { element.appendChild(node) }); } else { element.innerHTML = html.stripScripts(); } setTimeout(function() { html.evalScripts() }, 10); return element; } } else if (Prototype.Browser.Gecko) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1) ? 0.999999 : (value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }; } Element._attributeTranslations = { names: { colspan: "colSpan", rowspan: "rowSpan", valign: "vAlign", datetime: "dateTime", accesskey: "accessKey", tabindex: "tabIndex", enctype: "encType", maxlength: "maxLength", readonly: "readOnly", longdesc: "longDesc" }, values: { _getAttr: function(element, attribute) { return element.getAttribute(attribute, 2); }, _flag: function(element, attribute) { return $(element).hasAttribute(attribute) ? attribute : null; }, style: function(element) { return element.style.cssText.toLowerCase(); }, title: function(element) { var node = element.getAttributeNode('title'); return node.specified ? node.nodeValue : null; } } }; (function() { Object.extend(this, { href: this._getAttr, src: this._getAttr, type: this._getAttr, disabled: this._flag, checked: this._flag, readonly: this._flag, multiple: this._flag }); }).call(Element._attributeTranslations.values); Element.Methods.Simulated = { hasAttribute: function(element, attribute) { var t = Element._attributeTranslations, node; attribute = t.names[attribute] || attribute; node = $(element).getAttributeNode(attribute); return node && node.specified; } }; Element.Methods.ByTag = {}; Object.extend(Element, Element.Methods); if (!Prototype.BrowserFeatures.ElementExtensions && document.createElement('div').__proto__) { window.HTMLElement = {}; window.HTMLElement.prototype = document.createElement('div').__proto__; Prototype.BrowserFeatures.ElementExtensions = true; } Element.hasAttribute = function(element, attribute) { if (element.hasAttribute) return element.hasAttribute(attribute); return Element.Methods.Simulated.hasAttribute(element, attribute); }; Element.addMethods = function(methods) { var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag; if (!methods) { Object.extend(Form, Form.Methods); Object.extend(Form.Element, Form.Element.Methods); Object.extend(Element.Methods.ByTag, { "FORM": Object.clone(Form.Methods), "INPUT": Object.clone(Form.Element.Methods), "SELECT": Object.clone(Form.Element.Methods), "TEXTAREA": Object.clone(Form.Element.Methods) }); } if (arguments.length == 2) { var tagName = methods; methods = arguments[1]; } if (!tagName) Object.extend(Element.Methods, methods || {}); else { if (tagName.constructor == Array) tagName.each(extend); else extend(tagName); } function extend(tagName) { tagName = tagName.toUpperCase(); if (!Element.Methods.ByTag[tagName]) Element.Methods.ByTag[tagName] = {}; Object.extend(Element.Methods.ByTag[tagName], methods); } function copy(methods, destination, onlyIfAbsent) { onlyIfAbsent = onlyIfAbsent || false; var cache = Element.extend.cache; for (var property in methods) { var value = methods[property]; if (!onlyIfAbsent || !(property in destination)) destination[property] = cache.findOrStore(value); } } function findDOMClass(tagName) { var klass; var trans = { "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR": "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": "FrameSet", "IFRAME": "IFrame" }; if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName.capitalize() + 'Element'; if (window[klass]) return window[klass]; window[klass] = {}; window[klass].prototype = document.createElement(tagName).__proto__; return window[klass]; } if (F.ElementExtensions) { copy(Element.Methods, HTMLElement.prototype); copy(Element.Methods.Simulated, HTMLElement.prototype, true); } if (F.SpecificElementExtensions) { for (var tag in Element.Methods.ByTag) { var klass = findDOMClass(tag); if (typeof klass == "undefined") continue; copy(T[tag], klass.prototype); } } Object.extend(Element, Element.Methods); delete Element.ByTag; }; var Toggle = { display: Element.toggle }; /*--------------------------------------------------------------------------*/ Abstract.Insertion = function(adjacency) { this.adjacency = adjacency; } Abstract.Insertion.prototype = { initialize: function(element, content) { this.element = $(element); this.content = content.stripScripts(); if (this.adjacency && this.element.insertAdjacentHTML) { try { this.element.insertAdjacentHTML(this.adjacency, this.content); } catch (e) { var tagName = this.element.tagName.toUpperCase(); if (['TBODY', 'TR'].include(tagName)) { this.insertContent(this.contentFromAnonymousTable()); } else { throw e; } } } else { this.range = this.element.ownerDocument.createRange(); if (this.initializeRange) this.initializeRange(); this.insertContent([this.range.createContextualFragment(this.content)]); } setTimeout(function() {content.evalScripts()}, 10); }, contentFromAnonymousTable: function() { var div = document.createElement('div'); div.innerHTML = '' + this.content + '
'; return $A(div.childNodes[0].childNodes[0].childNodes); } } var Insertion = new Object(); Insertion.Before = Class.create(); Insertion.Before.prototype = Object.extend(new Abstract.Insertion('beforeBegin'), { initializeRange: function() { this.range.setStartBefore(this.element); }, insertContent: function(fragments) { fragments.each((function(fragment) { this.element.parentNode.insertBefore(fragment, this.element); }).bind(this)); } }); Insertion.Top = Class.create(); Insertion.Top.prototype = Object.extend(new Abstract.Insertion('afterBegin'), { initializeRange: function() { this.range.selectNodeContents(this.element); this.range.collapse(true); }, insertContent: function(fragments) { fragments.reverse(false).each((function(fragment) { this.element.insertBefore(fragment, this.element.firstChild); }).bind(this)); } }); Insertion.Bottom = Class.create(); Insertion.Bottom.prototype = Object.extend(new Abstract.Insertion('beforeEnd'), { initializeRange: function() { this.range.selectNodeContents(this.element); this.range.collapse(this.element); }, insertContent: function(fragments) { fragments.each((function(fragment) { this.element.appendChild(fragment); }).bind(this)); } }); Insertion.After = Class.create(); Insertion.After.prototype = Object.extend(new Abstract.Insertion('afterEnd'), { initializeRange: function() { this.range.setStartAfter(this.element); }, insertContent: function(fragments) { fragments.each((function(fragment) { this.element.parentNode.insertBefore(fragment, this.element.nextSibling); }).bind(this)); } }); /*--------------------------------------------------------------------------*/ Element.ClassNames = Class.create(); Element.ClassNames.prototype = { initialize: function(element) { this.element = $(element); }, _each: function(iterator) { this.element.className.split(/\s+/).select(function(name) { return name.length > 0; })._each(iterator); }, set: function(className) { this.element.className = className; }, add: function(classNameToAdd) { if (this.include(classNameToAdd)) return; this.set($A(this).concat(classNameToAdd).join(' ')); }, remove: function(classNameToRemove) { if (!this.include(classNameToRemove)) return; this.set($A(this).without(classNameToRemove).join(' ')); }, toString: function() { return $A(this).join(' '); } }; Object.extend(Element.ClassNames.prototype, Enumerable); /* Portions of the Selector class are derived from Jack Slocum’s DomQuery, * part of YUI-Ext version 0.40, distributed under the terms of an MIT-style * license. Please see http://www.yui-ext.com/ for more information. */ var Selector = Class.create(); Selector.prototype = { initialize: function(expression) { this.expression = expression.strip(); this.compileMatcher(); }, compileMatcher: function() { // Selectors with namespaced attributes can't use the XPath version if (Prototype.BrowserFeatures.XPath && !(/\[[\w-]*?:/).test(this.expression)) return this.compileXPathMatcher(); var e = this.expression, ps = Selector.patterns, h = Selector.handlers, c = Selector.criteria, le, p, m; if (Selector._cache[e]) { this.matcher = Selector._cache[e]; return; } this.matcher = ["this.matcher = function(root) {", "var r = root, h = Selector.handlers, c = false, n;"]; while (e && le != e && (/\S/).test(e)) { le = e; for (var i in ps) { p = ps[i]; if (m = e.match(p)) { this.matcher.push(typeof c[i] == 'function' ? c[i](m) : new Template(c[i]).evaluate(m)); e = e.replace(m[0], ''); break; } } } this.matcher.push("return h.unique(n);\n}"); eval(this.matcher.join('\n')); Selector._cache[this.expression] = this.matcher; }, compileXPathMatcher: function() { var e = this.expression, ps = Selector.patterns, x = Selector.xpath, le, m; if (Selector._cache[e]) { this.xpath = Selector._cache[e]; return; } this.matcher = ['.//*']; while (e && le != e && (/\S/).test(e)) { le = e; for (var i in ps) { if (m = e.match(ps[i])) { this.matcher.push(typeof x[i] == 'function' ? x[i](m) : new Template(x[i]).evaluate(m)); e = e.replace(m[0], ''); break; } } } this.xpath = this.matcher.join(''); Selector._cache[this.expression] = this.xpath; }, findElements: function(root) { root = root || document; if (this.xpath) return document._getElementsByXPath(this.xpath, root); return this.matcher(root); }, match: function(element) { return this.findElements(document).include(element); }, toString: function() { return this.expression; }, inspect: function() { return "#"; } }; Object.extend(Selector, { _cache: {}, xpath: { descendant: "//*", child: "/*", adjacent: "/following-sibling::*[1]", laterSibling: '/following-sibling::*', tagName: function(m) { if (m[1] == '*') return ''; return "[local-name()='" + m[1].toLowerCase() + "' or local-name()='" + m[1].toUpperCase() + "']"; }, className: "[contains(concat(' ', @class, ' '), ' #{1} ')]", id: "[@id='#{1}']", attrPresence: "[@#{1}]", attr: function(m) { m[3] = m[5] || m[6]; return new Template(Selector.xpath.operators[m[2]]).evaluate(m); }, pseudo: function(m) { var h = Selector.xpath.pseudos[m[1]]; if (!h) return ''; if (typeof h === 'function') return h(m); return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m); }, operators: { '=': "[@#{1}='#{3}']", '!=': "[@#{1}!='#{3}']", '^=': "[starts-with(@#{1}, '#{3}')]", '$=': "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']", '*=': "[contains(@#{1}, '#{3}')]", '~=': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]", '|=': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]" }, pseudos: { 'first-child': '[not(preceding-sibling::*)]', 'last-child': '[not(following-sibling::*)]', 'only-child': '[not(preceding-sibling::* or following-sibling::*)]', 'empty': "[count(*) = 0 and (count(text()) = 0 or translate(text(), ' \t\r\n', '') = '')]", 'checked': "[@checked]", 'disabled': "[@disabled]", 'enabled': "[not(@disabled)]", 'not': function(m) { var e = m[6], p = Selector.patterns, x = Selector.xpath, le, m, v; var exclusion = []; while (e && le != e && (/\S/).test(e)) { le = e; for (var i in p) { if (m = e.match(p[i])) { v = typeof x[i] == 'function' ? x[i](m) : new Template(x[i]).evaluate(m); exclusion.push("(" + v.substring(1, v.length - 1) + ")"); e = e.replace(m[0], ''); break; } } } return "[not(" + exclusion.join(" and ") + ")]"; }, 'nth-child': function(m) { return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m); }, 'nth-last-child': function(m) { return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m); }, 'nth-of-type': function(m) { return Selector.xpath.pseudos.nth("position() ", m); }, 'nth-last-of-type': function(m) { return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", m); }, 'first-of-type': function(m) { m[6] = "1"; return Selector.xpath.pseudos['nth-of-type'](m); }, 'last-of-type': function(m) { m[6] = "1"; return Selector.xpath.pseudos['nth-last-of-type'](m); }, 'only-of-type': function(m) { var p = Selector.xpath.pseudos; return p['first-of-type'](m) + p['last-of-type'](m); }, nth: function(fragment, m) { var mm, formula = m[6], predicate; if (formula == 'even') formula = '2n+0'; if (formula == 'odd') formula = '2n+1'; if (mm = formula.match(/^(\d+)$/)) // digit only return '[' + fragment + "= " + mm[1] + ']'; if (mm = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b if (mm[1] == "-") mm[1] = -1; var a = mm[1] ? Number(mm[1]) : 1; var b = mm[2] ? Number(mm[2]) : 0; predicate = "[((#{fragment} - #{b}) mod #{a} = 0) and " + "((#{fragment} - #{b}) div #{a} >= 0)]"; return new Template(predicate).evaluate({ fragment: fragment, a: a, b: b }); } } } }, criteria: { tagName: 'n = h.tagName(n, r, "#{1}", c); c = false;', className: 'n = h.className(n, r, "#{1}", c); c = false;', id: 'n = h.id(n, r, "#{1}", c); c = false;', attrPresence: 'n = h.attrPresence(n, r, "#{1}"); c = false;', attr: function(m) { m[3] = (m[5] || m[6]); return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}"); c = false;').evaluate(m); }, pseudo: function(m) { if (m[6]) m[6] = m[6].replace(/"/g, '\\"'); return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m); }, descendant: 'c = "descendant";', child: 'c = "child";', adjacent: 'c = "adjacent";', laterSibling: 'c = "laterSibling";' }, patterns: { // combinators must be listed first // (and descendant needs to be last combinator) laterSibling: /^\s*~\s*/, child: /^\s*>\s*/, adjacent: /^\s*\+\s*/, descendant: /^\s/, // selectors follow tagName: /^\s*(\*|[\w\-]+)(\b|$)?/, id: /^#([\w\-\*]+)(\b|$)/, className: /^\.([\w\-\*]+)(\b|$)/, pseudo: /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|\s|(?=:))/, attrPresence: /^\[([\w]+)\]/, attr: /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\]]*?)\4|([^'"][^\]]*?)))?\]/ }, handlers: { // UTILITY FUNCTIONS // joins two collections concat: function(a, b) { for (var i = 0, node; node = b[i]; i++) a.push(node); return a; }, // marks an array of nodes for counting mark: function(nodes) { for (var i = 0, node; node = nodes[i]; i++) node._counted = true; return nodes; }, unmark: function(nodes) { for (var i = 0, node; node = nodes[i]; i++) node._counted = undefined; return nodes; }, // mark each child node with its position (for nth calls) // "ofType" flag indicates whether we're indexing for nth-of-type // rather than nth-child index: function(parentNode, reverse, ofType) { parentNode._counted = true; if (reverse) { for (var nodes = parentNode.childNodes, i = nodes.length - 1, j = 1; i >= 0; i--) { node = nodes[i]; if (node.nodeType == 1 && (!ofType || node._counted)) node.nodeIndex = j++; } } else { for (var i = 0, j = 1, nodes = parentNode.childNodes; node = nodes[i]; i++) if (node.nodeType == 1 && (!ofType || node._counted)) node.nodeIndex = j++; } }, // filters out duplicates and extends all nodes unique: function(nodes) { if (nodes.length == 0) return nodes; var results = [], n; for (var i = 0, l = nodes.length; i < l; i++) if (!(n = nodes[i])._counted) { n._counted = true; results.push(Element.extend(n)); } return Selector.handlers.unmark(results); }, // COMBINATOR FUNCTIONS descendant: function(nodes) { var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++) h.concat(results, node.getElementsByTagName('*')); return results; }, child: function(nodes) { var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++) { for (var j = 0, children = [], child; child = node.childNodes[j]; j++) if (child.nodeType == 1 && child.tagName != '!') results.push(child); } return results; }, adjacent: function(nodes) { for (var i = 0, results = [], node; node = nodes[i]; i++) { var next = this.nextElementSibling(node); if (next) results.push(next); } return results; }, laterSibling: function(nodes) { var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++) h.concat(results, Element.nextSiblings(node)); return results; }, nextElementSibling: function(node) { while (node = node.nextSibling) if (node.nodeType == 1) return node; return null; }, previousElementSibling: function(node) { while (node = node.previousSibling) if (node.nodeType == 1) return node; return null; }, // TOKEN FUNCTIONS tagName: function(nodes, root, tagName, combinator) { tagName = tagName.toUpperCase(); var results = [], h = Selector.handlers; if (nodes) { if (combinator) { // fastlane for ordinary descendant combinators if (combinator == "descendant") { for (var i = 0, node; node = nodes[i]; i++) h.concat(results, node.getElementsByTagName(tagName)); return results; } else nodes = this[combinator](nodes); if (tagName == "*") return nodes; } for (var i = 0, node; node = nodes[i]; i++) if (node.tagName.toUpperCase() == tagName) results.push(node); return results; } else return root.getElementsByTagName(tagName); }, id: function(nodes, root, id, combinator) { var targetNode = $(id), h = Selector.handlers; if (!nodes && root == document) return targetNode ? [targetNode] : []; if (nodes) { if (combinator) { if (combinator == 'child') { for (var i = 0, node; node = nodes[i]; i++) if (targetNode.parentNode == node) return [targetNode]; } else if (combinator == 'descendant') { for (var i = 0, node; node = nodes[i]; i++) if (Element.descendantOf(targetNode, node)) return [targetNode]; } else if (combinator == 'adjacent') { for (var i = 0, node; node = nodes[i]; i++) if (Selector.handlers.previousElementSibling(targetNode) == node) return [targetNode]; } else nodes = h[combinator](nodes); } for (var i = 0, node; node = nodes[i]; i++) if (node == targetNode) return [targetNode]; return []; } return (targetNode && Element.descendantOf(targetNode, root)) ? [targetNode] : []; }, className: function(nodes, root, className, combinator) { if (nodes && combinator) nodes = this[combinator](nodes); return Selector.handlers.byClassName(nodes, root, className); }, byClassName: function(nodes, root, className) { if (!nodes) nodes = Selector.handlers.descendant([root]); var needle = ' ' + className + ' '; for (var i = 0, results = [], node, nodeClassName; node = nodes[i]; i++) { nodeClassName = node.className; if (nodeClassName.length == 0) continue; if (nodeClassName == className || (' ' + nodeClassName + ' ').include(needle)) results.push(node); } return results; }, attrPresence: function(nodes, root, attr) { var results = []; for (var i = 0, node; node = nodes[i]; i++) if (Element.hasAttribute(node, attr)) results.push(node); return results; }, attr: function(nodes, root, attr, value, operator) { if (!nodes) nodes = root.getElementsByTagName("*"); var handler = Selector.operators[operator], results = []; for (var i = 0, node; node = nodes[i]; i++) { var nodeValue = Element.readAttribute(node, attr); if (nodeValue === null) continue; if (handler(nodeValue, value)) results.push(node); } return results; }, pseudo: function(nodes, name, value, root, combinator) { if (nodes && combinator) nodes = this[combinator](nodes); if (!nodes) nodes = root.getElementsByTagName("*"); return Selector.pseudos[name](nodes, value, root); } }, pseudos: { 'first-child': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) { if (Selector.handlers.previousElementSibling(node)) continue; results.push(node); } return results; }, 'last-child': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) { if (Selector.handlers.nextElementSibling(node)) continue; results.push(node); } return results; }, 'only-child': function(nodes, value, root) { var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++) if (!h.previousElementSibling(node) && !h.nextElementSibling(node)) results.push(node); return results; }, 'nth-child': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root); }, 'nth-last-child': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, true); }, 'nth-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, false, true); }, 'nth-last-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, true, true); }, 'first-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, "1", root, false, true); }, 'last-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, "1", root, true, true); }, 'only-of-type': function(nodes, formula, root) { var p = Selector.pseudos; return p['last-of-type'](p['first-of-type'](nodes, formula, root), formula, root); }, // handles the an+b logic getIndices: function(a, b, total) { if (a == 0) return b > 0 ? [b] : []; return $R(1, total).inject([], function(memo, i) { if (0 == (i - b) % a && (i - b) / a >= 0) memo.push(i); return memo; }); }, // handles nth(-last)-child, nth(-last)-of-type, and (first|last)-of-type nth: function(nodes, formula, root, reverse, ofType) { if (nodes.length == 0) return []; if (formula == 'even') formula = '2n+0'; if (formula == 'odd') formula = '2n+1'; var h = Selector.handlers, results = [], indexed = [], m; h.mark(nodes); for (var i = 0, node; node = nodes[i]; i++) { if (!node.parentNode._counted) { h.index(node.parentNode, reverse, ofType); indexed.push(node.parentNode); } } if (formula.match(/^\d+$/)) { // just a number formula = Number(formula); for (var i = 0, node; node = nodes[i]; i++) if (node.nodeIndex == formula) results.push(node); } else if (m = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b if (m[1] == "-") m[1] = -1; var a = m[1] ? Number(m[1]) : 1; var b = m[2] ? Number(m[2]) : 0; var indices = Selector.pseudos.getIndices(a, b, nodes.length); for (var i = 0, node, l = indices.length; node = nodes[i]; i++) { for (var j = 0; j < l; j++) if (node.nodeIndex == indices[j]) results.push(node); } } h.unmark(nodes); h.unmark(indexed); return results; }, 'empty': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) { // IE treats comments as element nodes if (node.tagName == '!' || (node.firstChild && !node.innerHTML.match(/^\s*$/))) continue; results.push(node); } return results; }, 'not': function(nodes, selector, root) { var h = Selector.handlers, selectorType, m; var exclusions = new Selector(selector).findElements(root); h.mark(exclusions); for (var i = 0, results = [], node; node = nodes[i]; i++) if (!node._counted) results.push(node); h.unmark(exclusions); return results; }, 'enabled': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) if (!node.disabled) results.push(node); return results; }, 'disabled': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) if (node.disabled) results.push(node); return results; }, 'checked': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) if (node.checked) results.push(node); return results; } }, operators: { '=': function(nv, v) { return nv == v; }, '!=': function(nv, v) { return nv != v; }, '^=': function(nv, v) { return nv.startsWith(v); }, '$=': function(nv, v) { return nv.endsWith(v); }, '*=': function(nv, v) { return nv.include(v); }, '~=': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + ' '); }, '|=': function(nv, v) { return ('-' + nv.toUpperCase() + '-').include('-' + v.toUpperCase() + '-'); } }, matchElements: function(elements, expression) { var matches = new Selector(expression).findElements(), h = Selector.handlers; h.mark(matches); for (var i = 0, results = [], element; element = elements[i]; i++) if (element._counted) results.push(element); h.unmark(matches); return results; }, findElement: function(elements, expression, index) { if (typeof expression == 'number') { index = expression; expression = false; } return Selector.matchElements(elements, expression || '*')[index || 0]; }, findChildElements: function(element, expressions) { var exprs = expressions.join(','), expressions = []; exprs.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) { expressions.push(m[1].strip()); }); var results = [], h = Selector.handlers; for (var i = 0, l = expressions.length, selector; i < l; i++) { selector = new Selector(expressions[i].strip()); h.concat(results, selector.findElements(element)); } return (l > 1) ? h.unique(results) : results; } }); function $$() { return Selector.findChildElements(document, $A(arguments)); } var Form = { reset: function(form) { $(form).reset(); return form; }, serializeElements: function(elements, getHash) { var data = elements.inject({}, function(result, element) { if (!element.disabled && element.name) { var key = element.name, value = $(element).getValue(); if (value != null) { if (key in result) { if (result[key].constructor != Array) result[key] = [result[key]]; result[key].push(value); } else result[key] = value; } } return result; }); return getHash ? data : Hash.toQueryString(data); } }; Form.Methods = { serialize: function(form, getHash) { return Form.serializeElements(Form.getElements(form), getHash); }, getElements: function(form) { return $A($(form).getElementsByTagName('*')).inject([], function(elements, child) { if (Form.Element.Serializers[child.tagName.toLowerCase()]) elements.push(Element.extend(child)); return elements; } ); }, getInputs: function(form, typeName, name) { form = $(form); var inputs = form.getElementsByTagName('input'); if (!typeName && !name) return $A(inputs).map(Element.extend); for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { var input = inputs[i]; if ((typeName && input.type != typeName) || (name && input.name != name)) continue; matchingInputs.push(Element.extend(input)); } return matchingInputs; }, disable: function(form) { form = $(form); Form.getElements(form).invoke('disable'); return form; }, enable: function(form) { form = $(form); Form.getElements(form).invoke('enable'); return form; }, findFirstElement: function(form) { return $(form).getElements().find(function(element) { return element.type != 'hidden' && !element.disabled && ['input', 'select', 'textarea'].include(element.tagName.toLowerCase()); }); }, focusFirstElement: function(form) { form = $(form); form.findFirstElement().activate(); return form; }, request: function(form, options) { form = $(form), options = Object.clone(options || {}); var params = options.parameters; options.parameters = form.serialize(true); if (params) { if (typeof params == 'string') params = params.toQueryParams(); Object.extend(options.parameters, params); } if (form.hasAttribute('method') && !options.method) options.method = form.method; return new Ajax.Request(form.readAttribute('action'), options); } } /*--------------------------------------------------------------------------*/ Form.Element = { focus: function(element) { $(element).focus(); return element; }, select: function(element) { $(element).select(); return element; } } Form.Element.Methods = { serialize: function(element) { element = $(element); if (!element.disabled && element.name) { var value = element.getValue(); if (value != undefined) { var pair = {}; pair[element.name] = value; return Hash.toQueryString(pair); } } return ''; }, getValue: function(element) { element = $(element); var method = element.tagName.toLowerCase(); return Form.Element.Serializers[method](element); }, clear: function(element) { $(element).value = ''; return element; }, present: function(element) { return $(element).value != ''; }, activate: function(element) { element = $(element); try { element.focus(); if (element.select && (element.tagName.toLowerCase() != 'input' || !['button', 'reset', 'submit'].include(element.type))) element.select(); } catch (e) {} return element; }, disable: function(element) { element = $(element); element.blur(); element.disabled = true; return element; }, enable: function(element) { element = $(element); element.disabled = false; return element; } } /*--------------------------------------------------------------------------*/ var Field = Form.Element; var $F = Form.Element.Methods.getValue; /*--------------------------------------------------------------------------*/ Form.Element.Serializers = { input: function(element) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': return Form.Element.Serializers.inputSelector(element); default: return Form.Element.Serializers.textarea(element); } }, inputSelector: function(element) { return element.checked ? element.value : null; }, textarea: function(element) { return element.value; }, select: function(element) { return this[element.type == 'select-one' ? 'selectOne' : 'selectMany'](element); }, selectOne: function(element) { var index = element.selectedIndex; return index >= 0 ? this.optionValue(element.options[index]) : null; }, selectMany: function(element) { var values, length = element.length; if (!length) return null; for (var i = 0, values = []; i < length; i++) { var opt = element.options[i]; if (opt.selected) values.push(this.optionValue(opt)); } return values; }, optionValue: function(opt) { // extend element because hasAttribute may not be native return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text; } } /*--------------------------------------------------------------------------*/ Abstract.TimedObserver = function() {} Abstract.TimedObserver.prototype = { initialize: function(element, frequency, callback) { this.frequency = frequency; this.element = $(element); this.callback = callback; this.lastValue = this.getValue(); this.registerCallback(); }, registerCallback: function() { setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); }, onTimerEvent: function() { var value = this.getValue(); var changed = ('string' == typeof this.lastValue && 'string' == typeof value ? this.lastValue != value : String(this.lastValue) != String(value)); if (changed) { this.callback(this.element, value); this.lastValue = value; } } } Form.Element.Observer = Class.create(); Form.Element.Observer.prototype = Object.extend(new Abstract.TimedObserver(), { getValue: function() { return Form.Element.getValue(this.element); } }); Form.Observer = Class.create(); Form.Observer.prototype = Object.extend(new Abstract.TimedObserver(), { getValue: function() { return Form.serialize(this.element); } }); /*--------------------------------------------------------------------------*/ Abstract.EventObserver = function() {} Abstract.EventObserver.prototype = { initialize: function(element, callback) { this.element = $(element); this.callback = callback; this.lastValue = this.getValue(); if (this.element.tagName.toLowerCase() == 'form') this.registerFormCallbacks(); else this.registerCallback(this.element); }, onElementEvent: function() { var value = this.getValue(); if (this.lastValue != value) { this.callback(this.element, value); this.lastValue = value; } }, registerFormCallbacks: function() { Form.getElements(this.element).each(this.registerCallback.bind(this)); }, registerCallback: function(element) { if (element.type) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': Event.observe(element, 'click', this.onElementEvent.bind(this)); break; default: Event.observe(element, 'change', this.onElementEvent.bind(this)); break; } } } } Form.Element.EventObserver = Class.create(); Form.Element.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), { getValue: function() { return Form.Element.getValue(this.element); } }); Form.EventObserver = Class.create(); Form.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), { getValue: function() { return Form.serialize(this.element); } }); if (!window.Event) { var Event = new Object(); } Object.extend(Event, { KEY_BACKSPACE: 8, KEY_TAB: 9, KEY_RETURN: 13, KEY_ESC: 27, KEY_LEFT: 37, KEY_UP: 38, KEY_RIGHT: 39, KEY_DOWN: 40, KEY_DELETE: 46, KEY_HOME: 36, KEY_END: 35, KEY_PAGEUP: 33, KEY_PAGEDOWN: 34, element: function(event) { return $(event.target || event.srcElement); }, isLeftClick: function(event) { return (((event.which) && (event.which == 1)) || ((event.button) && (event.button == 1))); }, pointerX: function(event) { return event.pageX || (event.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft)); }, pointerY: function(event) { return event.pageY || (event.clientY + (document.documentElement.scrollTop || document.body.scrollTop)); }, stop: function(event) { if (event.preventDefault) { event.preventDefault(); event.stopPropagation(); } else { event.returnValue = false; event.cancelBubble = true; } }, // find the first node with the given tagName, starting from the // node the event was triggered on; traverses the DOM upwards findElement: function(event, tagName) { var element = Event.element(event); while (element.parentNode && (!element.tagName || (element.tagName.toUpperCase() != tagName.toUpperCase()))) element = element.parentNode; return element; }, observers: false, _observeAndCache: function(element, name, observer, useCapture) { if (!this.observers) this.observers = []; if (element.addEventListener) { this.observers.push([element, name, observer, useCapture]); element.addEventListener(name, observer, useCapture); } else if (element.attachEvent) { this.observers.push([element, name, observer, useCapture]); element.attachEvent('on' + name, observer); } }, unloadCache: function() { if (!Event.observers) return; for (var i = 0, length = Event.observers.length; i < length; i++) { Event.stopObserving.apply(this, Event.observers[i]); Event.observers[i][0] = null; } Event.observers = false; }, observe: function(element, name, observer, useCapture) { element = $(element); useCapture = useCapture || false; if (name == 'keypress' && (Prototype.Browser.WebKit || element.attachEvent)) name = 'keydown'; Event._observeAndCache(element, name, observer, useCapture); }, stopObserving: function(element, name, observer, useCapture) { element = $(element); useCapture = useCapture || false; if (name == 'keypress' && (Prototype.Browser.WebKit || element.attachEvent)) name = 'keydown'; if (element.removeEventListener) { element.removeEventListener(name, observer, useCapture); } else if (element.detachEvent) { try { element.detachEvent('on' + name, observer); } catch (e) {} } } }); /* prevent memory leaks in IE */ if (Prototype.Browser.IE) Event.observe(window, 'unload', Event.unloadCache, false); var Position = { // set to true if needed, warning: firefox performance problems // NOT neeeded for page scrolling, only if draggable contained in // scrollable elements includeScrollOffsets: false, // must be called before calling withinIncludingScrolloffset, every time the // page is scrolled prepare: function() { this.deltaX = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; this.deltaY = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; }, realOffset: function(element) { var valueT = 0, valueL = 0; do { valueT += element.scrollTop || 0; valueL += element.scrollLeft || 0; element = element.parentNode; } while (element); return [valueL, valueT]; }, cumulativeOffset: function(element) { var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; } while (element); return [valueL, valueT]; }, positionedOffset: function(element) { var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; if (element) { if(element.tagName=='BODY') break; var p = Element.getStyle(element, 'position'); if (p == 'relative' || p == 'absolute') break; } } while (element); return [valueL, valueT]; }, offsetParent: function(element) { if (element.offsetParent) return element.offsetParent; if (element == document.body) return element; while ((element = element.parentNode) && element != document.body) if (Element.getStyle(element, 'position') != 'static') return element; return document.body; }, // caches x/y coordinate pair to use with overlap within: function(element, x, y) { if (this.includeScrollOffsets) return this.withinIncludingScrolloffsets(element, x, y); this.xcomp = x; this.ycomp = y; this.offset = this.cumulativeOffset(element); return (y >= this.offset[1] && y < this.offset[1] + element.offsetHeight && x >= this.offset[0] && x < this.offset[0] + element.offsetWidth); }, withinIncludingScrolloffsets: function(element, x, y) { var offsetcache = this.realOffset(element); this.xcomp = x + offsetcache[0] - this.deltaX; this.ycomp = y + offsetcache[1] - this.deltaY; this.offset = this.cumulativeOffset(element); return (this.ycomp >= this.offset[1] && this.ycomp < this.offset[1] + element.offsetHeight && this.xcomp >= this.offset[0] && this.xcomp < this.offset[0] + element.offsetWidth); }, // within must be called directly before overlap: function(mode, element) { if (!mode) return 0; if (mode == 'vertical') return ((this.offset[1] + element.offsetHeight) - this.ycomp) / element.offsetHeight; if (mode == 'horizontal') return ((this.offset[0] + element.offsetWidth) - this.xcomp) / element.offsetWidth; }, page: function(forElement) { var valueT = 0, valueL = 0; var element = forElement; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; // Safari fix if (element.offsetParent == document.body) if (Element.getStyle(element,'position')=='absolute') break; } while (element = element.offsetParent); element = forElement; do { if (!window.opera || element.tagName=='BODY') { valueT -= element.scrollTop || 0; valueL -= element.scrollLeft || 0; } } while (element = element.parentNode); return [valueL, valueT]; }, clone: function(source, target) { var options = Object.extend({ setLeft: true, setTop: true, setWidth: true, setHeight: true, offsetTop: 0, offsetLeft: 0 }, arguments[2] || {}) // find page position of source source = $(source); var p = Position.page(source); // find coordinate system to use target = $(target); var delta = [0, 0]; var parent = null; // delta [0,0] will do fine with position: fixed elements, // position:absolute needs offsetParent deltas if (Element.getStyle(target,'position') == 'absolute') { parent = Position.offsetParent(target); delta = Position.page(parent); } // correct by body offsets (fixes Safari) if (parent == document.body) { delta[0] -= document.body.offsetLeft; delta[1] -= document.body.offsetTop; } // set position if(options.setLeft) target.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; if(options.setTop) target.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; if(options.setWidth) target.style.width = source.offsetWidth + 'px'; if(options.setHeight) target.style.height = source.offsetHeight + 'px'; }, absolutize: function(element) { element = $(element); if (element.style.position == 'absolute') return; Position.prepare(); var offsets = Position.positionedOffset(element); var top = offsets[1]; var left = offsets[0]; var width = element.clientWidth; var height = element.clientHeight; element._originalLeft = left - parseFloat(element.style.left || 0); element._originalTop = top - parseFloat(element.style.top || 0); element._originalWidth = element.style.width; element._originalHeight = element.style.height; element.style.position = 'absolute'; element.style.top = top + 'px'; element.style.left = left + 'px'; element.style.width = width + 'px'; element.style.height = height + 'px'; }, relativize: function(element) { element = $(element); if (element.style.position == 'relative') return; Position.prepare(); element.style.position = 'relative'; var top = parseFloat(element.style.top || 0) - (element._originalTop || 0); var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0); element.style.top = top + 'px'; element.style.left = left + 'px'; element.style.height = element._originalHeight; element.style.width = element._originalWidth; } } // Safari returns margins on body which is incorrect if the child is absolutely // positioned. For performance reasons, redefine Position.cumulativeOffset for // KHTML/WebKit only. if (Prototype.Browser.WebKit) { Position.cumulativeOffset = function(element) { var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == document.body) if (Element.getStyle(element, 'position') == 'absolute') break; element = element.offsetParent; } while (element); return [valueL, valueT]; } } Element.addMethods();_-http://www.gucci.com/javascripts/prototype.jsObplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?JUZNS.objectsWNS.keys@ABCDEFGHIKLMNOPQRST _Content-EncodingTVary]Last-Modified]Cache-Control]Accept-RangesVServer^Content-LengthTDateTEtag\Content-TypeTgzip_Accept-Encoding_Wed, 19 Sep 2007 22:43:54 GMT_+max-age=7200,post-check=3600,pre-check=7200Ubytes_Microsoft-IIS/6.0S660_Fri, 28 Dec 2007 09:00:53 GMT_"0315e8eefbc71:74ec"12jkkl6_NSMutableDictionary\NSDictionary12noo6_NSHTTPURLResponseInternal12qrrs6_NSHTTPURLResponse]NSURLResponse$)2DILbd  %1357glu  /4BP^ety~ .EJNdqvytO var siteStuff = { getSiteData: function(s) { var t = {}; if(s == "us") { t.site = "us" t.language = "us-english" t.region = "us" t.selling = true t.sourceID = 1 t.priceID = 1 t.hbxStoreID = 1 t.hbxRegion = "NorthAmerica" } else if(s == "uk") { t.site = "uk" t.language = "uk-english" t.region = "uk" t.selling = true t.sourceID = 3 t.priceID = 2 t.currency = "GBP" t.hbxStoreID = 2 t.hbxRegion = "Europe" } else if(s == "fr") { t.site = "fr" t.language = "french" t.region = "fr" t.selling = true t.sourceID = 3 t.priceID = 3 t.hbxStoreID = 3 t.hbxRegion = "Europe" } else if(s == "de") { t.site = "de" t.language = "german" t.region = "de" t.selling = true t.sourceID = 3 t.priceID = 4 t.hbxStoreID = 4 t.hbxRegion = "Europe" } else if(s == "jp") { t.site = "jp" t.language = "japanese" t.region = "jp" t.selling = false t.hbxRegion = "Japan" } else if(s == "at") { t.site = "at" t.language = "german" t.region = "at" t.selling = true t.sourceID = 3 t.priceID = 6 t.hbxStoreID = 6 t.hbxRegion = "Europe" } else if(s == "be") { t.site = "be" t.language = "uk-english" t.region = "be" t.selling = true t.sourceID = 3 t.priceID = 7 t.hbxStoreID = 7 t.hbxRegion = "Europe" } else if(s == "ie") { t.site = "ie" t.language = "uk-english" t.region = "ie" t.selling = true t.sourceID = 3 t.priceID = 8 t.hbxStoreID = 8 t.hbxRegion = "Europe" } else if(s == "nl") { t.site = "nl" t.language = "uk-english" t.region = "nl" t.selling = true t.sourceID = 3 t.priceID = 9 t.hbxStoreID = 9 t.hbxRegion = "Europe" } else if(s == "kr") { t.site = "kr" t.language = "korean" t.region = "kr" t.selling = false t.hbxRegion = "Asia" } else if(s == "it") { t.site = "it" t.language = "italian" t.region = "it" t.selling = true t.sourceID = 3 t.priceID = 11 t.hbxStoreID = 11 t.hbxRegion = "Europe" } else if(s == "ch") { t.site = "ch" t.language = "uk-english" t.region = "ch" t.selling = true t.sourceID = 3 t.priceID = 12 t.hbxStoreID = 12 t.hbxRegion = "Europe" } else if(s == "int") { t.site = "int" t.language = "uk-english" t.region = "int" t.selling = false t.hbxRegion = "International" } else { t = null; } return t; }, getSiteFromCookie: function() { var dc = document.cookie; var prefix = "site="; var begin = dc.indexOf("; " + prefix); if (begin == -1) { begin = dc.indexOf(prefix); if (begin != 0) return "int"; } else { begin += 2; } var end = document.cookie.indexOf(";", begin); if (end == -1) { end = dc.length; } var s = unescape(dc.substring(begin + prefix.length, end)); if(!s) { s = "int"; } return s; } } _-http://www.gucci.com/javascripts/sitestuff.js !Obplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?JUZNS.objectsWNS.keys@ABCDEFGHIKLMNOPQRST _Content-EncodingTVary]Last-Modified]Cache-Control]Accept-RangesVServer^Content-LengthTDateTEtag\Content-TypeTgzip_Accept-Encoding_Tue, 18 Sep 2007 20:26:01 GMT_+max-age=7200,post-check=3600,pre-check=7200Ubytes_Microsoft-IIS/6.0S183_Fri, 28 Dec 2007 09:02:24 GMT_"80d2dc2032fac71:74ec"12jkkl6_NSMutableDictionary\NSDictionary12noo6_NSHTTPURLResponseInternal12qrrs6_NSHTTPURLResponse]NSURLResponse$)2DILbd $0246]bkvz  %*8FT[jot$=BF\inqtOvar _hbEC=0,_hbE=new Array;function _hbEvent(a,b){b=_hbE[_hbEC++]=new Object();b._N=a;b._C=0;return b;} var hbx=_hbEvent("pv");hbx.vpc="HBX0100u";hbx.gn="ehg.hitbox.com"; hbx.acct="DM560603C2EN"; _$http://www.gucci.com/hbx/hbx_acct.js#$%Obplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?JUZNS.objectsWNS.keys@ABCDEFGHIKLMNOPQRST _Content-EncodingTVary]Last-Modified]Cache-Control]Accept-RangesVServer^Content-LengthTDateTEtag\Content-TypeTgzip_Accept-Encoding_Tue, 25 Sep 2007 01:33:10 GMT_+max-age=7200,post-check=3600,pre-check=7200Ubytes_Microsoft-IIS/6.0S434_Fri, 28 Dec 2007 09:02:30 GMT_"08fe1714ffc71:74ec"12jkkl6_NSMutableDictionary\NSDictionary12noo6_NSHTTPURLResponseInternal12qrrs6_NSHTTPURLResponse]NSURLResponse$)2DILbd  %1357`eny}   (-;IW^mrw'>CG]jortOxvar hbxCommerce="975606080426"; var hbxTimezone="GMT"; function hbxProductView(obj){ _hbSet('cpv.cacct',hbxCommerce); _hbSet('cpv.pr',obj.pr); _hbSet('cpv.bd',obj.bd); _hbSet('cpv.ca',obj.ca); _hbPageView(obj.pn,obj.mlc); } function hbxCartAdd(obj){ _hbSet('aid',hbxCommerce); _hbSet('tz',hbxTimezone); _hbSet('epg','n'); _hbSet('cam','0'); _hbSet('pv','0'); _hbSet('abd_type','cart_add'); _hbSet('product',obj.pr); _hbSet('quantity',obj.qn); _hbSet('brand',obj.bd); _hbSet('category',obj.ca); _hbSet('price',obj.pc); _hbSet('store',obj.sr); _hbPageView(obj.pn,obj.mlc); } function hbxCheckout(obj){ _hbSet('aid',hbxCommerce); _hbSet('tz',hbxTimezone); _hbSet('epg','n'); _hbSet('abd_type','checkout'); _hbSet('product',obj.pr); _hbSet('quantity',obj.qn); _hbSet('price',obj.pc); _hbSet('shippingtype',obj.st); _hbSet('shipping',obj.sp); _hbSet('store',obj.sr); _hbPageView(obj.pn,obj.mlc); } function hbxOrder(obj){ _hbSet('ord.cacct',hbxCommerce); _hbSet('ord.tz',hbxTimezone); _hbSet('ord.ci',obj.ci); _hbSet('ord.oi',obj.oi); _hbSet('ord.pr',obj.pr); _hbSet('ord.bd',obj.bd); _hbSet('ord.ca',obj.ca); _hbSet('ord.pc',obj.pc); _hbSet('ord.qn',obj.qn); _hbSet('ord.st',obj.st); _hbSet('ord.sp',obj.sp); _hbSet('ord.sr',obj.sr); _hbSet('ord.po',obj.po); _hbSet('ord.ds',obj.ds); _hbSet('ord.sy',obj.sy); _hbSet('ord.sa',obj.sa); _hbSet('ord.sz',obj.sz); _hbSet('ord.so',obj.so); _hbSet('ord.sk',obj.sk); _hbSet('ord.cu',obj.cu); _hbSet('ord.pt',obj.pt); _hbSet('ord.attr1',obj.attr1); _hbSet('ord.attr2',obj.attr2); _hbSet('ord.c1',obj.c1); _hbSet('ord.c2',obj.c2); _hbPageView(obj.pn,obj.mlc); }_&http://www.gucci.com/hbx/hbx_custom.js'()Obplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?JUZNS.objectsWNS.keys@ABCDEFGHIKLMNOPQRST _Content-EncodingTVary]Last-Modified]Cache-Control]Accept-RangesVServer^Content-LengthTDateTEtag\Content-TypeTgzip_Accept-Encoding_Tue, 11 Jul 2006 17:26:53 GMT_+max-age=7200,post-check=3600,pre-check=7200Ubytes_Microsoft-IIS/6.0T6580_Fri, 28 Dec 2007 09:03:04 GMT_"80ac4633fa5c61:74ec"12jkkl6_NSMutableDictionary\NSDictionary12noo6_NSHTTPURLResponseInternal12qrrs6_NSHTTPURLResponse]NSURLResponse$)2DILbd  %1357Y^grv|  !&4BPWfkp}!9>BXejmtO0)?_protocol+"://":(location.protocol=="https:"?"https://":"http://")} function _IC(a,b,c){return a.charAt(b)==c?1:0}function _II(a,b,c){return a.indexOf(b,c?c:0)}function _IL(a){return a!=_hud?a.length:0} function _IF(a,b,c){return a.lastIndexOf(b,c?c:_IL(a))}function _IP(a,b){return a.split(b)} function _IS(a,b,c){return b>_IL(a)?"":a.substring(b,c!=null?c:_IL(a))} function _RP(a,b,c,d){d=_II(a,b);if(d>-1){a=_RP(_IS(a,0,d)+","+_IS(a,d+_IL(b),_IL(a)),b,c)}return a} function _TL(a){return a.toLowerCase()}function _TS(a){return a.toString()}function _TV(){_hbSend()}function _SV(a,b,c){_hbSet(a,b,c)} function _VS(a,b,c,d){c=['C','P','R'];for(d=0;d<_IL(c);d++){if(_II(""+b,"_"+c[d]+"::")==0)b=eval("_R"+c[d]+"V(_IS(b,4,_IL(b)))")}eval("_"+a+"='"+b+"'")} function _VC(a,b,c,d){b=_IP(a,",");for(c=0;c<_IL(b);c++){d=_IP(b[c],"|");_VS(d[0],(_D(d[0]))?_D(d[0]):d[1]?d[1]:"")}} function _VL(a,b){for(a=0;a<_hbEC;a++){_pv=_hbE[a];if(_pv._N=="pv"){for(b in _pv){if(_EE(b)&&typeof _pv[b]!=_huf){_VS(b,_pv[b])}}}} _VC("pn|PUT+PAGE+NAME+HERE,mlc|CONTENT+CATEGORY,elf|n,dlf|n,dft|n,pndef|title,ctdef|full,cp|null,hcn|")}_VL(); function _ER(a,b,c){if(_erf++==0)_hbi.src=_GP()+_gn+"/HG?hc="+_mn+"&hb="+_A(_acct)+"&hec=1&vjs="+_vjs+"&vpc=ERR&ec=1&err="+ ((typeof a=="string")?_A(a+"-"+c):"Unknown");_XT("Error",a);} function _EE(a){return(a!="_N"&&a!="_C")?1:0}_EV(window,"error",_ER); function _hbSend(c,a,i){a="";_hec++;for(i in _hbA)if(typeof _hbA[i]!=_huf)a+="&"+i+"="+_hbA[i];_Q(_hbq+"&hec="+_hec+a+_hbSendEV());_hbA=_NA()} function _hbSet(a,b,c,d,e){d=_II(_hbq,"&"+a+"=");if(d>-1){e=_II(_hbq,"&",d+1);e=e>d?e:_IL(_hbq);if(a=="n"||a=="vcon"){_hbq=_IS(_hbq,0,d)+"&"+a+"="+b+ _IS(_hbq,e);_hec=-1;if(a=="n"){_pn=b}else{_mlc=b}}else{_hbq=_IS(_hbq,0,d)+_IS(_hbq,e)}}if((a!="n")&&(a!="vcon"))_hbA[a]=(c==0)?b:_A(b)} function _hbRedirect(a,b,c,d,e,f,g){_SV("n",a);_SV("vcon",b);if(_DD(d)&&_IL(d)>0){d=_IC(d,0,"&")?_IS(d,1,_IL(d)):d;e=_IP(d,"&");for(f=0;f<_IL(e); f++){g=_IP(e[f],"=");_SV(g[0],g[1])}}_TV();if(c!=""){_SV("hec",0);setTimeout("location.href='"+c+"'",500)}} function _hbSendEV(a,b,c,d,e,f,x,i){a='',c='',e=_IL(_hbE);for(b=0;bc._C)c._C=_IL(x)}}for(d in c){if(_EE(d)&&c[d].match){x=c[d].match(/\[\]/g);x=(x==null)?0:_IL(x);for(i=x;i0)_SV(c,d);_TV()} function _hbPageView(p,m){_hec=-1;_hbM(p,m,"")}function _hbExitLink(n){_hbM(_pn,_mlc,"el",n)}function _hbDownload(n){_hbM(_pn,_mlc,"fn",n)} function _hbVisitorSeg(n,p,m){_SV("n",p);_SV("vcon",m);_SV("seg",n,1);_TV()}function _hbCampaign(n,p,m){_hbM(p,m,"cmp",n)} function _hbFunnel(n,p,m){_hbM(p,m,"fnl",n)}function _hbGoalPage(n,p,m){_hbM(p,m,"gp",n)} function _hbLink(a,b,c){_SV("lid",a);if(_DD(b))_SV("lpos",b);_XT("Link","");_TV()} function _hbForm(a,b,c,d,e,f){if(_DD(c))_hlf=c;_hfs=0,_fa=1,f='Complete',_hfa=0;if(a==0){f='Abandon';_hfa=1}_XT("Form"+f,b)} function _hbCookie(a,b,c){document.cookie=a+"="+b+";path=/;"+((_DD(c)==1)?"expires="+c:"")} function _LE(a,b,c,d,e,f,g,h,i,j,k,l){b="([0-9A-Za-z\\-]*\\.)",c=location.hostname,d=a.href,h='',i='';eval("__f=/"+b+"*"+b+"/");if(_DD(__f)){__f.exec(c); j=(_DD(_elf))?_elf:"";if(j!="n"){if(_II(j,"!")>-1){h=_IS(j,0,_II(j,"!"));i=_IS(j,_II(j,"!")+1,_IL(j))}else{h=j}}k=0;if(_DD(_elf)&&_elf!="n"){ if(_IL(i)){l=_IP(i,",");for(g=0;g<_IL(l);g++)if(_II(d,l[g])>-1)return}if(_IL(h)){l=_IP(h,",");for(g=0;g<_IL(h);g++)if(_II(d,l[g])>-1)k=1}} if(_II(a.hostname,RegExp.$2)<0||k){ e=_IL(d)-1;return _IC(d,e,'/')?_IS(d,0,e):d}}} function _LD(a,b,c,d,e,f){b=a.pathname,d='',e='';b=_IS(b,_IF(b,"/")+1,_IL(b));c=(_DD(_dlf))?_dlf:"";if(c!="n"){if(_II(c,"!")>-1){d=","+ _IS(c,0,_II(c,"!"));e=","+_IS(c,_II(c,"!")+1,_IL(c))}else{d=","+c}}f=_II(b,"?");b=(f>-1)?_IS(b,0,f):b;if(_IF(b,".")>-1){f=_IS(b,_IF(b,"."),_IL(b)); if(_II(_dl+d,f)>-1&&_II(e,f)<0){var dl=b;if(_DD(_dft)){if(_dft=="y"&&a.name){dl=a.name}else if(_dft=="full"){dl=a.pathname;if(!_IC(dl,0,'/'))dl='/'+dl }}return dl}}} function _LP(a,b){for(b=0;b<_IL(a);b++){if(_IL(_lvl)<_lvm)_LV(a[b]);_EV(a[b],'mousedown',_LT)}} function _LV(a,b,c){b=_LN(a);c=b[0]+b[1];if(_IL(b[0])){_lvid+=_A(b[0])+",";_lvpos+=_A(b[1])+",";_lvl+=c}} function _LN(a,b,c,d){b=a.href;b+=a.name?a.name:"";c=_LVP(b,_lidt);d=_LVP(b,_lpost);return[c,d]} function _LT(e){if((e.which&&e.which==1)||(e.button&&e.button==1)){var a=document.all?window.event.srcElement:this;for(var i=0;i<4;i++){if(a.tagName&& _TL(a.tagName)!="a"&&_TL(a.tagName)!="area"){a=a.parentElement}}var b=_LN(a),c='',d='';a.lid=b[0];a.lpos=b[1];if(_D("lt")&&_lt!="manual"){if((a.tagName&& _TL(a.tagName)=="area")){if(!_IL(a.lid)){if(a.parentNode){if(a.parentNode.name)a.lid=a.parentNode.name;else a.lid=a.parentNode.id}}if(!_IL(a.lpos)) a.lpos=a.coords}else{if(_IL(a.lid)<1)a.lid=_LS(a.text?a.text:a.innerText?a.innerText:"");if(!_IL(a.lid)||_II(_TL(a.lid),"-1)a.lid=_LI(a)}} if(!_IL(a.lpos)&&_D("lt")=="auto_pos"&&a.tagName&&_TL(a.tagName)!="area"){c=document.links;for(d=0;d<_IL(c);d++){if(a==c[d]){a.lpos=d+1;break}}} var _f=0,j='',k='',l=(a.protocol)?_TL(a.protocol):""; if(l&&l!="mailto:"&&l!="javascript:"){j=_LE(a),k=_LD(a);if(_DD(k))a.fn=k;else if(_DD(j))a.el=j} if(_D("lt")&&_IC(_lt,0,"n")!=1&&_DD(a.lid)&&_IL(a.lid)>0){_SV("lid",a.lid);if(_DD(a.lpos))_SV("lpos",a.lpos);_f=1}if(_DD(a.fn)){_SV("fn",a.fn);_XT("Download",a);_f=2} else if(_DD(a.el)){_SV("el",a.el);_XT("ExitLink",a);_f=1}if(_f>0){_XT("Link",a);_TV()}}} function _LVP(a,b,c,d,e){c=_II(a,"&"+b+"=");c=c<0?_II(a,"?"+b+"="):c;if(c>-1){d=_II(a,'&',c+_IL(b)+2);e=_IS(a,c+_IL(b)+2,d>-1?d:_IL(a)); if(!_ec){if(!(_II(e,"//")==0))return e}else return e}return ""} function _LI(a){var b=""+a.innerHTML,bu=_TL(b),i=_II(bu,"-1){eval("__f=/ src\s*=\s*['\"]?([^'\" ]+)['\"]?/i");__f.exec(b); if(RegExp.$1)b=RegExp.$1}return b} function _LSP(a,b,c,d){d=_IP(a,b);return d.join(c)} function _LS(a,b,c,d,e,f,g){c=_D("lim")?_lim:100;b=(_IL(a)>c)?_A(_IS(a,0,c)):_A(a);b=_LSP(b,"%0A","%20");b=_LSP(b,"%0D","%20");b=_LSP(b,"%09","%20"); c=_IP(b,"%20");d=_NA();e=0;for(f=0;f<_IL(c);f++){g=_RP(c[f],"%20","");if(_IL(g)>0){d[e++]=g}}b=d.join("%20");return unescape(b)} function _EM(a,b,c,d){a=_D("fv");b=_II(a,";"),c=parseInt(a);d=3;if(_TL(a)=="n"){d=999;_fv=""}else if(b>-1){d=_IS(a,0,b);_fv=_IS(a,b+1,_IL(a))} else if(c>0){d=c;_fv=""}return d} function _FF(e){var a=(_bnN)?this:_EVO(e);_hlf=(a.lf)?a.lf:""} function _FU(e){if(_hfs==0&&_IL(_hlf)>0&&_fa==1){_hfs=1;if(_hfc&&!_hfa){_SV("sf","1");_XT("FormComplete",_hfc)}else if(_IL(_hlf)>0){_SV("lf",_hlf);_XT("FormAbandon",_hlf)} _TV();_hlf="",_hfs=0,_hfc=0}} function _FO(e){var a=true;if(_DD(this._FS))eval("try{a=this._FS()}catch(e){}");if(a!=false)_hfc=1;return a} function _FA(a,b,c,d,e,f,g,h,i,ff,fv,s){b=a.forms;ff=new Object();f=_EM();for(c=0;c<_IL(b);c++){ff=b[c],d=0,s=0,e=ff.elements; g=ff.name?ff.name:"forms["+c+"]";for(h=0;h<_IL(e);h++){if(e[h].type&&"hiddenbuttonsubmitimagereset".indexOf(e[h].type)<0&&d++>=f)break}if(d>=f){_fa=1; for(h=0;h<_IL(e);h++){i=e[h];if(i.type&&"hiddenbuttonsubmitimagereset".indexOf(i.type)<0){i.lf=g+".";i.lf+=(i.name&&i.name!="")?i.name:"elements["+h+"]"; _EV(i,"focus",_FF)}}ff._FS=null;ff._FS=ff.onsubmit;if(_DD(ff._FS)&&ff._FS!=null){ff.onsubmit=_FO}else if(!(_bnN&&_bv<5)&&_hM&&!(_bnI&&!_I5)){if((!_bnI)|| (_II(navigator.userAgent,"Opera")>-1)){ff.onsubmit=_FO}else{_EV(ff,"submit",_FO); eval("try{document.forms["+c+"]._FS=document.forms["+c+"].submit;document.forms["+c+"].submit=_FO;throw ''}catch(E){}")}}}}} function _GR(a,b,c,d){if(!_D("hrf"))return a;if(_II(_hrf,"http",0)>-1)return _hrf;b=window.location.search;b=_IL(b)>1?_IS(b,1,_IL(b)):""; c=_II(b,_hrf+"=");if(c>-1){ d=_II(b,"&",c+1);d=d>c?d:_IL(b);b=_IS(b,c+_IL(_hrf)+1,d)}return(b!=_hud&&_IL(b)>0)?b:a} function _PO(a,b,c,d,e,f,g){d=location,e=d.pathname,f=_IS(e,_IF(e,"/")+1),g=document.title;if(a&&b==c){return(_pndef=="title"&&g!=""&&g!=d&& !(_bnN&&_II(g,"http")>0))?g:f?f:_pndef}else{return b==c?(e==""||e=="/")?"/":_IS(e,(_ctdef!="full")?_IF(e,"/",_IF(e,"/")-2):_II(e,"/"),_IF(e,"/")) :(b=="/")?b:((_II(b,"/")?"/":"")+(_IF(b,"/")==_IL(b)-1?_IS(b,0,_IL(b)-1):b))}} function _PP(a,b,c,d){return ""+(c>-1?_PO(b,_IS(a,0,c),d)+";"+_PP(_IS(a,c+1),b,_II(_IS(a,c+1),";")):_PO(b,a,d))} _mlc=_PP(_mlc,0,_II( _mlc,";"),"CONTENT+CATEGORY");_pn=_PP(_pn,1,_II(_pn,";"),"PUT+PAGE+NAME+HERE"); function _NN(a){return _D(a)!="none"} function _E(a){var b="";var d=_IP(a,",");for(var c=0;c<_IL(d);c++)b+="&"+d[c]+"="+_A(_D(d[c]));return b} function _F(a,b){return(!_II(a,"?"+b+"="))?0:_II(a,"&"+b+"=")}function _G(a,b,c,d){var e=_F(a,b);if(d&&e<0&&top&&window!=top){e=_F(_tls,b); if(e>-1)a=_tls};return(e>-1)?_IS(a,e+2+_IL(b),(_II(a,"&",e+1)>-1)?_II(a,"&",e+1):_IL(a)):c} function _H(a,b,c){if(!a)a=c;if(_I5||_N6){eval("try{_vv=_G(location.search,'"+a+"','"+b+"',1)}"+__c+"{}")}else{_vv=_G(location.search,a,b,1)}return unescape(_vv)} function _I(a,b,c,d){__f=_IS(a,_II(a,"?"));if(b){if(_I5||_N6){eval("try{_hra=_G(__f,_hqsr,_hra,0)}"+__c+"{}")}else{_hra=_G(__f,_hqsr,_hra,0)}}; if(c&&!_hra){if(_I5||_N6){eval("try{_hra=_G(location.search,_hqsp,_hra,1)}"+__c+"{}")}else{_hra=_G(location.search,_hqsp,_hra,1)}}; if(d&&!_hra)_hra=d;return _hra}function _J(a,b,c,d){c=_II(a,"CP=");d=_II(a,b,c+3);return(c<0)?"null":_IS(a,c+3,(d<0)?_IL(a):d)} var __r=".referrer",_rf=_A(eval("document"+__r)),_et=0,_oe=0,_we=0,_ar="",_hM=(!(_II(navigator.userAgent,"Mac")>-1)),_tls=""; _bv=parseInt(navigator.appVersion);_bv=(_bv>99)?(_bv/100):_bv;var __f,_hrat=_D("hra"),_hra="",__c="catch(_e)",_fa=0,_hlfs=0,_hoc=0, _hlf='',_ce='',_ln='',_pl='',_bn=navigator.appName,_bn=(_II(_bn,"Microsoft")?_bn:"MSIE"),_bnN=(_bn=="Netscape"),_bnI=(_bn=="MSIE"), _hck="*; path=/; "+(_D("cpd")&&_D("cpd")!=""?(" domain=."+_D("cpd")+"; "):"")+_ex,_N6=(_bnN&&_bv>4),_I5=false,_ss="na",_sc="na",_sv=11,_cy="u",_hp="u", _tp=_D("ptc");if(_bn=="MSIE"){var _nua=navigator.userAgent,_is=_II(_nua,_bn),_if=_II(_nua,".",_is);if(_if>_is)_I5=_nua.substring(_is+5,_if)>=5} if(_N6||_I5)eval("try{_tls=top.location.search}catch(_e){}") function _PV(){_dcmpe=_H(_D("dcmpe"),_D("dcmpe"),"DCMPE");_dcmpre=_H(_D("dcmpre"),_D("dcmpre"),"DCMPRE");_vv="";_cmp=_H(_D("cmpn"),_D("cmp"),"CMP"); _gp=_H(_D("gpn"),_D("gp"),"GP");_dcmp=_H(_D("dcmpn"),_D("dcmp"),"DCMP");if(_II(_cmp,"SFS-")>-1){document.cookie="HBCMP="+_cmp+"; path=/;"+ (_D("cpd")&&_D("cpd")!=""?(" domain=."+_D("cpd")+"; "):"")+_ex}if(_bnI&&_bv>3)_ln=navigator.userLanguage; if(_bnN){if(_bv>3)_ln=navigator.language;if(_bv>2)for(var i=0;i<_IL(navigator.plugins);i++)_pl+=navigator.plugins[i].name+":"};_cp=_D("cp"); if(location.search&&_TL(_cp)=="null")_cp=_J(location.search,"&");if(_II(document.cookie,"CP=")>-1){ _ce="y";_hd=_J(document.cookie,"*");if(_TL(_hd)!="null"&&_cp=="null"){_cp=_hd}else{document.cookie="CP="+_cp+_hck}}else{document.cookie="CP="+_cp+_hck; _ce=(_II(document.cookie,"CP=")>-1)?"y":"n"};if(window.screen){_sv=12;_ss=screen.width+"*"+screen.height;_sc=_bnI?screen.colorDepth:screen.pixelDepth; if(_sc==_hud)_sc="na"};_ra=_NA();if(_ra.toSource||(_bnI&&_ra.shift))_sv=13;if(!(_bnN&&_bv<5)&&!_bnI&&_hM)eval("try{throw _sv=14}catch(e){}"); if((new Date()).toDateString)_sv=15;if(_hbA.every)_sv=16;if(_I5&&_hM){if(_II(""+navigator.appMinorVersion,"Privacy")>-1)_ce="p"; if(document.body&&document.body.addBehavior){document.body.addBehavior("#default#homePage");_hp=document.body.isHomePage(location.href)?"y":"n"; document.body.addBehavior("#default#clientCaps");_cy=document.body.connectionType}};var _hcc=(_DD(_hcn))?_D("hcv"):"";if(!_D("gn"))_gn="ehg.hitbox.com"; if(_D("ct")&&!_D("mlc"))_mlc=_ct;_XT("PrePVR","");_ar=_GP()+_gn+"/HG?hc="+_mn+"&hb="+_A(_acct)+"&cd=1&hv=6&n="+_A(_pn,1)+"&con=&vcon="+_A(_mlc,1)+"&tt=" +_D("lt")+"&ja="+(navigator.javaEnabled()?"y":"n")+"&dt="+(new Date()).getHours()+"&zo="+(new Date()).getTimezoneOffset()+"&lm="+ Date.parse(document.lastModified)+(_tp?("&pt="+_tp):"")+_E((_bnN?"bn,":"")+"ce,ss,sc,sv,cy,hp,ln,vpc,vjs,hec,pec,cmp,gp,dcmp,dcmpe,dcmpre,cp,fnl") +"&seg="+_D("seg")+"&epg="+_D("epg")+"&cv="+_A(_hcc)+"&gn="+_A(_D("hcn"))+"&ld="+_A(_D("hlt"))+"&la="+_A(_D("hla"))+"&c1="+_A(_D("hc1"))+"&c2="+ _A(_D("hc2"))+"&c3="+_A(_D("hc3"))+"&c4="+_A(_D("hc4"))+"&customerid="+_A(_D("ci")?_ci:_D("cid"))+"&ttt="+_lidt+","+_lpost; if(_I5||_N6){eval("try{_rf=_A(top.document"+__r+")+''}"+__c+"{_rf=_A(document"+__r+")+''}")} else{if(top.document&&_IL(parent.frames)>1){_rf=_A(eval("document"+__r))+""}else if(top.document){_rf=_A(eval("top.document"+__r))+""}}if((_rf==_hud)|| (_rf==""))_rf="bookmark";_rf=unescape(_rf);_rf=_GR(_rf);_hra=_I(_rf,_D("hqsr"),_D("hqsp"),_hrat);_ar+="&ra="+_A(_hra)+"&pu="+_A(_IS(eval("document.URL") +"",0,_pum))+_hbSendEV()+"&rf=";_ar+=(_IL(_ar)+_IL(_rf)<2048)?_A(_rf):"bookmark";if(_IL(_ar)+_IL(_pl)<2048)_ar+="&pl="+_A(_pl); _XT("PrePV",_ar);if(_D("onlyMedia")!="y")_hbi.src=_ar+"&hid="+Math.random();_hbq=_IS(_ar,0,_II(_ar,"&hec"));_XT("PostPV",_ar);_hbE=_NA()}_PV(); function _Q(a){a+="&hid="+Math.random();if(_hif==0){_hif=1;_hbs="";_hbs=new Image();_hbs.src=a}else{_hif=0;_hbi="";_hbi=new Image();_hbi.src=a}} function __X(a){if(_ec==0){_ec=1;a=document;if(_NN("lt")||_NN("dlf")||_NN("elf"))_LP(a.links);if(_NN("fv"))_FA(a); if(_NN("lt")&&_IL(_lvl)>0&&_lvl!=-1){_SV('lv.id',_lvid,1);_SV('lv.pos',_lvpos,1);_TV()}}} function _EV(a,b,c,d){if(a.addEventListener){a.addEventListener(b,c,false)}else if(a.attachEvent){a.attachEvent(((d==1)?"":"on")+b,c)}} function _EVO(e){return document.all?window.event.srcElement:this} function _RCV(a,b,c,d){b=document.cookie;c=_II(b,a+"=");d="";if(c>-1){d=_II(b,";",c+1);d=(d>0)?d:_IL(b);d=(d>c)?_IS(b,c+_IL(a)+1,d):""}return d} function _RRV(a){return(_LVP(document.referrer,a))}function _RPV(a){return(_LVP(document.URL,a))} function _XT(a,b){if(typeof _D("hbOn"+a)==_huf)eval("_hbOn"+a+"(b)")} _EV(window,"load",__X);_EV(window,"unload",_FU);eval('setTimeout("__X()",3000)');_http://www.gucci.com/hbx/hbx.js+,-Obplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?JUZNS.objectsWNS.keys@ABCDEFGHIKLMNOPQRST _Content-EncodingTVary]Last-Modified]Cache-Control]Accept-RangesVServer^Content-LengthTDateTEtag\Content-TypeTgzip_Accept-Encoding_Wed, 29 Aug 2007 15:56:59 GMT_+max-age=7200,post-check=3600,pre-check=7200Ubytes_Microsoft-IIS/6.0T8585_Fri, 28 Dec 2007 09:01:05 GMT_"8017383b55eac71:74ec"12jkkl6_NSMutableDictionary\NSDictionary12noo6_NSHTTPURLResponseInternal12qrrs6_NSHTTPURLResponse]NSURLResponse$)2DILbd  %1357ejs~  -2@N\crw| -FKOerwztO// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) // Contributors: // Justin Palmer (http://encytemedia.com/) // Mark Pilgrim (http://diveintomark.org/) // Martin Bialasinki // // script.aculo.us is freely distributable under the terms of an MIT-style license. // For details, see the script.aculo.us web site: http://script.aculo.us/ // converts rgb() and #xxx to #xxxxxx format, // returns self (or first argument) if not convertable String.prototype.parseColor = function() { var color = '#'; if(this.slice(0,4) == 'rgb(') { var cols = this.slice(4,this.length-1).split(','); var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3); } else { if(this.slice(0,1) == '#') { if(this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase(); if(this.length==7) color = this.toLowerCase(); } } return(color.length==7 ? color : (arguments[0] || this)); } /*--------------------------------------------------------------------------*/ Element.collectTextNodes = function(element) { return $A($(element).childNodes).collect( function(node) { return (node.nodeType==3 ? node.nodeValue : (node.hasChildNodes() ? Element.collectTextNodes(node) : '')); }).flatten().join(''); } Element.collectTextNodesIgnoreClass = function(element, className) { return $A($(element).childNodes).collect( function(node) { return (node.nodeType==3 ? node.nodeValue : ((node.hasChildNodes() && !Element.hasClassName(node,className)) ? Element.collectTextNodesIgnoreClass(node, className) : '')); }).flatten().join(''); } Element.setContentZoom = function(element, percent) { element = $(element); element.setStyle({fontSize: (percent/100) + 'em'}); if(Prototype.Browser.WebKit) window.scrollBy(0,0); return element; } Element.getInlineOpacity = function(element){ return $(element).style.opacity || ''; } Element.forceRerendering = function(element) { try { element = $(element); var n = document.createTextNode(' '); element.appendChild(n); element.removeChild(n); } catch(e) { } }; /*--------------------------------------------------------------------------*/ Array.prototype.call = function() { var args = arguments; this.each(function(f){ f.apply(this, args) }); } /*--------------------------------------------------------------------------*/ var Effect = { _elementDoesNotExistError: { name: 'ElementDoesNotExistError', message: 'The specified DOM element does not exist, but is required for this effect to operate' }, tagifyText: function(element) { if(typeof Builder == 'undefined') throw("Effect.tagifyText requires including script.aculo.us' builder.js library"); var tagifyStyle = 'position:relative'; if(Prototype.Browser.IE) tagifyStyle += ';zoom:1'; element = $(element); $A(element.childNodes).each( function(child) { if(child.nodeType==3) { child.nodeValue.toArray().each( function(character) { element.insertBefore( Builder.node('span',{style: tagifyStyle}, character == ' ' ? String.fromCharCode(160) : character), child); }); Element.remove(child); } }); }, multiple: function(element, effect) { var elements; if(((typeof element == 'object') || (typeof element == 'function')) && (element.length)) elements = element; else elements = $(element).childNodes; var options = Object.extend({ speed: 0.1, delay: 0.0 }, arguments[2] || {}); var masterDelay = options.delay; $A(elements).each( function(element, index) { new effect(element, Object.extend(options, { delay: index * options.speed + masterDelay })); }); }, PAIRS: { 'slide': ['SlideDown','SlideUp'], 'blind': ['BlindDown','BlindUp'], 'appear': ['Appear','Fade'] }, toggle: function(element, effect) { element = $(element); effect = (effect || 'appear').toLowerCase(); var options = Object.extend({ queue: { position:'end', scope:(element.id || 'global'), limit: 1 } }, arguments[2] || {}); Effect[element.visible() ? Effect.PAIRS[effect][1] : Effect.PAIRS[effect][0]](element, options); } }; var Effect2 = Effect; // deprecated /* ------------- transitions ------------- */ Effect.Transitions = { linear: Prototype.K, sinoidal: function(pos) { return (-Math.cos(pos*Math.PI)/2) + 0.5; }, reverse: function(pos) { return 1-pos; }, flicker: function(pos) { var pos = ((-Math.cos(pos*Math.PI)/4) + 0.75) + Math.random()/4; return (pos > 1 ? 1 : pos); }, wobble: function(pos) { return (-Math.cos(pos*Math.PI*(9*pos))/2) + 0.5; }, pulse: function(pos, pulses) { pulses = pulses || 5; return ( Math.round((pos % (1/pulses)) * pulses) == 0 ? ((pos * pulses * 2) - Math.floor(pos * pulses * 2)) : 1 - ((pos * pulses * 2) - Math.floor(pos * pulses * 2)) ); }, none: function(pos) { return 0; }, full: function(pos) { return 1; } }; /* ------------- core effects ------------- */ Effect.ScopedQueue = Class.create(); Object.extend(Object.extend(Effect.ScopedQueue.prototype, Enumerable), { initialize: function() { this.effects = []; this.interval = null; }, _each: function(iterator) { this.effects._each(iterator); }, add: function(effect) { var timestamp = new Date().getTime(); var position = (typeof effect.options.queue == 'string') ? effect.options.queue : effect.options.queue.position; switch(position) { case 'front': // move unstarted effects after this effect this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) { e.startOn += effect.finishOn; e.finishOn += effect.finishOn; }); break; case 'with-last': timestamp = this.effects.pluck('startOn').max() || timestamp; break; case 'end': // start effect after last queued effect has finished timestamp = this.effects.pluck('finishOn').max() || timestamp; break; } effect.startOn += timestamp; effect.finishOn += timestamp; if(!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit)) this.effects.push(effect); if(!this.interval) this.interval = setInterval(this.loop.bind(this), 15); }, remove: function(effect) { this.effects = this.effects.reject(function(e) { return e==effect }); if(this.effects.length == 0) { clearInterval(this.interval); this.interval = null; } }, loop: function() { var timePos = new Date().getTime(); for(var i=0, len=this.effects.length;i= this.startOn) { if(timePos >= this.finishOn) { this.render(1.0); this.cancel(); this.event('beforeFinish'); if(this.finish) this.finish(); this.event('afterFinish'); return; } var pos = (timePos - this.startOn) / this.totalTime, frame = Math.round(pos * this.totalFrames); if(frame > this.currentFrame) { this.render(pos); this.currentFrame = frame; } } }, cancel: function() { if(!this.options.sync) Effect.Queues.get(typeof this.options.queue == 'string' ? 'global' : this.options.queue.scope).remove(this); this.state = 'finished'; }, event: function(eventName) { if(this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this); if(this.options[eventName]) this.options[eventName](this); }, inspect: function() { var data = $H(); for(property in this) if(typeof this[property] != 'function') data[property] = this[property]; return '#'; } } Effect.Parallel = Class.create(); Object.extend(Object.extend(Effect.Parallel.prototype, Effect.Base.prototype), { initialize: function(effects) { this.effects = effects || []; this.start(arguments[1]); }, update: function(position) { this.effects.invoke('render', position); }, finish: function(position) { this.effects.each( function(effect) { effect.render(1.0); effect.cancel(); effect.event('beforeFinish'); if(effect.finish) effect.finish(position); effect.event('afterFinish'); }); } }); Effect.Event = Class.create(); Object.extend(Object.extend(Effect.Event.prototype, Effect.Base.prototype), { initialize: function() { var options = Object.extend({ duration: 0 }, arguments[0] || {}); this.start(options); }, update: Prototype.emptyFunction }); Effect.Opacity = Class.create(); Object.extend(Object.extend(Effect.Opacity.prototype, Effect.Base.prototype), { initialize: function(element) { this.element = $(element); if(!this.element) throw(Effect._elementDoesNotExistError); // make this work on IE on elements without 'layout' if(Prototype.Browser.IE && (!this.element.currentStyle.hasLayout)) this.element.setStyle({zoom: 1}); var options = Object.extend({ from: this.element.getOpacity() || 0.0, to: 1.0 }, arguments[1] || {}); this.start(options); }, update: function(position) { this.element.setOpacity(position); } }); Effect.Move = Class.create(); Object.extend(Object.extend(Effect.Move.prototype, Effect.Base.prototype), { initialize: function(element) { this.element = $(element); if(!this.element) throw(Effect._elementDoesNotExistError); var options = Object.extend({ x: 0, y: 0, mode: 'relative' }, arguments[1] || {}); this.start(options); }, setup: function() { // Bug in Opera: Opera returns the "real" position of a static element or // relative element that does not have top/left explicitly set. // ==> Always set top and left for position relative elements in your stylesheets // (to 0 if you do not need them) this.element.makePositioned(); this.originalLeft = parseFloat(this.element.getStyle('left') || '0'); this.originalTop = parseFloat(this.element.getStyle('top') || '0'); if(this.options.mode == 'absolute') { // absolute movement, so we need to calc deltaX and deltaY this.options.x = this.options.x - this.originalLeft; this.options.y = this.options.y - this.originalTop; } }, update: function(position) { this.element.setStyle({ left: Math.round(this.options.x * position + this.originalLeft) + 'px', top: Math.round(this.options.y * position + this.originalTop) + 'px' }); } }); // for backwards compatibility Effect.MoveBy = function(element, toTop, toLeft) { return new Effect.Move(element, Object.extend({ x: toLeft, y: toTop }, arguments[3] || {})); }; Effect.Scale = Class.create(); Object.extend(Object.extend(Effect.Scale.prototype, Effect.Base.prototype), { initialize: function(element, percent) { this.element = $(element); if(!this.element) throw(Effect._elementDoesNotExistError); var options = Object.extend({ scaleX: true, scaleY: true, scaleContent: true, scaleFromCenter: false, scaleMode: 'box', // 'box' or 'contents' or {} with provided values scaleFrom: 100.0, scaleTo: percent }, arguments[2] || {}); this.start(options); }, setup: function() { this.restoreAfterFinish = this.options.restoreAfterFinish || false; this.elementPositioning = this.element.getStyle('position'); this.originalStyle = {}; ['top','left','width','height','fontSize'].each( function(k) { this.originalStyle[k] = this.element.style[k]; }.bind(this)); this.originalTop = this.element.offsetTop; this.originalLeft = this.element.offsetLeft; var fontSize = this.element.getStyle('font-size') || '100%'; ['em','px','%','pt'].each( function(fontSizeType) { if(fontSize.indexOf(fontSizeType)>0) { this.fontSize = parseFloat(fontSize); this.fontSizeType = fontSizeType; } }.bind(this)); this.factor = (this.options.scaleTo - this.options.scaleFrom)/100; this.dims = null; if(this.options.scaleMode=='box') this.dims = [this.element.offsetHeight, this.element.offsetWidth]; if(/^content/.test(this.options.scaleMode)) this.dims = [this.element.scrollHeight, this.element.scrollWidth]; if(!this.dims) this.dims = [this.options.scaleMode.originalHeight, this.options.scaleMode.originalWidth]; }, update: function(position) { var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position); if(this.options.scaleContent && this.fontSize) this.element.setStyle({fontSize: this.fontSize * currentScale + this.fontSizeType }); this.setDimensions(this.dims[0] * currentScale, this.dims[1] * currentScale); }, finish: function(position) { if(this.restoreAfterFinish) this.element.setStyle(this.originalStyle); }, setDimensions: function(height, width) { var d = {}; if(this.options.scaleX) d.width = Math.round(width) + 'px'; if(this.options.scaleY) d.height = Math.round(height) + 'px'; if(this.options.scaleFromCenter) { var topd = (height - this.dims[0])/2; var leftd = (width - this.dims[1])/2; if(this.elementPositioning == 'absolute') { if(this.options.scaleY) d.top = this.originalTop-topd + 'px'; if(this.options.scaleX) d.left = this.originalLeft-leftd + 'px'; } else { if(this.options.scaleY) d.top = -topd + 'px'; if(this.options.scaleX) d.left = -leftd + 'px'; } } this.element.setStyle(d); } }); Effect.Highlight = Class.create(); Object.extend(Object.extend(Effect.Highlight.prototype, Effect.Base.prototype), { initialize: function(element) { this.element = $(element); if(!this.element) throw(Effect._elementDoesNotExistError); var options = Object.extend({ startcolor: '#ffff99' }, arguments[1] || {}); this.start(options); }, setup: function() { // Prevent executing on elements not in the layout flow if(this.element.getStyle('display')=='none') { this.cancel(); return; } // Disable background image during the effect this.oldStyle = {}; if (!this.options.keepBackgroundImage) { this.oldStyle.backgroundImage = this.element.getStyle('background-image'); this.element.setStyle({backgroundImage: 'none'}); } if(!this.options.endcolor) this.options.endcolor = this.element.getStyle('background-color').parseColor('#ffffff'); if(!this.options.restorecolor) this.options.restorecolor = this.element.getStyle('background-color'); // init color calculations this._base = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this)); this._delta = $R(0,2).map(function(i){ return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] }.bind(this)); }, update: function(position) { this.element.setStyle({backgroundColor: $R(0,2).inject('#',function(m,v,i){ return m+(Math.round(this._base[i]+(this._delta[i]*position)).toColorPart()); }.bind(this)) }); }, finish: function() { this.element.setStyle(Object.extend(this.oldStyle, { backgroundColor: this.options.restorecolor })); } }); Effect.ScrollTo = Class.create(); Object.extend(Object.extend(Effect.ScrollTo.prototype, Effect.Base.prototype), { initialize: function(element) { this.element = $(element); this.start(arguments[1] || {}); }, setup: function() { Position.prepare(); var offsets = Position.cumulativeOffset(this.element); if(this.options.offset) offsets[1] += this.options.offset; var max = window.innerHeight ? window.height - window.innerHeight : document.body.scrollHeight - (document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight); this.scrollStart = Position.deltaY; this.delta = (offsets[1] > max ? max : offsets[1]) - this.scrollStart; }, update: function(position) { Position.prepare(); window.scrollTo(Position.deltaX, this.scrollStart + (position*this.delta)); } }); /* ------------- combination effects ------------- */ Effect.Fade = function(element) { element = $(element); var oldOpacity = element.getInlineOpacity(); var options = Object.extend({ from: element.getOpacity() || 1.0, to: 0.0, afterFinishInternal: function(effect) { if(effect.options.to!=0) return; effect.element.hide().setStyle({opacity: oldOpacity}); }}, arguments[1] || {}); return new Effect.Opacity(element,options); } Effect.Appear = function(element) { element = $(element); var options = Object.extend({ from: (element.getStyle('display') == 'none' ? 0.0 : element.getOpacity() || 0.0), to: 1.0, // force Safari to render floated elements properly afterFinishInternal: function(effect) { effect.element.forceRerendering(); }, beforeSetup: function(effect) { effect.element.setOpacity(effect.options.from).show(); }}, arguments[1] || {}); return new Effect.Opacity(element,options); } Effect.Puff = function(element) { element = $(element); var oldStyle = { opacity: element.getInlineOpacity(), position: element.getStyle('position'), top: element.style.top, left: element.style.left, width: element.style.width, height: element.style.height }; return new Effect.Parallel( [ new Effect.Scale(element, 200, { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }), new Effect.Opacity(element, { sync: true, to: 0.0 } ) ], Object.extend({ duration: 1.0, beforeSetupInternal: function(effect) { Position.absolutize(effect.effects[0].element) }, afterFinishInternal: function(effect) { effect.effects[0].element.hide().setStyle(oldStyle); } }, arguments[1] || {}) ); } Effect.BlindUp = function(element) { element = $(element); element.makeClipping(); return new Effect.Scale(element, 0, Object.extend({ scaleContent: false, scaleX: false, restoreAfterFinish: true, afterFinishInternal: function(effect) { effect.element.hide().undoClipping(); } }, arguments[1] || {}) ); } Effect.BlindDown = function(element) { element = $(element); var elementDimensions = element.getDimensions(); return new Effect.Scale(element, 100, Object.extend({ scaleContent: false, scaleX: false, scaleFrom: 0, scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, restoreAfterFinish: true, afterSetup: function(effect) { effect.element.makeClipping().setStyle({height: '0px'}).show(); }, afterFinishInternal: function(effect) { effect.element.undoClipping(); } }, arguments[1] || {})); } Effect.SwitchOff = function(element) { element = $(element); var oldOpacity = element.getInlineOpacity(); return new Effect.Appear(element, Object.extend({ duration: 0.4, from: 0, transition: Effect.Transitions.flicker, afterFinishInternal: function(effect) { new Effect.Scale(effect.element, 1, { duration: 0.3, scaleFromCenter: true, scaleX: false, scaleContent: false, restoreAfterFinish: true, beforeSetup: function(effect) { effect.element.makePositioned().makeClipping(); }, afterFinishInternal: function(effect) { effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: oldOpacity}); } }) } }, arguments[1] || {})); } Effect.DropOut = function(element) { element = $(element); var oldStyle = { top: element.getStyle('top'), left: element.getStyle('left'), opacity: element.getInlineOpacity() }; return new Effect.Parallel( [ new Effect.Move(element, {x: 0, y: 100, sync: true }), new Effect.Opacity(element, { sync: true, to: 0.0 }) ], Object.extend( { duration: 0.5, beforeSetup: function(effect) { effect.effects[0].element.makePositioned(); }, afterFinishInternal: function(effect) { effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle); } }, arguments[1] || {})); } Effect.Shake = function(element) { element = $(element); var oldStyle = { top: element.getStyle('top'), left: element.getStyle('left') }; return new Effect.Move(element, { x: 20, y: 0, duration: 0.05, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: -40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: 40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: -40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: 40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: -20, y: 0, duration: 0.05, afterFinishInternal: function(effect) { effect.element.undoPositioned().setStyle(oldStyle); }}) }}) }}) }}) }}) }}); } Effect.SlideDown = function(element) { element = $(element).cleanWhitespace(); // SlideDown need to have the content of the element wrapped in a container element with fixed height! var oldInnerBottom = element.down().getStyle('bottom'); var elementDimensions = element.getDimensions(); return new Effect.Scale(element, 100, Object.extend({ scaleContent: false, scaleX: false, scaleFrom: window.opera ? 0 : 1, scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, restoreAfterFinish: true, afterSetup: function(effect) { effect.element.makePositioned(); effect.element.down().makePositioned(); if(window.opera) effect.element.setStyle({top: ''}); effect.element.makeClipping().setStyle({height: '0px'}).show(); }, afterUpdateInternal: function(effect) { effect.element.down().setStyle({bottom: (effect.dims[0] - effect.element.clientHeight) + 'px' }); }, afterFinishInternal: function(effect) { effect.element.undoClipping().undoPositioned(); effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); } }, arguments[1] || {}) ); } Effect.SlideUp = function(element) { element = $(element).cleanWhitespace(); var oldInnerBottom = element.down().getStyle('bottom'); return new Effect.Scale(element, window.opera ? 0 : 1, Object.extend({ scaleContent: false, scaleX: false, scaleMode: 'box', scaleFrom: 100, restoreAfterFinish: true, beforeStartInternal: function(effect) { effect.element.makePositioned(); effect.element.down().makePositioned(); if(window.opera) effect.element.setStyle({top: ''}); effect.element.makeClipping().show(); }, afterUpdateInternal: function(effect) { effect.element.down().setStyle({bottom: (effect.dims[0] - effect.element.clientHeight) + 'px' }); }, afterFinishInternal: function(effect) { effect.element.hide().undoClipping().undoPositioned().setStyle({bottom: oldInnerBottom}); effect.element.down().undoPositioned(); } }, arguments[1] || {}) ); } // Bug in opera makes the TD containing this element expand for a instance after finish Effect.Squish = function(element) { return new Effect.Scale(element, window.opera ? 1 : 0, { restoreAfterFinish: true, beforeSetup: function(effect) { effect.element.makeClipping(); }, afterFinishInternal: function(effect) { effect.element.hide().undoClipping(); } }); } Effect.Grow = function(element) { element = $(element); var options = Object.extend({ direction: 'center', moveTransition: Effect.Transitions.sinoidal, scaleTransition: Effect.Transitions.sinoidal, opacityTransition: Effect.Transitions.full }, arguments[1] || {}); var oldStyle = { top: element.style.top, left: element.style.left, height: element.style.height, width: element.style.width, opacity: element.getInlineOpacity() }; var dims = element.getDimensions(); var initialMoveX, initialMoveY; var moveX, moveY; switch (options.direction) { case 'top-left': initialMoveX = initialMoveY = moveX = moveY = 0; break; case 'top-right': initialMoveX = dims.width; initialMoveY = moveY = 0; moveX = -dims.width; break; case 'bottom-left': initialMoveX = moveX = 0; initialMoveY = dims.height; moveY = -dims.height; break; case 'bottom-right': initialMoveX = dims.width; initialMoveY = dims.height; moveX = -dims.width; moveY = -dims.height; break; case 'center': initialMoveX = dims.width / 2; initialMoveY = dims.height / 2; moveX = -dims.width / 2; moveY = -dims.height / 2; break; } return new Effect.Move(element, { x: initialMoveX, y: initialMoveY, duration: 0.01, beforeSetup: function(effect) { effect.element.hide().makeClipping().makePositioned(); }, afterFinishInternal: function(effect) { new Effect.Parallel( [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }), new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }), new Effect.Scale(effect.element, 100, { scaleMode: { originalHeight: dims.height, originalWidth: dims.width }, sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true}) ], Object.extend({ beforeSetup: function(effect) { effect.effects[0].element.setStyle({height: '0px'}).show(); }, afterFinishInternal: function(effect) { effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle); } }, options) ) } }); } Effect.Shrink = function(element) { element = $(element); var options = Object.extend({ direction: 'center', moveTransition: Effect.Transitions.sinoidal, scaleTransition: Effect.Transitions.sinoidal, opacityTransition: Effect.Transitions.none }, arguments[1] || {}); var oldStyle = { top: element.style.top, left: element.style.left, height: element.style.height, width: element.style.width, opacity: element.getInlineOpacity() }; var dims = element.getDimensions(); var moveX, moveY; switch (options.direction) { case 'top-left': moveX = moveY = 0; break; case 'top-right': moveX = dims.width; moveY = 0; break; case 'bottom-left': moveX = 0; moveY = dims.height; break; case 'bottom-right': moveX = dims.width; moveY = dims.height; break; case 'center': moveX = dims.width / 2; moveY = dims.height / 2; break; } return new Effect.Parallel( [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }), new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}), new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }) ], Object.extend({ beforeStartInternal: function(effect) { effect.effects[0].element.makePositioned().makeClipping(); }, afterFinishInternal: function(effect) { effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); } }, options) ); } Effect.Pulsate = function(element) { element = $(element); var options = arguments[1] || {}; var oldOpacity = element.getInlineOpacity(); var transition = options.transition || Effect.Transitions.sinoidal; var reverser = function(pos){ return transition(1-Effect.Transitions.pulse(pos, options.pulses)) }; reverser.bind(transition); return new Effect.Opacity(element, Object.extend(Object.extend({ duration: 2.0, from: 0, afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); } }, options), {transition: reverser})); } Effect.Fold = function(element) { element = $(element); var oldStyle = { top: element.style.top, left: element.style.left, width: element.style.width, height: element.style.height }; element.makeClipping(); return new Effect.Scale(element, 5, Object.extend({ scaleContent: false, scaleX: false, afterFinishInternal: function(effect) { new Effect.Scale(element, 1, { scaleContent: false, scaleY: false, afterFinishInternal: function(effect) { effect.element.hide().undoClipping().setStyle(oldStyle); } }); }}, arguments[1] || {})); }; Effect.Morph = Class.create(); Object.extend(Object.extend(Effect.Morph.prototype, Effect.Base.prototype), { initialize: function(element) { this.element = $(element); if(!this.element) throw(Effect._elementDoesNotExistError); var options = Object.extend({ style: {} }, arguments[1] || {}); if (typeof options.style == 'string') { if(options.style.indexOf(':') == -1) { var cssText = '', selector = '.' + options.style; $A(document.styleSheets).reverse().each(function(styleSheet) { if (styleSheet.cssRules) cssRules = styleSheet.cssRules; else if (styleSheet.rules) cssRules = styleSheet.rules; $A(cssRules).reverse().each(function(rule) { if (selector == rule.selectorText) { cssText = rule.style.cssText; throw $break; } }); if (cssText) throw $break; }); this.style = cssText.parseStyle(); options.afterFinishInternal = function(effect){ effect.element.addClassName(effect.options.style); effect.transforms.each(function(transform) { if(transform.style != 'opacity') effect.element.style[transform.style] = ''; }); } } else this.style = options.style.parseStyle(); } else this.style = $H(options.style) this.start(options); }, setup: function(){ function parseColor(color){ if(!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) color = '#ffffff'; color = color.parseColor(); return $R(0,2).map(function(i){ return parseInt( color.slice(i*2+1,i*2+3), 16 ) }); } this.transforms = this.style.map(function(pair){ var property = pair[0], value = pair[1], unit = null; if(value.parseColor('#zzzzzz') != '#zzzzzz') { value = value.parseColor(); unit = 'color'; } else if(property == 'opacity') { value = parseFloat(value); if(Prototype.Browser.IE && (!this.element.currentStyle.hasLayout)) this.element.setStyle({zoom: 1}); } else if(Element.CSS_LENGTH.test(value)) { var components = value.match(/^([\+\-]?[0-9\.]+)(.*)$/); value = parseFloat(components[1]); unit = (components.length == 3) ? components[2] : null; } var originalValue = this.element.getStyle(property); return { style: property.camelize(), originalValue: unit=='color' ? parseColor(originalValue) : parseFloat(originalValue || 0), targetValue: unit=='color' ? parseColor(value) : value, unit: unit }; }.bind(this)).reject(function(transform){ return ( (transform.originalValue == transform.targetValue) || ( transform.unit != 'color' && (isNaN(transform.originalValue) || isNaN(transform.targetValue)) ) ) }); }, update: function(position) { var style = {}, transform, i = this.transforms.length; while(i--) style[(transform = this.transforms[i]).style] = transform.unit=='color' ? '#'+ (Math.round(transform.originalValue[0]+ (transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart() + (Math.round(transform.originalValue[1]+ (transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart() + (Math.round(transform.originalValue[2]+ (transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart() : transform.originalValue + Math.round( ((transform.targetValue - transform.originalValue) * position) * 1000)/1000 + transform.unit; this.element.setStyle(style, true); } }); Effect.Transform = Class.create(); Object.extend(Effect.Transform.prototype, { initialize: function(tracks){ this.tracks = []; this.options = arguments[1] || {}; this.addTracks(tracks); }, addTracks: function(tracks){ tracks.each(function(track){ var data = $H(track).values().first(); this.tracks.push($H({ ids: $H(track).keys().first(), effect: Effect.Morph, options: { style: data } })); }.bind(this)); return this; }, play: function(){ return new Effect.Parallel( this.tracks.map(function(track){ var elements = [$(track.ids) || $$(track.ids)].flatten(); return elements.map(function(e){ return new track.effect(e, Object.extend({ sync:true }, track.options)) }); }).flatten(), this.options ); } }); Element.CSS_PROPERTIES = $w( 'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' + 'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' + 'borderRightColor borderRightStyle borderRightWidth borderSpacing ' + 'borderTopColor borderTopStyle borderTopWidth bottom clip color ' + 'fontSize fontWeight height left letterSpacing lineHeight ' + 'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+ 'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' + 'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' + 'right textIndent top width wordSpacing zIndex'); Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/; String.prototype.parseStyle = function(){ var element = document.createElement('div'); element.innerHTML = '
'; var style = element.childNodes[0].style, styleRules = $H(); Element.CSS_PROPERTIES.each(function(property){ if(style[property]) styleRules[property] = style[property]; }); if(Prototype.Browser.IE && this.indexOf('opacity') > -1) { styleRules.opacity = this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]; } return styleRules; }; Element.morph = function(element, style) { new Effect.Morph(element, Object.extend({ style: style }, arguments[2] || {})); return element; }; ['getInlineOpacity','forceRerendering','setContentZoom', 'collectTextNodes','collectTextNodesIgnoreClass','morph'].each( function(f) { Element.Methods[f] = Element[f]; } ); Element.Methods.visualEffect = function(element, effect, options) { s = effect.dasherize().camelize(); effect_class = s.charAt(0).toUpperCase() + s.substring(1); new Effect[effect_class](element, options); return $(element); }; Element.addMethods();_+http://www.gucci.com/javascripts/effects.js/01Obplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?JUZNS.objectsWNS.keys@ABCDEFGHIKLMNOPQRST _Content-EncodingTVary]Last-Modified]Cache-Control]Accept-RangesVServer^Content-LengthTDateTEtag\Content-TypeTgzip_Accept-Encoding_Wed, 29 Aug 2007 15:56:59 GMT_+max-age=7200,post-check=3600,pre-check=7200Ubytes_Microsoft-IIS/6.0T7346_Fri, 28 Dec 2007 09:01:28 GMT_"8017383b55eac71:74ec"12jkkl6_NSMutableDictionary\NSDictionary12noo6_NSHTTPURLResponseInternal12qrrs6_NSHTTPURLResponse]NSURLResponse$)2DILbd  %1357fkt   .3AO]dsx} .GLPfsx{tOy// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) // (c) 2005-2007 Sammi Williams (http://www.oriontransfer.co.nz, sammi@oriontransfer.co.nz) // // script.aculo.us is freely distributable under the terms of an MIT-style license. // For details, see the script.aculo.us web site: http://script.aculo.us/ if(typeof Effect == 'undefined') throw("dragdrop.js requires including script.aculo.us' effects.js library"); var Droppables = { drops: [], remove: function(element) { this.drops = this.drops.reject(function(d) { return d.element==$(element) }); }, add: function(element) { element = $(element); var options = Object.extend({ greedy: true, hoverclass: null, tree: false }, arguments[1] || {}); // cache containers if(options.containment) { options._containers = []; var containment = options.containment; if((typeof containment == 'object') && (containment.constructor == Array)) { containment.each( function(c) { options._containers.push($(c)) }); } else { options._containers.push($(containment)); } } if(options.accept) options.accept = [options.accept].flatten(); Element.makePositioned(element); // fix IE options.element = element; this.drops.push(options); }, findDeepestChild: function(drops) { deepest = drops[0]; for (i = 1; i < drops.length; ++i) if (Element.isParent(drops[i].element, deepest.element)) deepest = drops[i]; return deepest; }, isContained: function(element, drop) { var containmentNode; if(drop.tree) { containmentNode = element.treeNode; } else { containmentNode = element.parentNode; } return drop._containers.detect(function(c) { return containmentNode == c }); }, isAffected: function(point, element, drop) { return ( (drop.element!=element) && ((!drop._containers) || this.isContained(element, drop)) && ((!drop.accept) || (Element.classNames(element).detect( function(v) { return drop.accept.include(v) } ) )) && Position.within(drop.element, point[0], point[1]) ); }, deactivate: function(drop) { if(drop.hoverclass) Element.removeClassName(drop.element, drop.hoverclass); this.last_active = null; }, activate: function(drop) { if(drop.hoverclass) Element.addClassName(drop.element, drop.hoverclass); this.last_active = drop; }, show: function(point, element) { if(!this.drops.length) return; var affected = []; if(this.last_active) this.deactivate(this.last_active); this.drops.each( function(drop) { if(Droppables.isAffected(point, element, drop)) affected.push(drop); }); if(affected.length>0) { drop = Droppables.findDeepestChild(affected); Position.within(drop.element, point[0], point[1]); if(drop.onHover) drop.onHover(element, drop.element, Position.overlap(drop.overlap, drop.element)); Droppables.activate(drop); } }, fire: function(event, element) { if(!this.last_active) return; Position.prepare(); if (this.isAffected([Event.pointerX(event), Event.pointerY(event)], element, this.last_active)) if (this.last_active.onDrop) { this.last_active.onDrop(element, this.last_active.element, event); return true; } }, reset: function() { if(this.last_active) this.deactivate(this.last_active); } } var Draggables = { drags: [], observers: [], register: function(draggable) { if(this.drags.length == 0) { this.eventMouseUp = this.endDrag.bindAsEventListener(this); this.eventMouseMove = this.updateDrag.bindAsEventListener(this); this.eventKeypress = this.keyPress.bindAsEventListener(this); Event.observe(document, "mouseup", this.eventMouseUp); Event.observe(document, "mousemove", this.eventMouseMove); Event.observe(document, "keypress", this.eventKeypress); } this.drags.push(draggable); }, unregister: function(draggable) { this.drags = this.drags.reject(function(d) { return d==draggable }); if(this.drags.length == 0) { Event.stopObserving(document, "mouseup", this.eventMouseUp); Event.stopObserving(document, "mousemove", this.eventMouseMove); Event.stopObserving(document, "keypress", this.eventKeypress); } }, activate: function(draggable) { if(draggable.options.delay) { this._timeout = setTimeout(function() { Draggables._timeout = null; window.focus(); Draggables.activeDraggable = draggable; }.bind(this), draggable.options.delay); } else { window.focus(); // allows keypress events if window isn't currently focused, fails for Safari this.activeDraggable = draggable; } }, deactivate: function() { this.activeDraggable = null; }, updateDrag: function(event) { if(!this.activeDraggable) return; var pointer = [Event.pointerX(event), Event.pointerY(event)]; // Mozilla-based browsers fire successive mousemove events with // the same coordinates, prevent needless redrawing (moz bug?) if(this._lastPointer && (this._lastPointer.inspect() == pointer.inspect())) return; this._lastPointer = pointer; this.activeDraggable.updateDrag(event, pointer); }, endDrag: function(event) { if(this._timeout) { clearTimeout(this._timeout); this._timeout = null; } if(!this.activeDraggable) return; this._lastPointer = null; this.activeDraggable.endDrag(event); this.activeDraggable = null; }, keyPress: function(event) { if(this.activeDraggable) this.activeDraggable.keyPress(event); }, addObserver: function(observer) { this.observers.push(observer); this._cacheObserverCallbacks(); }, removeObserver: function(element) { // element instead of observer fixes mem leaks this.observers = this.observers.reject( function(o) { return o.element==element }); this._cacheObserverCallbacks(); }, notify: function(eventName, draggable, event) { // 'onStart', 'onEnd', 'onDrag' if(this[eventName+'Count'] > 0) this.observers.each( function(o) { if(o[eventName]) o[eventName](eventName, draggable, event); }); if(draggable.options[eventName]) draggable.options[eventName](draggable, event); }, _cacheObserverCallbacks: function() { ['onStart','onEnd','onDrag'].each( function(eventName) { Draggables[eventName+'Count'] = Draggables.observers.select( function(o) { return o[eventName]; } ).length; }); } } /*--------------------------------------------------------------------------*/ var Draggable = Class.create(); Draggable._dragging = {}; Draggable.prototype = { initialize: function(element) { var defaults = { handle: false, reverteffect: function(element, top_offset, left_offset) { var dur = Math.sqrt(Math.abs(top_offset^2)+Math.abs(left_offset^2))*0.02; new Effect.Move(element, { x: -left_offset, y: -top_offset, duration: dur, queue: {scope:'_draggable', position:'end'} }); }, endeffect: function(element) { var toOpacity = typeof element._opacity == 'number' ? element._opacity : 1.0; new Effect.Opacity(element, {duration:0.2, from:0.7, to:toOpacity, queue: {scope:'_draggable', position:'end'}, afterFinish: function(){ Draggable._dragging[element] = false } }); }, zindex: 1000, revert: false, quiet: false, scroll: false, scrollSensitivity: 20, scrollSpeed: 15, snap: false, // false, or xy or [x,y] or function(x,y){ return [x,y] } delay: 0 }; if(!arguments[1] || typeof arguments[1].endeffect == 'undefined') Object.extend(defaults, { starteffect: function(element) { element._opacity = Element.getOpacity(element); Draggable._dragging[element] = true; new Effect.Opacity(element, {duration:0.2, from:element._opacity, to:0.7}); } }); var options = Object.extend(defaults, arguments[1] || {}); this.element = $(element); if(options.handle && (typeof options.handle == 'string')) this.handle = this.element.down('.'+options.handle, 0); if(!this.handle) this.handle = $(options.handle); if(!this.handle) this.handle = this.element; if(options.scroll && !options.scroll.scrollTo && !options.scroll.outerHTML) { options.scroll = $(options.scroll); this._isScrollChild = Element.childOf(this.element, options.scroll); } Element.makePositioned(this.element); // fix IE this.delta = this.currentDelta(); this.options = options; this.dragging = false; this.eventMouseDown = this.initDrag.bindAsEventListener(this); Event.observe(this.handle, "mousedown", this.eventMouseDown); Draggables.register(this); }, destroy: function() { Event.stopObserving(this.handle, "mousedown", this.eventMouseDown); Draggables.unregister(this); }, currentDelta: function() { return([ parseInt(Element.getStyle(this.element,'left') || '0'), parseInt(Element.getStyle(this.element,'top') || '0')]); }, initDrag: function(event) { if(typeof Draggable._dragging[this.element] != 'undefined' && Draggable._dragging[this.element]) return; if(Event.isLeftClick(event)) { // abort on form elements, fixes a Firefox issue var src = Event.element(event); if((tag_name = src.tagName.toUpperCase()) && ( tag_name=='INPUT' || tag_name=='SELECT' || tag_name=='OPTION' || tag_name=='BUTTON' || tag_name=='TEXTAREA')) return; var pointer = [Event.pointerX(event), Event.pointerY(event)]; var pos = Position.cumulativeOffset(this.element); this.offset = [0,1].map( function(i) { return (pointer[i] - pos[i]) }); Draggables.activate(this); Event.stop(event); } }, startDrag: function(event) { this.dragging = true; if(this.options.zindex) { this.originalZ = parseInt(Element.getStyle(this.element,'z-index') || 0); this.element.style.zIndex = this.options.zindex; } if(this.options.ghosting) { this._clone = this.element.cloneNode(true); Position.absolutize(this.element); this.element.parentNode.insertBefore(this._clone, this.element); } if(this.options.scroll) { if (this.options.scroll == window) { var where = this._getWindowScroll(this.options.scroll); this.originalScrollLeft = where.left; this.originalScrollTop = where.top; } else { this.originalScrollLeft = this.options.scroll.scrollLeft; this.originalScrollTop = this.options.scroll.scrollTop; } } Draggables.notify('onStart', this, event); if(this.options.starteffect) this.options.starteffect(this.element); }, updateDrag: function(event, pointer) { if(!this.dragging) this.startDrag(event); if(!this.options.quiet){ Position.prepare(); Droppables.show(pointer, this.element); } Draggables.notify('onDrag', this, event); this.draw(pointer); if(this.options.change) this.options.change(this); if(this.options.scroll) { this.stopScrolling(); var p; if (this.options.scroll == window) { with(this._getWindowScroll(this.options.scroll)) { p = [ left, top, left+width, top+height ]; } } else { p = Position.page(this.options.scroll); p[0] += this.options.scroll.scrollLeft + Position.deltaX; p[1] += this.options.scroll.scrollTop + Position.deltaY; p.push(p[0]+this.options.scroll.offsetWidth); p.push(p[1]+this.options.scroll.offsetHeight); } var speed = [0,0]; if(pointer[0] < (p[0]+this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[0]+this.options.scrollSensitivity); if(pointer[1] < (p[1]+this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[1]+this.options.scrollSensitivity); if(pointer[0] > (p[2]-this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[2]-this.options.scrollSensitivity); if(pointer[1] > (p[3]-this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[3]-this.options.scrollSensitivity); this.startScrolling(speed); } // fix AppleWebKit rendering if(Prototype.Browser.WebKit) window.scrollBy(0,0); Event.stop(event); }, finishDrag: function(event, success) { this.dragging = false; if(this.options.quiet){ Position.prepare(); var pointer = [Event.pointerX(event), Event.pointerY(event)]; Droppables.show(pointer, this.element); } if(this.options.ghosting) { Position.relativize(this.element); Element.remove(this._clone); this._clone = null; } var dropped = false; if(success) { dropped = Droppables.fire(event, this.element); if (!dropped) dropped = false; } if(dropped && this.options.onDropped) this.options.onDropped(this.element); Draggables.notify('onEnd', this, event); var revert = this.options.revert; if(revert && typeof revert == 'function') revert = revert(this.element); var d = this.currentDelta(); if(revert && this.options.reverteffect) { if (dropped == 0 || revert != 'failure') this.options.reverteffect(this.element, d[1]-this.delta[1], d[0]-this.delta[0]); } else { this.delta = d; } if(this.options.zindex) this.element.style.zIndex = this.originalZ; if(this.options.endeffect) this.options.endeffect(this.element); Draggables.deactivate(this); Droppables.reset(); }, keyPress: function(event) { if(event.keyCode!=Event.KEY_ESC) return; this.finishDrag(event, false); Event.stop(event); }, endDrag: function(event) { if(!this.dragging) return; this.stopScrolling(); this.finishDrag(event, true); Event.stop(event); }, draw: function(point) { var pos = Position.cumulativeOffset(this.element); if(this.options.ghosting) { var r = Position.realOffset(this.element); pos[0] += r[0] - Position.deltaX; pos[1] += r[1] - Position.deltaY; } var d = this.currentDelta(); pos[0] -= d[0]; pos[1] -= d[1]; if(this.options.scroll && (this.options.scroll != window && this._isScrollChild)) { pos[0] -= this.options.scroll.scrollLeft-this.originalScrollLeft; pos[1] -= this.options.scroll.scrollTop-this.originalScrollTop; } var p = [0,1].map(function(i){ return (point[i]-pos[i]-this.offset[i]) }.bind(this)); if(this.options.snap) { if(typeof this.options.snap == 'function') { p = this.options.snap(p[0],p[1],this); } else { if(this.options.snap instanceof Array) { p = p.map( function(v, i) { return Math.round(v/this.options.snap[i])*this.options.snap[i] }.bind(this)) } else { p = p.map( function(v) { return Math.round(v/this.options.snap)*this.options.snap }.bind(this)) } }} var style = this.element.style; if((!this.options.constraint) || (this.options.constraint=='horizontal')) style.left = p[0] + "px"; if((!this.options.constraint) || (this.options.constraint=='vertical')) style.top = p[1] + "px"; if(style.visibility=="hidden") style.visibility = ""; // fix gecko rendering }, stopScrolling: function() { if(this.scrollInterval) { clearInterval(this.scrollInterval); this.scrollInterval = null; Draggables._lastScrollPointer = null; } }, startScrolling: function(speed) { if(!(speed[0] || speed[1])) return; this.scrollSpeed = [speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed]; this.lastScrolled = new Date(); this.scrollInterval = setInterval(this.scroll.bind(this), 10); }, scroll: function() { var current = new Date(); var delta = current - this.lastScrolled; this.lastScrolled = current; if(this.options.scroll == window) { with (this._getWindowScroll(this.options.scroll)) { if (this.scrollSpeed[0] || this.scrollSpeed[1]) { var d = delta / 1000; this.options.scroll.scrollTo( left + d*this.scrollSpeed[0], top + d*this.scrollSpeed[1] ); } } } else { this.options.scroll.scrollLeft += this.scrollSpeed[0] * delta / 1000; this.options.scroll.scrollTop += this.scrollSpeed[1] * delta / 1000; } Position.prepare(); Droppables.show(Draggables._lastPointer, this.element); Draggables.notify('onDrag', this); if (this._isScrollChild) { Draggables._lastScrollPointer = Draggables._lastScrollPointer || $A(Draggables._lastPointer); Draggables._lastScrollPointer[0] += this.scrollSpeed[0] * delta / 1000; Draggables._lastScrollPointer[1] += this.scrollSpeed[1] * delta / 1000; if (Draggables._lastScrollPointer[0] < 0) Draggables._lastScrollPointer[0] = 0; if (Draggables._lastScrollPointer[1] < 0) Draggables._lastScrollPointer[1] = 0; this.draw(Draggables._lastScrollPointer); } if(this.options.change) this.options.change(this); }, _getWindowScroll: function(w) { var T, L, W, H; with (w.document) { if (w.document.documentElement && documentElement.scrollTop) { T = documentElement.scrollTop; L = documentElement.scrollLeft; } else if (w.document.body) { T = body.scrollTop; L = body.scrollLeft; } if (w.innerWidth) { W = w.innerWidth; H = w.innerHeight; } else if (w.document.documentElement && documentElement.clientWidth) { W = documentElement.clientWidth; H = documentElement.clientHeight; } else { W = body.offsetWidth; H = body.offsetHeight } } return { top: T, left: L, width: W, height: H }; } } /*--------------------------------------------------------------------------*/ var SortableObserver = Class.create(); SortableObserver.prototype = { initialize: function(element, observer) { this.element = $(element); this.observer = observer; this.lastValue = Sortable.serialize(this.element); }, onStart: function() { this.lastValue = Sortable.serialize(this.element); }, onEnd: function() { Sortable.unmark(); if(this.lastValue != Sortable.serialize(this.element)) this.observer(this.element) } } var Sortable = { SERIALIZE_RULE: /^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$/, sortables: {}, _findRootElement: function(element) { while (element.tagName.toUpperCase() != "BODY") { if(element.id && Sortable.sortables[element.id]) return element; element = element.parentNode; } }, options: function(element) { element = Sortable._findRootElement($(element)); if(!element) return; return Sortable.sortables[element.id]; }, destroy: function(element){ var s = Sortable.options(element); if(s) { Draggables.removeObserver(s.element); s.droppables.each(function(d){ Droppables.remove(d) }); s.draggables.invoke('destroy'); delete Sortable.sortables[s.element.id]; } }, create: function(element) { element = $(element); var options = Object.extend({ element: element, tag: 'li', // assumes li children, override with tag: 'tagname' dropOnEmpty: false, tree: false, treeTag: 'ul', overlap: 'vertical', // one of 'vertical', 'horizontal' constraint: 'vertical', // one of 'vertical', 'horizontal', false containment: element, // also takes array of elements (or id's); or false handle: false, // or a CSS class only: false, delay: 0, hoverclass: null, ghosting: false, quiet: false, scroll: false, scrollSensitivity: 20, scrollSpeed: 15, format: this.SERIALIZE_RULE, onChange: Prototype.emptyFunction, onUpdate: Prototype.emptyFunction }, arguments[1] || {}); // clear any old sortable with same element this.destroy(element); // build options for the draggables var options_for_draggable = { revert: true, quiet: options.quiet, scroll: options.scroll, scrollSpeed: options.scrollSpeed, scrollSensitivity: options.scrollSensitivity, delay: options.delay, ghosting: options.ghosting, constraint: options.constraint, handle: options.handle }; if(options.starteffect) options_for_draggable.starteffect = options.starteffect; if(options.reverteffect) options_for_draggable.reverteffect = options.reverteffect; else if(options.ghosting) options_for_draggable.reverteffect = function(element) { element.style.top = 0; element.style.left = 0; }; if(options.endeffect) options_for_draggable.endeffect = options.endeffect; if(options.zindex) options_for_draggable.zindex = options.zindex; // build options for the droppables var options_for_droppable = { overlap: options.overlap, containment: options.containment, tree: options.tree, hoverclass: options.hoverclass, onHover: Sortable.onHover } var options_for_tree = { onHover: Sortable.onEmptyHover, overlap: options.overlap, containment: options.containment, hoverclass: options.hoverclass } // fix for gecko engine Element.cleanWhitespace(element); options.draggables = []; options.droppables = []; // drop on empty handling if(options.dropOnEmpty || options.tree) { Droppables.add(element, options_for_tree); options.droppables.push(element); } (this.findElements(element, options) || []).each( function(e) { // handles are per-draggable var handle = options.handle ? $(e).down('.'+options.handle,0) : e; options.draggables.push( new Draggable(e, Object.extend(options_for_draggable, { handle: handle }))); Droppables.add(e, options_for_droppable); if(options.tree) e.treeNode = element; options.droppables.push(e); }); if(options.tree) { (Sortable.findTreeElements(element, options) || []).each( function(e) { Droppables.add(e, options_for_tree); e.treeNode = element; options.droppables.push(e); }); } // keep reference this.sortables[element.id] = options; // for onupdate Draggables.addObserver(new SortableObserver(element, options.onUpdate)); }, // return all suitable-for-sortable elements in a guaranteed order findElements: function(element, options) { return Element.findChildren( element, options.only, options.tree ? true : false, options.tag); }, findTreeElements: function(element, options) { return Element.findChildren( element, options.only, options.tree ? true : false, options.treeTag); }, onHover: function(element, dropon, overlap) { if(Element.isParent(dropon, element)) return; if(overlap > .33 && overlap < .66 && Sortable.options(dropon).tree) { return; } else if(overlap>0.5) { Sortable.mark(dropon, 'before'); if(dropon.previousSibling != element) { var oldParentNode = element.parentNode; element.style.visibility = "hidden"; // fix gecko rendering dropon.parentNode.insertBefore(element, dropon); if(dropon.parentNode!=oldParentNode) Sortable.options(oldParentNode).onChange(element); Sortable.options(dropon.parentNode).onChange(element); } } else { Sortable.mark(dropon, 'after'); var nextElement = dropon.nextSibling || null; if(nextElement != element) { var oldParentNode = element.parentNode; element.style.visibility = "hidden"; // fix gecko rendering dropon.parentNode.insertBefore(element, nextElement); if(dropon.parentNode!=oldParentNode) Sortable.options(oldParentNode).onChange(element); Sortable.options(dropon.parentNode).onChange(element); } } }, onEmptyHover: function(element, dropon, overlap) { var oldParentNode = element.parentNode; var droponOptions = Sortable.options(dropon); if(!Element.isParent(dropon, element)) { var index; var children = Sortable.findElements(dropon, {tag: droponOptions.tag, only: droponOptions.only}); var child = null; if(children) { var offset = Element.offsetSize(dropon, droponOptions.overlap) * (1.0 - overlap); for (index = 0; index < children.length; index += 1) { if (offset - Element.offsetSize (children[index], droponOptions.overlap) >= 0) { offset -= Element.offsetSize (children[index], droponOptions.overlap); } else if (offset - (Element.offsetSize (children[index], droponOptions.overlap) / 2) >= 0) { child = index + 1 < children.length ? children[index + 1] : null; break; } else { child = children[index]; break; } } } dropon.insertBefore(element, child); Sortable.options(oldParentNode).onChange(element); droponOptions.onChange(element); } }, unmark: function() { if(Sortable._marker) Sortable._marker.hide(); }, mark: function(dropon, position) { // mark on ghosting only var sortable = Sortable.options(dropon.parentNode); if(sortable && !sortable.ghosting) return; if(!Sortable._marker) { Sortable._marker = ($('dropmarker') || Element.extend(document.createElement('DIV'))). hide().addClassName('dropmarker').setStyle({position:'absolute'}); document.getElementsByTagName("body").item(0).appendChild(Sortable._marker); } var offsets = Position.cumulativeOffset(dropon); Sortable._marker.setStyle({left: offsets[0]+'px', top: offsets[1] + 'px'}); if(position=='after') if(sortable.overlap == 'horizontal') Sortable._marker.setStyle({left: (offsets[0]+dropon.clientWidth) + 'px'}); else Sortable._marker.setStyle({top: (offsets[1]+dropon.clientHeight) + 'px'}); Sortable._marker.show(); }, _tree: function(element, options, parent) { var children = Sortable.findElements(element, options) || []; for (var i = 0; i < children.length; ++i) { var match = children[i].id.match(options.format); if (!match) continue; var child = { id: encodeURIComponent(match ? match[1] : null), element: element, parent: parent, children: [], position: parent.children.length, container: $(children[i]).down(options.treeTag) } /* Get the element containing the children and recurse over it */ if (child.container) this._tree(child.container, options, child) parent.children.push (child); } return parent; }, tree: function(element) { element = $(element); var sortableOptions = this.options(element); var options = Object.extend({ tag: sortableOptions.tag, treeTag: sortableOptions.treeTag, only: sortableOptions.only, name: element.id, format: sortableOptions.format }, arguments[1] || {}); var root = { id: null, parent: null, children: [], container: element, position: 0 } return Sortable._tree(element, options, root); }, /* Construct a [i] index for a particular node */ _constructIndex: function(node) { var index = ''; do { if (node.id) index = '[' + node.position + ']' + index; } while ((node = node.parent) != null); return index; }, sequence: function(element) { element = $(element); var options = Object.extend(this.options(element), arguments[1] || {}); return $(this.findElements(element, options) || []).map( function(item) { return item.id.match(options.format) ? item.id.match(options.format)[1] : ''; }); }, setSequence: function(element, new_sequence) { element = $(element); var options = Object.extend(this.options(element), arguments[2] || {}); var nodeMap = {}; this.findElements(element, options).each( function(n) { if (n.id.match(options.format)) nodeMap[n.id.match(options.format)[1]] = [n, n.parentNode]; n.parentNode.removeChild(n); }); new_sequence.each(function(ident) { var n = nodeMap[ident]; if (n) { n[1].appendChild(n[0]); delete nodeMap[ident]; } }); }, serialize: function(element) { element = $(element); var options = Object.extend(Sortable.options(element), arguments[1] || {}); var name = encodeURIComponent( (arguments[1] && arguments[1].name) ? arguments[1].name : element.id); if (options.tree) { return Sortable.tree(element, arguments[1]).children.map( function (item) { return [name + Sortable._constructIndex(item) + "[id]=" + encodeURIComponent(item.id)].concat(item.children.map(arguments.callee)); }).flatten().join('&'); } else { return Sortable.sequence(element, arguments[1]).map( function(item) { return name + "[]=" + encodeURIComponent(item); }).join('&'); } } } // Returns true if child is contained within element Element.isParent = function(child, element) { if (!child.parentNode || child == element) return false; if (child.parentNode == element) return true; return Element.isParent(child.parentNode, element); } Element.findChildren = function(element, only, recursive, tagName) { if(!element.hasChildNodes()) return null; tagName = tagName.toUpperCase(); if(only) only = [only].flatten(); var elements = []; $A(element.childNodes).each( function(e) { if(e.tagName && e.tagName.toUpperCase()==tagName && (!only || (Element.classNames(e).detect(function(v) { return only.include(v) })))) elements.push(e); if(recursive) { var grandchildren = Element.findChildren(e, only, recursive, tagName); if(grandchildren) elements.push(grandchildren); } }); return (elements.length>0 ? elements.flatten() : []); } Element.offsetSize = function (element, type) { return element['offset' + ((type=='vertical' || type=='height') ? 'Height' : 'Width')]; } _,http://www.gucci.com/javascripts/dragdrop.js345Obplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?JUZNS.objectsWNS.keys@ABCDEFGHIKLMNOPQRST _Content-EncodingTVary]Last-Modified]Cache-Control]Accept-RangesVServer^Content-LengthTDateTEtag\Content-TypeTgzip_Accept-Encoding_Wed, 29 Aug 2007 15:56:59 GMT_+max-age=7200,post-check=3600,pre-check=7200Ubytes_Microsoft-IIS/6.0T7381_Fri, 28 Dec 2007 09:01:40 GMT_"8017383b55eac71:74ec"12jkkl6_NSMutableDictionary\NSDictionary12noo6_NSHTTPURLResponseInternal12qrrs6_NSHTTPURLResponse]NSURLResponse$)2DILbd  %1357fkt   .3AO]dsx} .GLPfsx{tOu// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) // (c) 2005-2007 Ivan Krstic (http://blogs.law.harvard.edu/ivan) // (c) 2005-2007 Jon Tirsen (http://www.tirsen.com) // Contributors: // Richard Livsey // Rahul Bhargava // Rob Wills // // script.aculo.us is freely distributable under the terms of an MIT-style license. // For details, see the script.aculo.us web site: http://script.aculo.us/ // Autocompleter.Base handles all the autocompletion functionality // that's independent of the data source for autocompletion. This // includes drawing the autocompletion menu, observing keyboard // and mouse events, and similar. // // Specific autocompleters need to provide, at the very least, // a getUpdatedChoices function that will be invoked every time // the text inside the monitored textbox changes. This method // should get the text for which to provide autocompletion by // invoking this.getToken(), NOT by directly accessing // this.element.value. This is to allow incremental tokenized // autocompletion. Specific auto-completion logic (AJAX, etc) // belongs in getUpdatedChoices. // // Tokenized incremental autocompletion is enabled automatically // when an autocompleter is instantiated with the 'tokens' option // in the options parameter, e.g.: // new Ajax.Autocompleter('id','upd', '/url/', { tokens: ',' }); // will incrementally autocomplete with a comma as the token. // Additionally, ',' in the above example can be replaced with // a token array, e.g. { tokens: [',', '\n'] } which // enables autocompletion on multiple tokens. This is most // useful when one of the tokens is \n (a newline), as it // allows smart autocompletion after linebreaks. if(typeof Effect == 'undefined') throw("controls.js requires including script.aculo.us' effects.js library"); var Autocompleter = {} Autocompleter.Base = function() {}; Autocompleter.Base.prototype = { baseInitialize: function(element, update, options) { this.element = $(element); this.update = $(update); this.hasFocus = false; this.changed = false; this.active = false; this.index = 0; this.entryCount = 0; if(this.setOptions) this.setOptions(options); else this.options = options || {}; this.options.paramName = this.options.paramName || this.element.name; this.options.tokens = this.options.tokens || []; this.options.frequency = this.options.frequency || 0.4; this.options.minChars = this.options.minChars || 1; this.options.onShow = this.options.onShow || function(element, update){ if(!update.style.position || update.style.position=='absolute') { update.style.position = 'absolute'; Position.clone(element, update, { setHeight: false, offsetTop: element.offsetHeight }); } Effect.Appear(update,{duration:0.15}); }; this.options.onHide = this.options.onHide || function(element, update){ new Effect.Fade(update,{duration:0.15}) }; if(typeof(this.options.tokens) == 'string') this.options.tokens = new Array(this.options.tokens); this.observer = null; this.element.setAttribute('autocomplete','off'); Element.hide(this.update); Event.observe(this.element, "blur", this.onBlur.bindAsEventListener(this)); Event.observe(this.element, "keypress", this.onKeyPress.bindAsEventListener(this)); }, show: function() { if(Element.getStyle(this.update, 'display')=='none') this.options.onShow(this.element, this.update); if(!this.iefix && (Prototype.Browser.IE) && (Element.getStyle(this.update, 'position')=='absolute')) { new Insertion.After(this.update, ''); this.iefix = $(this.update.id+'_iefix'); } if(this.iefix) setTimeout(this.fixIEOverlapping.bind(this), 50); }, fixIEOverlapping: function() { Position.clone(this.update, this.iefix, {setTop:(!this.update.style.height)}); this.iefix.style.zIndex = 1; this.update.style.zIndex = 2; Element.show(this.iefix); }, hide: function() { this.stopIndicator(); if(Element.getStyle(this.update, 'display')!='none') this.options.onHide(this.element, this.update); if(this.iefix) Element.hide(this.iefix); }, startIndicator: function() { if(this.options.indicator) Element.show(this.options.indicator); }, stopIndicator: function() { if(this.options.indicator) Element.hide(this.options.indicator); }, onKeyPress: function(event) { if(this.active) switch(event.keyCode) { case Event.KEY_TAB: case Event.KEY_RETURN: this.selectEntry(); Event.stop(event); case Event.KEY_ESC: this.hide(); this.active = false; Event.stop(event); return; case Event.KEY_LEFT: case Event.KEY_RIGHT: return; case Event.KEY_UP: this.markPrevious(); this.render(); if(Prototype.Browser.WebKit) Event.stop(event); return; case Event.KEY_DOWN: this.markNext(); this.render(); if(Prototype.Browser.WebKit) Event.stop(event); return; } else if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN || (Prototype.Browser.WebKit > 0 && event.keyCode == 0)) return; this.changed = true; this.hasFocus = true; if(this.observer) clearTimeout(this.observer); this.observer = setTimeout(this.onObserverEvent.bind(this), this.options.frequency*1000); }, activate: function() { this.changed = false; this.hasFocus = true; this.getUpdatedChoices(); }, onHover: function(event) { var element = Event.findElement(event, 'LI'); if(this.index != element.autocompleteIndex) { this.index = element.autocompleteIndex; this.render(); } Event.stop(event); }, onClick: function(event) { var element = Event.findElement(event, 'LI'); this.index = element.autocompleteIndex; this.selectEntry(); this.hide(); }, onBlur: function(event) { // needed to make click events working setTimeout(this.hide.bind(this), 250); this.hasFocus = false; this.active = false; }, render: function() { if(this.entryCount > 0) { for (var i = 0; i < this.entryCount; i++) this.index==i ? Element.addClassName(this.getEntry(i),"selected") : Element.removeClassName(this.getEntry(i),"selected"); if(this.hasFocus) { this.show(); this.active = true; } } else { this.active = false; this.hide(); } }, markPrevious: function() { if(this.index > 0) this.index-- else this.index = this.entryCount-1; this.getEntry(this.index).scrollIntoView(true); }, markNext: function() { if(this.index < this.entryCount-1) this.index++ else this.index = 0; this.getEntry(this.index).scrollIntoView(false); }, getEntry: function(index) { return this.update.firstChild.childNodes[index]; }, getCurrentEntry: function() { return this.getEntry(this.index); }, selectEntry: function() { this.active = false; this.updateElement(this.getCurrentEntry()); }, updateElement: function(selectedElement) { if (this.options.updateElement) { this.options.updateElement(selectedElement); return; } var value = ''; if (this.options.select) { var nodes = document.getElementsByClassName(this.options.select, selectedElement) || []; if(nodes.length>0) value = Element.collectTextNodes(nodes[0], this.options.select); } else value = Element.collectTextNodesIgnoreClass(selectedElement, 'informal'); var lastTokenPos = this.findLastToken(); if (lastTokenPos != -1) { var newValue = this.element.value.substr(0, lastTokenPos + 1); var whitespace = this.element.value.substr(lastTokenPos + 1).match(/^\s+/); if (whitespace) newValue += whitespace[0]; this.element.value = newValue + value; } else { this.element.value = value; } this.element.focus(); if (this.options.afterUpdateElement) this.options.afterUpdateElement(this.element, selectedElement); }, updateChoices: function(choices) { if(!this.changed && this.hasFocus) { this.update.innerHTML = choices; Element.cleanWhitespace(this.update); Element.cleanWhitespace(this.update.down()); if(this.update.firstChild && this.update.down().childNodes) { this.entryCount = this.update.down().childNodes.length; for (var i = 0; i < this.entryCount; i++) { var entry = this.getEntry(i); entry.autocompleteIndex = i; this.addObservers(entry); } } else { this.entryCount = 0; } this.stopIndicator(); this.index = 0; if(this.entryCount==1 && this.options.autoSelect) { this.selectEntry(); this.hide(); } else { this.render(); } } }, addObservers: function(element) { Event.observe(element, "mouseover", this.onHover.bindAsEventListener(this)); Event.observe(element, "click", this.onClick.bindAsEventListener(this)); }, onObserverEvent: function() { this.changed = false; if(this.getToken().length>=this.options.minChars) { this.startIndicator(); this.getUpdatedChoices(); } else { this.active = false; this.hide(); } }, getToken: function() { var tokenPos = this.findLastToken(); if (tokenPos != -1) var ret = this.element.value.substr(tokenPos + 1).replace(/^\s+/,'').replace(/\s+$/,''); else var ret = this.element.value; return /\n/.test(ret) ? '' : ret; }, findLastToken: function() { var lastTokenPos = -1; for (var i=0; i lastTokenPos) lastTokenPos = thisTokenPos; } return lastTokenPos; } } Ajax.Autocompleter = Class.create(); Object.extend(Object.extend(Ajax.Autocompleter.prototype, Autocompleter.Base.prototype), { initialize: function(element, update, url, options) { this.baseInitialize(element, update, options); this.options.asynchronous = true; this.options.onComplete = this.onComplete.bind(this); this.options.defaultParams = this.options.parameters || null; this.url = url; }, getUpdatedChoices: function() { entry = encodeURIComponent(this.options.paramName) + '=' + encodeURIComponent(this.getToken()); this.options.parameters = this.options.callback ? this.options.callback(this.element, entry) : entry; if(this.options.defaultParams) this.options.parameters += '&' + this.options.defaultParams; new Ajax.Request(this.url, this.options); }, onComplete: function(request) { this.updateChoices(request.responseText); } }); // The local array autocompleter. Used when you'd prefer to // inject an array of autocompletion options into the page, rather // than sending out Ajax queries, which can be quite slow sometimes. // // The constructor takes four parameters. The first two are, as usual, // the id of the monitored textbox, and id of the autocompletion menu. // The third is the array you want to autocomplete from, and the fourth // is the options block. // // Extra local autocompletion options: // - choices - How many autocompletion choices to offer // // - partialSearch - If false, the autocompleter will match entered // text only at the beginning of strings in the // autocomplete array. Defaults to true, which will // match text at the beginning of any *word* in the // strings in the autocomplete array. If you want to // search anywhere in the string, additionally set // the option fullSearch to true (default: off). // // - fullSsearch - Search anywhere in autocomplete array strings. // // - partialChars - How many characters to enter before triggering // a partial match (unlike minChars, which defines // how many characters are required to do any match // at all). Defaults to 2. // // - ignoreCase - Whether to ignore case when autocompleting. // Defaults to true. // // It's possible to pass in a custom function as the 'selector' // option, if you prefer to write your own autocompletion logic. // In that case, the other options above will not apply unless // you support them. Autocompleter.Local = Class.create(); Autocompleter.Local.prototype = Object.extend(new Autocompleter.Base(), { initialize: function(element, update, array, options) { this.baseInitialize(element, update, options); this.options.array = array; }, getUpdatedChoices: function() { this.updateChoices(this.options.selector(this)); }, setOptions: function(options) { this.options = Object.extend({ choices: 10, partialSearch: true, partialChars: 2, ignoreCase: true, fullSearch: false, selector: function(instance) { var ret = []; // Beginning matches var partial = []; // Inside matches var entry = instance.getToken(); var count = 0; for (var i = 0; i < instance.options.array.length && ret.length < instance.options.choices ; i++) { var elem = instance.options.array[i]; var foundPos = instance.options.ignoreCase ? elem.toLowerCase().indexOf(entry.toLowerCase()) : elem.indexOf(entry); while (foundPos != -1) { if (foundPos == 0 && elem.length != entry.length) { ret.push("
  • " + elem.substr(0, entry.length) + "" + elem.substr(entry.length) + "
  • "); break; } else if (entry.length >= instance.options.partialChars && instance.options.partialSearch && foundPos != -1) { if (instance.options.fullSearch || /\s/.test(elem.substr(foundPos-1,1))) { partial.push("
  • " + elem.substr(0, foundPos) + "" + elem.substr(foundPos, entry.length) + "" + elem.substr( foundPos + entry.length) + "
  • "); break; } } foundPos = instance.options.ignoreCase ? elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos + 1) : elem.indexOf(entry, foundPos + 1); } } if (partial.length) ret = ret.concat(partial.slice(0, instance.options.choices - ret.length)) return "
      " + ret.join('') + "
    "; } }, options || {}); } }); // AJAX in-place editor // // see documentation on http://wiki.script.aculo.us/scriptaculous/show/Ajax.InPlaceEditor // Use this if you notice weird scrolling problems on some browsers, // the DOM might be a bit confused when this gets called so do this // waits 1 ms (with setTimeout) until it does the activation Field.scrollFreeActivate = function(field) { setTimeout(function() { Field.activate(field); }, 1); } Ajax.InPlaceEditor = Class.create(); Ajax.InPlaceEditor.defaultHighlightColor = "#FFFF99"; Ajax.InPlaceEditor.prototype = { initialize: function(element, url, options) { this.url = url; this.element = $(element); this.options = Object.extend({ paramName: "value", okButton: true, okLink: false, okText: "ok", cancelButton: false, cancelLink: true, cancelText: "cancel", textBeforeControls: '', textBetweenControls: '', textAfterControls: '', savingText: "Saving...", clickToEditText: "Click to edit", okText: "ok", rows: 1, onComplete: function(transport, element) { new Effect.Highlight(element, {startcolor: this.options.highlightcolor}); }, onFailure: function(transport) { alert("Error communicating with the server: " + transport.responseText.stripTags()); }, callback: function(form) { return Form.serialize(form); }, handleLineBreaks: true, loadingText: 'Loading...', savingClassName: 'inplaceeditor-saving', loadingClassName: 'inplaceeditor-loading', formClassName: 'inplaceeditor-form', highlightcolor: Ajax.InPlaceEditor.defaultHighlightColor, highlightendcolor: "#FFFFFF", externalControl: null, submitOnBlur: false, ajaxOptions: {}, evalScripts: false }, options || {}); if(!this.options.formId && this.element.id) { this.options.formId = this.element.id + "-inplaceeditor"; if ($(this.options.formId)) { // there's already a form with that name, don't specify an id this.options.formId = null; } } if (this.options.externalControl) { this.options.externalControl = $(this.options.externalControl); } this.originalBackground = Element.getStyle(this.element, 'background-color'); if (!this.originalBackground) { this.originalBackground = "transparent"; } this.element.title = this.options.clickToEditText; this.onclickListener = this.enterEditMode.bindAsEventListener(this); this.mouseoverListener = this.enterHover.bindAsEventListener(this); this.mouseoutListener = this.leaveHover.bindAsEventListener(this); Event.observe(this.element, 'click', this.onclickListener); Event.observe(this.element, 'mouseover', this.mouseoverListener); Event.observe(this.element, 'mouseout', this.mouseoutListener); if (this.options.externalControl) { Event.observe(this.options.externalControl, 'click', this.onclickListener); Event.observe(this.options.externalControl, 'mouseover', this.mouseoverListener); Event.observe(this.options.externalControl, 'mouseout', this.mouseoutListener); } }, enterEditMode: function(evt) { if (this.saving) return; if (this.editing) return; this.editing = true; this.onEnterEditMode(); if (this.options.externalControl) { Element.hide(this.options.externalControl); } Element.hide(this.element); this.createForm(); this.element.parentNode.insertBefore(this.form, this.element); if (!this.options.loadTextURL) Field.scrollFreeActivate(this.editField); // stop the event to avoid a page refresh in Safari if (evt) { Event.stop(evt); } return false; }, createForm: function() { this.form = document.createElement("form"); this.form.id = this.options.formId; Element.addClassName(this.form, this.options.formClassName) this.form.onsubmit = this.onSubmit.bind(this); this.createEditField(); if (this.options.textarea) { var br = document.createElement("br"); this.form.appendChild(br); } if (this.options.textBeforeControls) this.form.appendChild(document.createTextNode(this.options.textBeforeControls)); if (this.options.okButton) { var okButton = document.createElement("input"); okButton.type = "submit"; okButton.value = this.options.okText; okButton.className = 'editor_ok_button'; this.form.appendChild(okButton); } if (this.options.okLink) { var okLink = document.createElement("a"); okLink.href = "#"; okLink.appendChild(document.createTextNode(this.options.okText)); okLink.onclick = this.onSubmit.bind(this); okLink.className = 'editor_ok_link'; this.form.appendChild(okLink); } if (this.options.textBetweenControls && (this.options.okLink || this.options.okButton) && (this.options.cancelLink || this.options.cancelButton)) this.form.appendChild(document.createTextNode(this.options.textBetweenControls)); if (this.options.cancelButton) { var cancelButton = document.createElement("input"); cancelButton.type = "submit"; cancelButton.value = this.options.cancelText; cancelButton.onclick = this.onclickCancel.bind(this); cancelButton.className = 'editor_cancel_button'; this.form.appendChild(cancelButton); } if (this.options.cancelLink) { var cancelLink = document.createElement("a"); cancelLink.href = "#"; cancelLink.appendChild(document.createTextNode(this.options.cancelText)); cancelLink.onclick = this.onclickCancel.bind(this); cancelLink.className = 'editor_cancel editor_cancel_link'; this.form.appendChild(cancelLink); } if (this.options.textAfterControls) this.form.appendChild(document.createTextNode(this.options.textAfterControls)); }, hasHTMLLineBreaks: function(string) { if (!this.options.handleLineBreaks) return false; return string.match(/
    /i); }, convertHTMLLineBreaks: function(string) { return string.replace(/
    /gi, "\n").replace(//gi, "\n").replace(/<\/p>/gi, "\n").replace(/

    /gi, ""); }, createEditField: function() { var text; if(this.options.loadTextURL) { text = this.options.loadingText; } else { text = this.getText(); } var obj = this; if (this.options.rows == 1 && !this.hasHTMLLineBreaks(text)) { this.options.textarea = false; var textField = document.createElement("input"); textField.obj = this; textField.type = "text"; textField.name = this.options.paramName; textField.value = text; textField.style.backgroundColor = this.options.highlightcolor; textField.className = 'editor_field'; var size = this.options.size || this.options.cols || 0; if (size != 0) textField.size = size; if (this.options.submitOnBlur) textField.onblur = this.onSubmit.bind(this); this.editField = textField; } else { this.options.textarea = true; var textArea = document.createElement("textarea"); textArea.obj = this; textArea.name = this.options.paramName; textArea.value = this.convertHTMLLineBreaks(text); textArea.rows = this.options.rows; textArea.cols = this.options.cols || 40; textArea.className = 'editor_field'; if (this.options.submitOnBlur) textArea.onblur = this.onSubmit.bind(this); this.editField = textArea; } if(this.options.loadTextURL) { this.loadExternalText(); } this.form.appendChild(this.editField); }, getText: function() { return this.element.innerHTML; }, loadExternalText: function() { Element.addClassName(this.form, this.options.loadingClassName); this.editField.disabled = true; new Ajax.Request( this.options.loadTextURL, Object.extend({ asynchronous: true, onComplete: this.onLoadedExternalText.bind(this) }, this.options.ajaxOptions) ); }, onLoadedExternalText: function(transport) { Element.removeClassName(this.form, this.options.loadingClassName); this.editField.disabled = false; this.editField.value = transport.responseText.stripTags(); Field.scrollFreeActivate(this.editField); }, onclickCancel: function() { this.onComplete(); this.leaveEditMode(); return false; }, onFailure: function(transport) { this.options.onFailure(transport); if (this.oldInnerHTML) { this.element.innerHTML = this.oldInnerHTML; this.oldInnerHTML = null; } return false; }, onSubmit: function() { // onLoading resets these so we need to save them away for the Ajax call var form = this.form; var value = this.editField.value; // do this first, sometimes the ajax call returns before we get a chance to switch on Saving... // which means this will actually switch on Saving... *after* we've left edit mode causing Saving... // to be displayed indefinitely this.onLoading(); if (this.options.evalScripts) { new Ajax.Request( this.url, Object.extend({ parameters: this.options.callback(form, value), onComplete: this.onComplete.bind(this), onFailure: this.onFailure.bind(this), asynchronous:true, evalScripts:true }, this.options.ajaxOptions)); } else { new Ajax.Updater( { success: this.element, // don't update on failure (this could be an option) failure: null }, this.url, Object.extend({ parameters: this.options.callback(form, value), onComplete: this.onComplete.bind(this), onFailure: this.onFailure.bind(this) }, this.options.ajaxOptions)); } // stop the event to avoid a page refresh in Safari if (arguments.length > 1) { Event.stop(arguments[0]); } return false; }, onLoading: function() { this.saving = true; this.removeForm(); this.leaveHover(); this.showSaving(); }, showSaving: function() { this.oldInnerHTML = this.element.innerHTML; this.element.innerHTML = this.options.savingText; Element.addClassName(this.element, this.options.savingClassName); this.element.style.backgroundColor = this.originalBackground; Element.show(this.element); }, removeForm: function() { if(this.form) { if (this.form.parentNode) Element.remove(this.form); this.form = null; } }, enterHover: function() { if (this.saving) return; this.element.style.backgroundColor = this.options.highlightcolor; if (this.effect) { this.effect.cancel(); } Element.addClassName(this.element, this.options.hoverClassName) }, leaveHover: function() { if (this.options.backgroundColor) { this.element.style.backgroundColor = this.oldBackground; } Element.removeClassName(this.element, this.options.hoverClassName) if (this.saving) return; this.effect = new Effect.Highlight(this.element, { startcolor: this.options.highlightcolor, endcolor: this.options.highlightendcolor, restorecolor: this.originalBackground }); }, leaveEditMode: function() { Element.removeClassName(this.element, this.options.savingClassName); this.removeForm(); this.leaveHover(); this.element.style.backgroundColor = this.originalBackground; Element.show(this.element); if (this.options.externalControl) { Element.show(this.options.externalControl); } this.editing = false; this.saving = false; this.oldInnerHTML = null; this.onLeaveEditMode(); }, onComplete: function(transport) { this.leaveEditMode(); this.options.onComplete.bind(this)(transport, this.element); }, onEnterEditMode: function() {}, onLeaveEditMode: function() {}, dispose: function() { if (this.oldInnerHTML) { this.element.innerHTML = this.oldInnerHTML; } this.leaveEditMode(); Event.stopObserving(this.element, 'click', this.onclickListener); Event.stopObserving(this.element, 'mouseover', this.mouseoverListener); Event.stopObserving(this.element, 'mouseout', this.mouseoutListener); if (this.options.externalControl) { Event.stopObserving(this.options.externalControl, 'click', this.onclickListener); Event.stopObserving(this.options.externalControl, 'mouseover', this.mouseoverListener); Event.stopObserving(this.options.externalControl, 'mouseout', this.mouseoutListener); } } }; Ajax.InPlaceCollectionEditor = Class.create(); Object.extend(Ajax.InPlaceCollectionEditor.prototype, Ajax.InPlaceEditor.prototype); Object.extend(Ajax.InPlaceCollectionEditor.prototype, { createEditField: function() { if (!this.cached_selectTag) { var selectTag = document.createElement("select"); var collection = this.options.collection || []; var optionTag; collection.each(function(e,i) { optionTag = document.createElement("option"); optionTag.value = (e instanceof Array) ? e[0] : e; if((typeof this.options.value == 'undefined') && ((e instanceof Array) ? this.element.innerHTML == e[1] : e == optionTag.value)) optionTag.selected = true; if(this.options.value==optionTag.value) optionTag.selected = true; optionTag.appendChild(document.createTextNode((e instanceof Array) ? e[1] : e)); selectTag.appendChild(optionTag); }.bind(this)); this.cached_selectTag = selectTag; } this.editField = this.cached_selectTag; if(this.options.loadTextURL) this.loadExternalText(); this.form.appendChild(this.editField); this.options.callback = function(form, value) { return "value=" + encodeURIComponent(value); } } }); // Delayed observer, like Form.Element.Observer, // but waits for delay after last key input // Ideal for live-search fields Form.Element.DelayedObserver = Class.create(); Form.Element.DelayedObserver.prototype = { initialize: function(element, delay, callback) { this.delay = delay || 0.5; this.element = $(element); this.callback = callback; this.timer = null; this.lastValue = $F(this.element); Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this)); }, delayedListener: function(event) { if(this.lastValue == $F(this.element)) return; if(this.timer) clearTimeout(this.timer); this.timer = setTimeout(this.onTimerEvent.bind(this), this.delay * 1000); this.lastValue = $F(this.element); }, onTimerEvent: function() { this.timer = null; this.callback(this.element, $F(this.element)); } }; _,http://www.gucci.com/javascripts/controls.js789Obplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?JUZNS.objectsWNS.keys@ABCDEFGHIKLMNOPQRST _Content-EncodingTVary]Last-Modified]Cache-Control]Accept-RangesVServer^Content-LengthTDateTEtag\Content-TypeTgzip_Accept-Encoding_Wed, 29 Aug 2007 15:56:59 GMT_+max-age=7200,post-check=3600,pre-check=7200Ubytes_Microsoft-IIS/6.0T2607_Fri, 28 Dec 2007 09:01:42 GMT_"8017383b55eac71:74ec"12jkkl6_NSMutableDictionary\NSDictionary12noo6_NSHTTPURLResponseInternal12qrrs6_NSHTTPURLResponse]NSURLResponse$)2DILbd  %1357dir}   ,1?M[bqv{ ,EJNdqvytO('// Copyright (c) 2005-2007 Marty Haught, Thomas Fuchs // // script.aculo.us is freely distributable under the terms of an MIT-style license. // For details, see the script.aculo.us web site: http://script.aculo.us/ if(!Control) var Control = {}; Control.Slider = Class.create(); // options: // axis: 'vertical', or 'horizontal' (default) // // callbacks: // onChange(value) // onSlide(value) Control.Slider.prototype = { initialize: function(handle, track, options) { var slider = this; if(handle instanceof Array) { this.handles = handle.collect( function(e) { return $(e) }); } else { this.handles = [$(handle)]; } this.track = $(track); this.options = options || {}; this.axis = this.options.axis || 'horizontal'; this.increment = this.options.increment || 1; this.step = parseInt(this.options.step || '1'); this.range = this.options.range || $R(0,1); this.value = 0; // assure backwards compat this.values = this.handles.map( function() { return 0 }); this.spans = this.options.spans ? this.options.spans.map(function(s){ return $(s) }) : false; this.options.startSpan = $(this.options.startSpan || null); this.options.endSpan = $(this.options.endSpan || null); this.restricted = this.options.restricted || false; this.maximum = this.options.maximum || this.range.end; this.minimum = this.options.minimum || this.range.start; // Will be used to align the handle onto the track, if necessary this.alignX = parseInt(this.options.alignX || '0'); this.alignY = parseInt(this.options.alignY || '0'); this.trackLength = this.maximumOffset() - this.minimumOffset(); this.handleLength = this.isVertical() ? (this.handles[0].offsetHeight != 0 ? this.handles[0].offsetHeight : this.handles[0].style.height.replace(/px$/,"")) : (this.handles[0].offsetWidth != 0 ? this.handles[0].offsetWidth : this.handles[0].style.width.replace(/px$/,"")); this.active = false; this.dragging = false; this.disabled = false; if(this.options.disabled) this.setDisabled(); // Allowed values array this.allowedValues = this.options.values ? this.options.values.sortBy(Prototype.K) : false; if(this.allowedValues) { this.minimum = this.allowedValues.min(); this.maximum = this.allowedValues.max(); } this.eventMouseDown = this.startDrag.bindAsEventListener(this); this.eventMouseUp = this.endDrag.bindAsEventListener(this); this.eventMouseMove = this.update.bindAsEventListener(this); // Initialize handles in reverse (make sure first handle is active) this.handles.each( function(h,i) { i = slider.handles.length-1-i; slider.setValue(parseFloat( (slider.options.sliderValue instanceof Array ? slider.options.sliderValue[i] : slider.options.sliderValue) || slider.range.start), i); Element.makePositioned(h); // fix IE Event.observe(h, "mousedown", slider.eventMouseDown); }); Event.observe(this.track, "mousedown", this.eventMouseDown); Event.observe(document, "mouseup", this.eventMouseUp); Event.observe(document, "mousemove", this.eventMouseMove); this.initialized = true; }, dispose: function() { var slider = this; Event.stopObserving(this.track, "mousedown", this.eventMouseDown); Event.stopObserving(document, "mouseup", this.eventMouseUp); Event.stopObserving(document, "mousemove", this.eventMouseMove); this.handles.each( function(h) { Event.stopObserving(h, "mousedown", slider.eventMouseDown); }); }, setDisabled: function(){ this.disabled = true; }, setEnabled: function(){ this.disabled = false; }, getNearestValue: function(value){ if(this.allowedValues){ if(value >= this.allowedValues.max()) return(this.allowedValues.max()); if(value <= this.allowedValues.min()) return(this.allowedValues.min()); var offset = Math.abs(this.allowedValues[0] - value); var newValue = this.allowedValues[0]; this.allowedValues.each( function(v) { var currentOffset = Math.abs(v - value); if(currentOffset <= offset){ newValue = v; offset = currentOffset; } }); return newValue; } if(value > this.range.end) return this.range.end; if(value < this.range.start) return this.range.start; return value; }, setValue: function(sliderValue, handleIdx){ if(!this.active) { this.activeHandleIdx = handleIdx || 0; this.activeHandle = this.handles[this.activeHandleIdx]; this.updateStyles(); } handleIdx = handleIdx || this.activeHandleIdx || 0; if(this.initialized && this.restricted) { if((handleIdx>0) && (sliderValuethis.values[handleIdx+1])) sliderValue = this.values[handleIdx+1]; } sliderValue = this.getNearestValue(sliderValue); this.values[handleIdx] = sliderValue; this.value = this.values[0]; // assure backwards compat this.handles[handleIdx].style[this.isVertical() ? 'top' : 'left'] = this.translateToPx(sliderValue); this.drawSpans(); if(!this.dragging || !this.event) this.updateFinished(); }, setValueBy: function(delta, handleIdx) { this.setValue(this.values[handleIdx || this.activeHandleIdx || 0] + delta, handleIdx || this.activeHandleIdx || 0); }, translateToPx: function(value) { return Math.round( ((this.trackLength-this.handleLength)/(this.range.end-this.range.start)) * (value - this.range.start)) + "px"; }, translateToValue: function(offset) { return ((offset/(this.trackLength-this.handleLength) * (this.range.end-this.range.start)) + this.range.start); }, getRange: function(range) { var v = this.values.sortBy(Prototype.K); range = range || 0; return $R(v[range],v[range+1]); }, minimumOffset: function(){ return(this.isVertical() ? this.alignY : this.alignX); }, maximumOffset: function(){ return(this.isVertical() ? (this.track.offsetHeight != 0 ? this.track.offsetHeight : this.track.style.height.replace(/px$/,"")) - this.alignY : (this.track.offsetWidth != 0 ? this.track.offsetWidth : this.track.style.width.replace(/px$/,"")) - this.alignY); }, isVertical: function(){ return (this.axis == 'vertical'); }, drawSpans: function() { var slider = this; if(this.spans) $R(0, this.spans.length-1).each(function(r) { slider.setSpan(slider.spans[r], slider.getRange(r)) }); if(this.options.startSpan) this.setSpan(this.options.startSpan, $R(0, this.values.length>1 ? this.getRange(0).min() : this.value )); if(this.options.endSpan) this.setSpan(this.options.endSpan, $R(this.values.length>1 ? this.getRange(this.spans.length-1).max() : this.value, this.maximum)); }, setSpan: function(span, range) { if(this.isVertical()) { span.style.top = this.translateToPx(range.start); span.style.height = this.translateToPx(range.end - range.start + this.range.start); } else { span.style.left = this.translateToPx(range.start); span.style.width = this.translateToPx(range.end - range.start + this.range.start); } }, updateStyles: function() { this.handles.each( function(h){ Element.removeClassName(h, 'selected') }); Element.addClassName(this.activeHandle, 'selected'); }, startDrag: function(event) { if(Event.isLeftClick(event)) { if(!this.disabled){ this.active = true; var handle = Event.element(event); var pointer = [Event.pointerX(event), Event.pointerY(event)]; var track = handle; if(track==this.track) { var offsets = Position.cumulativeOffset(this.track); this.event = event; this.setValue(this.translateToValue( (this.isVertical() ? pointer[1]-offsets[1] : pointer[0]-offsets[0])-(this.handleLength/2) )); var offsets = Position.cumulativeOffset(this.activeHandle); this.offsetX = (pointer[0] - offsets[0]); this.offsetY = (pointer[1] - offsets[1]); } else { // find the handle (prevents issues with Safari) while((this.handles.indexOf(handle) == -1) && handle.parentNode) handle = handle.parentNode; if(this.handles.indexOf(handle)!=-1) { this.activeHandle = handle; this.activeHandleIdx = this.handles.indexOf(this.activeHandle); this.updateStyles(); var offsets = Position.cumulativeOffset(this.activeHandle); this.offsetX = (pointer[0] - offsets[0]); this.offsetY = (pointer[1] - offsets[1]); } } } Event.stop(event); } }, update: function(event) { if(this.active) { if(!this.dragging) this.dragging = true; this.draw(event); if(Prototype.Browser.WebKit) window.scrollBy(0,0); Event.stop(event); } }, draw: function(event) { var pointer = [Event.pointerX(event), Event.pointerY(event)]; var offsets = Position.cumulativeOffset(this.track); pointer[0] -= this.offsetX + offsets[0]; pointer[1] -= this.offsetY + offsets[1]; this.event = event; this.setValue(this.translateToValue( this.isVertical() ? pointer[1] : pointer[0] )); if(this.initialized && this.options.onSlide) this.options.onSlide(this.values.length>1 ? this.values : this.value, this); }, endDrag: function(event) { if(this.active && this.dragging) { this.finishDrag(event, true); Event.stop(event); } this.active = false; this.dragging = false; }, finishDrag: function(event, success) { this.active = false; this.dragging = false; this.updateFinished(); }, updateFinished: function() { if(this.initialized && this.options.onChange) this.options.onChange(this.values.length>1 ? this.values : this.value, this); this.event = null; } }_*http://www.gucci.com/javascripts/slider.js;<=Obplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078*+!-.WNS.base[NS.relative_-http://www.gucci.com/javascripts/gucci-ext.js1234X$classesZ$classname456UNSURLV%NSURLXNSObject_application/x-javascript9:;=>?JUZNS.objectsWNS.keys@ABCDEFGHIKLMNOPQRST _Content-EncodingTVary]Last-Modified]Cache-Control]Accept-RangesVServer^Content-LengthTDateTEtag\Content-TypeTgzip_Accept-Encoding_Fri, 26 Oct 2007 20:48:09 GMT_+max-age=7200,post-check=3600,pre-check=7200Ubytes_Microsoft-IIS/6.0T2715_Fri, 28 Dec 2007 09:01:52 GMT_"80a1c841118c81:74ec"12jkkl6_NSMutableDictionary\NSDictionary12noo6_NSHTTPURLResponseInternal12qrrs6_NSHTTPURLResponse]NSURLResponse$)2DILbd  %1357glu  /4BP^ety~ /GLPfsx{tO)Position.includeScrollOffsets = true; var Engine = { detect: function() { var UA = navigator.userAgent; this.isKHTML = /Konqueror|Safari|KHTML/.test(UA); this.isGecko = (/Gecko/.test(UA) && !this.isKHTML); this.isOpera = /Opera/.test(UA); this.isMSIE = (/MSIE/.test(UA) && !this.isOpera); this.isMSIE7 = this.isMSIE && !(/MSIE 6\./.test(UA) && !this.isOpera); this.isMSIE6 = this.isMSIE && !this.isMSIE7; this.isWebKit3 = /AppleWebKit/.test(UA) && / Version\//.test(UA); } } Engine.detect(); if(Engine.isMSIE){ try { document.execCommand("BackgroundImageCache", false, true); } catch(e) {} } Position.getPageSize = function() { var xScroll, yScroll; if (window.scrollMaxX) { xScroll = window.innerWidth + window.scrollMaxX; yScroll = window.innerHeight + window.scrollMaxY; } else { xScroll = document.body.scrollWidth; yScroll = document.body.scrollHeight; } var windowWidth, windowHeight; if (self.innerHeight) { // all except Explorer windowWidth = self.innerWidth; windowHeight = self.innerHeight; } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode windowWidth = document.documentElement.clientWidth; windowHeight = document.documentElement.clientHeight; } else if (document.body) { // other Explorers windowWidth = document.body.clientWidth; windowHeight = document.body.clientHeight; } // for small pages with total height less then height of the viewport pageHeight = Math.max(windowHeight, yScroll); // for small pages with total width less then width of the viewport pageWidth = Math.max(windowWidth, xScroll); return { page: { width: pageWidth, height: pageHeight }, window: { width: windowWidth, height: windowHeight } }; } Position.scrollX = function(){ return (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0); } var Loader = { _assets: $H({}), _checkInterval: null, _options: {}, _update: function() { var allLoaded = true; Loader._assets.each(function(a){ if(!a[1].complete && a[1].image.complete) { a[1].complete = true; a[1].completed_at = new Date().getTime();; if(a[1].options.onComplete) a[1].options.onComplete(a[0]); } if(!a[1].complete && !a[1].image.complete) allLoaded = false; }); if(allLoaded) { clearInterval(Loader._checkInterval); Loader._checkInterval = null; if(Loader._options && Loader._options.onComplete) Loader._options.onComplete(); Loader._options = null; } }, initialize: function() { var options = arguments[0] || {}; Loader._options = options; }, cacheOrLoad: function(url) { var options = arguments[1] || {}; if(this.isLoaded(url)) { if(options.onComplete) options.onComplete(); } else { this.load(url, options); } }, load: function(url) { if(Loader._assets[url]) return; var options = arguments[1] || {}; var a = {}; a.image = new Image(); a.image.src = url; a.complete = false; a.options = options; a.loaded_at = new Date().getTime(); Event.observe(a.image, 'error', function(){ Loader.error(url) }); Loader._assets[url] = a; if(!Loader._checkInterval) Loader._checkInterval = setInterval(Loader._update,10); }, error: function(url) { var asset = Loader._assets[url]; asset.complete = true; if(asset.options.onComplete) asset.options.onComplete('/images/empty.gif'); }, stats: function(url) { return (Loader._assets[url]._complete ? (Loader._assets[url]._completed_at - Loader._assets[url]._loaded_at) : null); }, isQueued: function(url) { return !!(Loader._assets[url]); }, isLoaded: function(url) { return (Loader._assets[url] && Loader._assets[url].complete); }, reset: function() { Loader._assets = $H({}); } }; Event.localPointer = function(event){ var p = [Event.pointerX(event), Event.pointerY(event)]; var element = arguments[1] || Event.element(event); var e = Position.page($(element)); return [ p[0]-(e[0]+(window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0)), p[1]-(e[1]+(window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0))]; }; Effect.HScroll = Class.create(); Object.extend(Object.extend(Effect.HScroll.prototype, Effect.Base.prototype), { initialize: function(delta) { this.scrollStart = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; var w = Position.getPageSize(); if(this.scrollStart + delta < 0) delta = -this.scrollStart; if(this.scrollStart + delta > (w.page.width-w.window.width)) delta = (w.page.width-w.window.width) - this.scrollStart; this.delta = delta; this.start(arguments[1] || {}); }, update: function(position) { Position.prepare(); window.scrollTo(this.scrollStart + (position*this.delta), 0); } }); Effect.HScrollTo = Class.create(); Object.extend(Object.extend(Effect.HScrollTo.prototype, Effect.Base.prototype), { initialize: function(scrollEnd) { this.scrollStart = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; var delta = scrollEnd - this.scrollStart; var w = Position.getPageSize(); if(this.scrollStart + delta < 0) delta = -this.scrollStart; if(this.scrollStart + delta > (w.page.width-w.window.width)) delta = (w.page.width-w.window.width) - this.scrollStart; this.delta = delta; this.start(arguments[1] || {}); }, update: function(position) { Position.prepare(); window.scrollTo(this.scrollStart + (position*this.delta), 0); } }); Effect.MoveRight = Class.create(); Object.extend(Object.extend(Effect.MoveRight.prototype, Effect.Base.prototype), { initialize: function(element, delta) { this.element = $(element); if(!this.element) throw(Effect._elementDoesNotExistError); var options = Object.extend({ x: delta }, arguments[2] || {}); this.start(options); }, setup: function() { this.originalRight = this.options.initialRight || parseFloat(this.element.getStyle('right') || '0'); }, update: function(position) { this.element.setStyle({ right: Math.round(this.options.x * position + this.originalRight) + 'px' }); } }); Effect.ZoomIn360 = Class.create(); Object.extend(Object.extend(Effect.ZoomIn360.prototype, Effect.Base.prototype), { initialize: function(element) { this.element = $(element); var options = Object.extend({}, arguments[1] || {}); var m = [options.pointer[0], options.pointer[1]]; if(m[1]<99) m[1] = 99; if(m[1]>382) m[1] = 382; m[0] = m[0]*(Gucci.Zoomer.FACTOR)*(Gucci.Zoomer.expand ? 0.5 : 0.75); m[1] = m[1]*(Gucci.Zoomer.FACTOR)*0.75; this.translate = [ -m[0], -m[1] ]; this.scale = [ ((1032*options.frames)-(260*options.frames)), (2000-504) ]; this.start(options); }, update: function(position) { var style = { left: Math.round(this.element.deltax + ((this.element.deltax*Gucci.Zoomer.FACTOR - this.element.deltax) * position)) + Math.round(this.translate[0] * position) + 'px', top: Math.round(this.translate[1] * position) + 'px', width: (260*this.options.frames) + Math.round(this.scale[0] * position) + 'px', height: 504 + Math.round(this.scale[1] * position) + 'px' }; this.element.setStyle(style); } }); Effect.ZoomOut360 = Class.create(); Object.extend(Object.extend(Effect.ZoomOut360.prototype, Effect.Base.prototype), { initialize: function(element) { this.element = $(element); var options = Object.extend({}, arguments[1] || {}); this.start(options); }, setup: function(){ this.origin = [ Math.round(this.element.offsetLeft - this.element.deltax*Gucci.Zoomer.FACTOR), this.element.offsetTop ]; this.translate = [ -this.origin[0], -this.origin[1] ]; this.scale = [ ((1032*this.options.frames)-(260*this.options.frames)), (2000-504) ]; }, update: function(position){ var style = { left: Math.round(this.element.deltax + ((this.element.deltax*Gucci.Zoomer.FACTOR - this.element.deltax) * (1-position))) + this.origin[0] + Math.round(this.translate[0] * position) + 'px', top: this.origin[1] + Math.round(this.translate[1] * position) + 'px', width: 1032*this.options.frames - Math.round(this.scale[0] * position) + 'px', height: 2000 - Math.round(this.scale[1] * position) + 'px' }; this.element.setStyle(style); } }); var wheelCallback = Prototype.K; function handleMouseWheel(delta) { wheelCallback(delta); } function wheel(event){ var delta = 0; if (!event) event = window.event; if (event.wheelDelta) { delta = event.wheelDelta/120; if (window.opera) delta = -delta; } else if (event.detail) { delta = -event.detail/3; } if (delta) handleMouseWheel(delta); } function scrollToHeadline(headline){ var find = headline.innerHTML.gsub(/\s/,''); var e = $$('h1').detect(function(h){ return (h.innerHTML.gsub(/\s/,'') == find) }); if(!e) return; var p = Position.page(e); new Effect.HScrollTo(p[0]-15-32,{transition:Gucci.cubic}); } if (window.addEventListener) window.addEventListener('DOMMouseScroll', wheel, false); window.onmousewheel = document.onmousewheel = wheel; // global var numItems = 0; function getServerName() { var href = document.location.href; var rExp = /^https*:\/\//; var rExp2 = /\/.*$/; var href2 = href.replace(rExp, '') var href3 = href2.replace(rExp2, '') return href3; } function getSecureProtocol(serverName) { if(serverName.substring(0,4)=='www.') { return "https://"; } else if(serverName.substring(0,6)=='stage.') { return "https://"; } else { return "http://"; } } function getSite() { var href = document.location.href; var rExp = /^https*:\/\/[^/]+\/([^/]+)\/.*$/; var site = href.replace(rExp, '$1'); return site; } function getSecureBaseURL() { var serverName = getServerName(); var protocol = getSecureProtocol(serverName); var site = getSite(); var ur = protocol+serverName+'/'+site; return ur; } _-http://www.gucci.com/javascripts/gucci-ext.js?@AObplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?JUZNS.objectsWNS.keys@ABCDEFGHIKLMNOPQRST _Content-EncodingTVary]Last-Modified]Cache-Control]Accept-RangesVServer^Content-LengthTDateTEtag\Content-TypeTgzip_Accept-Encoding_Tue, 18 Dec 2007 18:35:54 GMT_+max-age=7200,post-check=3600,pre-check=7200Ubytes_Microsoft-IIS/6.0T3750_Fri, 28 Dec 2007 09:01:55 GMT_"0e15fd2a441c81:74ec"12jkkl6_NSMutableDictionary\NSDictionary12noo6_NSHTTPURLResponseInternal12qrrs6_NSHTTPURLResponse]NSURLResponse$)2DILbd  %1357glu  /4BP^ety~ /GLPfsx{tO;4function $t(term){ document.write(Gucci.getTerm(term)); } var Gucci = { locale: '', _animation: { menu: false }, MAIN_MENU: 0, SUB_MENU: 1, PAGE_MENU: 2, MENU_TIMEOUT: 1000, currentMenuPanel: 0, _defaultMenuPanel: 0, _menuPanelTimeout: null, _smallScreen: false, _activeSubMenu: -1, cubic: function(pos) { pos /= 0.5; return pos<1 ? 0.5*pos*pos*pos : 0.5*((pos-2)*(pos-2)*(pos-2)+2); }, _open: { 'menu-left':false, 'menu-right':false }, projectedWidths: function(){ var width = Position.getPageSize().window.width-65; var contentWidth = $A($('content').cleanWhitespace().childNodes).inject(0,function(memo,node){ return memo+(node.offsetWidth || 0) }); var fillingWidth = width-contentWidth-(236*2+65); return [fillingWidth, contentWidth, width]; }, redraw: function(){ var scrollLeft = Position.scrollX(); var height = Position.getPageSize().window.height; $('logo').setStyle({ top: ((height-504)/2)+(Gucci._smallScreen ? 400 : 520)+'px' }); if($('layout').offsetLeft > 0) $('logo').setStyle({ marginLeft: $('layout').offsetLeft-68-22+'px' }); if($('thumbs-icon')) $('thumbs-icon').setStyle({ top: ((height-504)/2)+520+'px' }); var t = (height-504)/2; $('layout').setStyle({top:(t<0?0:t)+'px'}); if($('filling')){ if(Gucci.beforeFillingEvent) Gucci.beforeFillingEvent(); var widths = Gucci.projectedWidths(); var width = widths[2], contentWidth = widths[1], fillingWidth = widths[0]; if(fillingWidth>0){ $('filling').show().setStyle({width: width-contentWidth-(236*2+65)+'px'}); $('wrapper').setStyle({width: width+'px'}); $('layout').setStyle({width: width+'px'}); } else { $('filling').hide(); $('wrapper').setStyle({width: contentWidth+(236*2+65)+'px'}); $('layout').setStyle({width: contentWidth+(236*2+65)+'px'}); } } }, enableIESupport: function(){ Gucci.redraw = function(){ var scrollLeft = Position.scrollX(); var height = Position.getPageSize().window.height; if($('layout').offsetLeft > 0) $('logo').setStyle({ marginLeft: $('layout').offsetLeft+'px' }); $('logo').setStyle({ top: ((Position.getPageSize().window.height-504)/2)+(Gucci._smallScreen ? 400 : 520)+'px', left: (Position.scrollX()+36)+'px' }); /*if($('thumbs-icon')) $('thumbs-icon').setStyle({ top: ((height-504)/2)+520+'px' });*/ if($('filling')){ if(Gucci.beforeFillingEvent) Gucci.beforeFillingEvent(); var widths = Gucci.projectedWidths(); var width = widths[2], contentWidth = widths[1], fillingWidth = widths[0]; if(fillingWidth>0){ $('filling').show().setStyle({width: width-contentWidth-(236*2+65)+'px'}); $('wrapper').setStyle({width: width+'px'}); $('layout').setStyle({width: width+'px'}); } else { $('filling').hide(); $('wrapper').setStyle({width: contentWidth+(236*2+65)+'px'}); $('layout').setStyle({width: contentWidth+(236*2+65)+'px'}); } } var t = (height-504)/2; $('layout').setStyle({top:(t<0?0:t)+'px'}); } $('page-body').addClassName('ie6'); Event.observe(window,'scroll',function(){ $('logo').setStyle({ top: ((Position.getPageSize().window.height-504)/2)+(Gucci._smallScreen ? 400 : 520)+'px', left: (Position.scrollX()+36)+'px' }); }); }, initialize: function(id){ Gucci.id = id; Gucci.locale = 'de'; Gucci.parseMenu(); if(Engine.isMSIE) Gucci.enableIESupport(); Event.observe(window,'resize',Gucci.redraw); Gucci.redraw(); if(arguments[1]) { this._defaultMenuPanel = arguments[1]; if(Gucci._activeSubMenu>-1 && this._defaultMenuPanel==this.SUB_MENU) { Gucci.openSubmenu(Gucci._activeSubMenu,{animation:false}); } else { this.showMenuPanel(arguments[1],{animation:false}); } } if(Gucci._activeSubMenu>-1) Gucci._renderSubMenu(Gucci._activeSubMenu); ['menu-left','menu-right'].each(function(side){ if($(side)){ Event.observe(side,'mouseout',this.startMenuPanelTimeout.bindAsEventListener(this)); Event.observe(side,'mousemove',this.clearMenuPanelTimeout.bindAsEventListener(this)); } }.bind(this)); // Normally this goes to the home page, but for now we restore the scroll to the left // behavior if($('logo') && !$('logo').hasClassName('noscroll')) // Event.observe('logo','click',function(){new Effect.HScrollTo(0)}); Event.observe('logo','click',function(){ // oog - copied from getCookie in localize.js var dc = document.cookie; var prefix = "site="; var begin = dc.indexOf("; " + prefix); if (begin == -1) { begin = dc.indexOf(prefix); if (begin != 0) return; } else { begin += 2; } var end = document.cookie.indexOf(";", begin); if (end == -1) { end = dc.length; } var page = '/' + unescape(dc.substring(begin + prefix.length, end)) + '/index2.html'; prefix = ""; var durl = document.URL; begin = durl.indexOf('://'); if(begin != -1) { begin += 3; end = durl.indexOf('/', begin); if(end != -1) { prefix = 'http://' + unescape(durl.substring(begin, end)); } } document.location = prefix + page; }); $$('div.spacer-column').each(function(s,i){ Event.observe(s,'click',function(event){ Gucci.spacerEvent ? Gucci.spacerEvent(i, Event.localPointer(event)[0]<33 ? 1 : -1) : new Effect.HScroll(Event.localPointer(event)[0]<33 ? 821 : -821); }); Event.observe(s,'mousemove',function(event){ var d = Event.localPointer(event)[0]<33 ? '-65' : '-130'; s.style.backgroundPosition = d + 'px 0px'; }); Event.observe(s,'mouseout',function(event){ s.style.backgroundPosition = '0px 0px'; }); }); if(Engine.isMSIE) $$('a').each(function(n){ n.hidefocus = 'hidefocus' }) }, setSpacerEvent: function(callback){ Gucci.spacerEvent = callback; }, setOnBeforeFilling: function(callback){ Gucci.beforeFillingEvent = callback; }, setCustomTimeoutMenuEvent: function(e){ this._customTimeoutMenuEvent = e; }, startMenuPanelTimeout: function(event){ if($('menu-left')) { var p = Event.localPointer(event,'menu-left'); if(p[0]>0 && p[0]<236 && p[1]>0 && p[1]<504) return; } if($('menu-right')) { var p = Event.localPointer(event,'menu-right'); if(p[0]>0 && p[0]<236 && p[1]>0 && p[1]<504) return; } this.clearMenuPanelTimeout(); this._menuPanelTimeout = setTimeout(function(){ if(Gucci._customTimeoutMenuEvent) { Gucci._customTimeoutMenuEvent(); return; } Gucci.showMenuPanel(Gucci._defaultMenuPanel,{restore:true}) }, Gucci.MENU_TIMEOUT); }, clearMenuPanelTimeout: function(){ if(this._menuPanelTimeout) { clearTimeout(this._menuPanelTimeout); this._menuPanelTimeout = null } }, getTerm: function(term) { return Gucci._menu ? (Gucci._menu.term[term] || '!('+term+')') : '!(menu?)'; }, getScaledLayoutFactor: function(delta) { var curWidth = $('wrapper').offsetWidth; return ((curWidth+delta)/curWidth)*100; }, scaleLayout: function(delta) { var pct = this.getScaledLayoutFactor(delta); return [ new Effect.Scale('wrapper',pct, {scaleY:false,scaleContent:false,sync:true}), new Effect.Scale('layout', pct, {scaleY:false,scaleContent:false,sync:true}) ] }, setMenu: function(menu){ Gucci._menu = menu; }, parseMenu: function(){ function _renderItem(item){ var cl = (Gucci.id == item.id) ? ['active'] : []; if(item.klass) cl.push(item.klass); var c = ''; var url = "http://" + location.host + item.url; if(item.secure) { url = "https://" + location.host + item.url; } if(cl.length>0) c = ' class="'+cl.join(' ')+'"'; Gucci._menuPanel += '

    '+item.name.gsub(/\n/,'
    ').gsub(/\s/,' ')+'

    '; } function _renderSubmenuItem(item){ if(Gucci.id == item.id){ Gucci._activeSubMenu = currentSubmenu; } var cl = (Gucci.id == item.id) ? ['active'] : []; if(item.klass) cl.push(item.klass); var c = ''; if(cl.length>0) c = ' class="'+cl.join(' ')+'"'; Gucci._subMenus[currentSubmenu] += '

    '+item.name.gsub(/\n/,'
    ').gsub(/\s/,' ')+'

    '; } function _renderSubmenu(submenu){ currentSubmenu++; Gucci._subMenus.push(''); var cl = ['submenu']; if(submenu.klass) cl.push(submenu.klass); Gucci._menuPanel += '

    '+submenu.name.gsub(/\s/,' ')+'

    '; if(submenu.item) submenu.item.each(_renderSubmenuItem); } function _renderList(list){ if(list.item) list.item.each(_renderItem); if(list.submenu) list.submenu.each(_renderSubmenu); } function _renderBlock(block){ if(block.item) block.item.each(_renderItem); if(block.list) block.list.each(_renderList); Gucci._menuPanel += '
    '; } var currentSubmenu = -1; Gucci._menuPanel = ''; Gucci._subMenus = []; Gucci._menu.block.each(_renderBlock); ['menu-left','menu-right'].each(function(side){ if($(side+'-main')) $(side+'-main').update(Gucci._menuPanel); }); }, _renderSubMenu: function(submenu, custom){ submenu = custom ? custom : Gucci._subMenus[submenu]; if($('menu-left-submenu')) $('menu-left-submenu').update(submenu+ '

    ' + Gucci._menu.term.main + '

    ' ); if($('menu-right-submenu')) $('menu-right-submenu').update(submenu+ '

    ' + Gucci._menu.term.main + '

    ' ); }, showMenuPanel: function(panel){ if(Gucci._animation.menu) return; var options = Object.extend({ animation: true, restore: false, custom: false }, arguments[1] || {}); if(options.restore && Gucci._activeSubMenu>-1){ Gucci._renderSubMenu(Gucci._activeSubMenu, options.custom); } if(!options.animation){ if($('menu-left-scroll')) { $('menu-left-scroll').style.left = -$('menu-left').offsetWidth * panel + 'px'; $('menu-left-background').style.left = -$('menu-left').offsetWidth * panel + 'px'; } if($('menu-right-scroll')) { $('menu-right-scroll').style.left = -$('menu-right').offsetWidth * (2-panel) + 'px'; $('menu-right-background').style.left = -$('menu-right').offsetWidth * (2-panel) + 'px'; } Gucci.currentMenuPanel = panel; return; } Gucci._animation.menu = true; if($('menu-left-scroll')) new Effect.Move('menu-left-scroll',{ x: -(panel-Gucci.currentMenuPanel)*$('menu-left').offsetWidth, transition: Gucci.cubic, duration: 0.6, afterUpdate: function(){ $('menu-left-background').style.left = $('menu-left-scroll').style.left; }, afterFinish: function(){ Gucci.currentMenuPanel = panel; Gucci._animation.menu = false; } }); if($('menu-right-scroll')) new Effect.Move('menu-right-scroll',{ x: (panel-Gucci.currentMenuPanel)*$('menu-right').offsetWidth, transition: Gucci.cubic, duration: 0.6, afterUpdate: function(){ $('menu-right-background').style.left = $('menu-right-scroll').style.left; }, afterFinish: function(){ Gucci.currentMenuPanel = panel; Gucci._animation.menu = false; } }); }, openSubmenu: function(submenu){ if(Gucci._animation.menu) return; if($('menu-left-submenu')) $('menu-left-submenu').update(Gucci._subMenus[submenu]+ '

    ' + Gucci._menu.term.main + '

    ' ); if($('menu-right-submenu')) $('menu-right-submenu').update(Gucci._subMenus[submenu]+ '

    ' + Gucci._menu.term.main + '

    ' ); Gucci.showMenuPanel(Gucci.SUB_MENU,arguments[1]||null); }, getPageFragmentIdentifier: function(){ return location.href.split('#').inGroupsOf(2).flatten()[1]; }, setPageFragmentIdentifier: function(id){ var url = location.href.split('#'); location.href = url[0] + '#' + id; }, openPopup: function(url) { var w = window.open(url,'gucci','height=450,width=395,directories=no,location=no,menubar=no,scrollbars=yes,status=no,toolbar=no,resizable=no'); w.focus(); }, _scrollPanels: {}, scrollPanel: function(panel, handle, track, scrollHeight) { if(panel.scrollHeight > (scrollHeight || 372)) { panel.addClassName('with-scrollbar'); $(track).style.display = 'block'; this._scrollPanels[panel] = new Control.Slider( handle, track, { axis: 'vertical', onSlide:function(v) { var height = panel.scrollHeight; panel.scrollTop = (v*(height-(scrollHeight || 372))); }, onChange:function(v) { var height = panel.scrollHeight; panel.scrollTop = (v*(height-(scrollHeight || 372))); } }); wheelCallback = function(delta){ var factor = Engine.isKHTML ? 0.03 : 0.07; Gucci._scrollPanels[panel].setValueBy(delta > 0 ? -factor : factor); } } }, centerPanel: function(panel, width){ panel = $(panel); width = width || panel.offsetWidth; Position.prepare(); var w = Position.getPageSize().window.width; var p = Position.cumulativeOffset(panel)[0]; var d = (p - (w - width)/2) - Position.scrollX(); if(d == 0) return false; new Effect.HScroll(d,Object.extend({ duration: (Math.log(Math.abs(d*d))/10), transition: Gucci.cubic }, arguments[2] || {})); } } if(typeof localizedMenu != "undefined") document.write(''); _-http://www.gucci.com/javascripts/gucci-app.jsCDEObplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?JUZNS.objectsWNS.keys@ABCDEFGHIKLMNOPQRST _Content-EncodingTVary]Last-Modified]Cache-Control]Accept-RangesVServer^Content-LengthTDateTEtag\Content-TypeTgzip_Accept-Encoding_Thu, 27 Dec 2007 20:15:03 GMT_+max-age=7200,post-check=3600,pre-check=7200Ubytes_Microsoft-IIS/6.0T2403_Fri, 28 Dec 2007 09:02:47 GMT_"80fdf829c548c81:74ec"12jkkl6_NSMutableDictionary\NSDictionary12noo6_NSHTTPURLResponseInternal12qrrs6_NSHTTPURLResponse]NSURLResponse$)2DILbd  %1357^clw{   &+9GU\kpu&?DH^kpstO+4/* LOCALIZED MENU */ Gucci.setMenu({ "block": [ { "list": [ { "submenu": [ { "id": "shop online", "name": "shop online", "item": [ { "id": "unicef", "name": "unicef", "url": "/us/us-english/us/cruise-08/unicef/" }, { "id": "website exclusives", "name": "website exclusives", "url": "/us/us-english/us/cruise-08/web-exclusives/" }, { "id": "handbags", "name": "handbags", "url": "/us/us-english/us/cruise-08/handbags/" }, { "id": "womens shoes", "name": "women's shoes", "url": "/us/us-english/us/cruise-08/womens-shoes/" }, { "id": "mens shoes", "name": "men's shoes", "url": "/us/us-english/us/cruise-08/mens-shoes/" }, { "id": "luggage", "name": "travel & business", "url": "/us/us-english/us/cruise-08/luggage/" }, { "id": "gifts", "name": "small accessories", "url": "/us/us-english/us/cruise-08/gifts/" }, { "id": "wallets", "name": "wallets", "url": "/us/us-english/us/cruise-08/wallets/" }, { "id": "belts", "name": "belts", "url": "/us/us-english/us/cruise-08/belts/" }, { "id": "fine jewelry", "name": "fine jewelry", "url": "/us/us-english/us/cruise-08/fine-jewelry/" }, { "id": "silver jewelry", "name": "silver jewelry", "url": "/us/us-english/us/cruise-08/silver-jewelry/" }, { "id": "timepieces", "name": "watches", "url": "/us/us-english/us/fall-winter-07/timepieces/" }, { "id": "scarves", "name": "scarves", "url": "/us/us-english/us/cruise-08/scarves/" }, { "id": "ties", "name": "ties", "url": "/us/us-english/us/cruise-08/ties/" }, { "id": "hats", "name": "hats", "url": "/us/us-english/us/cruise-08/hats/" }, { "id": "baby", "name": "baby", "url": "/us/us-english/us/fall-winter-07/baby/" }, { "id": "pet", "name": "pet", "url": "/us/us-english/us/fall-winter-07/pet/" }, { "id": "writing", "name": "writing", "url": "/us/us-english/us/fall-winter-07/writing/" }, { "id": "sunglasses", "name": "sunglasses", "url": "/us/us-english/us/cruise-08/sunglasses/" }, { "id": "fragrance", "name": "fragrance", "url": "/us/us-english/us/fall-winter-07/fragrance/" }, { "id": "gift card", "name": "gift card", "url": "/us/us-english/us/gift-card/#000000_00000_0000" } ] } ] }, { "submenu": [ { "id": "catalogs", "name": "catalogs", "item": [ { "id": "holiday catalog", "name": "holiday", "url": "/us/catalog/holiday/" }, { "id": "ww jewelry catalog", "name": "fine jewelry", "url": "/us/catalog/fine-jewelry/" } ] } ] }, { "submenu": [ { "id": "label", "name": "ad campaign", "item": [ { "id": "cruise campaign", "name": "cruise 2008", "url": "/us/campaign/cruise/" }, { "id": "horsebit cocktail", "name": "horsebit cocktail", "url": "/us/campaign/horsebit-cocktail/" }, { "id": "gbg campaign", "name": "gucci by gucci", "url": "/us/campaign/gucci-by-gucci/" }, { "id": "jewelry campaign", "name": "fine jewelry", "url": "/us/campaign/jewelry/" }, { "id": "jewelry campaign video", "name": "fine jewelry video", "url": "/us/campaign/jewelry-video/" } ] } ] } ] }, { "item": [ { "id": "shopping bag", "name": "shopping bag", "url": "/us/checkout/shopping_bag.asp", secure:1 } ] }, { "list": [ { "submenu": [ { "id": "label", "name": "ready to wear", "item": [ /* m preview or w preview on night of show */ { "id": "cruisewomens runway", "name": "women's runway cruise 08", "url": "/us/us-english/us/cruise-08/womens-runway/" }, { "id": "cruisemens runway", "name": "men's runway cruise 08", "url": "/us/us-english/us/cruise-08/mens-runway/" }, { "id": "w preview spring", "name": "women's runway \nspring summer 08", "url": "/us/us-english/us/spring-summer-08/preview/womens-runway/" }, { "id": "m preview spring", "name": "men's runway spring summer 08", "url": "/us/us-english/us/spring-summer-08/preview/mens-runway/" }, { "id": "fall winterwomens", "name": "women's fall winter 07", "url": "/us/us-english/us/fall-winter-07/womens/" }, { "id": "fall winterwomens runway", "name": "women's runway fall winter 07", "url": "/us/us-english/us/fall-winter-07/womens-runway/" }, { "id": "fall wintermens runway", "name": "men's runway fall winter 07", "url": "/us/us-english/us/fall-winter-07/mens-runway/" } ] } ] }, { "submenu": [ { "id": "label", "name": "gucci video", "item": [ { "id": "sabrina video", "name": "sabrina", "url": "/us/video/sabrina-bag/" }, { "id": "cruise video", "name": "cruise 2008", "url": "/us/video/cruise/" }, { "id": "cruise runway video", "name": "cruise 2008 collection", "url": "/us/video/cruise-runway/" }, { "id": "gbg video", "name": "gucci by gucci -\ndirected by david lynch", "url": "/us/video/gucci-by-gucci/" }, { "id": "gbg bts video", "name": "gucci by gucci -\nbehind the scenes", "url": "/us/video/gucci-by-gucci-behind-the-scenes/" }, { "id": "jewelry video", "name": "fine jewelry", "url": "/us/video/jewelry/" } ] } ] }, { "item": [ { "id": "store locations", "name": "store locations", "url": "/us/us-english/store-locator/" } ] }, { "submenu": [ { "id": "about gucci", "name": "about gucci", "item": [ { "id": "creative directors", "name": "creative director", "url": "/us/us-english/about-gucci/creative-directors/frida-giannini/" }, { "id": "history", "name": "history", "url": "/us/us-english/about-gucci/history/" }, { "id": "human resources", "name": "human resources", "url": "/us/us-english/about-gucci/human-resources.html" }, { "id": "gucci group", "name": "gucci group", "url": "/us/us-english/about-gucci/gucci-group.html" } ] } ] }, { "submenu": [ { "id": "unicef", "name": "unicef campaign", "item": [ { "id": "unicefx", "name": "unicef holiday collection", "url": "/us/us-english/us/cruise-08/unicef/index_x.asp" }, { "id": "holidayx catalog", "name": "gucci for unicef indy bag", "url": "/us/catalog/holiday/unicef.html" } ] } ] } ] }, { "list": [ { "submenu": [ { "id": "legal", "klass": "small", "name": "Legal notices", "item": [ { "id": "purchase information", "name": "Purchase information", "url": "/us/us-english/us/about-gucci/legal-notices/purchase-information.html" }, { "id": "privacy policy", "name": "Privacy policy", "url": "/us/us-english/us/about-gucci/legal-notices/privacy-policy.html" }, { "id": "legal conditions", "name": "Legal conditions", "url": "/us/us-english/us/about-gucci/legal-notices/legal-conditions.html" }, { "id": "copyright information", "name": "Copyright information", "url": "/us/us-english/us/about-gucci/legal-notices/copyright-information.html" } ] } ] }, { "item": [ { "id": "news", "klass": "small", "name": "register", "url": "/us/registration2/registration_public_form.asp" } ] } ] } ], "term": { "main": "Navigation", "submenu": "Categories", "reset": "reset", "85th Gucci": "85th Gucci", "womens catalog": "spring summer women\'s accessories", "mens catalog": "spring summer men\'s accessories", "fw mens catalog": "fall winter men\'s accessories", "fw womens catalog": "fall winter women\'s accessories", "womens shoe catalog": "fall winter women\'s shoes", "ww guccissima catalog": "La Pelle Guccissima", "ww jewelry catalog": "fine jewelry", "holiday catalog": "holiday", "holidayx catalog": "gucci for unicef indy bag", "catalogs": "catalogs", "ad campaign": "fall winter 2007-2008", "cruise campaign": "cruise 2008", "timepieces campaign": "timepieces", "jewelry campaign": "fine jewelry", "horsebit cocktail": "horsebit cocktail", "indy campaign": "the indy collection", "gbg campaign": "gucci by gucci", "first page": "First page", "overview": "Overview", "navigation": "Navigation", "shopping bag": "shopping bag", "privacy policy": "privacy policy", "purchase information": "purchase information", "photo unavailable": "photo unavailable", "no threshold": "no threshold","consult a personal shopper": "consult a personal shopper", "add to bag": "add to shopping bag", "register for wait list": "register for wait list", "front": "view front", "back": "view back", "return": "back", "personal shopper link": "For additional assistance or information, please consult a personal shopper", "item added": "This item has been added to your shopping bag", "checkout": "proceed to checkout", "show outlines": "show silhouettes", "hide outlines": "hide silhouettes", "price-template": '$#{price}', "available": "your selection will ship in 1-2 business days", "available soon" : "your selected item will ship in 1-2 weeks", "possibly available" : "your selected item is not immediately available. please make another selection.", "jewelry possibly available" : "your selected item is available by special order. please allow approximately 3 months for delivery.", "unknown sku" : "your selected item is not available. please make another selection.", "no threshold" : "your selected item is not available. please make another selection.", "unavailable" : "your selected item is not available. please make another selection." } }); /* HOMEPAGE FEATURES - http://stage-images.gucci.com/images/ */ var imgs = ['http://images.gucci.com/images/features/hp_cr08_sabrina.jpg', 'http://stage-images.gucci.com/images/features/hp_fw07_holiday.jpg', 'http://images.gucci.com/images/features/hp_box.jpg']; var zooms = [ [[-80,0],[80,0]], [[0,0],[-90,0]],[[-80,0],[80,0]] ]; var texts = [ ['','','the \'sabrina\' bag'], ['','','holiday 2007'], ['','free','shipping'] ]; var hrefs = ['/us/us-english/us/cruise-08/handbags/#189846_BCC8G_1000', '/us/catalog/holiday/', '/us/freeshipping.html'];_$http://www.gucci.com/json/menu-us.jsGHIObplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?JUZNS.objectsWNS.keys@ABCDEFGHIKLMNOPQRST _Content-EncodingTVary]Last-Modified]Cache-Control]Accept-RangesVServer^Content-LengthTDateTEtag\Content-TypeTgzip_Accept-Encoding_Tue, 06 Nov 2007 23:36:26 GMT_+max-age=7200,post-check=3600,pre-check=7200Ubytes_Microsoft-IIS/6.0U11153_Fri, 28 Dec 2007 09:01:59 GMT_"039efd8cd20c81:74ec"12jkkl6_NSMutableDictionary\NSDictionary12noo6_NSHTTPURLResponseInternal12qrrs6_NSHTTPURLResponse]NSURLResponse$)2DILbd  %1357hmv   05CQ_fuz 1INRhuz}tOvar Shop = { _duration: 0.5, _lightboxes: {}, _avails: {}, _defaultAvail: 'unavailable', currentSort: 'all', thumbs: [], queue: { position:'end', scope:'shop' }, queueLast: { position:'with-last', scope:'shop' }, FULL_PHOTO_UNAVAILABLE_URL: '/images/photo-unavailable-full.jpg', MINI_THUMB_PHOTO_UNAVAILABLE_URL: '/images/photo-unavailable-mini-thumb.jpg', THUMB_PHOTO_UNAVAILABLE_URL: '/images/photo-unavailable-thumb.jpg', initialize: function(){ Shop.options = Object.extend({ thumbStyleFormat: /^[^_]+_[^_]+_(.*)$/, thumbnailWidth: 130 }, arguments[0] || {}); $$('div.lightbox').each( function(lightbox, i) { lightbox.setAttribute('id', 'lightbox_' + i); new Insertion.Bottom(lightbox.down('div.container'), '' + '
    ' + '
    ' + '
    '); Shop._lightboxes[lightbox.id] = { open: false, activeProduct: null } }); $$('div.lightbox div.products img').each( function(img,idx){ img.parentNode.addClassName('highlight'); img.parentNode.setAttribute('id','thumbnail_' + idx); var darkener = $(document.createElement('div')).addClassName('darkening').setOpacity(0); img.parentNode.appendChild(darkener); Event.observe(darkener, 'click', function() { Shop.showProduct(this); }.bind(img)); }); var lastLightbox = $$('div.lightbox').last(); var numberOfProducts = 0; ['format-2x3','format-2x2','format-1x3'].each(function(style,idx){ if(lastLightbox.hasClassName(style)) numberOfProducts = [6,4,3][idx]; }); (numberOfProducts - lastLightbox.getElementsBySelector('div.thumbnail').length).times(function(){ new Insertion.Bottom(lastLightbox.down('div.products'), '
    '); }); }, initializeCatalog: function(){ this.isCatalog = true; Gucci.Zoomer.expand = false; Shop.options = Object.extend({ thumbStyleFormat: /^[^_]+_[^_]+_(.*)$/, thumbnailWidth: 130 }, arguments[0] || {}); $$('div.lightbox').each( function(lightbox, i) { lightbox.setAttribute('id', 'lightbox_' + i); new Insertion.Bottom(lightbox.down('div.container'), '' + '
    ' + '
    ' + '
    '); Shop._lightboxes[lightbox.id] = { open: false, activeProduct: null } }); }, setStyles: function(lightbox, styles){ lightbox = $(lightbox); Shop._lightboxes[lightbox.id].styles = styles; }, getStyles: function(lightbox){ lightbox = $(lightbox); return Shop._lightboxes[lightbox.id].styles; }, getStyle: function(lightbox, style){ return this.getStyles(lightbox).detect(function(s){ return s.style == style }); }, setAvailability: function(style, availability){ Shop._avails[style] = availability; }, getAvailability: function(style){ return Shop._avails[style]; }, printStyle: function(lightbox, style) { this.printItems = this.getStyles(lightbox, style); var url = "/" + getCookie('site') + "/templates/print.html"; this.printWindow = window.open(url,'printStyle', 'height=504,width=540,resizable=yes'); }, printCallback: function() { var w = this.printWindow; var d = w.document.getElementById("mainDescription"); d.innerHTML = this.printItems.first().data.description; var d = w.document.getElementById("productShot"); d.src = this.printItems.first().images.front.full; for(var i = 0; i < this.printItems.length && i < 9 ; i++) { d = w.document.getElementById("variationDescription"+i); d.innerHTML = this.printItems[i].data.variationDescription; d = w.document.getElementById("style"+i); d.innerHTML = this.printItems[i].data.style; d = w.document.getElementById("price"+i); var p = this.printItems[i].data.price; if(p) { d.innerHTML = new Template(Gucci.getTerm('price-template')).evaluate({price:p}); } else { d.innerHTML = ""; } d = w.document.getElementById("group"+i); d.style["display"] = "block"; } }, getAvailabilityBySku: function(sku){ var ret = null; for(style in Shop._avails){ Shop._avails[style].each(function(s){ if(s.sku==sku) ret = s; }); } return ret; }, getAvailabilityBySize: function(styleData, size){ var sku = null; styleData.sku.each(function(s){ if(s.size==size) sku = s.sku; }); return sku ? Shop.getAvailabilityBySku(sku) : null; }, disableOption: function(theSelect, j) { theSelect.options[j].disabled = true; theSelect.options[j].style.color = "Gainsboro"; }, enableOption: function(theSelect, j) { theSelect.options[j].disabled = false; theSelect.options[j].style.color = "#000000"; }, selectStyle: function(link, style){ lightbox = $(link).up('div.lightbox'); //if(this.isBusy(lightbox)) return; //this.setBusy(lightbox); var data = this.getStyle(lightbox, style); Shop._lightboxes[lightbox.id].activeStyleData = data; var html = $(link).innerHTML; lightbox.down('div.active-style').update(html); if(data.sku){ if(data.sku.length > 1) { var theSelect = lightbox.down('select.size-select'); theSelect.selectedIndex = 0; theSelect.oldSelectedIndex = 0; for(var j=1; j < theSelect.options.length; j++){ var size = theSelect.options[j].value; var statusData = size ? Shop.getAvailabilityBySize(data, size) : null; var status = statusData ? statusData.status : ""; if(status=="") status = Shop._defaultAvail; if(status=="" || status=="unavailable") { Shop.disableOption(theSelect, j); } else{ Shop.enableOption(theSelect, j); } } this.hideAvailabilityInformation(lightbox); } else { var s = data.sku.first(); if(s) { this.updateAvailabilityInformationBySku(lightbox, s.sku); } } } this.updateZoomerWithImages(lightbox, data.images); this.showDetails(lightbox); lightbox.down('div.style-list').getElementsBySelector('div.style').each(function(s){ s.removeClassName('current-style'); }); $(link).addClassName('current-style'); if(hbx && hbxProductView) { var styleGroupStyle = Shop._lightboxes[lightbox.id].styles[0].style; var hbxx=new Object(); hbxx.pr=style; hbxx.bd='Gucci'; hbxx.ca=hbx.ca; hbxx.pn='style view'; hbxx.mlc=hbx.mlc + '/' + styleGroupStyle + '/' + style; hbxProductView(hbxx); } }, selectSize: function(theSelect){ var i = theSelect.selectedIndex; if(theSelect.selectedIndex==0 || (theSelect.options[i].disabled && (!Engine.isKHTML || Engine.isWebKit3))) { theSelect.selectedIndex = theSelect.oldSelectedIndex; return; } if(theSelect.oldSelectedIndex==0) { Shop.disableOption(theSelect, 0); } lightbox = $(theSelect).up('div.lightbox'); theSelect.oldSelectedIndex = i; this.updateAvailabilityInformationBySize(lightbox, $F(theSelect)); }, getSize: function(lightbox){ var select = lightbox.down('select.size-select'); if(!select) return null; return $H({ sku: $F(select), size: select.options[select.selectedIndex].text }); }, setDefaultAvail: function(d){ Shop._defaultAvail = d; }, updateAvailabilityInformationBySize: function(lightbox, size){ var styleData = Shop._lightboxes[lightbox.id].activeStyleData; var avail = this.getAvailabilityBySize(styleData, size); if(!avail) { avail = {}; avail.status = Shop._defaultAvail; avail.info = Gucci.getTerm(Shop._defaultAvail); } Shop.updateAvailabilityInformation(lightbox, avail); }, updateAvailabilityInformationBySku: function(lightbox, sku){ var avail = this.getAvailabilityBySku(sku); if(!avail) { avail = {}; avail.status = Shop._defaultAvail; avail.info = Gucci.getTerm(Shop._defaultAvail); } Shop.updateAvailabilityInformation(lightbox, avail); }, updateAvailabilityInformation: function(lightbox, avail){ var addtobag = false; var backorder = false; var shopper = true; switch (avail.status) { case 'available': addtobag = true; break; case 'available soon': addtobag = true; break; case 'backorder': backorder = true; break; case 'in transit': addtobag = true; break; case 'in transit soon': addtobag = true; break; case 'warehouse transfer': addtobag = true; break; case 'store transfer': break; case 'possibly available': break; case 'jewelry possibly available': break; case 'unavailable': shopper = false; break; case 'no threshold': shopper = false; break; case 'unknown sku': shopper = false; }; var c = lightbox.down('div.configuration-info'); c.down('p.availability').update(avail.info); c.down('div.checkout').removeClassName('busy').hide(); c.down('div.addtobag')[ addtobag ? 'show' : 'hide']().removeClassName('busy').down('div.content').update(Gucci.getTerm('add to bag')); c.down('div.backorder')[ backorder ? 'show' : 'hide']().removeClassName('busy').down('div.content').update(Gucci.getTerm('register for wait list')); c.down('p.info')[ shopper ? 'show' : 'hide']().update(Gucci.getTerm('personal shopper link')); }, hideAvailabilityInformation: function(lightbox){ var c = lightbox.down('div.configuration-info'); if(!c) return; c.down('p.availability').update(); c.down('div.checkout').removeClassName('busy').hide(); c.down('div.addtobag').removeClassName('busy').hide(); c.down('div.backorder').removeClassName('busy').hide(); c.down('p.info').hide(); }, getProductInfo: function(thumbnail){ return Shop.thumbs[thumbnail.id.split('_')[1]]; }, isOpen: function(lightbox){ return Shop._lightboxes[$(lightbox).id].open; }, isActive: function(product){ return (product && product == Shop._lightboxes[$(product).up('div.lightbox').id].activeProduct); }, updateZoomerWithImages: function(lightbox, images){ lightbox = $(lightbox); var fullUrl = images.front.full; var zoomUrl = images.front.zoom; var delay = 0; lightbox.down('div.product-image').addClassName('loading'); if(!Shop._lightboxes[lightbox.id].zoomer){ this.updateZoomer(lightbox, fullUrl, zoomUrl, images); return; } if(Shop._lightboxes[lightbox.id].zoomer && Shop._lightboxes[lightbox.id].zoomer._zoomed) { Shop._lightboxes[lightbox.id].zoomer.zoomOutAndDestroy(); delay = Gucci.Zoomer.ZOOM_OUT_SPEED + 0.01; } else if(Shop._lightboxes[lightbox.id].zoomer) { Shop._lightboxes[lightbox.id].zoomer.destroy(); } new Effect.Opacity(lightbox.id+'_full_image',{ delay:delay, from:1, to:0, transition:Gucci.cubic, afterFinish:function(){ lightbox.down('div.product-image').update(); if(!zoomUrl || images.front.unavailable){ Loader.cacheOrLoad(fullUrl,{ onComplete:function(){ var fullProductImage = images.front.unavailable ? Shop.FULL_PHOTO_UNAVAILABLE_URL : fullUrl; lightbox.down('div.product-image').update( '' + (images.front.unavailable ? ('
    ' + Gucci.getTerm('photo unavailable') + '
    ') : '') ); new Effect.Opacity(lightbox.id+'_full_image',{from:0,to:1,transition:Gucci.cubic}); //new Effect.Opacity(lightbox.id+'_full_image',{from:0,to:images.front.unavailable ? 0.5 : 1,transition:Gucci.cubic}); lightbox.down('div.product-image').removeClassName('loading'); }}); return; } Loader.cacheOrLoad(fullUrl,{ onComplete:function(){ var productImage = lightbox.down('div.product-image'); productImage.update( '
    ' + (images.front.unavailable ? ('
    ' + Gucci.getTerm('photo unavailable') + '
    ') : '') ); new Effect.Opacity(lightbox.id+'_full_image',{from:0,to:images.front.unavailable ? 0.5 : 1,transition:Gucci.cubic,afterFinish:function(){ lightbox.down('div.product-image').removeClassName('loading') Shop._lightboxes[lightbox.id].zoomer = new Gucci.Zoomer( productImage, productImage.down('img'), new Date().getTime(), zoomUrl); Shop._lightboxes[lightbox.id].zoomer.setViews(images); }}); }}); }}); }, updateZoomer: function(lightbox, fullurl, zoomurl, images){ lightbox = $(lightbox); if(!zoomurl){ if(Shop._lightboxes[lightbox.id].zoomer) Shop._lightboxes[lightbox.id].zoomer.zoomOutAndDestroy(); Shop._lightboxes[lightbox.id].zoomer = null; Loader.cacheOrLoad(fullurl,{ onComplete:function(){ $(lightbox).down('div.product-image').update( ''); new Effect.MoveRight(lightbox.id+'_full_image', -260, { initialRight:260, queue:Shop.queue, transition:Gucci.cubic, duration: 1.3 }); }}); return; } if(!Shop._lightboxes[lightbox.id].zoomer) { Loader.cacheOrLoad(fullurl,{ onComplete:function(){ $(lightbox).down('div.product-image').update( '
    '); Shop._lightboxes[lightbox.id].zoomer = new Gucci.Zoomer( $(lightbox).down('div.product-image'), $(lightbox).down('div.product-image').down('img'), new Date().getTime(), zoomurl); if(images) Shop._lightboxes[lightbox.id].zoomer.setViews(images); new Effect.Move($(lightbox).down('div.product-image').down(), { x:260, queue:Shop.queue, transition:Gucci.cubic, duration: 1.3, afterFinish: function(effect){ effect.element.setStyle({overflow:'',width:'auto'}); } }); }}); } else { Loader.cacheOrLoad(fullurl,{ onComplete:function(){ Shop._lightboxes[lightbox.id].zoomer.swap( new Date().getTime(), fullurl, zoomurl); if(images) Shop._lightboxes[lightbox.id].zoomer.setViews(images); new Effect.MoveRight(lightbox.id+'_full_image', -260, { initialRight:260, queue:Shop.queue, transition:Gucci.cubic, duration: 1.3 }); }}); } }, currentProduct: function(lightbox){ return Shop._lightboxes[lightbox.id].activeProduct; }, deactivateProduct: function(product){ if(!Shop.isActive(product)) return; var lightbox = $(product).up('div.lightbox'); Shop._lightboxes[lightbox.id].activeProduct = null; Shop._lightboxes[$(lightbox).id].zoomer = null; Shop.showDetails(lightbox); var wrapper = lightbox.down('div.full_image_wrapper'); if (wrapper) { wrapper.setStyle({position:'absolute',top:0,left:0,overflow:'hidden',width:'260px',height:'504px'}); new Effect.Move(wrapper, { x: -260, queue:Shop.queue, transition:Gucci.cubic, duration: 0.7 }); } else new Effect.MoveRight($(lightbox.id+'_product_image').down('img'), 260, { queue:Shop.queue, transition:Gucci.cubic, duration: 0.7 }); new Effect.Move(product, { queue:Shop.queueLast, x: -Shop.options.thumbnailWidth, transition:Gucci.cubic, duration: 0.7 }); }, showProduct: function(product){ product = $(product); var lightbox = product.up('div.lightbox'); if(Shop.isActive(product)) return; if(Shop.isBusy(lightbox)) return; if(!Shop.getProductInfo(product.up())) return; Gucci.setPageFragmentIdentifier(Shop.getProductInfo(product.up()).id); Shop.deactivateProduct(Shop.currentProduct(lightbox)); Shop.hideSizeGuideByLightbox(lightbox); Shop.openLightbox(lightbox); lightbox.down('div.product-image').addClassName('loading'); lightbox.down('div.details').hide(); Shop.setBusy(lightbox); new Effect.Event({ afterFinish:function(){ new Ajax.Request( '/'+getCookie('site')+'/product-shots/'+getCookie('language')+'/'+ getCookie('site')+'/'+Shop.getProductInfo(product.up()).stylegroup+'.asp', { parameters: 'lightbox=' + lightbox.id + '&style=' + Shop.getProductInfo(product.up()).id, onComplete: function(){ Shop.setIdle(lightbox); Shop.activateProduct(product); }, onException: function(transport, exception){ Shop.lastException = $H(exception); } }); }, queue:Shop.queue }); }, showProductByStyle: function(style){ var idx = null; style = style.substr(style.length-17); Shop.thumbs.each(function(k,i){ if(k.id==style) idx = i }); if(!idx) return; Shop.showProduct($('thumbnail_'+idx).down('img')); }, showStyles: function(lightbox){ if(this._lightboxes[lightbox.id].stylesActive) return; if(this.isBusy(lightbox)) return; this.setBusy(lightbox); if(Engine.isMSIE6 && lightbox.down('select.size-select')) lightbox.down('select.size-select').setStyle({visibility:'hidden'}); var initialRight = 0; if(lightbox.down('div.size-guide')) lightbox.down('div.size-guide').hide(); new Effect.Parallel([ new Effect.MoveRight( lightbox.down('div.details-wrapper'), 260, { sync: true, initialRight: initialRight }), new Effect.MoveRight( lightbox.down('div.styles-wrapper'), 260, { sync: true, initialRight: initialRight-260 }) ], { duration:0.7, transition:Gucci.cubic, afterFinish: function(){ Shop.setIdle(lightbox) } }); this._lightboxes[lightbox.id].stylesActive = true; }, previewStyle: function(style){ if(style.hasClassName('active-style')) return; var previous = style.up().down('div.active-style'); if(previous) previous.removeClassName('active-style'); style.addClassName('active-style'); }, cancelStyle: function(back){ var lightbox = $(back).up('div.lightbox') if(this.isBusy(lightbox)) return; this.setBusy(lightbox); this.showDetails(lightbox); }, showSizeGuide: function(link){ var lightbox = $(link).up('div.lightbox'); if(this.isBusy(lightbox)) return; if(Engine.isMSIE6 && lightbox.down('select.size-select')) lightbox.down('select.size-select').setStyle({visibility:'hidden'}); lightbox.down('div.styles-wrapper').hide(); lightbox.down('div.shopper-wrapper').hide(); this.setBusy(lightbox); new Effect.MoveRight( lightbox.down('div.details-wrapper'), 260, { initialRight: 0, duration:0.7, transition:Gucci.cubic, afterFinish: function(){ Shop.setIdle(lightbox); } }); }, hideSizeGuide: function(link){ var lightbox = $(link).up('div.lightbox'); if(this.isBusy(lightbox)) return; this.setBusy(lightbox); if(lightbox.down('div.details-wrapper').style.right != '260px') return; new Effect.MoveRight( lightbox.down('div.details-wrapper'), -260, { initialRight: 260, duration:0.7, transition:Gucci.cubic, afterFinish: function(){ Shop.setIdle(lightbox); if(Engine.isMSIE6 && lightbox.down('select.size-select')) lightbox.down('select.size-select').setStyle({visibility:'visible'}); lightbox.down('div.styles-wrapper').show(); lightbox.down('div.shopper-wrapper').show(); } }); }, hideSizeGuideByLightbox: function(lightbox){ var lightbox = $(lightbox); if(lightbox.down('div.details-wrapper').style.right != '260px') return; lightbox.down('div.details-wrapper').setStyle({right:'0px'}); }, showDetails: function(lightbox){ if(!this._lightboxes[lightbox.id].stylesActive) { if(Engine.isMSIE6 && lightbox.down('select.size-select')) lightbox.down('select.size-select').setStyle({visibility:'visible'}); Shop.setIdle(lightbox) return; } var initialRight = 260; new Effect.Parallel([ new Effect.MoveRight( lightbox.down('div.details-wrapper'), -260, { sync: true, initialRight: initialRight }), new Effect.MoveRight( lightbox.down('div.styles-wrapper'), -260, { sync: true, initialRight: initialRight-260 }) ], { duration:0.7, transition:Gucci.cubic, afterFinish: function(){ Shop.setIdle(lightbox); if(Engine.isMSIE6 && lightbox.down('select.size-select')) lightbox.down('select.size-select').setStyle({visibility:'visible'}); if(lightbox.down('div.size-guide')) lightbox.down('div.size-guide').show(); } }); this._lightboxes[lightbox.id].stylesActive = false; }, showShopper: function(link){ var lightbox = $(link).up('div.lightbox'); if(this.isBusy(lightbox)) return; this.setBusy(lightbox); if(Engine.isMSIE6 && lightbox.down('select.size-select')) lightbox.down('select.size-select').setStyle({visibility:'hidden'}); lightbox.down('div.product-image').style.zIndex = 3; var delay = 0; if(Shop._lightboxes[$(lightbox).id].zoomer) { Shop._lightboxes[$(lightbox).id].zoomer.zoomOutAndPause(); delay = Gucci.Zoomer.ZOOM_OUT_SPEED + 0.1; } var details = lightbox.down('div.details'); if(lightbox.down('div.size-guide')) lightbox.down('div.size-guide').hide(); lightbox.down('div.styles-wrapper').hide(); var effects = []; if(this.isCatalog){ lightbox.down('div.panel3-background').setOpacity(0).setStyle({left:'520px'}); lightbox.down('div.details-wrapper').setStyle({left:'520px',right:'auto',width:'260px',overflow:'hidden'}); effects.push(new Effect.Scale(lightbox.down('div.details-wrapper'),0,{ sync:true, scaleMode:{originalWidth:260,originalHeight:504}, scaleFrom:100, scaleY:false, scaleContent:false })); effects.push(new Effect.Opacity(lightbox.down('div.panel3-background'),{from:0,to:1,sync:true})); } else { lightbox.down('div.shopper').setStyle({visibility:'hidden'}).setOpacity(0); new Effect.Opacity(lightbox.down('div.details'),{from:1,to:0,transition:Gucci.cubic,duration:0.7}); effects.push(new Effect.MoveRight( lightbox.down('div.product-image'), 260, { sync: true, initialRight: 260 })); effects.push(new Effect.MoveRight( lightbox.down('div.details-wrapper'), 260, { sync: true, initialRight: 0 })); effects.push(new Effect.MoveRight( lightbox.down('div.shopper-wrapper'), 260, { sync: true, initialRight: -260 })); } new Effect.Parallel(effects, { queue:'end', duration:0.7, delay:delay, transition:Gucci.cubic, afterFinish: function(){ if(details.down('div.more-styles')) details.down('div.more-styles').hide(); details.down('div.configuration-info').setStyle({height:'2px',overflow:'hidden'}); if(details.down('div.size')) { details.down('select.size-select').hide(); if(details.down('a.size-guide-link')) details.down('a.size-guide-link').hide(); var size = lightbox.down('select.size-select'); details.down('span.size-info').update(size.options[size.selectedIndex].text).show(); } details.down('ul.functions').hide(); details.down('ul.personal-shopper-headline').update(Gucci.getTerm('consult a personal shopper')).show(); if(Shop.isCatalog){ lightbox.down('div.container').setStyle({overflow:'visible'}); lightbox.down('div.shopper-wrapper').setStyle({left:'780px',right:'auto',width:'0px',overflow:'hidden'}); new Effect.Parallel([ new Effect.Scale(lightbox.down('div.details-wrapper'), 100,{ sync:true, scaleMode:{originalWidth:260,originalHeight:504}, scaleFrom:0, scaleY:false, scaleContent:false }), new Effect.Scale(lightbox.down('div.shopper-wrapper'), 100,{ sync:true, scaleMode:{originalWidth:260,originalHeight:504}, scaleFrom:0, scaleY:false, scaleContent:false }) ],{duration:0.7}); } else { lightbox.down('div.shopper').setStyle({visibility:'visible'}); new Effect.Parallel([ new Effect.Opacity( lightbox.down('div.details'),{from:0,to:(Engine.isKHTML ? 0.99 : 1),sync:true}), //fix rendering bug in Safari 2.0 new Effect.Opacity( lightbox.down('div.shopper'),{from:0,to:1.0,sync:true}) ],{duration:0.7}); } Shop.setIdle(lightbox) } }); }, closeShopper: function(link){ var lightbox = $(link).up('div.lightbox'); if(this.isCatalog && lightbox.down('div.panel3-background').getStyle('left')!='520px') { Catalog.closeShopper(link); return; } if(this.isBusy(lightbox)) return; this.setBusy(lightbox); if(Shop._lightboxes[$(lightbox).id].zoomer) Shop._lightboxes[$(lightbox).id].zoomer.unpause(); var details = lightbox.down('div.details'); var effects = []; if(this.isCatalog){ effects.push(new Effect.Scale(lightbox.down('div.details-wrapper'), 0,{ sync:true, scaleMode:{originalWidth:260,originalHeight:504}, scaleFrom:100, scaleY:false, scaleContent:false })); effects.push(new Effect.Scale(lightbox.down('div.shopper-wrapper'), 0,{ sync:true, scaleMode:{originalWidth:260,originalHeight:504}, scaleFrom:100, scaleY:false, scaleContent:false })); } else { effects.push(new Effect.MoveRight( lightbox.down('div.product-image'), -260, { sync: true, initialRight: 520 })); effects.push(new Effect.MoveRight( lightbox.down('div.details-wrapper'), -260, { sync: true, initialRight: 260 })); effects.push(new Effect.MoveRight( lightbox.down('div.shopper-wrapper'), -260, { sync: true, initialRight: 0 })); } new Effect.Parallel(effects, { duration:0.7, transition:Gucci.cubic, afterFinish:function(){ if(details.down('div.more-styles')) details.down('div.more-styles').show(); details.down('div.configuration-info').setStyle({height:'auto',overflow:'visible'}); details.down('ul.functions').show(); details.down('ul.personal-shopper-headline').hide(); if(details.down('div.size')) { details.down('select.size-select').show(); if(details.down('a.size-guide-link')) details.down('a.size-guide-link').show(); details.down('span.size-info').hide(); } Shop.setIdle(lightbox); lightbox.down('div.product-image').style.zIndex = 2; if(Engine.isMSIE6 && lightbox.down('select.size-select')) lightbox.down('select.size-select').setStyle({visibility:'visible'}); if(lightbox.down('div.size-guide')) lightbox.down('div.size-guide').show(); if(Engine.isKHTML) details.setOpacity(1); if(Shop.isCatalog) { new Effect.Opacity(lightbox.down('div.panel3-background'),{from:1,to:0,duration:0.7, afterFinish:function(){ lightbox.down('div.panel3-background').setStyle({left:'-260px'}); lightbox.down('div.container').setStyle({overflow:'hidden'}); new Effect.Scale(lightbox.down('div.details-wrapper'), 100,{ scaleMode:{originalWidth:260,originalHeight:504}, scaleFrom:0, scaleY:false, duration:0.7, scaleContent:false, afterFinish:function(){ lightbox.down('div.details-wrapper').setStyle({left:'auto',right:'0',overflow:'visible'}); lightbox.down('div.styles-wrapper').show(); } }); } }); } else { lightbox.down('div.styles-wrapper').show(); } } }); }, activateProduct: function(product){ var lightbox = $(product).up('div.lightbox'); Shop._lightboxes[lightbox.id].activeProduct = product; lightbox.down('div.details').show(); new Effect.Move(product, { x: Shop.options.thumbnailWidth, queue:Shop.queueLast, transition:Gucci.cubic, duration: 1.3 }); }, addToBagSuccessful: function(lightbox){ if(lightbox==null) return; var lightbox = $(lightbox); if(lightbox==null) return; var data = Shop._lightboxes[lightbox.id].activeStyleData; this.addToMiniBag(lightbox, data); var details = lightbox.down('div.details'); var c = lightbox.down('div.configuration-info'); c.down('p.availability').update(Gucci.getTerm('item added')); c.down('div.addtobag').hide(); c.down('div.backorder').hide(); c.down('div.checkout').show().down('div.content').update(Gucci.getTerm('checkout')); c.down('p.info').hide(); this.setIdle(lightbox); }, setBusy: function(lightbox){ Shop._lightboxes[lightbox.id].busy = true; }, setIdle: function(lightbox){ Shop._lightboxes[lightbox.id].busy = false; }, isBusy: function(lightbox){ return Shop._lightboxes[lightbox.id].busy; }, submitShopper: function(form){ var lightbox = $(form).up('div.lightbox'); var submitData = ''; if(Shop.isCatalog && !Shop._lightboxes[lightbox.id].activeStyleData){ var page = lightbox.up('div.catalog-page').id.split('_')[1]; submitData = Catalog.serialize(page, Catalog.getOpenStyleForPage(page)); } else { var data = Shop._lightboxes[lightbox.id].activeStyleData; var sku = data.sku.length > 1 ? null : data.sku.first().sku; var size = this.getSize(lightbox); var avail = sku ? this.getAvailabilityBySku(sku) : this.getAvailabilityBySize(data, size.size); var extraData = $H({ status: avail.status, sku: avail.sku, size: size ? size.size : '' }); submitData = $H(data.data).toQueryString() + '&' + extraData.toQueryString(); } new Ajax.Request( '/' + getCookie('site') + '/contact_item.asp', { onSuccess: function(request){ $(form).up('div.shopper').update(request.responseText.gsub(/\\"/,'"').gsub(/\\'/,"'")) }, onException: function(transport, exception){ Shop.lastException = $H(exception); }, parameters: Form.serialize(form) + '&' + submitData + '&' + 'formType=contact' }); }, addCardPrice: function(link, lo, hi){ var amount = link.value; amount = amount.replace(/[^0-9.-]/,''); amount = amount.length > 0 ? parseInt(amount) : lo; if(amounthi) amount = hi; var lightbox = $(link).up('div.lightbox'); var data = Shop._lightboxes[lightbox.id].activeStyleData; data.data.price = amount; }, addToBag: function(link){ var lightbox = $(link).up('div.lightbox'); if(this.isBusy(lightbox)) return; this.setBusy(lightbox); $(link).addClassName('busy'); var data = Shop._lightboxes[lightbox.id].activeStyleData; var sku = data.sku.length > 1 ? null : data.sku.first().sku; var size = this.getSize(lightbox); var avail = sku ? this.getAvailabilityBySku(sku) : this.getAvailabilityBySize(data, size.size); var style = data.style; var price = data.data.price; var extraData = $H({ fullImageLink: data.images.front.full.replace("&", "&"), status: avail.status, sku: avail.sku, size: size ? size.size : '' }); this.bagAddHbx(lightbox, style, price); new Ajax.Request( '/' + getCookie('site') + '/mini_bag.asp', { parameters: 'lightbox=' + lightbox.id + '&' + $H(data.data).toQueryString() + '&' + extraData.toQueryString(), onException: function(transport, exception){ Shop.lastException = $H(exception); } }); }, addToMiniBag: function(lightbox, data){ var lightbox = $(lightbox); var delay = 0; var miniThumbURL = data.images.front.miniThumb; if(data.images.front.unavailable!=null && data.images.front.unavailable==true) { miniThumbURL = Shop.MINI_THUMB_PHOTO_UNAVAILABLE_URL; } if(Shop._lightboxes[lightbox.id].zoomer) { Shop._lightboxes[lightbox.id].zoomer.zoomOut(); delay = Gucci.Zoomer.ZOOM_OUT_SPEED*1000 + 10; } setTimeout(function(){ new Insertion.Top('minibag-products', ''); var div = $('minibag-products').down('div.product'); div.setStyle({ position: 'relative', top: '56px' }); lightbox.down('div.product-image').removeClassName('loading'); new Effect.Parallel([ new Effect.Move(div, { y:-56, sync:true }) ], { transition: Gucci.cubic, duration: 1.6, beforeSetup: function(){ div.show(); }, afterFinish: function(){ div.setStyle({ position: 'static', top: 'auto' }); } }); this.redrawMiniBag(); }.bind(this), delay); }, redrawMiniBag: function() { var products = $$('div#minibag-products div.product'); if(products.length == 0){ $('minibag-container').down('ul.shopping-bag').hide(); } else { $('minibag-container').down('span.count').update('(' + products.length + ')'); $('minibag-container').down('ul.shopping-bag').show(); } }, initializeMiniBag: function(products) { products.each(function(product){ new Insertion.Top('minibag-products', '
    '); }); this.redrawMiniBag(); }, initializeMiniBagFromCookies: function() { var cookieMap = [], idx = 0, cookieData = null; while(++idx && (cookieData = getCookie('mb'+idx))) cookieMap.push(cookieData); var parsedData = cookieMap.map(function(p){ var data = p.split('|'); return({ href: data[1], miniThumb: data[2] }) }); Shop.initializeMiniBag(parsedData); }, goToAndOpen: function(href) { var reference = href.split('#'); if(location.pathname == reference[0]) Shop.showProductByStyle(reference[1]); else location.href = href; }, moveIntoView: function(lightbox){ lightbox = $(lightbox); var windowWidth = Position.getPageSize().window.width; var windowLeft = Position.scrollX(); var windowRight = windowLeft + windowWidth; var lightboxLeft = Position.page(lightbox)[0] - 32 + windowLeft; var lightboxRight = lightboxLeft + 780 + 65; if(lightboxRight > windowRight) { if(lightboxRight > Position.getPageSize().page.width) setTimeout(function(){ new Effect.HScrollTo(lightboxRight - windowWidth, { duration: 0.5, transition:Gucci.cubic }) }, 1000); else new Effect.HScrollTo(lightboxRight - windowWidth, { queue:Shop.queue, duration: 0.5, transition:Gucci.cubic }); } else if(lightboxLeft < windowLeft) new Effect.HScrollTo(lightboxLeft, { queue:Shop.queue, duration: 0.5, transition:Gucci.cubic }); }, openLightbox: function(lightbox){ lightbox = $(lightbox); if(!Shop.isOpen(lightbox)) { this.moveIntoView(lightbox); lightbox.down('div.product-image').update(); lightbox.down('div.product-image').setStyle({right:'260px'}); lightbox.down('div.details-wrapper').setStyle({right:'0px'}); lightbox.down('div.shopper-wrapper').setStyle({right:'-260px'}); lightbox.down('div.details').update(); new Effect.Parallel([ new Effect.Scale(lightbox, 300, { scaleY:false, scaleContent:false, sync:true }) ].concat(Gucci.scaleLayout(520)), {transition:Gucci.cubic, duration:1.7, queue:Shop.queueLast}); Shop._lightboxes[lightbox.id].open = true; } }, closeLightbox: function(lightbox){ lightbox = $(lightbox); if(this.isCatalog) { Catalog.closeLightbox(lightbox); return; } if(!Shop.isOpen(lightbox)) return; if(Shop._lightboxes[$(lightbox).id].zoomer) Shop._lightboxes[$(lightbox).id].zoomer.zoomOutAndDestroy(); Shop.deactivateProduct(Shop.currentProduct(lightbox)); if(Engine.isMSIE6 && lightbox.down('select.size-select')) lightbox.down('select.size-select').setStyle({visibility:'hidden'}); new Effect.Parallel([ new Effect.Scale(lightbox, 100/3, { scaleY:false, scaleContent:false, sync:true }) ].concat(Gucci.scaleLayout(-520)), { transition:Gucci.cubic, duration:1.3, queue:Shop.queueLast }); Shop._lightboxes[lightbox.id].open = false; }, closeAllLightboxes: function(){ var lightboxes = [], effects = []; $H(Shop._lightboxes).keys().each( function(k) { if(Shop._lightboxes[k].open) lightboxes.push(k); }); if(lightboxes.length == 0) return; lightboxes.each(function(lightbox){ if(Shop._lightboxes[lightbox].zoomer) Shop._lightboxes[lightbox].zoomer.zoomOutAndDestroy(); new Effect.Opacity(Shop._lightboxes[lightbox].activeProduct.parentNode,{from:0.0, to:1.0, duration:Shop._duration}); Shop._lightboxes[lightbox].activeProduct = null; Shop._lightboxes[lightbox].open = false; if(Engine.isMSIE6 && $(lightbox).down('select.size-select')) $(lightbox).down('select.size-select').setStyle({visibility:'hidden'}); effects.push(new Effect.Scale(lightbox, 100/3, { scaleY:false, scaleContent:false, sync:true })); }); new Effect.Parallel( effects.concat(Gucci.scaleLayout(-520 * lightboxes.length)), { transition:Gucci.cubic, duration:1.2, queue:Shop.queue } ); }, loadVisibleThumbs: function(){ if(this._loaderPause) return; if(this._loaderTimeout) clearTimeout(this._loaderTimeout); this._loaderTimeout = setTimeout(function(){ var w = Position.getPageSize().window.width; var visibles = []; $$('div.lightbox').each(function(lightbox){ var x = Position.page(lightbox)[0]; if(x>=0 && x=0 && (x+780)=0 && x<(w*1.5)) { visibles.push(lightbox) } else { if((x+780)>=0 && (x+780)0) new Effect.HScrollTo(0,{ afterFinish:function(){ Shop.reorderToSort(sort) }}); else Shop.reorderToSort(sort); }, submitBackorder: function(link){ var lightbox = $(link).up('div.lightbox'); var data = Shop._lightboxes[lightbox.id].activeStyleData; var sku = data.sku.length > 1 ? null : data.sku.first().sku; var size = this.getSize(lightbox); var avail = sku ? this.getAvailabilityBySku(sku) : this.getAvailabilityBySize(data, size.size); var style = data.style; var price = data.data.price; var extraData = $H({ fullImageLink: data.images.front.full.replace("&", "&"), status: avail.status, sku: avail.sku, size: size ? size.size : '' }); this.bagAddHbx(lightbox, style, price); new Ajax.Request( '/' + getCookie('site') + '/mini_bag.asp', { onSuccess: function(request){ location.href = getSecureBaseURL() + '/checkout/shopping_bag.asp'; }, onException: function(transport, exception){ Shop.lastException = $H(exception); }, parameters: $H(data.data).toQueryString() + '&' + extraData.toQueryString() }); }, bagAddHbx: function(lightbox, style, price) { if(hbx && hbxCartAdd) { var t = null; if(siteStuff) { var site = siteStuff.getSiteFromCookie(); var t = siteStuff.getSiteData(site); } if(t == null) { t = {}; t.hbxStoreID = "unknown"; } var styleGroupStyle = Shop._lightboxes[lightbox.id].styles[0].style; var hbxx=new Object(); hbxx.pn = 'cart add'; hbxx.mlc = hbx.mlc + '/' + styleGroupStyle + '/' + style + '/add'; hbxx.pr = style; hbxx.qn = '1' hbxx.bd ='Gucci'; hbxx.ca = hbx.ca; hbxx.pc = price; hbxx.sr = t.hbxStoreID; hbxx.pr = style; hbxCartAdd(hbxx); } }, gotoShoppingBag: function(link){ location.href = getSecureBaseURL() + '/checkout/shopping_bag.asp'; } }; var Catalog = { _tfx: null, _sfx: null, _loaded: false, _opened: {}, _openedStyle: $H({}), _animation: { inProgress: false }, _pos: [], _highlighted: 0, initialize: function() { this.options = Object.extend({ hasOutlines: true }, arguments[0] || {}); $$('div.catalog-page').each(function(p,idx){ new Insertion.Bottom(p.down('div.lightbox'), '
    '+ '
    '+ '
    '); p.down('div.details-button').hide().down('div.content').update(Gucci.getTerm('show outlines')); }); Catalog.cachePagePositions(); Event.observe(window,'resize',Catalog.cachePagePositions); if(this.options.hasOutlines) Event.observe(document,'mousemove', Catalog.onMouseMove); }, cachePagePositions: function() { Catalog._pos = []; Position.prepare(); $$('div.catalog-page').each(function(p,idx){ var pos = Position.page(p); pos.push(pos[0]+780); pos.push(pos[1]+504); Catalog._pos.push(pos); }); }, onMouseMove: function(event){ var pos = [Event.pointerX(event), Event.pointerY(event)]; var found = false; var old = Catalog._highlighted; Catalog._pos.each(function(p,idx){ if(p[0] <= pos[0] && p[1] <= pos[1] && p[2] >= pos[0] && p[3] >= pos[1]){ var page = idx + 1; if(Catalog._highlighted != page){ Catalog._highlighted = page; $('shop'+page+'_details').show(); } found = true; throw $break; } }); if(!found && Catalog._highlighted>0) Catalog._highlighted = 0; if(old != Catalog._highlighted && $('shop'+old+'_details')) $('shop'+old+'_details').hide(); }, turnPage: function(page) { if(!Catalog._loaded) return; if(Catalog._tfx && Catalog._sfx==page) return; var w = Position.getPageSize().window.width; var p = 301 + (780+65) * (page-1); if(Catalog._tfx) Catalog._tfx.cancel(); Catalog._sfx = page; var d = (p - (w - 780)/2) - Position.scrollX(); if(d == 0) return false; Catalog._tfx = new Effect.HScrollTo((p - (w - 780)/2),{ duration: (Math.log(Math.abs(d*d))/10), transition: Gucci.cubic, afterFinish: function(){Catalog._tfx = null} }); return true; }, serialize: function(page,style){ var price = _catalog_data[style].price == 0 ? '' : new Template(Gucci.getTerm('price-template')).evaluate({price:_catalog_data[style].price}); return( 'description=' + encodeURIComponent(_catalog_data[style].description) + '&displayStyle=' + encodeURIComponent(style) + '&price=' + encodeURIComponent(price) + '&catalog=85th-gucci' + '&productLink=' + (page+'_'+style.gsub(/\s/,'_')) + '&lightbox=lightbox_' + (page-1) ); }, disableMap: function(element){ var map = element.up('div.catalog-page').down('img.map'); if(!map) return; map.useMap = '#'; }, closePage: function(element){ var page = element.up('div.catalog-page').id.gsub(/page_/,''); Catalog._opened[page] = false; var map = element.up('div.catalog-page').down('img.map'); if(!map) return; map.useMap = '#map_page_'+page; }, closeShopper: function(link){ var lightbox = $(link).up('div.lightbox'); Catalog.closePage(lightbox); new Effect.Parallel([ new Effect.Scale(lightbox.down('div.details-wrapper'), 0,{ sync:true, scaleMode:{originalWidth:260,originalHeight:504}, scaleFrom:100, scaleY:false, scaleContent:false }), new Effect.Scale(lightbox.down('div.shopper-wrapper'), 0,{ sync:true, scaleMode:{originalWidth:260,originalHeight:504}, scaleFrom:100, scaleY:false, scaleContent:false }) ],{ duration:0.5, queue:'end' }); new Effect.Parallel([ new Effect.Move( lightbox.down('div.panel1-background'),{x:-260,sync:true}), new Effect.Move( lightbox.down('div.panel2-background'),{x:-520,sync:true}) ],{ duration:0.75, transition:Gucci.cubic, queue:'end', afterFinish: function(){ lightbox.hide(); } }); }, getOpenStyleForPage: function(page){ for(style in Catalog._openedStyle){ if(Catalog._openedStyle[style].page == page) return style; } }, shop: function(page,style){ if(Catalog._animation.inProgress) return; if(!Catalog._loaded) return; Catalog.turnPage(page); if(Catalog._opened[page]) return; if(Catalog._openedStyle[style]) { if(Catalog._openedStyle[style].page != page) Catalog.closeShop(Catalog._openedStyle[style].page); } Catalog._openedStyle[style] = { page: page }; var lightbox = $('lightbox_'+(page-1)); Catalog.disableMap(lightbox); if(!_catalog_data[style]) { alert('page '+page+', style '+style+' not found'); return; } Catalog._opened[page] = true; Catalog._animation.inProgress = true; switch(_catalog_data[style].url){ case 'shopper': var e = []; e.push(new Effect.Move(lightbox.down('div.panel1-background'),{x:260,sync:true})); e.push(new Effect.Move(lightbox.down('div.panel2-background'),{x:520,sync:true})); lightbox.down('div.product-image').hide(); lightbox.setStyle({display:'block'}); lightbox.down('div.details-wrapper').setStyle({left:'260px',width:'0px',overflow:'hidden'}); lightbox.down('div.shopper-wrapper').setStyle({left:'520px',width:'0px',overflow:'hidden'}).show(); new Effect.Parallel(e,{duration:1.5,transition:Gucci.cubic, afterFinish: function(){ Catalog._animation.inProgress = false; new Ajax.Updater( 'shop'+page+'_panel1', '/'+getCookie('site')+'/contact_item.asp', { parameters: Catalog.serialize(page,style) + '&form=shopper', onException: function(transport, exception){ Shop.lastException = $H(exception); }, onComplete: function(r){ new Effect.Parallel([ new Effect.Scale(lightbox.down('div.details-wrapper'), 100,{ sync:true, scaleMode:{originalWidth:260,originalHeight:504}, scaleFrom:0, scaleY:false, scaleContent:false }), new Effect.Scale(lightbox.down('div.shopper-wrapper'), 100,{ sync:true, scaleMode:{originalWidth:260,originalHeight:504}, scaleFrom:0, scaleY:false, scaleContent:false }) ],{ duration:1.1, transition:Gucci.cubic }); } } ); } }); break; case 'unavailable': var e = []; e.push(new Effect.Move(lightbox.down('div.panel1-background'),{x:260,sync:true})); e.push(new Effect.Move(lightbox.down('div.panel2-background'),{x:520,sync:true})); lightbox.down('div.product-image').hide(); lightbox.setStyle({display:'block'}); lightbox.down('div.details-wrapper').setStyle({left:'260px',width:'0px',overflow:'hidden'}); lightbox.down('div.shopper-wrapper').setStyle({left:'520px',width:'0px',overflow:'hidden'}).show(); new Effect.Parallel(e,{duration:1.5,transition:Gucci.cubic, afterFinish: function(){ Catalog._animation.inProgress = false; new Ajax.Updater( 'shop'+page+'_panel1', '/'+getCookie('site')+'/contact_item.asp', { parameters: Catalog.serialize(page,style) + '&form=unavailable', onException: function(transport, exception){ Shop.lastException = $H(exception); }, onComplete: function(r){ new Effect.Parallel([ new Effect.Scale(lightbox.down('div.details-wrapper'), 100,{ sync:true, scaleMode:{originalWidth:260,originalHeight:504}, scaleFrom:0, scaleY:false, scaleContent:false }), new Effect.Scale(lightbox.down('div.shopper-wrapper'), 100,{ sync:true, scaleMode:{originalWidth:260,originalHeight:504}, scaleFrom:0, scaleY:false, scaleContent:false }) ],{ duration:1.1, transition:Gucci.cubic }); } } ); } }); break; default: Catalog.loadShopPanels(page,style); } }, loadShopPanels: function(page,style) { var lightbox = $('lightbox_'+(page-1)); var e = []; e.push(new Effect.Move(lightbox.down('div.panel1-background'),{x:260,sync:true})); e.push(new Effect.Move(lightbox.down('div.panel2-background'),{x:520,sync:true})); lightbox.down('div.product-image').update().setStyle({width:'260px',overflow:'hidden'}).setOpacity(0); lightbox.setStyle({display:'block'}); lightbox.down('div.details-wrapper').setStyle({left:'520px',width:'0px',overflow:'hidden'}).show(); lightbox.down('div.styles-wrapper').setStyle({right:'-260px'}).show(); lightbox.down('div.shopper-wrapper').setStyle({right:'-260px'}).show(); new Effect.Parallel(e,{duration:1.5,transition:Gucci.cubic, afterFinish: function(){ Catalog._animation.inProgress = false; new Effect.Appear(lightbox.down('div.product-image')); new Ajax.Request( '/'+getCookie('site')+'/product-shots/'+getCookie('language')+'/'+ getCookie('site')+'/'+_catalog_data[style].url+'.asp', { parameters: 'lightbox=' + lightbox.id + '&style=' + style, onException: function(transport, exception){ Shop.lastException = $H(exception); }, onSuccess: function(){ new Effect.Scale(lightbox.down('div.details-wrapper'), 100,{ scaleMode:{originalWidth:260,originalHeight:504}, scaleFrom:0, scaleY:false, scaleContent:false, duration:1.1, transition:Gucci.cubic, afterFinish:function(){ lightbox.down('div.details-wrapper').setStyle({left:'auto',right:'0',overflow:'visible'}); }}); if(lightbox.down('div.size-guide')) lightbox.down('div.size-guide').hide(); } }); } }); }, closeLightbox: function(lightbox) { var lightbox = $(lightbox); var e = []; if(Shop._lightboxes[$(lightbox).id].zoomer) { Shop._lightboxes[$(lightbox).id].zoomer.zoomOutAndDestroy(); Shop._lightboxes[$(lightbox).id].zoomer = null; } lightbox.down('div.product-image').setStyle({left:'260px',overflow:'hidden'}); lightbox.down('div.details-wrapper').setStyle({left:'520px',overflow:'hidden'}); if(lightbox.down('div.size-guide')) lightbox.down('div.size-guide').hide(); lightbox.down('div.styles-wrapper').hide(); lightbox.down('div.shopper-wrapper').hide(); e.push(new Effect.Scale(lightbox.down('div.product-image'), 0,{ sync:true, scaleMode:{originalWidth:260,originalHeight:504}, scaleFrom:100, scaleY:false, scaleContent:false })); e.push(new Effect.Scale(lightbox.down('div.details-wrapper'), 0,{ sync:true, scaleMode:{originalWidth:260,originalHeight:504}, scaleFrom:100, scaleY:false, scaleContent:false })); new Effect.Parallel(e,{duration: 0.75,transition:Gucci.cubic,afterFinish:function(){ var e = []; e.push(new Effect.Move(lightbox.down('div.panel1-background'),{x:-260,sync:true})); e.push(new Effect.Move(lightbox.down('div.panel2-background'),{x:-520,sync:true})); e.push(new Effect.Move(lightbox.down('div.panel3-background'),{x:-780,sync:true})); new Effect.Parallel(e,{duration: 0.75,transition:Gucci.cubic,afterFinish:function(){ lightbox.hide(); Catalog.closePage(lightbox); }}); }}); }, info: function(page,style,area){ }, clearInfo: function(page,area){ }, closeShop: function(page){ }, toggleOverlay: function(link){ var overlay = $(link).previous('img'); if(overlay.getOpacity()==0){ link.down('div.content').update(Gucci.getTerm('hide outlines')); if(Engine.isMSIE) { $(overlay).setOpacity(1); } else { new Effect.Opacity(overlay,{from:0,to:1}); } } else { link.down('div.content').update(Gucci.getTerm('show outlines')); if(Engine.isMSIE) { $(overlay).setOpacity(0); } else { new Effect.Opacity(overlay,{from:1,to:0}); } } }, loadVisiblePages: function(){ if(!Catalog._loaded) return; if(Catalog._loaderTimeout) clearTimeout(Catalog._loaderTimeout); Catalog._loaderTimeout = setTimeout(function(){ var p = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; var w = Position.getPageSize().window.width; var visibles = []; $R(1,CATALOG_PAGES).each(function(i){ var x = 301+(i-1)*(780+65); if(px) visibles.push(i); if(p<(x+780) && (p+w)>(x+780)) visibles.push(i); }); visibles.each(function(i){ if($('page_'+i).hasClassName('loaded')) return; $('page_'+i).addClassName('loading'); Loader.load(CATALOG_URL[i-1],{ onComplete:function(img){ $('image_'+i).setOpacity(0); setTimeout(function(){ $('image_'+i).src = img; if(Engine.isMSIE6) { // alpha(opacity=0) $('image_'+i+'_map').style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+OVERLAY_URL[i-1]+"',sizingMethod='scale')"; } else { $('image_'+i+'_map').src = OVERLAY_URL[i-1]; } $('image_'+i+'_map').show().setOpacity(0); new Effect.Opacity('image_'+i,{from:0.0,to:1.0,afterFinish:function(){ $('page_'+i).addClassName('loaded').removeClassName('loading') }}); },1); } }); }); if((p+w)>(65+236+CATALOG_PAGES*(780+65))) $R(1,CATALOG_PAGES).each(function(i){ Loader.load(CATALOG_THUMB_URL[i-1],{ onComplete:function(img){ $('thumb_'+i).setOpacity(0); $('thumb_'+i).src = img; new Effect.Opacity('thumb_'+i,{from:0.0,to:0.999}); } }); }); }, 250); } };_.http://www.gucci.com/javascripts/gucci-shop.jsKLMObplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?JUZNS.objectsWNS.keys@ABCDEFGHIKLMNOPQRST _Content-EncodingTVary]Last-Modified]Cache-Control]Accept-RangesVServer^Content-LengthTDateTEtag\Content-TypeTgzip_Accept-Encoding_Thu, 11 Oct 2007 17:23:01 GMT_+max-age=7200,post-check=3600,pre-check=7200Ubytes_Microsoft-IIS/6.0T2951_Fri, 28 Dec 2007 09:02:03 GMT_"808c65f2bcc81:74ec"12jkkl6_NSMutableDictionary\NSDictionary12noo6_NSHTTPURLResponseInternal12qrrs6_NSHTTPURLResponse]NSURLResponse$)2DILbd  %1357hmv   05CQ_fuz 0GLPfsx{tO={var GRAB_CURSOR = '-moz-grab'; var GRABBING_CURSOR = '-moz-grabbing'; if(Engine.isMSIE){ GRAB_CURSOR = '/images/grab.cur'; GRABBING_CURSOR = '/images/grabbing.cur'; } if(Engine.isKHTML){ GRAB_CURSOR = 'move'; GRABBING_CURSOR = 'move'; } Gucci.Zoomer = Class.create(); Object.extend(Gucci.Zoomer, { ZOOM_IN_SPEED: 0.8, ZOOM_OUT_SPEED: 0.4, FACTOR: 3.9682539, expand: true }); Object.extend(Gucci.Zoomer.prototype, { _zoomed: false, _zooming: false, active: false, initialize: function(element, full, style, url){ this.active = true; this.element = $(element); this.full = full; this.style = style; this.url = url; this.expand = Gucci.Zoomer.expand; new Insertion.Bottom(this.element, ''+ '' + ''); $(this.full).setStyle({cursor:'url(/images/zoom-in.cur),-moz-zoom-in'}); this.zoomInEvent = this.zoomIn.bindAsEventListener(this); this.zoomOutEvent = this.zoomOut.bindAsEventListener(this); Event.observe(this.element,'click',this.zoomInEvent); Event.observe('zoomer-'+style+'-reset','click',this.zoomOutEvent); if(Engine.isKHTML) { this.khtmlMouseMoveEvent = this.khtmlMouseMove.bindAsEventListener(this); this.khtmlMouseOutEvent = this.khtmlMouseOut.bindAsEventListener(this); Event.observe(this.element,'mousemove',this.khtmlMouseMoveEvent); Event.observe(this.element,'mouseout',this.khtmlMouseOutEvent); } }, setViews: function(images){ if(images.back){ new Insertion.Bottom(this.element, '
    ' + '
    ' + Gucci.getTerm('back') + '
    '); this._views = images; this._currentView = 'front'; this.switchViewsEvent = this.switchViews.bindAsEventListener(this); Event.observe('zoomer-'+this.style+'-back','click',this.switchViewsEvent); } if(images.front.is360){ this._is360 = true; this._frames = images.front.is360; new Insertion.Bottom(this.element, '' ); this._views = images; this._currentView = '1'; this.rotateLeftEvent = this.rotateLeft.bindAsEventListener(this); this.rotateRightEvent = this.rotateRight.bindAsEventListener(this); Event.observe('zoomer-'+this.style+'-left','click',this.rotateRightEvent); Event.observe('zoomer-'+this.style+'-right','click',this.rotateLeftEvent); this.setRotation(); setTimeout(function(){ $('zoomer-'+this.style+'-container').show().setStyle({left:(260-$('zoomer-'+this.style+'-container').offsetWidth)/2+'px'}); }.bind(this),10); } else { if(Engine.isMSIE){ this.full.setStyle({width:this.full.offsetWidth+'px',height:'504px'}); this.full.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+this.full.src+"',sizingMethod='scale')"; this.full.src = '/images/empty.gif'; } } }, stopRotating: function(){ if(this._rotateTimeout) clearTimeout(this._rotateTimeout); }, setRotation: function(){ if(!this._zooming) $(this.full).style.left = -(this._currentView-1)*260 + 'px'; $(this.full).deltax = -(this._currentView-1)*260; }, rotate: function(speed){ this.stopRotating(); this._currentView++; if(this._currentView>this._frames) this._currentView = 1; this.setRotation(); this._rotateTimeout = setTimeout( function(){ this.rotate(speed) }.bind(this), speed || 1000 ); }, rotateOnce: function(){ this.stopRotating(); (12).times(function(i){ setTimeout( function(){ this._currentView++; if(this._currentView>this._frames) this._currentView = 1; this.setRotation(); }.bind(this), (Gucci.Zoomer.ZOOM_IN_SPEED*0.9)/12*1000*i) }.bind(this)); }, rotateLeft: function(event){ this.stopRotating(); this._currentView--; if(this._currentView<1) this._currentView = this._frames; this.setRotation(); Event.stop(event); }, rotateRight: function(event){ this.stopRotating(); this._currentView++; if(this._currentView>this._frames) this._currentView = 1; this.setRotation(); Event.stop(event); }, switchViews: function(event){ if(this._currentView == 'front'){ $('zoomer-'+this.style+'-back').down('div.content').update(Gucci.getTerm('front')); this.url = this._views.back.zoom; this.full.src = this._views.back.full; this._currentView = 'back' } else { $('zoomer-'+this.style+'-back').down('div.content').update(Gucci.getTerm('back')); this.url = this._views.front.zoom; this.full.src = this._views.front.full; this._currentView = 'front'; } Event.stop(event); }, khtmlMouseMove: function(event){ if(this._zoomed || this._paused) return; var c = Event.localPointer(event,this.element); $('zoomer-'+this.style+'-cursor').show(); $('zoomer-'+this.style+'-cursor').setStyle({left:c[0]+12+'px',top:c[1]+15+'px'}); }, khtmlMouseOut: function(){ $('zoomer-'+this.style+'-cursor').hide(); }, destroy: function(){ if(!this.active) return; Event.stopObserving(this.element,'click',this.zoomInEvent); Event.stopObserving('zoomer-'+this.style+'-reset','click',this.zoomOutEvent); if(Engine.isKHTML) { Event.stopObserving(this.element,'mousemove',this.khtmlMouseMoveEvent); Event.stopObserving(this.element,'mouseout',this.khtmlMouseOutEvent); } $('zoomer-'+this.style+'-image').remove(); $('zoomer-'+this.style+'-reset').remove(); $('zoomer-'+this.style+'-cursor').remove(); if($(this.full)) $(this.full).setStyle({cursor:'default'}); this._views = null; this._currentView = null; if($('zoomer-'+this.style+'-back')) $('zoomer-'+this.style+'-back').remove(); this.active = false; }, swap: function(style, fullUrl, zoomUrl) { if(this._zoomed){ this.zoomOut(); setTimeout(function(){ this.destroy(); $(this.full).src = fullUrl; this.initialize(this.element,this.full,style,zoomUrl); }.bind(this),450); } else { this.destroy(); $(this.full).src = fullUrl; this.initialize(this.element,this.full,style,zoomUrl); } }, setNA: function(naUrl){ if(this._zoomed){ this.zoomOut(); setTimeout(function(){ this.destroy(); $(this.full).src = naUrl; }.bind(this),450); } else { this.destroy(); $(this.full).src = naUrl; } }, FACTOR: 3.9682539, zoomIn: function(event){ if(this._is360) return this.zoomIn360(event); if(this._zoomed || this._paused || !$('zoomer-'+this.style+'-image')) return; this._zoomed = true; $('zoomer-'+this.style+'-image').src = this.url; var c = Event.localPointer(event,this.element); var m = [c[0],c[1]]; if(m[1]<99) m[1] = 99; if(m[1]>382) m[1] = 382; m[0] = m[0]*(this.FACTOR)*(this.expand ? 0.5 : 0.75); m[1] = m[1]*(this.FACTOR)*0.75; var p = [m[0]+5, m[1]-297]; $('zoomer-'+this.style+'-image').setStyle({left:'-'+p[0]+'px',top:'-'+p[1]+'px'}); this.element.style.zIndex = 3; var effects = [ new Effect.Scale(this.full,this.FACTOR*100,{sync:true,scaleContent:false}), new Effect.Move(this.full,{x:-m[0],y:-m[1],sync:true}) ] if(this.expand) effects.push(new Effect.Scale(this.element,200,{scaleContent:false,scaleY:false,sync:true})); if(Engine.isKHTML) $('zoomer-'+this.style+'-cursor').hide(); if(Engine.isGecko && this.expand) effects.push(new Effect.Move(this.element,{x:-260,sync:true})); new Effect.Parallel(effects,{duration:Gucci.Zoomer.ZOOM_IN_SPEED, transition:Gucci.cubic}); setTimeout(function(){ $('zoomer-'+this.style+'-image').setOpacity(0.0); $('zoomer-'+this.style+'-image').show(); $('zoomer-'+this.style+'-image').style.cursor = GRAB_CURSOR; $('zoomer-'+this.style+'-image').setStyle({left:'-'+p[0]+'px',top:'-'+p[1]+'px'}); /* if(Engine.isMSIE) $(this.full).setOpacity(0.999); // IE bug workaround */ new Effect.Opacity('zoomer-'+this.style+'-image',{from:0.0,to:1.0,duration:0.7}); }.bind(this), Gucci.Zoomer.ZOOM_IN_SPEED*1000 + 10); new Draggable('zoomer-'+this.style+'-image',{ starteffect: function(){ $('zoomer-'+this.style+'-image').style.cursor = GRABBING_CURSOR}.bind(this), endeffect: function(){ $('zoomer-'+this.style+'-image').style.cursor = GRAB_CURSOR}.bind(this), snap: function(x,y,draggable) { function constrain(n, lower, upper) { if (n > upper) return upper; else if (n < lower) return lower; else return n; } var p = [ constrain(x, -(1040-(this.expand ? 520 : 260)), 0), constrain(y, -(1343-504), 0)]; this._fullStyle = { left:p[0]+5+'px',top:p[1]-297+'px' }; return p; }.bind(this)}); if($('zoomer-'+this.style+'-back')) $('zoomer-'+this.style+'-back').hide(); Effect.Appear('zoomer-'+this.style+'-reset',{delay:0.6,to:1.0,duration:0.7}); }, zoomOut: function(event, resetZ){ if(this._is360) return this.zoomOut360(event, resetZ); if(!this._zoomed) return; this._zoomed = false; if(this._fullStyle) { $(this.full).setStyle(this._fullStyle); this._fullStyle = null; } resetZ = resetZ || 2; $('zoomer-'+this.style+'-image').hide(); $(this.full).show(); $('zoomer-'+this.style+'-reset').hide(); if($('zoomer-'+this.style+'-back')) $('zoomer-'+this.style+'-back').show(); var effects = [ new Effect.Scale(this.full,100/this.FACTOR,{sync:true}), new Effect.Move(this.full,{x:-$(this.full).offsetLeft,y:-$(this.full).offsetTop,sync:true}) ]; if(this.expand) effects.push(new Effect.Scale(this.element,50,{scaleContent:false,scaleY:false,sync:true})); if(Engine.isGecko && this.expand) effects.push(new Effect.Move(this.element,{x:260,sync:true})); new Effect.Parallel(effects,{duration:Gucci.Zoomer.ZOOM_OUT_SPEED,transition:Gucci.cubic,queue:Shop.queue, afterFinish:function(){ this.element.style.zIndex = resetZ; this.full.style.left = null; this.element.style.left = null; Element.undoPositioned(this.element); }.bind(this) }); if(event) Event.stop(event); }, zoomIn360: function(event){ if(this._zoomed || this._paused || !$('zoomer-'+this.style+'-image')) return; this._zoomed = true; this._zooming = true; //this.rotateOnce(); // $('zoomer-'+this.style+'-image').src = this.url.gsub(/\*/, (this._currentView > 9 ? '0' : '00') + this._currentView); $('zoomer-'+this.style+'-image').src = this.url[this._currentView-1]; var c = Event.localPointer(event,this.element); var m = [c[0],c[1]]; if(m[1]<99) m[1] = 99; if(m[1]>382) m[1] = 382; m[0] = m[0]*(this.FACTOR)*(this.expand ? 0.5 : 0.75); m[1] = m[1]*(this.FACTOR)*0.75; var p = [m[0]+5, m[1]-297]; $('zoomer-'+this.style+'-image').setStyle({left:'-'+p[0]+'px',top:'-'+p[1]+'px'}); this.element.style.zIndex = 3; var effects = [ new Effect.ZoomIn360( this.full, { pointer: c, frames: this._frames, sync: true }) ] if(this.expand) effects.push(new Effect.Scale(this.element,200,{scaleContent:false,scaleY:false,sync:true})); if(Engine.isKHTML) $('zoomer-'+this.style+'-cursor').hide(); if(Engine.isGecko && this.expand) effects.push(new Effect.Move(this.element,{x:-260,sync:true})); new Effect.Parallel(effects,{ duration:Gucci.Zoomer.ZOOM_IN_SPEED, transition:Gucci.cubic }); this.full.up().setStyle({width:'520px',overflow:'hidden'}); setTimeout(function(){ this._zooming = false; $('zoomer-'+this.style+'-image').setOpacity(0.0); $('zoomer-'+this.style+'-image').show(); $('zoomer-'+this.style+'-image').style.cursor = GRAB_CURSOR; $('zoomer-'+this.style+'-image').setStyle({left:'-'+p[0]+'px',top:'-'+p[1]+'px'}); /* if(Engine.isMSIE) $(this.full).setOpacity(0.999); // IE bug workaround */ new Effect.Opacity('zoomer-'+this.style+'-image',{from:0.0,to:1.0,duration:0.7}); }.bind(this), Gucci.Zoomer.ZOOM_IN_SPEED*1000 + 10); new Draggable('zoomer-'+this.style+'-image',{ starteffect: function(){ $('zoomer-'+this.style+'-image').style.cursor = GRABBING_CURSOR}.bind(this), endeffect: function(){ $('zoomer-'+this.style+'-image').style.cursor = GRAB_CURSOR}.bind(this), snap: function(x,y,draggable) { function constrain(n, lower, upper) { if (n > upper) return upper; else if (n < lower) return lower; else return n; } var p = [ constrain(x, -(1040-(this.expand ? 520 : 260)), 0), constrain(y, -(1343-504), 0)]; this._fullStyle = { left:p[0]+5+'px',top:p[1]-297+'px' }; return p; }.bind(this)}); if($('zoomer-'+this.style+'-back')) $('zoomer-'+this.style+'-back').hide(); if($('zoomer-'+this.style+'-left')) $('zoomer-'+this.style+'-left').hide(); if($('zoomer-'+this.style+'-right')) $('zoomer-'+this.style+'-right').hide(); Effect.Appear('zoomer-'+this.style+'-reset',{delay:0.6,to:1.0,duration:0.7}); }, zoomOut360: function(event, resetZ){ if(!this._zoomed) return; this._zoomed = false; if(this._fullStyle) { $(this.full).setStyle(this._fullStyle); this._fullStyle = null; } resetZ = resetZ || 2; $('zoomer-'+this.style+'-image').hide(); $(this.full).show(); $('zoomer-'+this.style+'-reset').hide(); var effects = [ new Effect.ZoomOut360( this.full, { frames: this._frames, sync: true }) ]; if(this.expand) effects.push(new Effect.Scale(this.element,50,{scaleContent:false,scaleY:false,sync:true})); if(Engine.isGecko && this.expand) effects.push(new Effect.Move(this.element,{x:260,sync:true})); new Effect.Parallel(effects,{duration:Gucci.Zoomer.ZOOM_OUT_SPEED,transition:Gucci.cubic,queue:Shop.queue, afterFinish:function(){ this.element.style.zIndex = resetZ; this.element.style.left = null; Element.undoPositioned(this.element); if($('zoomer-'+this.style+'-left')) $('zoomer-'+this.style+'-left').show(); if($('zoomer-'+this.style+'-right')) $('zoomer-'+this.style+'-right').show(); }.bind(this) }); if(event) Event.stop(event); }, zoomOutAndPause: function(){ if(this._zoomed){ this.zoomOut(null, 3); setTimeout(function(){ this.pause() }.bind(this),450); } else { this.pause(); } }, zoomOutAndDestroy: function(){ if(this._zoomed){ this.zoomOut(); setTimeout(function(){ this.destroy() }.bind(this),450); } else { this.destroy(); } }, pause: function(){ this._paused = true; }, unpause: function(){ this._paused = false; } });_.http://www.gucci.com/javascripts/gucci-zoom.jsOPQ Obplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse! )/078?KWZNS.objectsWNS.keys@ABCDEFGHIJLMNOPQRSTUV _Content-EncodingTVary]Last-Modified]Cache-Control]Accept-RangesVServer^Content-LengthTDate\X-Powered-ByTEtag\Content-TypeTgzip_Accept-Encoding_Fri, 19 Oct 2007 15:03:30 GMT_+max-age=7200,post-check=3600,pre-check=7200Ubytes_Microsoft-IIS/6.0T5005_Fri, 28 Dec 2007 09:00:32 GMTWASP.NET_"0cd92356112c81:74ec"12noop6_NSMutableDictionary\NSDictionary12rss6_NSHTTPURLResponseInternal12uvvw6_NSHTTPURLResponse]NSURLResponse$)2DILbd  '3579fkt   "'5CQXgly~ /7OTXn{xO/* GLOBAL LAYOUT */ html { background: url(../images/background.gif) repeat-x left center #95754e; background-attachment: fixed; } body { color: #2B200D; margin: 0; padding: 0; font: 10px/14px Verdana, Arial, sans-serif; } * html { background: url(../images/background-ie.gif) no-repeat left center #95754e; background-attachment: fixed; } *+html { background: url(../images/background-ie.gif) no-repeat left center #95754e; background-attachment: fixed; } * { outline: none; } #logo { left: 126px; position: fixed; cursor: pointer; } * html #logo { filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0); } *+html #logo { filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0); } #logo-print { display: none; } * html #logo { position: absolute; } *+html #logo { position: absolute; } #logo.noscroll { cursor: default; } #layout { height: 504px; margin-left: 65px; margin-right: 65px; position: absolute; } div.shadow-bottom { overflow: hidden; position: absolute; top: 504px; height: 6px; left: 0; width: 100%; background: url(../images/shadow-bottom.gif) repeat-x; } * html div.shadow-bottom { width: expression(this.parentNode.offsetWidth + 'px'); } div.shadow-bottom div.start { background: url(../images/shadow-bottom-start.gif); height: 6px; position: absolute; width: 6px; } div.shadow-right { background: url(../images/shadow-right.gif); height: 510px; position: absolute; right: -6px; top: 0; width: 6px; } div#filling { background: top right url(../images/background-fill-2.gif); height: 504px; position: absolute; top: 0px; right: 301px; } /* MENUS */ div.menu { background: transparent; height: 504px; overflow: hidden; position: absolute; width: 236px; z-index: 100000; text-transform: lowercase; } div#menu-right { text-align: right; } div.menu p { margin: 0; padding: 0; line-height: 20px; } div.menu p.active { font-weight: bold; font-size: 10px; color: #2B200D !important; } div.menu p.complete { font-size: 10px; font-weight: normal; color: #2B200D !important; } div.menu p.checkout-menu-item { cursor: pointer; } div.menu p.inactive { color: #726854; cursor: default !important; } div.menu p.optional { display: none; } div.menu a.small { font-size: 11px; margin: 0; padding: 0; color: #2B200D; } div#menu-left a.small { padding-right: 12px; } div#menu-right a.small { padding-left: 12px; } div.menu div.main { font: 12px/20px "Verdana"; padding-left: 36px; padding-right: 39px; padding-top: 28px; position: absolute; width: 161px; height: 476px; } div#menu-right div.main { left: 472px; } div.menu a { color: #2B200D; text-decoration: none; position: relative; z-index: 10000000; } div#menu-left a { padding-right: 12px; } div#menu-right a { padding-left: 12px; } div.menu a:hover { color: #89693b; } div#menu-left a.submenu:hover { background: right 5px url(../images/menu-submenu-left-highlight.gif) no-repeat; } div#menu-right a.submenu:hover { background: 0 5px url(../images/menu-submenu-right-highlight.gif) no-repeat; } div.menu div.background { background: url(../images/menu-background.gif); height: 504px; left: 0; overflow: hidden; position: absolute; width: 708px; } div.menu div.background.homepage { background: url(../images/menu-background-safari.png); } * html div.menu div.background.homepage { background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/menu-background-ie6.png'); } div.menu div.scroll { height: 504px; left: 0; overflow: hidden; position: absolute; width: 708px; } div#menu-right div.scroll { left: -472px; } div.menu div.submenu, div.menu div.pagemenu { font: 11px/20px "Verdana"; left: 236px; padding-left: 36px; padding-top: 28px; position: absolute; width: 200px; height: 476px; } div.menu div.pagemenu { left: 472px; } div#menu-right div.submenu, div#menu-right div.pagemenu { padding-right: 36px; padding-left: 0px; } div#menu-right div.pagemenu { left: 0; } div.menu div.submenu p.level-up a, div.menu div.pagemenu p.level-up a { position: absolute; top: 460px; left: 36px; background: 0 7px no-repeat url(../images/menu-level-up-left.gif); padding-left: 12px; } div#menu-right div.menu div.submenu p.level-up a, div#menu-rightdiv.menu div.pagemenu p.level-up a { left: 39px; } * html div.menu div.submenu p.level-up a, * html div.menu div.pagemenu p.level-up a { background: 0 7px no-repeat url(../images/menu-level-up-left.gif); } *+html div.menu div.submenu p.level-up a, *+html div.menu div.pagemenu p.level-up a { background: 0 7px no-repeat url(../images/menu-level-up-left.gif); } div.menu div.submenu p.level-up a:hover, div.menu div.pagemenu p.level-up a:hover { background: 0 7px no-repeat url(../images/menu-level-up-left-highlight.gif); } * html div.menu div.submenu p.level-up a:hover, * html div.menu div.pagemenu p.level-up a:hover { background: 0 7px no-repeat url(../images/menu-level-up-left-highlight.gif); } *+html div.menu div.submenu p.level-up a:hover, *+html div.menu div.pagemenu p.level-up a:hover { background: 0 7px no-repeat url(../images/menu-level-up-left-highlight.gif); } div#menu-right div.submenu p.level-up a, div#menu-right div.pagemenu p.level-up a { background: right 6px no-repeat url(../images/menu-level-up-right.gif); } * html div#menu-right div.submenu p.level-up a, * html div#menu-right div.pagemenu p.level-up a { background: right 7px no-repeat url(../images/menu-level-up-right.gif); } *+html div#menu-right div.submenu p.level-up a, *+html div#menu-right div.pagemenu p.level-up a { background: right 7px no-repeat url(../images/menu-level-up-right.gif); } div#menu-right div.submenu p.level-up a:hover, div#menu-right div.pagemenu p.level-up a:hover { background: right 6px no-repeat url(../images/menu-level-up-right-highlight.gif); } * html div#menu-right div.submenu p.level-up a:hover, * html div#menu-right div.pagemenu p.level-up a:hover { background: right 7px no-repeat url(../images/menu-level-up-right-highlight.gif); } *+html div#menu-right div.submenu p.level-up a:hover, *+html div#menu-right div.pagemenu p.level-up a:hover { background: right 7px no-repeat url(../images/menu-level-up-right-highlight.gif); } div#menu-right div.submenu p.level-up a, div#menu-right div.pagemenu p.level-up a { padding-right: 13px; width: 135px; } div.pagemenu div.title { font-weight: bold; color: #2B200D; font-size: 10px; } div.pagemenu ul { margin: 0; padding: 0; list-style-type: none; color: #2B200D; width: 161px; } div.pagemenu ul li { /* height: 20px; line-height: 20px; */ text-indent: -15px; margin-left: 15px; } div.menu a.active { color: #2B200D; font-weight: bold; font-size: 10px; } div.menu div.main a.active { font-size: 11px; } div.pagemenu ul.subselection { position: absolute; left: 36px; top: 59px; } div.pagemenu ul.filters { position: absolute; left: 36px; bottom: 140px; } div.pagemenu ul.filters-full { position: absolute; left: 36px; top: 165px; } div.pagemenu ul.actions { position: absolute; left: 36px; bottom: 60px; } div#menu-right div.pagemenu ul.subselection, div#menu-right div.pagemenu ul.filters, div#menu-right div.pagemenu ul.filters-full, div#menu-right div.pagemenu ul.actions { left: 39px; } /* TEXT CONTENT */ ul { list-style-type: none; margin: 0; padding: 0; } li { color: #2B200D; margin: 0; padding: 0; } li a { color: #2B200D; text-decoration: none; } li a:hover { color: #89693b; } div.content-block { background: url(../images/box-2-panels-background.jpg) #CCBFA5; float: left; height: 504px; position: relative; } div.content-block div.info { color: #2B200D; float: left; font-size: 10px; height: 420px; padding-left: 15px; padding-right: 15px; padding-top: 28px; position: relative; width: 230px; } div.content-block div.info p { font: 10px/15px Verdana; margin-top: 0px; margin-bottom: 18px; padding: 0; } div.content-block div.info a { color: #2B200D; } div.content-block div.info a:hover { color: #89693b; } div.content-block div.headline { padding-bottom: 39px; } div.content-block h1 { color: #89693b; font: 14px/15px Verdana; text-transform: lowercase; margin: 0; padding: 0; margin-top: 6px; } div.content-block h2 { color: #89693b; font: 11px/15px Verdana; text-transform: lowercase; margin: 0; padding: 0; padding-bottom: 8px; } div.content-block div.title.second-column, div.content-block div.subtitle.second-column { left: 275px; } div.content-block div.info.wide { width: 360px; } div.content-block div.info.wide h1{ font: 11px/15px Verdana; color: #89693b; padding: 0; margin: 0; margin-bottom: 12px; } div.content-block div.info.wide p, div.content-block div.info.narrow p{ padding: 0; margin: 0; margin-top: 0px; margin-bottom: 18px; } div.content-block div.info.narrow { width: 230px; } /* TEXT CONTENT ABOUT PAGES*/ div.about-block { background: url(/assets/about-gucci-background.jpg) #CCBFA5; float: left; height: 504px; width: 780px; position: relative; } div.about-block div.info { color: #2B200D; float: left; font-size: 10px; height: 420px; padding-left: 275px; padding-right: 275px; padding-top: 28px; position: relative; width: 230px; } div.about-block div.info h1{ font: 11px/15px Verdana; color: #89693b; padding: 0; margin: 0; margin-bottom: 12px; } div.about-block div.info a { color: #2B200D; } div.about-block div.info a:hover { color: #89693b; } /* MINI BAG */ div#minibag { position: fixed; right: 100px; } * html div#minibag { position: absolute; top: 0px; right: expression((Position.getPageSize().page.width - Position.getPageSize().window.width - Position.scrollX()) + 165 + 'px'); } div#minibag-container { position: absolute; top: -59px; right: 0; width: 1000px; } div#minibag-products { position: relative; float: right; height: 56px; overflow: hidden; } div#minibag span.count { width: 24px; text-align: right; margin-right: 4px; float: left; display: block; } div#minibag-products img { border: 0; } div#minibag-products div { float: left; background: url(../images/minibag-product-background.gif); width: 45px; height: 56px; } div#minibag ul { float: right; height: 14px; margin: 0; padding-top: 36px; } div#minibag ul.legal-information { position: absolute; height: 14px; margin: 0; padding-top: 0; top: 579px; right: 0; } div#minibag ul li { float: left; margin-left: 10px; } div#minibag ul.legal-information li { float: right; } div#minibag ul li a { color: #b99c72; } div#minibag ul li a:hover { color: #dec39b; } div#minibag ul li.important { font-weight: bold; margin-left: 0; } /* SHOP ONLINE GENERAL STYLES */ div.products { overflow: hidden; } /* LIGHTBOXES */ div.lightbox { float: left; height: 504px; position: relative; width: 260px; } div.lightbox div.tooltip { position: absolute; top: 0; left: 0; text-align: center; height: 14px; padding-top: 2px; color: #2D200B; background: #f8f8f8; font: 10px/10px Arial; border-top: 1px solid #fdfdfd; } div.lightbox.format-2x3 div.tooltip { top: 151px; width: 130px; } div.lightbox.format-1x3 div.tooltip { top: 151px; width: 260px; } div.lightbox.format-2x2 div.tooltip { top: 235px; width: 130px; } div.lightbox div.products { height: 504px; left: 0; position: absolute; top: 0; width: 260px; z-index: 3; } div.lightbox.format-2x3 div.products { background: url(../images/lightbox-2x3.jpg); } div.lightbox.format-2x2 div.products { background: url(../images/lightbox-2x2.jpg); } div.lightbox.format-1x3 div.products { background: url(../images/lightbox-1x3.jpg); } div.lightbox.format-2x3 div.products img, div.lightbox.format-2x3 div.products div.thumbnail { height: 168px; width: 130px; } div.lightbox.format-2x2 div.products img, div.lightbox.format-2x2 div.products div.thumbnail { height: 252px; width: 130px; } div.lightbox.format-1x3 div.products img, div.lightbox.format-1x3 div.products div.thumbnail { height: 168px; width: 260px; } div.lightbox div.products div.thumbnail { position: relative; } * html div.lightbox div.products div.thumbnail { position: relative; } *+html div.lightbox div.products div.thumbnail { position: relative; } div.lightbox.format-2x3 div.products div.thumbnail { background: none; cursor: pointer; float: left; overflow: hidden; } div.lightbox.format-2x2 div.products div.thumbnail { background: none; cursor: pointer; float: left; overflow: hidden; } div.lightbox.format-1x3 div.products div.thumbnail { background: none; cursor: pointer; float: left; overflow: hidden; } div.lightbox div.darkening { background: url(../images/lightbox-lowlight-overlay.jpg); position: relative; z-index: 10000; } div.lightbox.format-2x3 div.darkening { height: 168px; width: 130px; top: -168px; } div.lightbox.format-2x2 div.darkening { height: 252px; width: 130px; top: -252px; } div.lightbox.format-1x3 div.darkening { height: 168px; width: 260px; top: -168px; } div.lightbox div.product-image { background: url(../images/product-gradient.jpg); height: 504px; overflow: hidden; position: absolute; right: 260px; top: 0; width: 260px; z-index: 2; } div.lightbox div.product-image.loading { background: url(../images/shop-loading.gif); } div.lightbox div.product-image img { position: relative; } div.lightbox div.container { height: 504px; overflow: hidden; position: relative; width: auto; } div.lightbox div.details-wrapper { background: url(../images/box-1-panel-background.png); height: 504px; position: absolute; right: 0; top: 0; width: 260px; z-index: 1; } div.lightbox div.styles-wrapper { background: url(../images/box-1-panel-background.png); height: 504px; position: absolute; right: -260px; top: 0; width: 260px; z-index: 1; } div.lightbox div.shopper-wrapper { background: url(../images/shopper-panel-background.jpg); height: 504px; position: absolute; right: -520px; top: 0; width: 260px; z-index: 2; } * html div.lightbox div.details { position: relative; zoom: 1; /* fix margin-top error */ background: top left url(../images/box-1-panel-background.png); } * html div.lightbox div.shopper { position: relative; background: top left no-repeat url(../images/shopper-panel-background.jpg); } * html div.lightbox div.shopper-wrapper { margin-right: -6px; } div.lightbox div.style-list { position: absolute; left: 12px; top: 64px; height: 372px; width: 237px; overflow: hidden; } div.lightbox div.style-list.with-scrollbar { width: 215px; } div.lightbox div.current-style { background: url(../images/gold-80.png); } * html div.lightbox div.current-style { background: url(../images/gold-80.gif) !important; } div.lightbox div.active-style { background: url(../images/bright-80.png); } * html div.lightbox div.active-style { background: url(../images/bright-80.gif); } * html div.lightbox div.details div.active-style { background: url(../images/selected-style-background.gif) !important; } *+html div.lightbox div.details div.active-style { position: static; background: url(../images/selected-style-background.gif) !important; } *+html div.lightbox div.active-style div.style-information { position: static; } div.lightbox div.details-wrapper div.active-style { background: left top repeat-x url(../images/selected-style-background.png); } div.lightbox { font: 10px/14px Verdana; color: #2C200A; } div.lightbox ul.functions { background: left bottom no-repeat url(/images/details-hr.gif); height: 23px; margin-bottom: 10px; margin-left: 11px; margin-right: 12px; margin-top: 31px; width: 237px; } div.lightbox ul.functions.bottom { position: absolute; margin: 0; background: left top no-repeat url(/images/details-hr-bottom.gif); top: 446px; left: 11px; padding-top: 16px; } div.lightbox ul.functions li { float: right; margin-left: 15px; margin-right: 5px; } div.lightbox ul.headline { background: left bottom no-repeat url(/images/details-hr.gif); height: 23px; margin-bottom: 10px; margin-left: 11px; margin-right: 12px; margin-top: 31px; width: 237px; } div.lightbox ul.headline li { float: left; margin-left: 8px; margin-right: 5px; } div.lightbox ul.functions.bottom li { } div.lightbox ul.functions.bottom li div.button { margin: 0; } div.lightbox ul.functions.bottom li a.back { background: 0 4px no-repeat url(../images/menu-level-up-left.gif); padding-left: 12px; } div.lightbox ul.functions.bottom li a.back:hover { color: #89693b; background: 0 4px no-repeat url(../images/menu-level-up-left-highlight.gif); } div.lightbox p, div.lightbox form { color: #2C200A; margin: 0; margin-left: 19px; margin-right: 20px; width: 221px; } div.lightbox div.answer { margin-left: 19px; margin-right: 20px; margin-top: 100px; padding-bottom: 8px; background: left bottom no-repeat url(/images/details-hr-bottom.gif); } div.lightbox div.answer p { margin-left: 0; margin-right: 0; margin-bottom: 14px; text-transform: none; } div.lightbox div.form-row { margin-top: 3px; } div.lightbox div.form-error { padding-left: 3px; padding-top: 5px; color: #b90202; font-weight: bold; } div.lightbox div.error { color: #b90202 !important; } div.lightbox .field { width: 221px; font-size: 11px; } div.lightbox div.button { color: #524022; height: 24px; margin-left: 18px; margin-bottom: 10px; text-align: center; cursor: pointer; } div.lightbox div.button div.content { float: left; padding-top: 4px; height: 20px; padding-left: 20px; background: url(../images/button.png); } * html div.button div.content { background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/button.png',sizingMethod='crop'); } div.lightbox div.button div.end { float: left; height: 24px; width: 20px; background: url(../images/button-end.png); } * html div.lightbox div.button div.end { background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/button-end.png',sizingMethod='crop'); } * html div.lightbox div.button div.content { background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/button.png',sizingMethod='crop'); } div.lightbox div.button.busy { background: url(../images/button-busy.gif) repeat-x left center; border: 1px solid #a59784; overflow: hidden; padding: 0; height: 13px; margin-top: 15px; margin-bottom: 14px; width: 219px; cursor: wait; } div.lightbox div.button.busy div.content, div.lightbox div.button.busy div.end { display: none; } div.lightbox div.style { color: #2C200A; margin-top: 10px; padding-bottom: 0; padding-left: 19px; padding-right: 20px; padding-top: 5px; position: relative; } * html div.lightbox div.style { zoom: 1; } *+html div.lightbox div.style { zoom: 1; } div.lightbox div.style-list-top { position: absolute; z-index: 1000; left: 12px; top: 64px; width: 215px; height: 6px; background: url(../images/scrollbar-fade-top.png) } * html div.lightbox div.style-list-top { background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/scrollbar-fade-top.png',sizingMethod='scale'); } div.lightbox div.style-list-bottom { position: absolute; z-index: 1000; left: 12px; top: 430px; width: 215px; height: 6px; background: url(../images/scrollbar-fade-bottom.png) } * html div.lightbox div.style-list-bottom { background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/scrollbar-fade-bottom.png',sizingMethod='scale'); } div.lightbox div.scrollbar { position: absolute; left: 230px; top: 70px; width: 16px; height: 360px; background: url(../images/scrollbar-track.png); display: none; } * html div.lightbox div.scrollbar { background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/scrollbar-track.png',sizingMethod='scale'); } div.lightbox div.scrollbar div.handle { cursor: pointer; height: 77px; width: 16px; background: url(/images/scrollbar-handle.png); } * html div.lightbox div.scrollbar div.handle { background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/scrollbar-handle.png',sizingMethod='scale'); } div.lightbox div.style-list div.style { margin-top: 6px; margin-bottom: 0; padding-top: 3px; padding-bottom: 2px; padding-left: 6px; } div.lightbox div.styles div.style { cursor: pointer; } div.lightbox div.style-information { text-transform: none; position: relative; height: 20px; margin-top: 2px; } div.lightbox div.style-number { color: #756555; float: left; } div.lightbox div.price { float: right; } div.lightbox div.more-styles-wrapper { background: url(../images/gold-80.png); height: 21px; padding-bottom: 7px; padding-left: 19px; padding-top: 2px; } * html div.lightbox div.more-styles-wrapper { background: url(../images/gold-80.gif) !important; } *+html div.lightbox div.more-styles-wrapper { background: url(../images/gold-80.gif) !important; } div.lightbox div.more-styles { background: url(../images/more-styles-button.png) right top no-repeat; color: #524022; cursor: pointer; display: block; font-size: 10px; height: 19px; margin-right: 18px; padding-top: 2px; padding-left: 12px; } * html div.lightbox div.more-styles { background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/more-styles-button.png',sizingMethod='scale'); } div.lightbox div.size { background: repeat-x url(../images/selected-style-background.png); color: #2C200A; padding-bottom: 5px; padding-left: 19px; padding-right: 20px; padding-top: 9px; height: 25px; } div.lightbox div.size select.size-select { text-transform: none; margin-right: 5px; } div.lightbox div.size span.size-info { text-transform: none; } div.lightbox div.product-image-unavailable { position: absolute; top: 245px; left: 0; width: 260px; color: #807465; z-index: 1000; text-align: center; } * html div.lightbox div.size { background: repeat-x url(../images/selected-style-background.gif); } *+html div.lightbox div.size { background: repeat-x url(../images/selected-style-background.gif); } * html div.lightbox div.size select.size-select { visibility: hidden; } div.lightbox div.size a { color: #2C200A; } div.lightbox p.availability { padding-top: 10px; font-weight: bold; margin-bottom: 10px; } div.lightbox p.info { color: #807465; font: 10px/14px Verdana; padding-top: 0; } div.lightbox p.info a { color: #4E432A; } div.lightbox div.size-guide { background: url(../images/box-1-panel-background.png); position: absolute; right: -260px; top: 0; width: 260px; height: 504px; } div.lightbox div.size-guide p { font: 9px/13px Verdana; text-transform: none; margin-bottom: 10px; } div.lightbox div.size-guide table { margin-top: 4px; padding-top: 0; border: 0; border-collapse: collapse; color: #2C200A; font: 9px/13px Verdana; width: 221px; margin-left: 19px; margin-right: 20px; } div.lightbox div.size-guide table th { text-align: center; vertical-align: top; font: 9px/13px Verdana; padding-top: 8px; font-weight: bold; padding-top: 2px; padding-bottom: 2px; } div.lightbox div.size-guide table th span.note { font-weight: normal; } div.lightbox div.size-guide table td { text-align: center; font: 9px/12px Verdana; padding: 0; color: #2C200A; border-top: 1px solid #ACA18D; } div.lightbox div.size-guide table thead tr { background-color: #eeeadf; border-top: 1px solid #fff9f0; border-bottom: 1px solid #fff9f0; margin-bottom: 1px; } div.lightbox div.size-guide table tr.first td { border: none; } /* NUMBER OVERLAYS FOR FASHION SHOWS */ div.number-overlay { position: relative; margin-top: -50px; height: 50px; left: 15px; z-index: 10000; font-size: 11px; color: #000; } /* ZOOMER */ div.zoomer-button { color: #000; cursor: pointer; float: left; font: 10px/9px Verdana; height: 15px; text-align: center; z-index: 100000; } div.zoomer-button div.end { background: url(../images/reset-button-end.png); float: left; height: 18px; width: 9px; } * html div.zoomer-button div.end { background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/reset-button-end.png',sizingMethod='crop'); } div.zoomer-button div.content { background: url(../images/reset-button.png) top left; float: left; height: 15px; padding-left: 9px; padding-top: 3px; } * html div.zoomer-button div.content { background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/reset-button.png',sizingMethod='crop'); } div.zoomer-reset { bottom: 16px; left: 20px; position: absolute; } div.zoomer-back { bottom: 16px; left: 20px; position: absolute; } div.zoomer-360 { position: absolute; bottom: 16px; text-align: center; } div.zoomer-left { background: url(../images/rotate-button-li2.png); height: 18px; width: 30px; border-right: 1px solid #d1d1d1; float: left; } div.zoomer-start { background: url(../images/start-stop.png); height: 15px; padding-left: 7px; padding-right: 7px; padding-top: 3px; border-right: 1px solid #d1d1d1; float: left; } div.zoomer-right { background: url(../images/rotate-button-re2.png); height: 18px; width: 30px; float: left; } div.configuration-info { background: left top repeat-x url(/images/details-hr.gif); } /* SPACERS */ div#branch { position: fixed; left: 20px; font: 14px Verdana; color: #C5B89E; padding: 3px; background: #F2EFE8; border-left: 1px solid #C5B89E; border-bottom: 1px solid #C5B89E; border-right: 1px solid #C5B89E; } * html div#branch { position: absolute; } div.spacer-column { float: left; height: 504px; width: 65px; background: url(../images/spacer-column.gif); cursor: pointer; } /* **** forms **** */ div.form.first-column { height: 473px; background: url(/images/box-1-panel-background.png); position: absolute; left: 236px; top: 0; padding-left: 11px; padding-right: 12px; padding-top: 31px; width: 237px; } div.form.first-column h1 { font-size: 10px; font-weight: normal; margin: 0; height: 20px; color: #2D200D; background: left bottom no-repeat url(/images/details-hr.gif); } div.form.first-column h2 { font-size: 10px; font-weight: bold; margin: 0; margin-bottom:5px; height: 20px; color: #2D200D; background: left bottom no-repeat url(/images/details-hr.gif); } div.form.first-column div.form-row { margin-bottom: 2px; } div.form.first-column p.note { position: absolute; bottom:46px; padding-bottom:8px; width: 237px; background: left bottom no-repeat url(/images/details-hr-bottom.gif); } * html div.form.first-column p.note { bottom: 56px; } *+html div.form.first-column p.note { bottom: 56px; } div.form.second-column h2 { font-size: 10px; font-weight: bold; margin: 0; margin-bottom:5px; height: 20px; color: #2D200D; background: left bottom no-repeat url(/images/details-hr.gif); } div.form.second-column p input[type=checkbox] { margin: 0; margin-top: 3px; margin-bottom: 1px; } * html div.form.second-column p input { height: 18px; } * html div.form.second-column p { margin: 0; } *+html div.form.second-column p input { height: 18px; } *+html div.form.second-column p { margin: 0; } div.form.first-column p.description { height: 60px; } * html div.form.first-column p.description { margin-top: 8px; } * html div.form.first-column h2 { margin-top: -7px; } *+html div.form.first-column p.description { margin-top: 8px; } *+html div.form.first-column h2 { margin-top: -7px; } div.form.second-column { top: 0; height: 373px; background: url(../images/shopper-panel-background.jpg); position: absolute; left: 496px; padding-left: 11px; padding-right: 12px; padding-top: 131px; width: 237px; } div.form.first-column .field { width:220px; } div.form.second-column p.note { color: #807465; position: absolute; width: 237px; bottom:54px; } div.form.second-column p.note a { color: #807465; } * html div.form.second-column p.note { bottom:64px; } *+html div.form.second-column p.note { bottom:64px; } ul.functions.bottom { position: absolute; margin: 0; background: left top no-repeat url(/images/details-hr-bottom.gif); top: 446px; left: 11px; padding-top: 16px; width: 237px; } ul.functions.bottom li { float: right; margin-right: 8px; } div.form.first-column div.button, div.form.second-column div.button { float: right; color: #524022; height: 24px; margin-left: 18px; margin-bottom: 10px; text-align: center; cursor: pointer; } div.form.first-column div.button div.content, div.form.second-column div.button div.content { float: left; padding-top: 4px; height: 20px; padding-left: 20px; background: url(../images/button.png); } div.form.second-column p span { cursor: pointer; } * html div.form.first-column div.button div.content { background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/button.png',sizingMethod='crop'); } * html div.form.second-column div.button div.content { background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/button.png',sizingMethod='crop'); } div.form.first-column div.button div.end, div.form.second-column div.button div.end { float: left; height: 24px; width: 20px; background: url(../images/button-end.png); } * html div.form.first-column div.button div.end { background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/button-end.png',sizingMethod='crop'); } * html div.form.first-column div.button div.content { background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/button.png',sizingMethod='crop'); } * html div.form.second-column div.button div.end { background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/button-end.png',sizingMethod='crop'); } * html div.form.second-column div.button div.content { background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/button.png',sizingMethod='crop'); } /* Safari will ignore all following rules, note the trailing # */ div.menu div.background.homepage { background: url(../images/menu-background.png);# }_*http://www.gucci.com/stylesheets/gucci.cssSTUVOgbplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP VServer]Last-Modified]Cache-Control]Accept-RangesTDate^Content-LengthTEtag\Content-Type_Microsoft-IIS/6.0_Tue, 23 Jan 2007 09:39:38 GMT_+max-age=7200,post-check=3600,pre-check=7200Ubytes_Fri, 28 Dec 2007 09:02:49 GMTT4048_"0291466d23ec71:74ec"12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13`eny} ).=BOc %(DIMaloOGIF89a⚓ZtUǜ7YܵWÊdڳI}c69xXu'ס{&ʅxZ"lXEUR>'k8iFĘ*w]3l“ʫdwۼ|TŹk\C%a({WwxɓYB(zCyƣIN8!yfH%ҳkP9"tK͹bΣ8aڬL6 ٓhIsҺvdK+Ӧ.bN9K|3:ٮDnR%^J7ӃѰeyi`dT9Q;$YDH2E0X͡(~:ŒlݚV?&քѦ=ŅujT5qM˅"ÞDqjV>۠5yfTL5cڻqŸʵr*ԮCr}}`ymsڍ֧ͬ]V>'bI!|sarЅb$ݓӥ4Xf]E(Hڱ9T=#ج=T=&I4e.t0ԕX?&]C,S>&ǩD/ãZm*`E!S<"zɧ]T=$W?(ǻmDp]I\Aп2i#gR;nZ;aG) ˥WV<$ö W?#T=%p-2O7gM$S:$׿k[D(>hM)Y?)V@)G1\B+}iL nWͲWֶlݼc®kP7 ЙnbA zl_s;tL4_J/L2pOҮTT;#,ޢήU֩9٫3]J2HV=&?iQ.pW3vyzxnTf"hg+CN\G0?\> ЫNX@)U@'Z@'U>'U>$ZC)!,G*\pd(P&_G5b$BJ.4~(˃ >L`}65|P@,L&Ϧ;3.wR(TR jIև-Sm t+ӣ4?zLڵfD 0I7pZ R4h500M-k./UرhdPfVA㗫ԕA+\x&D`2 RnK!,LBȒRiM a8a & 6{uk CrZ-ãT@ǞA 3 \ H"{t@ceH9ܩ] xTaePKS&W A(xe$:{pİE c}U%)C 1p" ƘCP 8'Š-h (EWM >zSN 3-dad 8K%pG 2D)!pKAĒ> IĀo/È.La@mtdhŒ5d3/P,@QI 7  NIeD"@6K htD)6|rbdsG0Jj?  &P@тN,|ԁK]ef5o /H] LN6DC WTYx9F(`u^ՂSLH=UUTV\4QC%Qb?<`5(d@*c>-TFN0EX5V/FP8B?T= q P$u AwUEֵN0 '~uShH1/K Y'tv%15=Nb4Ġ! 9eH \M28Egz UNďlQGV@nB@4O4Q}" Ãy޾QrA9EMP b(#nтMS[AWؤPccn֐ jAŴ +-@fe!$"$@)ԠkP(1 "@"MbѿOYha?FSCp.#mZ`p֏2jO{f&ƦQ0~P9cRZN!ۇgU HE.C.h*H1)Eb0;$9 .(G {[,M ڕ(4rhc \1" AР@J\wG"LWfJ2h+vĊZ@M)Y1A((SPr< ?tedE%}DF4W1* {Ȁ?0:Ok|mV!-j>t`Y]MSҋHXQ0jBpvXܒΨ1.iJ-"U+i |#z1 =O?^@/TR 7f`@`6ϬPLaCK'F6oY( PA"х (*T"ylg{|@ &+H܎FPD{+U% #Ă׸ ` y ?9,A'4YC8"VVy ݍH^A$VAԷU[h,".m "6+ zpC+ 2#Dl>6! @lb%?R"H Ew 7 l[!Ep WH"Dȡm <4xlslby+Cp<\1E#@)@V\Z,T:7K_+( D$i!?P4L_qW-r;Wr&n^ ւ+DAԪ:ЙOE[\ ,P#Lp-]\9,tmb n PBA]5wb0JC\" D~w!QiM@* {=ƶŗe8A;oPxWQ|B ph, eJ"ц$,X >`'7y !GvAm )x PS @=9 3p3{P!# Π244I ~s P HJkeeRDp/[;?P'P !RSrE2pưpR3r-g0Y 4 C$.pgCa4'  +o4lfx[#p LAP)@|0lPp' XC}` 0р .'eeD 2'0` '0#`m ]Oք^b[c p0@ %6?Pa8aG6]Æ<" # !+PDp p>p9⌎E뀅V 0 /0>UCE7u P`pp8 Pb0VŒwp~U uTa5` bp3gP O $z[>0w  >FJ>01*O@7<4+Q w, Tp%_Fi8 bP?4\!|S0 @<@ׇRId!pT T0TSny)阕I"VbRF/1p9?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP VServer]Last-Modified]Accept-RangesZConnectionTDate^Content-LengthTEtag\Content-Type_Microsoft-IIS/6.0_Wed, 31 Oct 2007 21:53:13 GMTUbytesZkeep-alive_Fri, 28 Dec 2007 09:06:41 GMTT3118_"80ea236f81cc81:74ec"12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13 !#%,:HSXgly',/KPThlvO .JFIFddEDucky20189883_AGE2G_9100_ 001Adobed         #"""#''''''''''     !! !!''''''''''"!1AQq"2aBR3brU#$E!1AQq ?TSQNE:(TSQNE:(tSQNE:(TSQNE:(TSNE:(TSQNE:(TSQNE:(TS]4i$`16 I&)R,!njnĀHbvH6Ow F82E#/Yܶ8=Vzh75DAu=FۏTiT1QD1ayS0T2J0;shx/"Ù𻛳FI]{Z6X{j tP*)@EڋP+QjvjmQdDgAd,7ަDփ[|ÅqjcP~Aͩ#x-N-4 &,i9iֻ q>SZQjԭ@EQjmEuj(:( 9&φG!{@mozsec4R4m1<`-&āu+$ɪy%4BFcoq\D8 J!G~זY!*8Xa42F27bn;ilϐ6?\gaT”K n^2:U¨>6QxՍij1<_b ʹ\(328RU7*uq??;ʛ rR/ *#@Eu}#ea{Ҷ9O5^c2bkT 2 hȊ5fN7;kT>ڨ_ ٠´pOR<65OvVKHCm>k fbgc@'XƝ aA2BX ]/am+LS.^@[4ҦsH\@5r55J1Ĕ<8U!'N*X9Rmޫwլ;Dň[ytԴOTSv.9ɐ(y")nc}Op_˜G5:M, $jl~T"!cTm.mҫe&N.LC/ Ee`Zyx>q+uH&dcJC-jc_<O{AcԚ'R~Ǐ@59=}tTD;K129еjnkn?;Wԫd0C s|+0P#H:-X㘬khEx:q/5wH 7FV 8A*b][M5MfGppT-]b;vO-TW̖x20ݡ%o{@6^kM#m7"a7^GuQmvTMj+QZՑ4|vVYMER'Qƶ+>ŢLdR vI|FLƖqfJ>Ҩ]|k7#9B`D(@pY }Y՜qy\#ZrdK3)6tb( Ӻy͆mz~$ 85[$ qsiW uR ka'+!{dRol߱iEOԼHelng mĦl$ NFF}Ğ~&ۂEy=7WrLls&ndp,nx $XgyEfjo+6Ѕc \a{n4J o};Io^/K K YJh_^UTO}Dk%Ӈusa1)?ոRp朦=S"xrvh]~w<2s$QdadD`bC/Ŭ Q[\0R\9$iEU{.uֱ`鱔3}$wUڨ~?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP VServer]Last-Modified]Accept-RangesZConnectionTDate^Content-LengthTEtag\Content-Type_Microsoft-IIS/6.0_Wed, 31 Oct 2007 21:53:07 GMTUbytesZkeep-alive_Fri, 28 Dec 2007 09:06:42 GMTT3091_"8063906b81cc81:74ec"12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13 !#%,:HSXgly',/KPThlvO JFIFddEDucky20189881_FHQ8V_9026_ 001Adobed         #"""#''''''''''     !! !!''''''''''"  !1AQaq"2Bbr#TR3$DCSstU!Q ?#B8@P#B8@P#B8@P#B8@P#8@P#]l*MQOTS-?'9B8@P#B8@P r 1]+~' k/;m9>فc̙j 7&E? .k@T8/*ح5َ`7&_V)0:Qz߃Q5_l3<B8@P! @X#0 09ăxT2+tk 6l4 Y9ǃPZH;87r'cZ# ?l,F)#r jWi>o[Vb%ʀ@!} k|0}@ĕ鲵u s?pAx@q !qcu-ХG3_u2j Km ^edn[j65Fs[0\xMN`-pOVX` .fn6F\eJZ1Tglrj04tݍؾHX\U64mb[jn F.dL~>uݨv Is4# 38l8ȶRf k+֣ǧ0fYݻmngğ&e6RnbyUνkNp6*38OٖNiW`I9DNյ+ N^Rwma].Be' ,Bgv]}znRU_– ň9)eб,za$9XU~@[n @ zG$C',wtVw'agb>%N16v-sZpޘk6<&pUzT< EBKlWI-U~',&npuR:OCbN:#8{gjFҦ+dR!,J6ɢn5ńVCxjl֯#×RMhv)dE X^HKIh}a:kVQرtBnq27X k \ M= [55UW <I vuX\u[:v-Wκk:E[s]NRJvGVVqwҵ5U8\c45W2 u s"O~w5mJ:0n+ÑaL]%M}k$ 23:\Ws}ڿRk`r=\!Vm@G9sWh]F?_1<<((TcWp1ddj@qwoZz@ˁAjsٱR9D|>qޣYE5R ʨ C`e=)} J\* qH-v-cYjVz[Q ͪuﲴPB;08εujc6fK<b5#q?-tHrPFl>/ ;7%A195fǦs]?F8|_p}[q9 'ǀ<9`?:6:mc5v#2[Xq>u=c?v;ϙ'N/PȮEW2Y_׏$zToGMJW bvś:ɱmw+ MD Qgq0}K?e:pwOzfzrQ2 lB8J)b(?Kv>i& g_rФ{M8@~WhYGh``jU#~Wz(=JPE7jί f`Im?8.v3՚Z?Vtw{o`H@^<*ש?E~!'8@P!!!!!!!!!_Vhttp://images.gucci.com/images/categories/200710/thumb/189881_FHQ8V_9026_001_thumb.jpgabc[Onbplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP VServer]Last-Modified]Accept-RangesZConnectionTDate^Content-LengthTEtag\Content-Type_Microsoft-IIS/6.0_Wed, 31 Oct 2007 21:53:01 GMTUbytesZkeep-alive_Fri, 28 Dec 2007 09:06:43 GMTT4171_"80dcfc6781cc81:74ec"12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13 !#%,:HSXgly',/KPThlvOKJFIFddEDucky20189881_EEA3G_6805_ 001Adobed         #"""#''''''''''     !! !!''''''''''"!1A"Qaq2#BRbr3S$%EU&!1AQa ?TSQNE:(TSQNE:(TSNE:(TSQNE:(TSQNE:(TSQ^6'LʣLtR:zŽ>mM1Q# m)S(}XK؃:)U tP*)@E tP*)k{H3j "XݗSj}βY+ӔWKU%/z啤yh&.ϥ͢Z5:I֑4Q+'Ryɕ ]UBFZ[r6_Ƭ}Ǘ_AޙPB˸=Mj7(4f;&w5ya[nY|zU4և 1.X\/,\<)|xF<Yj:ubFa>2"lI}"`.5Ԫl%l\i$)vVR.h}zIDxJf*aVY7 {en:31DŽ(Xn -{M92$cA}:~aV<췎з y)mE?FG*2>X.Dk.h,^&Yg<ĕl-76N\Xq26)H٤J{EVXУcVqh]6hcɎe\rfh{%WQ}+d4nnBmo673Y0RuĊ)rUE4#[sr/[9;'ʛQFltuY]jWF#@l[i.o>IȘKNdž́\E/U]y \:\aXx\Sr&fbM ׹G$9r7գ9Kd1lђc/śy RمW1|OO"̬C}'od /+`Ə<<0Fw::T>O1/e1i|V(|<)r84uU;nt`xks~#YN48d/,cn5: Qg$s8͉3/a,$Π֎_7Tɓ8Aee6ΠDy#%$:[R/(!9ϳF0c(ݑ#r՚IF^<ڲz$ 5s؉Lp!2X`tjcv f3 >K1`o[V? E{)H&GY'2#kHt\;2l7.I/DiX-X[V,VMM,BAMm㭟''L622d.2{ 1 B A;J,>Eyl`DSE}.6| =Avϲ5`eLL9:ק_=aiEwr)!e)*+RLn9'T5ݙ}Wڟ*EL]=gy=D[Td vy?sȾUk*q٧ʼfd*AV_g'N.A=?0~VZ*d]/i)qNQW! ) -"S EE( (( (( (( ((?_Vhttp://images.gucci.com/images/categories/200710/thumb/189881_EEA3G_6805_001_thumb.jpgefg[Onbplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP VServer]Last-Modified]Accept-RangesZConnectionTDate^Content-LengthTEtag\Content-Type_Microsoft-IIS/6.0_Wed, 31 Oct 2007 21:53:23 GMTUbytesZkeep-alive_Fri, 28 Dec 2007 09:06:47 GMTT3286_"80cb197581cc81:74ec"12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13 !#%,:HSXgly',/KPThlvO JFIFddEDucky20189883_E5V0G_3020_ 001Adobed         #"""#''''''''''     !! !!''''''''''"  !1Aq"Qa2R#BrUb3cs$4EA1! ?E tP*)@E tP*)@E tP*)@E tP*)@EtP*)@E t tP*)@EtP*)@E^clkΌxoIU@7`KzFnVaCI'a 4֭p]a*Kv0 ?`o($ DO~A2Y89Q]~Z~]G*BUT٬]OĿEu5[u6չmdҷ8ʈj qCȢm-k1+[X[TE tP;Qjv ZڃV&ӝ`5RWW7y鼐 vHIGTE~;FNo7ț f~Jb=2/&u+%G2"O ՘#;`M:? PW婃$cuW)$ab  Wi?7ƐdB)!TGefT$<K@isp2bcu?MI'ǵ ޝZVVڊP;QjtP+TUglxɟZMAbuɵÛ Y_4}Dʩs7x%%PrB"qȐ6DH} !U[-eˊId>Թ&m`;*7$ n$Z(f4*(BeX_mJÏ $9^>TzHcBц+n l;魥SQ>> ]]| >Aj:Wϊ6U$Tr:.׷yqTimA+Z* gmlJ6S{ 0O` w{Q{5+T4fSŒ)Z'"̜ u1cdJXT`ǐ5gTnaS{xr5_mػDXۻ.9#- gmU V0DI<,):8UZtP:)e=a&~D&X9LJ{#ypU r1HdEFUUc}H #} m{vy][Ht#.;j45YVO3I":"`.yPpLѱ6q"[MRmy'C} [h7c8i֋=v CgnH5iW)e]( v7O˛HRy9DA!nET$qE+ ,|- >:wQvp)G@ M74؋&V +)"2L,zg[aEHeIY%֧]OS8-Ԧ>\wQv x8ҮDN3(P8_jCt wDFdYPZOMu6Nט'[q7s!Mes2._ 0;*sDn>H=M\}`e88Pe,X"Ou [n6]5|.NT[ DWZ^ݣ]+ {Zh#>^LcpԿ`n*ŗSTSzt;6ÛҪhdz2f@ȮW%ʼnWW^aoKgG($V?5ʍjQ+od7!*F! byjǎX1x\(oG_$!nVThxJnBo XrKfDbІxe2m5#%5J^EWrU!k=(dՎHtXJs3rڲaI" ޣH|>Lx^^B A#!P(OXVg޷ľ:vfEN׼M\*է6Ƕ@GK-T 6:߉&&RـcS7u',o;hU˕ѕ, ~F+dяx!$7y#OQƄؓ)"փI` ux{3oXR\#.<^5&BʽEE[7a$+q't_,ħ~?Kr tI{V+UXLZ6]鼙 qHyk*}{foʝ7/HL{V)R{jO1'SXchTO>'ܧ䎒)tPsߑG6'ܧ^J*n8q D^ zTSEQ@QEQ@QEQ@QEQ@QE_Vhttp://images.gucci.com/images/categories/200710/thumb/189883_E5V0G_3020_001_thumb.jpgijk[Onbplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP VServer]Last-Modified]Accept-RangesZConnectionTDate^Content-LengthTEtag\Content-Type_Microsoft-IIS/6.0_Wed, 31 Oct 2007 21:53:17 GMTUbytesZkeep-alive_Fri, 28 Dec 2007 09:06:43 GMTT3659_"8044867181cc81:74ec"12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13 !#%,:HSXgly',/KPThlvOKJFIFdd%Ducky2 39340Adobed         #"""#''''''''''     !! !!''''''''''" !1AQ"aq2B#RbTr3UC$DE1!AQq" ?E tP*)@E tP*)@E tP*)@E tP*)@EtP*)@E tP*)@E tP:)@EXON'"Nj_JaWUcX/t‘q9v4q*jo_^ks"Z6( [@U(p }vl*}٥UD6o뭋E01eŐٜ( z~h+H&W4r$@,pO'=yBעVꞟ6}+mƼE*쮖QNE:(vE;VLٳ?RQfrHZPTb='2%r,^L|*?9X]֪ 3tΛ#Lp0NLJe]?vnOA)j-Z8͙:bnN) r9.l߀P+Qjj-AWQ@EAy89;ŖH$I Q1BUYlHƸRl1B ^Ng*r 9bH鍑,R}Bo~=ddd T)$7##g:ܵQ~scl!QErdL'JE$N^/ve:q#p N8nlŖú ~5rg(DQ0"Ή[K{)Tjk-,ׯْ-&դL%!dS17$`&)u4M HKh֧eq\AmCb-#6&gI%L{Up.,{9Srs]dlYHI]!Cչ}5$;F9i סoUv{OŽ=Ly ɆI"ą;/ez Kykm\<"C`}j+Wnsv1M [jt#5@E:(y1,of@t:X-u#_]f1tטqs$22C3$?u}$PQ+3$T9WQvʳ7:+NƆ| ),S[1b(H`Bo"O'$F M;~'e4# 㳬Ue&jYb$3$JhHCl$ /3Y."A)KdYDCkh@[Ane9dm;3rk:KjĊL2BK<&a}`UffXS3*?v_<412GEbzW}bcdٱ7Z'$$p ei::\TY3ͧ+Xe?i^f|{ ;}ptYtByڭnM_ndGWmhph+*s]LoQ[våϭ@Kj{nD4@e1lܻk96HXzn~Χ᛺>g1dPF}f1YÈqp8_UCiRFELCǷǏUj6FڹP\N(om,I6Vm|P@4ԣJ/ؾRn7 R9CO[OX NH\O+C^|/)<ũɸ1M1Ry򸑆O-Jk^ t<@`5 &t_bj[! >Zf)n{ϝ$4[?IK#_e@s結g/(PJ$ ۻq:ʫgڣW"ngSwGt~Yța@vIQAX*UfUUQa^TSEQ@QEQ@QEQ@QEQ@QE_Vhttp://images.gucci.com/images/categories/200710/thumb/189883_BCC6G_1000_001_thumb.jpgmno[Ombplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP VServer]Last-Modified]Accept-RangesZConnectionTDate^Content-LengthTEtag\Content-Type_Microsoft-IIS/6.0_Wed, 31 Oct 2007 21:53:04 GMTUbytesZkeep-alive_Fri, 28 Dec 2007 09:06:43 GMTT3767_"0a0c66981cc81:74ec"12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13 !#%,:HSXgly&+.JOSgluOJFIFddEDucky20191881_FHQ8W_1000_ 001Adobed         #"""#''''''''''     !! !!''''''''''"!1AQ"aq2BR#3br$EUCc ?TSQNE:(TSQNE:(TSNE:(TSQNE:(TSQNE:(TSQ^yb2,P.vUD$=|t167L<@U8㣗mʊԝk,ߋ4GUg6s6hVeBtP*)@EtP*)@Z[smFv3b2)YADfzƕm.vLj|mDž>4G*(UUE |e3yO$o,a3z4 'WatP{gLU6ȿg}RGuuʬ|ۆ{<Xٱ5h' 3p3&4G|FǗ} B~ yǨWBTSQNE:(;Qjj-^9ٸn$҈q]rnl=KrOpMP7zd+.D⬆Bth("[:-#z3sXs"GP7iaS^:w26ܲr_ɜc*]CDU6"L0!TݏKYg (HU%E/S;A3 -:#4ڼ<%ǘjdhSڬ4YY8%Ii>&^/2d BnH3=<F aӐkھ~q!d)wtvVa,pu1vUշaLf6#~A-EQd ̓+$L~~<(Vi讴N'^`d/fFY5idu pPZmE+Qj mEej(:#R0D^,lC32\]/NLXZ˱fF/n/5^Qc5ȢZ _ nNyNj޳4ErZr {Wܓ~*ٍa& u,uusc{?i'ɷ9M.k ePf@/acxN:`6o}I¶ut̘HK6 9 TV홮̒*Z{?hMdr6V4lA׫zܺmS&Bؘ!+t{MBI_h ;(Wi#WElo|C Hf-I'[2+**Ċy2k12|(.H^6Q,$|oG+ιڟʍr0g:_2dPf}j}㙗>2JÍR!tW2MNWK/WSG,YzY'2L&NOHGMRopEW}7 m ڬGT=w/MiɤDH:K[šG/U痗8[F7IUi-ss 0b}%UǞ64Z ~ө$eISs2+DZVFbJb luM 9Ų1^wNU˗C+.K W}K z]z e4FUȞ=pCLyR$8ԼJX7D,Gg[6`7 c^V!JXsk[m<8j(q8+ɐB)ugK28Abʶ-an>ʃr3Ltllqoݩj-t|LX2.EuYo'aޤ ްI[51QC \4|HqG^/Wmg:Bv!`xW"AJHWÏ!pB,T==ym駛΅io6;ϦK_k[mXeH.}mיۜ6*Ubۄkq~W]ـ7??lB4,myiXx<^x8LV>c( -_n&,I/eIeCw\0^fc1 -7㓴6r'ai# MIՓsjUqs8Xj_gq|y!m2B}Wϓ9}AYdOQYZޠi͏re;̎AW+p{ |#0B@]~ւ/{;+u;/Ar2BB)efK {k3hpׁ DUN&1$5X>L Zy#kX׃M;p~"TL5X[{=Fe4XhQWk$&5`v~T 2?T[>r=♒+)G|CzuT1\7 >Noecȧ)I EGH=R< $'R9nY'eXqQ*2*YY5\pyv'Y,W0, Q'560(?蠈OKtCLAzG=ݯ ;ڱ cXbbSrzb-!K[CLQ(TSEQ@QEQ@QEQ@QEQ@QE_Vhttp://images.gucci.com/images/categories/200710/thumb/189881_FHQ8V_1000_001_thumb.jpgqrs[Olbplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP VServer]Last-Modified]Accept-RangesZConnectionTDate^Content-LengthTEtag\Content-Type_Microsoft-IIS/6.0_Wed, 31 Oct 2007 21:53:48 GMTUbytesZkeep-alive_Fri, 28 Dec 2007 09:06:45 GMTT1807_"07e08481cc81:74ec"12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13 !#%,:HSXgly%*-INRfltOJFIFddEDucky20189886_AC41G_9703_ 001Adobed         #"""#''''''''''     !! !!''''''''''" !1AQq"a2BrTRb#S$D!1A ?H@@@@A@@@@@@@@@A@@@@@```.X,L,L  0P@L 00P@L&@O;TQe5S~Ȭ4 -o䓌umN1V}sgPDWl?-Gq#l5eZ\?uӏ5\_tUl8NgߎY&`i>VjjQqizpQjO&KAD\ ``۫SJUG\_zOH`9HK䬜lQ+'Wş\ҶfU^d_k^WG?i7yb:K}L'dlEt^|缗?Eʹdbӏ9ZofFG(KKIy3 ŧr1MN_**uޗ|J]SX#.7՜(_i{4ϼũxu^άge?NGsMOvf'ůKane8*uT$^͚M^?{C[i*hbop]_NWd+^b13QxLI|QVuŔ>VyvN.9NXϏ'N-liמcaBcJ3Pdux8Mk6a5KѵZT򤲟q 0i`p0P}r&^N'{ݍ6rxwOlYg.O˯.Qr-XGm+jK*\S^-3Z܄F U_^{~t޺xxcrڥJv 0j%>imW8/urYcuNƭQl8}  7 S}e.XZܥbr)Pd=S bR)?>&r?_'8NK)wG^lu4vꍶ8(&b1춹X.]+آe ׹nq{S'Ѽoj٧{0v<-h$hr}B˛BI|Q_Ij5\Ԍ׮ iPPBa1폨* ԇj^@@@_Vhttp://images.gucci.com/images/categories/200710/thumb/189886_AC41G_9703_001_thumb.jpguvw[Onbplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP VServer]Last-Modified]Accept-RangesZConnectionTDate^Content-LengthTEtag\Content-Type_Microsoft-IIS/6.0_Wed, 31 Oct 2007 21:53:51 GMTUbytesZkeep-alive_Fri, 28 Dec 2007 09:06:48 GMTT1990_"8041ca8581cc81:74ec"12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13 !#%,:HSXgly',/KPThlvOJFIFddEDucky20189886_EEA3G_6805_ 001Adobed         #"""#''''''''''     !! !!''''''''''"~ !1"AQa2Rqb#Bc$!1Q ?H@@@@A@@@@@@@@@A@@@@@p8. 1p82`X,. (`0 (`00P(`A@ʑc3<ݗn;[VܳWeNa8̱MD{_KZNzt{QGh@SGGϊIdܮשZ!bf] |)_=kWjyqi2faszx , u{֋hF,Yu 65IW5W[ruq}$KsTT_/L3j<3+yߙo}SEwN&+\DG\:%Z͉VOX.hVu">Ț_E( 0k.9,4rV#}t?Dxɢ }9*mmU6%+^1y~v;66/at=:6UhYD[ ,+q?ܕ V=;[5UTͱbg>wmնOU+-OO%VlD'Ε뫬>_OLD=KEٮ6k{6FU=ܮ!]ҲEjLcVf՘\Cry m~v6)6qϡ0_,JC{M5^1 2 1GSn L},|U?ŭ >Yg_d\;;JxX]&:,ϼ_UŦdN eC(9_4/m;謋uk[N 4.zzM0 jlNBnYms]p?8xIvnS]_wgZ2ǿmE K[ Zf>'v3fpkخF}+ilRtUW5E.K󟵳LItGVʴd5gwYnLGS?Unk UҼ+p6DN:NyLχIsSsS5Y۵ecrc?,ntܰףYm0.C4+Y垞ep}O\Cgw~ݧؙh-1>+ij/}R4|g9cx(4`A@b Ug >` =: |1࿆>1'13c}( (_Vhttp://images.gucci.com/images/categories/200710/thumb/189886_EEA3G_6805_001_thumb.jpgyz{[Oobplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP VServer]Last-Modified]Accept-RangesZConnectionTDate^Content-LengthTEtag\Content-Type_Microsoft-IIS/6.0_Mon, 22 Oct 2007 18:58:31 GMTUbytesZkeep-alive_Fri, 28 Dec 2007 09:06:44 GMTT5347_"80e5a989dd14c81:74ec"12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13 !#%,:HSXgly(-0LQUilwOJFIFddEDuckyA0189885_1C4IG_9703_ 001Adobed      !1A"Q2aqB#3R$bS%EU!1AQaq"2B ?:MƁ@4_Ɓ@u:MƁ@uzM-@ P-@ P-@ P-@mjZjZjZjohu4 P-@N{!(||&P(9|q4K}^R@9H}Jˑ =|sMgu P‹j<r P( s\~iSX۹2vRXҴRO ̿\MˣWV ASAJ0˕ Fy`,lT h>w9=퉴ئNZI&e)`?8N\r㳧8},@#> A>NWrI0ػ@[0@P@{6 `9X1X\carMc=k|N4מZ`x [6L+&.% 5\5[?kfn4vXIF9X}ȿ6#yw=2p3SvٮQڭ[Jx])+L̨bl._tiي^=K%ݞhʺlV3gJ7'ť@ $QxGj֦ҾF<3/A/r2[e+o€GZǚd6Th\qǐsa}k1}Ï2W)2v)gPQX;U (_er9.1F*n"LIpp:Vwbe)WnwM/q,aˋ?912b ~I>_SKEu#ex[bݱXg3 VDn}L@;VwIyk]rՙ]ebv`8"aC.{dJ8v8n!œJ<'XCIλ\mf (d1O'wy2?utW6lw-|¸mTUJȨK~T8u.Eo€GS@d݂Ǡu$q|:`kF!wFïJk;7{?ڢƚ(v %1G豷źZu1坦Ol~I/:;X~!7ӏmofٲzIGUj3rlѻ4Hl}F75iM|$2AM"Ʌ$aVO3o^dmj5m~r㬹3yd*]cԱ\.ks'qvŘͰĀ2rY]Aϋ6N"eQ';tM.>rosG8Ɇ I;F3!gOKkur3UXc`S`qbvF֑.oI]2=s8 Rn7U[Kڴ+o‚uZTa&&Q)dĠ(O_]\s"ډmҗ>7]k[vlxۼL~D骇*9;cB5,_t_זo+s;yum.F8bX3H_6*l87 I`wN-\7ڷ}ˏ=flD9r,2F$#J]4f'5Qc>VVt h6 |\[?Hba<4_vYJd$er 5t_ߚ0kkpv~kIcRu SFa~W?fi&u+t5 .W3#ӌqJvsč6 UMDɉ"p AåON~ҹ6)bXp]ennvB;?5Y2Ɇ+=R1Wbħ+tQov 8s<=vll,}7 ~OfE>Rx9ۻm^M>ILsu-9bG/k$y߳tdrEfn 717"gI?||3;LaX6}kǟcDDS]$ p}], y 8Ǔ6^>>&TY׌.#֯ԩbOy"'/Vy>6^AN"eO_o-! 4W-%@V+V[~#>wgË̶I1[q56,C힖PMΤB>QpPG[ܩ[Ѫgr%dX5Y\)6#_O yV1dkg.40!w!s2@Az̸jc,yƣ pȸ^px<0GZY9/꧒DC|3`܆*my[sAÍ=ҺŜ lA=|*.cA}S*I}_7K:§KX"`dN\{ʽXۉ04Xc#"Jmq$mڳZ<\='  _RyHtY+-tX 㿹Wf`CJYBh\Nh3#h=!`o4oⱯM RSKr`Mt&,'S3fKF@'&<-~aYe:eʬ$ 0au._>ְ0h1/X.zWGUPhkq[t^fh"kR)GCrzt L&,}TX=dlI4N'ꞟ#3\ b(d{%p +7/N]֛a6_4yu沪I*ٺX ?}:1ˑ&I|.*1>PoN;E>򻋷g@'eF+&NdI0MITIHa'gȇ :13{93@t;y G@Ff6CVkilvX$d4U[<I#\kqmmPT ZU[> y00?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP VServer]Last-Modified]Accept-RangesZConnectionTDate^Content-LengthTEtag\Content-Type_Microsoft-IIS/6.0_Wed, 31 Oct 2007 21:53:43 GMTUbytesZkeep-alive_Fri, 28 Dec 2007 09:06:45 GMTT4024_"808d58181cc81:74ec"12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13 !#%,:HSXgly&+.JOSgluOJFIFdd)Ducky2Wing 014Adobed         #"""#''''''''''     !! !!''''''''''" !1A"Qa2qR#Bbr3CE񂢲cDUQ!1Aaq2 ?TSQNE:(TSQNE:(TSNE:(TiQ]bvɝZyaCt,Q1s/qG!gOĕ0(,7U;Gߋrtcr{^O;л$ x8q&;6: tP*)@E tP*F\SYUK/!`9rd1-k>7kHuS=wGc? cpt5tn7xQh1"H";cP~@xla!ͅvjhd&ȧ}x9hc;rX,Sǩq7TuDɇܸ&0OP:n1"T tP*)@E tP*Οˆ;g ̵F¬9zȟf]Yc[Gi܇7B5*Oz`Ph쨷fn&T=gULET*)AU(e'9lu- ;>*U9 y6L|r%,_P ҦL!2F:V<'&TXgGh a/񩙜rHNTSQNj-NZZSha©}h0CY9,-ƉDn>v0lY䌑 a9R3}ej-U,wnN/O9=U_™TnFWOjjVՕ6Z Ys`%>87cAFHV&y"rO; Owef3. [ǡq0GoM{y6mMrvmMǭl %33ikicis gkq<^_I$ f nňK&;qȮbOdu^*-!:VK2FqhefV𽤻k #ʸLumwq#0Ն?^A«,LIk="Lee r(I҃pqFJZ':-5$tc'%na4ved+ֽˏ?%[v@+$Kb#K_us3x}|DͲ6We&i;w~+>>W6}Toj|v_dڽN mEej(:4Å2rW~GI1eTkhXZgɒhd o`_m[{9XI?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP VServer]Last-Modified]Accept-RangesZConnectionTDate^Content-LengthTEtag\Content-Type_Microsoft-IIS/6.0_Wed, 31 Oct 2007 21:48:30 GMTUbytesZkeep-alive_Fri, 28 Dec 2007 09:06:48 GMTT2967_"08b75c671cc81:74ec"12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13 !#%,:HSXgly&+.JOSgluO JFIFddEDucky20115867_FHQBG_1002_ 001Adobed         #"""#''''''''''     !! !!''''''''''" !1AQ"aq2BRrb#3SCs4EUa ?HMBЁ!4 HMBЁ!4 HMBЁ!4 HMBЁ!4 HMBЁ!4 HMBЁ!4 HMBЁ4 HMfqZA!k`ܩU^ ,ִzIPMާw U{ qMmXDܼiq--]40Q4 6mٖ3Ld~m>_Ӂ&jӻD,*{2HZad~ήu^cjGßKq+]7GWin1`9kZ 26#pHXݾKnTpFƻ&v۬In{O4Q:1 !ӔDʝu٤`_I װ[SRAF_~"O88w@ڡ4 HMBa<#Hh.qOO ~QG+lܞm,a; R[-:#i٨%sܵ0c}nGYNְ# #)0 rEѺ)#xØ#d:rN<16^ΒIP?7NMEV{o4'~9(&Ar6I^,2Ncs\=`\~ԓ/+>UFq> p]V !0YbuaI+cZ2JQIy<hbD1v{WSIOkÀN -v1#ظV8zI ̌=,GqTv^.~_N%lڧ͛=ʹӛ"&Ft!e )E_OjLc?ΑC`c~0v!s8rW2;ב-3s*G#vy͓oV;/yˆM#cklNF}Z[_72G24a $<(:NO.!}ŦH>(0B/{ಔu62&i7%o#j޽z>n<8p11kIΖyN6Wy\N#$ :K v^vJQٍdg޼;8~]q g8GƵD'87(d"8{wh$ΐvph?'iXZAvQa7Da9ˣs}`;7R:Osqۆ![*E5115$><ɬt`NH66S 8rs eYm=Q3C]~UݺaaVo|n~ ^2ٚV1+95՜gzTU학N^\X (q,8à yv85[:g_fgF\yfHoM ЁUaANޤݘRz[u#-qikY<:8ǖzւRI=x΢ޭkׂxd*(>=ƗDxygֳLdGU ;ͤVȘBJy2l8xw?(YùdKFqeR<'DpJBX4Bւ6yOsgdP,#c bneYy{W" @,{;daE]Z6N*Z$ #-•8B@]קbO KBa<6bas;VO %fHZI^oa;8H#{OEh֫0v#gԌohB"!UD?o#!}`+1ЏP_cu.lOe@cS٫V#q<ұE=VUGYQ58|q I@w/vޝن-@-dMyuϵj|'<+ˀn3RBRXuX0;2?h%Hiag!x3*wc}Kj[}J}Kr_S=3TrvgԷAoHym5%RgOl1eVgV1mo6د2N&7ԮFBЁ@!@!@!@!@!@!@!@!A_Vhttp://images.gucci.com/images/categories/200710/thumb/115867_FHQBG_1002_001_thumb.jpg[Ombplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP VServer]Last-Modified]Accept-RangesZConnectionTDate^Content-LengthTEtag\Content-Type_Microsoft-IIS/6.0_Wed, 31 Oct 2007 21:53:46 GMTUbytesZkeep-alive_Fri, 28 Dec 2007 09:06:51 GMTT3644_"051cf8281cc81:74ec"12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13 !#%,:HSXgly&+.JOSgluO<JFIFddEDucky20189885_FHQ8V_1000_ 001Adobed         #"""#''''''''''     !! !!''''''''''"!1AQ"aq2BR#rbC3S4EU ?TSQNE:(TSQNE:(TSNE:(TUm.ύG{u`c3l8_!ͼ+vvwa;a(HAڊ?[d"fV~'>>dIF-o=ˣ7jbwt阋\($Zz|z H"FxT tP*)@E tP*\8A>?mxGoF=L~5ZGl۹{r`n@H}v!TxS-\m2WiRϣtcEeyI݉fNK>Zn|.!sFY\);\$ޮOan*/C3j/I&6vt5^դ EoS+'n|9~l\b~VR!04r==J+Ϳ)q"Ȗ 1e`Dҋ]ivߵ6щ.Ff$GG2wdCņ9$͘ch5 V%^Ke5 _UXU{|R7CkS!ٛ.㫦5\q5ojnF >Zd[yjCoeJQNZtP:)A~wl48MeđDL4\'"1w+~ {V؆.H3-ɦ$?8k(1ث31dO}?L}@αҙ \Dehv!VV'[qT{y^yb= n,AI$ *rD//\ (Nck9xL4:QYmVY[NָJ9os`9x#<83.4'r,s48hf/XWŇM>> e"Ȱ_I<@ 1.F֩3q9:%.8QJtP;QjjT;w7%80k{ ֫"R$oWY/$vyUI@^B0k!{mQ.P8\荁Ws iA4LH@]@xԉS-:pƠOdc12!\<e;(F -qC~n[xy%z) L:Xy㓘QQYy xx(cTddzE#Gn:|=VSOH Y"(<xPbiV_%Ǝ@-o*$0gư.OZK~$>^5kzW}`Ե C#ܕ~(f5ӤPfΑ .l|B0kXLӗ&anidEH`x4&>"N1׆TV+ 2Y[ I22\,Q$g&!2oX܏NI#U[ƃv^vَx.fiz,8Sj)@Eo EV۰ƌV3-a@}SnkW=y_=ۇَ_{gRwE'G'KP u.ӊI>ʻg7 Sr @E(((((((((_Vhttp://images.gucci.com/images/categories/200710/thumb/189885_FHQ8V_1000_001_thumb.jpg[Onbplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP VServer]Last-Modified]Accept-RangesZConnectionTDate^Content-LengthTEtag\Content-Type_Microsoft-IIS/6.0_Wed, 28 Nov 2007 20:05:29 GMTUbytesZkeep-alive_Fri, 28 Dec 2007 09:06:47 GMTT1370_"80cadc5fa31c81:74ec"12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13 !#%,:HSXgly',/KPThlvOZJFIFddDucky2Adobed         #"""#''''''''''     !! !!''''''''''"|!1AQ"qa2RBr!AQq" ?H@@@@A@@@@@@@@@A@@@@@ A`0 Xe c @($ AP     @t])OUʳiN8jq< ;|7WVeÚ Z\Rp qF/ -*+ufՕz2tQ//l߽V|{}i~g#rG&ԭjOuqdɋ{o"x<:m[Ukڸ,{8ݛJw1ʏlZ)|uUWiw̫\ - [_5`Ѩ箾)GL2c ܪTIF> jWq4_g ýSG_gOu?ٓ"pgֵj6Z F;3jeإ2͎7굝IW=n> K۷,et{'bҥϵ\;<k>>l4;ֵ+WTʞ;pquåO_Ku1qǖ*cuwv8l˧4X;<ئ'U}6pӹv\tod{3.\xo+f#l?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP VServer]Last-Modified]Accept-RangesZConnectionTDate^Content-LengthTEtag\Content-Type_Microsoft-IIS/6.0_Wed, 28 Nov 2007 21:14:15 GMTUbytesZkeep-alive_Fri, 28 Dec 2007 09:06:47 GMTT2424_"806d26a1332c81:74ec"12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13 !#%,:HSXgly',/KPThlvO xJFIFddDucky2Adobed         #"""#''''''''''     !! !!''''''''''" !1QAq"2aBRr3уbs$4TE!AQ1a ?J%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%gi9 ˬI~Z5h{u?Ź~ݟxsi5:RY%aj럮`[Fm-j6~"[G*c {ڥ65[iu%r @,@,@,@K ĸ1w)gV/#dߖs 9M[rJkW{rk~Vr23w>4ڕYz݉w,SMZ%"MjUP0@g#1b\K-/nKFKrKxTl_NjN+UbԂ2HO'&q[ˠr4YH+5aO(be1b12b8"bX1plw7OPgc[\`~@lr[ǶA-_f˩nρΤhաV$0]]؞]ؖc&l@bbX15ճUا^ X!3ԎMYeBnRFkugCv7ΙR X竼5e-_ TO+),@bb+ҴյR:%zvȽ%߶0πq="[c($yTrse-DDDDG~C^lֳ_S ipu룴Zۨ Ir>6f Vֿku^?p,@,@L''mvoTyX>1P3yQmKl Iá-OMTIbqz것9KnF^iSgep|C.&+xSy5 TsD0fyu/uf[RB}Jszu~wMiYe|Ƶ!uuu*g>3oyV;3c-}Sk~ȟ nKdmy4MMlM?LIRv8+z0ukuзOgTLTOOΣroo(,K\In_Gk]9BѓĝoMّn fӣZի,=_5Ͻߨ^{3~ChmceRl=U Ӝt}3hUZZ҂Tw( _sV6Tҁ}*}tX>X#H2@K1a@ ŶܣT0UX iq[ZvVw)駬ZyH=]LV;tge=4qn?ue?hxJ)qܕlѮW蜭sv#s{.Uaj5f|o0~սG*OO g ~)m*=qx.o1.]pX;N$7n5zjY+^xaKg>zkм5VmNgs}ȚbּCg@f>Q֮YIF>/glөk96nb|/Tlu+ ⭯ܘg[]$[S J m6i_UPOibUԟOTMN1f]/M6iӴ U: Sj>Zh6pgּW!ǖJY33N][[Xn|#83o`UV"Y`wt82_VN|{q<e_T9H&-zjZkPktb1,Mbb b5jckRT?A{j_Q55Gu)oG^! 4o}:*R_&ϗXA @á?%_2%%%" """ """ """ """ _Vhttp://images.gucci.com/images/categories/200710/thumb/190241_B8B0G_1410_001_thumb.jpg[Ombplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP VServer]Last-Modified]Accept-RangesZConnectionTDate^Content-LengthTEtag\Content-Type_Microsoft-IIS/6.0_Wed, 28 Nov 2007 20:05:40 GMTUbytesZkeep-alive_Fri, 28 Dec 2007 09:06:50 GMTT1907_"0426bcfa31c81:74ec"12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13 !#%,:HSXgly&+.JOSgluOsJFIFddDucky2Adobed         #"""#''''''''''     !! !!''''''''''" !1AQaq"B2Rr#5bc !1AQq"Ra2Bb3 ? P@@P@@PA@@P@@P@@P@@P@@P@@P@\ p  `` 8282000e p . & &@((`PP@QBeӮ)Vb3T\%R]Q'll:6!z,湸RMt5WcL|TI?cU_Z3R5ft2@sqsJ1]_jirةLS?x/|Vjo6nkjΛSqm8RI>䦚29ni4Ot@ `GCGkzk1֪ˤj`yaO=ו?5OOߒlD|ԗ>G[FԻT,>? ,TOO=stƆS帹cٳr>F~&zmJJ\\j[9]b Xi{($KKyZvޟMر,myޖRrc5Z^zeRs:ڲ_}w),7,%޽,t2#Rng76vx}:mۻ/\"9|g.jVڱW]Q_cx}&a/3~^fҏBp?w\q_!֒WwϧX~LX: p . & EKKM[㴜._xͮ/g*89.{c$[YK4tv,cJ/ӟoc\=]%ꃲp[˴Z׈,RWyG%Ysfx0Q|cl]HU|!~e%^ {E{-~}-^s5^iz;n=/Ly͎Kckn B RskI&׻wCo k'oemIC)0 ((]_#0L}Hs^Q9aLܩby:4dm?5ic~{\T7ůOS;:-^jN^L:!^译$@P_Vhttp://images.gucci.com/images/categories/200710/thumb/190242_BCC0G_6504_001_thumb.jpg[Onbplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP VServer]Last-Modified]Accept-RangesZConnectionTDate^Content-LengthTEtag\Content-Type_Microsoft-IIS/6.0_Wed, 28 Nov 2007 21:11:05 GMTUbytesZkeep-alive_Fri, 28 Dec 2007 09:06:53 GMTT2732_"80bae62f332c81:74ec"12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13 !#%,:HSXgly',/KPThlvO JFIFddDucky2Adobed         #"""#''''''''''     !! !!''''''''''" !1AQ"aq2Bb#rCSR3c$4DTE!1 ?( H H H H H H H H X H H H H H H H H X H H H H H H H H X H Hi>wS۴ 榅 zkИ e0S^՟۫Yř4x$ay.R<͊) 0SRq9.yRݵܷeu cL=MgճZ{-º6fLڹ7:W\yW.W̨'R ٷ[a!݀춶gil{ 2%%%q1KhFOu -|ajtH7H%%%%i0(h}V^p0NC_U۪mV= um۹*YGBӐ}%%qdl܆9 u|0l3_wVTֲ:7ν5m.#n@U^V.~$wUQ^Gt ]Ƨ-ߦU/RAP!=2tmjkp4n.-Q+սnov5EGj =GjFdzޠzRҬFHug?X%!԰?ٜ[]!,s{>=t'(=]?)ר94h5)AOBz=OKZǯ$nFW^\7?^  jVˏe}B֝>67_5ަUy=^ZՀ1֔gR:HքjeQQ2Jݬ3Gmsm馚ǕY~#忂Sli#]KjwW[1bt@ ?tP9v b|eEù9f=K1=Ngџ7}EG*ۿA9b \F%N$||6g uS_Տ1u`{ Sjש)f :^2` S}SQ^)o,?7mQ*|@0Kr۽sѭY#YfeQprɕpm@2 1eT0ofnOCoy*mzG%U׺Wd&i[-8UMu7Y׭]XXկn=DJn's1*L/~<qٱ-^_pFbELDıE>#3?Kc~v]A3* kׅth+_蟰>* c "p9V?JqGW x=~εcQ3"/i -?Z2*q5ׯZxP?d@,@,@_Vhttp://images.gucci.com/images/categories/200710/thumb/190241_BCB1S_1000_001_thumb.jpg[Onbplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP VServer]Last-Modified]Accept-RangesZConnectionTDate^Content-LengthTEtag\Content-Type_Microsoft-IIS/6.0_Wed, 28 Nov 2007 20:11:52 GMTUbytesZkeep-alive_Fri, 28 Dec 2007 09:06:48 GMTT1502_"0f425eafa31c81:74ec"12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13 !#%,:HSXgly',/KPThlvOJFIFddDucky2Adobed         #"""#''''''''''     !! !!''''''''''"{!1AQaq"2R#Bs1! ? P@P@P@P@P@P@P@P@PPP@P@P@P@P@P@P@P@PV V `bbX X1 V+2`b`L X0b#(0(0(0b##(0(0( )Ǒ}8[4a+-Jь RX[Ϲ2m2T~@P@jfcl!CC'c2,ݱgQf]+9Hr mqݰhpl1#\JHM (+2`b{<.. ˭2}[đ;>*x&6R6#}M4EGSDӃyw^%0ȱ1QK(I1T$Yu7KJrV g?QWM~ e.RU]`U_yƫ\Xkkuc-ܕQ)r1p7|d*ix*..&ߺnp0taV,PQt*s;cfzdGӲ UNF2ID2TI"^<1%)bطFw/$/cR2+3>ο#LsHZh$}p~I˦}]qcNź-]9Ka,x]5K%)%7d(UDu_}f=~NprуJӉӾVOU^:"V4%&(c_7z_r7QzN-^FwXrƕkqBIR1rHU~HiuKwULkSSXhg?gw]ΕǿrZҜyN4ԒiM9,5ucH#(0( (jx>H=*D|`֨oCW'hڳ#ї=6 7@XVׇO 5U#mzut#x28*D|z5~!  ?_Vhttp://images.gucci.com/images/categories/200710/thumb/190242_F140S_1000_001_thumb.jpg[Ombplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP VServer]Last-Modified]Accept-RangesZConnectionTDate^Content-LengthTEtag\Content-Type_Microsoft-IIS/6.0_Wed, 28 Nov 2007 21:05:00 GMTUbytesZkeep-alive_Fri, 28 Dec 2007 09:06:49 GMTT2417_"0265856232c81:74ec"12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13 !#%,:HSXgly&+.JOSgluO qJFIFddDucky2Adobed         #"""#''''''''''     !! !!''''''''''" !1AQ2q"aBR#CSӁb$4%5!A1Q ?$UDUDUDUDUDUDUDUDUTUDUDUDUDUDUDUDUDUTUDUDUDUDUDUDUDUDUTUDUDUDG\@'@X:[:ivH׼m2k҃(2y[Z|Oϵq`4ƏFDSB!>VK^8Y;ϘkiXoaW]̐4kغM:KixWi4U~7cp'HE?91>Z[ݴl-a/2y<8y+֢C1NGE2ս'͡\[2p\1(HL{Kb?즒!jQ(Q(Mj J* .ek<=Z=U=+<9Y'f掬W*٢ҭ mvxNvnzfi\x2|8qT8Wqq77HwCK<3Vێ;ǴLzONtŎ't3]Mn2ѲN|[AGgXl~+GolLclni enJ3Ndxd-7)|ɷpm|~-sWu.1yǩj髌k.l-X8v}\j9eΖϾ:]ӛziky鸝KG1H,mA̹届h.'?q^Yy'\2V伳td>6FN${?N譸gY^8ί5aGZw.=WQ63v;\l{lecvR-nsA `^6cIq,f.m,0ayd# [R;\ a5g:YmV . .nk-!dFcGNu\}(2J*%TAQTA-k@NR A&~P~Q-A`Ž2;.0c'5p6O#h>5qINe/۫wPꅼ!644QgZM g7[mmo2֪ _Vhttp://images.gucci.com/images/categories/200710/thumb/190241_CANOG_1002_001_thumb.jpg[Onbplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP VServer]Last-Modified]Accept-RangesZConnectionTDate^Content-LengthTEtag\Content-Type_Microsoft-IIS/6.0_Wed, 31 Oct 2007 21:52:45 GMTUbytesZkeep-alive_Fri, 28 Dec 2007 09:06:52 GMTT3636_"8074735e81cc81:74ec"12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13 !#%,:HSXgly',/KPThlvO4JFIFddEDucky20189871_FHQBV_1002_ 001Adobed         #"""#''''''''''     !! !!''''''''''" !1A"Qaq2B#RbErU3s451!AqQ ?*)@E tP*)@E tP*)@E tP*)@E tP*)@E tP*)@Yo Z ( pmqQNE:(TSNE:(;*<=vw 6,::|xۣӷۓV+E$dԚGg֩,("Tu\^Y9'?` ꩧ6ڍG#ImKc5IBB tP;Qjv ZڃUw6n[90a.CF[,k˝Iom9 >4sDU0e]l[ {jw~fa`PKtY&\.*__"ǢڋWGI. KEu~._r.Xj*7ڋVVeowWrn{fF<9ǖY,[a uiibtwBH!pd|Q'ʪM>P4CKZw\l&YYV6cFt.}DǍgw2L}EwE KYR]--XZRD4&ڬ. ej%j-YZPcj++Q@E@HII5S321N|\2W'r,:omR)oѣ)h'nTy2rK?vxe?k S: dۡt2u#GG<=1Cc~Kߎ[nY8. Hp 14emcΤMx9ѯm€%UYe w)mQeSq殯uFI6?-j >nqdtn>ZZ̄;Ăo&հF&.Mi\x36Di^ppt}/o8؛SHf$rD(Йΰ>:㞩)Es$fNn:k BIkjG; UN6GrvFF[26:dzVi}(+bET+QNE:(yѾ˂&9ݲD/Qk?02f;\m]$SU"Yyr*Ǩvn6ۑ9r/7L˨Q~NL2>'[Gdb^c*xfv鷑"JdJOJP(W-zٛfFS}hnkcZX]|̩@FcEPn('Pwxs.Rcc;pv{?Z9٪$ܱ_ 5 H[&tgA}Tzij~JV3W+Ssl՗6زbn"rwEcUdo(*xU* '1O#!A,nbRH0"7q͏if4`D"vM)D-ڬܪ6a͆4@XsesDv6ϼg.6e.!}M1E+vcvogI#9ҵwff5Wwٔ͞<+8~f+^gǹYBA& 'n6eHڋu9nߵ6C g2 v H_4f.#͗J,nׇ;'iݿIXi#[,fN-|NvՕذ@2,Ʌ.dF,G5]L~ O7zf\#X>uA!̌q9]dy1chSeX{ ;''uL6&?33܊&R_YUJ5n\(qfN(ך$su=P1A'>;'G-蠮7a{FJ?Ec_PVav^5kV( Gfvc~ұ ~_XE1ݸ9mxELQA;_}݀pf/RPrn5O@tP*)@袊((((((((_Vhttp://images.gucci.com/images/categories/200710/thumb/189871_FHQBV_1002_001_thumb.jpg[Onbplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP VServer]Last-Modified]Accept-RangesZConnectionTDate^Content-LengthTEtag\Content-Type_Microsoft-IIS/6.0_Tue, 13 Nov 2007 18:33:58 GMTUbytesZkeep-alive_Fri, 28 Dec 2007 09:06:56 GMTT3422_"06fc6c02326c81:74ec"12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13 !#%,:HSXgly',/KPThlvO ^JFIFddEDucky20190256_FHQBV_1002_ 001Adobed         #"""#''''''''''     !! !!''''''''''" !1AQaq"2BbR#T3SDr³$%1!a ?TSQNE:(TSQNE:(TSNE:(TSQNE:(TSQNE:(TSQNE=(TSQNE:(tSQNE:(5.2H#6@?-$ nzVO2V<U:5ac̮cC.oFm-#z; to{fŝ~%aFоISjWݼ/n L^VN4ѥ{X.ΆVCaCLîK{mA q= v'.y7ͭQNE:(vE;S6j=YZq|yyxfwo tz7ւw=>P|Wc@HsG<ˑ{xVjy7$Mm.JL5ܯyLn2;O呂=w6̕wiuE: #&8_XNȹIv'NEƢ9A .Ą^IWRx{e \XaEQ12ؾ6{VXXMn\c`DR?3`@:-ˇcC6$F#Md1:ڌ<2Ӡx"BApsÕgǔ]$CpGB<+~Uw{~ _+5= +BVtP*?< |G,Ă!|W =s;"d>MiAILgy\z-quPH&Ô#+KVGGMA.DN;YcU7rcf/& ~ڇʢkkdIdSH(_ /j&xTYr`qY޺0Tq<`WsK۳4[yHIԈ+{b,Ed ŌMbǠ=763 GYYFM:kHqv=?eG¢|Α頛C64 ^%%]GS@߷{~#AcDqVhI@a٥P0q:ة7>R| zmոyPbÙXM#u H5j\_q!k_YA7+nT۴E mO@@kn..~DyXauuRrE}<4>趢G=;r$Y#ΐ /$[%35Ԓzu'S\o?gr|7'jI'$sM(fmm6&˵~s98(]"nE*G+L矒NK;-sІI*[UֵC<ŋqsԟVt2:mY%o}-蠰KRoMX=5#l*gY5 pm9Rl ~Di '*$ tzWPEQO$qk{i[0 L< Vk$g`;dV$xTe`ݔASJxK.<K D le|kmHǐh@ TCCUCoX5N!M̀E}/A1 ?\' { gLĞ[+eeE3Nile'lfHۅ 7r1!<҈d*mXkk~KVlÙ06ZڏyӕuGٽL9|F,)wihգwّ9x|mǭ5XCݻo'Ǝ6ăsEo|Wb_EXA_'?Eq_EXQA_'?E?Ѹc"A\xN(ď ďq~V4PWg"<,HBR(* vTSEQ@QEQ@QEQ@QEQ@QE_Vhttp://images.gucci.com/images/categories/200710/thumb/190256_FHQDV_1000_001_thumb.jpg[Ombplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078 l#AIHe#AYVN)*+!-.WNS.base[NS.relative_Vhttp://images.gucci.com/images/categories/200710/thumb/189871_FHQDV_1008_001_thumb.jpg1234X$classesZ$classname456UNSURLV%NSURLXNSObjectZimage/jpeg9:;=>?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP VServer]Last-Modified]Accept-RangesZConnectionTDate^Content-LengthTEtag\Content-Type_Microsoft-IIS/6.0_Wed, 31 Oct 2007 21:52:50 GMTUbytesZkeep-alive_Fri, 28 Dec 2007 09:06:50 GMTT3436_"0656e6181cc81:74ec"12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13 !#%,:HSXgly&+.JOSgluO lJFIFddEDucky20189871_FHQDV_1008_ 001Adobed         #"""#''''''''''     !! !!''''''''''" !1AQ"aq2BRr#3$bcsEDU1Q!Aq"2 ?*)@E tP*)@E tP*)@E tP*)@E tP*)@E tP*)@ENQNE:(TSNE:(߽o"cc{Dj{iVKl~!ٸcrw3=gG$x@7Nd'y bC2:E%`w- U5|zq;#vZ:6YHuVԼ$eҹ'n~ꑴ}#Ay+ő&F4Ƌ}lͧs6Yqe~U TXNF%۳SpI`ҌLHkѡx{$[4=>۫a6 -gX]ZC/"oS=[wwA,P,.c'"-*tepRKVIj-YZVՕ6Z ՋF$wc`I'yNG+ 6 7 +1I[񓙑LdJH xy4RÐPOe(eI1H3[p:%t@jXג7 =I;AzJsT:Au<*V.4CJrHXMul̺jjzĵ?yAvd:.@c,thB[Ԧ,_pcO$sԢǫN[GIϼ0Xz[MD4Ň슃׻o6,hy S UZ;ԭ;c;;H]AZf־j)@E:(U_~޲Gq[R~ZVbGܳ\,z6y @cW~[dyAQpks-lm,ȖOR y6T{:4(Ojp\+QF uG:yV,h ʣj1`4_C[W8 T~T|c$TY$ }ޗJu'3a"T#ų ]UxH]q4H_ٙMm@Z\'yT)O* TɉK~[:T&4R3W&Wδ߷tb3H2\4Dn 0} KJ,V_pyj'7r,xX7E 8nm:u OK';%AᜁtҝݱI$À!Yjnk捹%W$PoCBۯ߅Iƚx fU7YeW*)@EU~{[oǓs&cC+i <$(P:si&ػ}O{Pqc\iצ: BvĊ^MD.{jwg 4u3]xsB%ٮEjW?y(fI:VE^Wn+ &>Jxi-ٷAύ@Q+r:/sT) ؠ:H[SqFm2/A;?qgcgEEȨѕ-!XHvvCiqFq&%,X^rW콧 < y YH((_Bհb}jXccW$y|}‚FS A5Yvhl#& g).)ph>:rd>- ?+YݦyHK"f5v~q{cOfފ O+zyo_OoW:()goJ|6PUWh/-b/av1EY>>!EfifJ}`i6l8qQ~NE:(Q@QEQ@QEQ@QEQ@QEQA_Vhttp://images.gucci.com/images/categories/200710/thumb/189871_FHQDV_1008_001_thumb.jpg[Oobplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP VServer]Last-Modified]Accept-RangesZConnectionTDate^Content-LengthTEtag\Content-Type_Microsoft-IIS/6.0_Tue, 13 Nov 2007 18:33:49 GMTUbytesZkeep-alive_Fri, 28 Dec 2007 09:06:55 GMTT3447_"802469bb2326c81:74ec"12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13 !#%,:HSXgly(-0LQUilwO wJFIFddEDucky20189871_FHQDV_1008_ 001Adobed         #"""#''''''''''     !! !!''''''''''" !1AQ"qa2BRr#3$bcsEDU!1AQq ?*)@E tP*)@E tP*)@E tP*)@E tP*)@E tP*)@ENQNE:(TSNE:(۲AoyDǸ'g>^DFAn&RL{#m{6('s:SYBTGk [̑d=ĦGm(D-06%3{A@ 56 jYAyb#o aQNTSڋSVNڼom}vm0Dr1Q#20ya#EcF'ҋǟ?uH{>Õbȓ#qcE|辶f9[,%*PUrSQ';v"X' hml^O.&Vj-NZ`/+)fqlxPv#gZ~}p2 23)s *R|XUSlnD]ctji _{OY1X\NDZTUcgR8γ&-Iמ+QjԭZ ZVVڋSZwHѤ"lI$!3b!2fa%f<94 s2s27ILZ #!/o&@4r* ̰)&4~0|zQ=-KQG'h2OBiPBnqy`X1QnTjƘsS:Xg+4w Di<ßL{&x? ,Q Eqnz']Q7mL8T^>4m3$р'Z˫vKY4'hXC2FT/JbLvܩ0b:\is3U9!:zVj!a͋?d9GCjUE֯~:+jﷻNGgtf:U}A5J;l'1q> 6ϖR=<`Xd!rxeG㯩#K"6] 152:=ToOPgQqǕisƈGleQ5y U?on6&#kJ$x=y3$-h"n!s̑!+Gfe7M-kj=z Eʃ@2bh߰gVGNaƖ#WatY?3.߷tb. Y"U>å^ե YƖcMa`I/8Syj'7r,xX7E 8nm:u* OK';%AᜁtҝݱI$À!YjP5Fϒ ¨ZPm׍{ܤ xcM&&4ȟ %Z󤈮ṫBoA }d>p-[2f/z~Kїzl6tL "EF(rW+Է9fN-)Axpx(y7j8[n&㳖xC.Ek9yYdIrhw}~ە%f#xAhu}onۦFx8WK^;ne {JkuFnXxב|Cڱڗjo|Ȅk! `O5v:zrADUD 2p$`[,*FF 欄ZHRqze^Yp2\. -)Q"Bps6Cǝ*6u ,cB6Aوܞ6'o쮝|3@TCaԞue'IYr<2XįnhAPxгDMH4#6>|m:]N/ =n9O Qa%Z1!mFΣ펢/]tL )e#?EB݊ 57f(&v6t^^PߵOѾKԇhwnݿ48ibQ,ŋ:x!aU~pXǐenJl\2u.ͱm['X lu7ϙ8PHڊtP"9݃۹M$c$aLE#%>nޭPQ¾S.LŲdk#?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP VServer]Last-Modified]Accept-RangesZConnectionTDate^Content-LengthTEtag\Content-Type_Microsoft-IIS/6.0_Wed, 31 Oct 2007 21:56:33 GMTUbytesZkeep-alive_Fri, 28 Dec 2007 09:06:53 GMTT3912_"807e59e681cc81:74ec"12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13 !#%,:HSXgly',/KPThlvOHJFIFddEDucky20192473_F9DZV_9061_ 001Adobed         #"""#''''''''''     !! !!''''''''''"!1AQaq"2R#BbCr3c!1AqaQ ?TSQNE:(TSQNE:(TSNE:(TSQNE:(TSQNE:(TSQNE:(TSQNE:(TSQN^9a\$g<}5bx '?\ /i҅~,IO8:{W= r/fdǃ|×QϿɃ}̼bG&1O!Ea^"(TSQNj-NZZS;Pcj"l3=,lxK;~ Z\q{=.Y> Ö\Aku1.?ݺ2# z&N{H;"?"mZNA?yjrWe6ee!,ԍڃ϶mics2 nx~>Ve뛉ּ}G:FZy1@8tPcj-YZej-AEEe("yu(Լ9 .zS3<{v5)IV'ܪ9 f^fȏ>uŜ\ﺳuWxG 8$V\NQ~L:;n=8ʡ[/;ciZhDSG<цWq|{>G ,1Ə:^# Z),`~&8DN0f:Ϯȑ㑃LΊ.*~gd@;{Mii}ɵYLBnIA*,OKX0?HU;e&WC|eq^AYX|:^ӺvX~e/#))烜Q$/$!MV]_vi$-4nĿeTg/ec\?"7ć.nx H=vQjksv#f8NΊRGaܗ]s$kB|.6 SמDb.LnjQ)wo`Qs^{ڮ #l!PdqYUrmۤxf"qTiX|%O^>TPn G߅jOLܨ]PÂt Ʌŀ~_;6\ U-<!EɒPBTpn㷱C&4(bnm"nꖵ_7˒\<)fHnE~HCFVGYHa+O!w"Vpf^xD-d  ݕ I">۩>RZ0 8Xz$I~M0G7?Ovp l 0>Q%$.|zRi Qr ^o¢Q.tqhT!;lxp0inVA$l<5Q!ȎxG>~Ϗ|^{zM#:v13/Qu%M[X}yz[ci@dw?+{U+.ڴP*)AhY{lq#2_#Ks _>wTyz=Tsd*q$ssYcPq5&UlǑr83Z?Tҹ.e y&|8_$ zq3Χ_ũF~,Ś[R{\N^L2 O#ª>n,Y`#yqF y0,8  ip2%#DzrT)$Zo s>`#)fw q 5U!.X/Пu%\rs˒/cɊ |?q%”c13:]d͍>`3#ƦN{ `ۭs HȊ)\h.CB Zé=:3DS2MB3Fc$2cF]vIZ$Xrr  )ߗ]$fAN GXr)lM_xaX0dK*B/9Znn#5&{f42&vTѸ`/Ө9|_"#dω0҇(?PbJjǺrY$k(q]h]O}O\/[u.UeH]aF.*>4κ+}>Ud|ܖq&Gۉ"XMƢN-v<LbL(Fkyf}@`8h`!=!uU!2ILdp"ܕz g‡_˖<|y& DG x5:mfT|,߶X(qOho[ų;]r o4vB ߩk[D2OHSRzYp˅[/{[Y] z3 b;cWzs]rʥX⠛U ss^hK|n(cyk)y8μ%e=czG)~ډ Y#W&7ɳ̑,K{z[ ii>¤4z 3vhӄB+g,죈a~@{`?4[m۶ݶUjryNF5 pQrű1 qB=Y?x8&/YϩӐBce>L Œcdk]zˆrr6:6.)m˂ot|m=}Ic1R5!YroPpvH_/󲿍0;Z(ɗv,xRBzl\|r(z1~(tSQjtPc} GNJW+*(1G#VTPc}+_e; tP*)@E( (( (( (( ((?_Vhttp://images.gucci.com/images/categories/200710/thumb/192473_F9DZV_9061_001_thumb.jpg[Onbplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse