/*MooTools, My Object Oriented Javascript Tools. Copyright (c) 2006-2007 Valerio Proietti, , MIT Style License.||Clientcide Copyright (c) 2006-2008, http://www.clientcide.com/wiki/cnet-libraries#license*/ var MooTools={'version':'1.2.3','build':'4980aa0fb74d2f6eb80bcd9f5b8e1fd6fbb8f607'};var Native=function(options){options=options||{};var name=options.name;var legacy=options.legacy;var protect=options.protect;var methods=options.implement;var generics=options.generics;var initialize=options.initialize;var afterImplement=options.afterImplement||function(){};var object=initialize||legacy;generics=generics!==false;object.constructor=Native;object.$family={name:'native'};if(legacy&&initialize)object.prototype=legacy.prototype;object.prototype.constructor=object;if(name){var family=name.toLowerCase();object.prototype.$family={name:family};Native.typize(object,family)}var add=function(obj,name,method,force){if(!protect||force||!obj.prototype[name])obj.prototype[name]=method;if(generics)Native.genericize(obj,name,protect);afterImplement.call(obj,name,method);return obj};object.alias=function(a1,a2,a3){if(typeof a1=='string'){var pa1=this.prototype[a1];if((a1=pa1))return add(this,a2,a1,a3)}for(var a in a1)this.alias(a,a1[a],a2);return this};object.implement=function(a1,a2,a3){if(typeof a1=='string')return add(this,a1,a2,a3);for(var p in a1)add(this,p,a1[p],a2);return this};if(methods)object.implement(methods);return object};Native.genericize=function(object,property,check){if((!check||!object[property])&&typeof object.prototype[property]=='function')object[property]=function(){var args=Array.prototype.slice.call(arguments);return object.prototype[property].apply(args.shift(),args)}};Native.implement=function(objects,properties){for(var i=0,l=objects.length;i-1:this.indexOf(string)>-1},trim:function(){return this.replace(/^\s+|\s+$/g,'')},clean:function(){return this.replace(/\s+/g,' ').trim()},camelCase:function(){return this.replace(/-\D/g,function(match){return match.charAt(1).toUpperCase()})},hyphenate:function(){return this.replace(/[A-Z]/g,function(match){return('-'+match.charAt(0).toLowerCase())})},capitalize:function(){return this.replace(/\b[a-z]/g,function(match){return match.toUpperCase()})},escapeRegExp:function(){return this.replace(/([-.*+?^${}()|[\]\/\\])/g,'\\$1')},toInt:function(base){return parseInt(this,base||10)},toFloat:function(){return parseFloat(this)},hexToRgb:function(array){var hex=this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);return(hex)?hex.slice(1).hexToRgb(array):null},rgbToHex:function(array){var rgb=this.match(/\d{1,3}/g);return(rgb)?rgb.rgbToHex(array):null},stripScripts:function(option){var scripts='';var text=this.replace(/]*>([\s\S]*?)<\/script>/gi,function(){scripts+=arguments[1]+'\n';return''});if(option===true)$exec(scripts);else if($type(option)=='function')option(scripts,text);return text},substitute:function(object,regexp){return this.replace(regexp||(/\\?\{([^{}]+)\}/g),function(match,name){if(match.charAt(0)=='\\')return match.slice(1);return(object[name]!=undefined)?object[name]:''})}});Hash.implement({has:Object.prototype.hasOwnProperty,keyOf:function(value){for(var key in this){if(this.hasOwnProperty(key)&&this[key]===value)return key}return null},hasValue:function(value){return(Hash.keyOf(this,value)!==null)},extend:function(properties){Hash.each(properties||{},function(value,key){Hash.set(this,key,value)},this);return this},combine:function(properties){Hash.each(properties||{},function(value,key){Hash.include(this,key,value)},this);return this},erase:function(key){if(this.hasOwnProperty(key))delete this[key];return this},get:function(key){return(this.hasOwnProperty(key))?this[key]:null},set:function(key,value){if(!this[key]||this.hasOwnProperty(key))this[key]=value;return this},empty:function(){Hash.each(this,function(value,key){delete this[key]},this);return this},include:function(key,value){if(this[key]==undefined)this[key]=value;return this},map:function(fn,bind){var results=new Hash;Hash.each(this,function(value,key){results.set(key,fn.call(bind,value,key,this))},this);return results},filter:function(fn,bind){var results=new Hash;Hash.each(this,function(value,key){if(fn.call(bind,value,key,this))results.set(key,value)},this);return results},every:function(fn,bind){for(var key in this){if(this.hasOwnProperty(key)&&!fn.call(bind,this[key],key))return false}return true},some:function(fn,bind){for(var key in this){if(this.hasOwnProperty(key)&&fn.call(bind,this[key],key))return true}return false},getKeys:function(){var keys=[];Hash.each(this,function(value,key){keys.push(key)});return keys},getValues:function(){var values=[];Hash.each(this,function(value){values.push(value)});return values},toQueryString:function(base){var queryString=[];Hash.each(this,function(value,key){if(base)key=base+'['+key+']';var result;switch($type(value)){case'object':result=Hash.toQueryString(value,key);break;case'array':var qs={};value.each(function(val,i){qs[i]=val});result=Hash.toQueryString(qs,key);break;default:result=key+'='+encodeURIComponent(value)}if(value!=undefined)queryString.push(result)});return queryString.join('&')}});Hash.alias({keyOf:'indexOf',hasValue:'contains'});var Event=new Native({name:'Event',initialize:function(event,win){win=win||window;var doc=win.document;event=event||win.event;if(event.$extended)return event;this.$extended=true;var type=event.type;var target=event.target||event.srcElement;while(target&&target.nodeType==3)target=target.parentNode;if(type.test(/key/)){var code=event.which||event.keyCode;var key=Event.Keys.keyOf(code);if(type=='keydown'){var fKey=code-111;if(fKey>0&&fKey<13)key='f'+fKey}key=key||String.fromCharCode(code).toLowerCase()}else if(type.match(/(click|mouse|menu)/i)){doc=(!doc.compatMode||doc.compatMode=='CSS1Compat')?doc.html:doc.body;var page={x:event.pageX||event.clientX+doc.scrollLeft,y:event.pageY||event.clientY+doc.scrollTop};var client={x:(event.pageX)?event.pageX-win.pageXOffset:event.clientX,y:(event.pageY)?event.pageY-win.pageYOffset:event.clientY};if(type.match(/DOMMouseScroll|mousewheel/)){var wheel=(event.wheelDelta)?event.wheelDelta/120:-(event.detail||0)/3}var rightClick=(event.which==3)||(event.button==2);var related=null;if(type.match(/over|out/)){switch(type){case'mouseover':related=event.relatedTarget||event.fromElement;break;case'mouseout':related=event.relatedTarget||event.toElement}if(!(function(){while(related&&related.nodeType==3)related=related.parentNode;return true}).create({attempt:Browser.Engine.gecko})())related=false}}return $extend(this,{event:event,type:type,page:page,client:client,rightClick:rightClick,wheel:wheel,relatedTarget:related,target:target,code:code,key:key,shift:event.shiftKey,control:event.ctrlKey,alt:event.altKey,meta:event.metaKey})}});Event.Keys=new Hash({'enter':13,'up':38,'down':40,'left':37,'right':39,'esc':27,'space':32,'backspace':8,'tab':9,'delete':46});Event.implement({stop:function(){return this.stopPropagation().preventDefault()},stopPropagation:function(){if(this.event.stopPropagation)this.event.stopPropagation();else this.event.cancelBubble=true;return this},preventDefault:function(){if(this.event.preventDefault)this.event.preventDefault();else this.event.returnValue=false;return this}});function Class(params){if(params instanceof Function)params={initialize:params};var newClass=function(){Object.reset(this);if(newClass._prototyping)return this;this._current=$empty;var value=(this.initialize)?this.initialize.apply(this,arguments):this;delete this._current;delete this.caller;return value}.extend(this);newClass.implement(params);newClass.constructor=Class;newClass.prototype.constructor=newClass;return newClass};Function.prototype.protect=function(){this._protected=true;return this};Object.reset=function(object,key){if(key==null){for(var p in object)Object.reset(object,p);return object}delete object[key];switch($type(object[key])){case'object':var F=function(){};F.prototype=object[key];var i=new F;object[key]=Object.reset(i);break;case'array':object[key]=$unlink(object[key]);break}return object};new Native({name:'Class',initialize:Class}).extend({instantiate:function(F){F._prototyping=true;var proto=new F;delete F._prototyping;return proto},wrap:function(self,key,method){if(method._origin)method=method._origin;return function(){if(method._protected&&this._current==null)throw new Error('The method "'+key+'" cannot be called.');var caller=this.caller,current=this._current;this.caller=current;this._current=arguments.callee;var result=method.apply(this,arguments);this._current=current;this.caller=caller;return result}.extend({_owner:self,_origin:method,_name:key})}});Class.implement({implement:function(key,value){if($type(key)=='object'){for(var p in key)this.implement(p,key[p]);return this}var mutator=Class.Mutators[key];if(mutator){value=mutator.call(this,value);if(value==null)return this}var proto=this.prototype;switch($type(value)){case'function':if(value._hidden)return this;proto[key]=Class.wrap(this,key,value);break;case'object':var previous=proto[key];if($type(previous)=='object')$mixin(previous,value);else proto[key]=$unlink(value);break;case'array':proto[key]=$unlink(value);break;default:proto[key]=value}return this}});Class.Mutators={Extends:function(parent){this.parent=parent;this.prototype=Class.instantiate(parent);this.implement('parent',function(){var name=this.caller._name,previous=this.caller._owner.parent.prototype[name];if(!previous)throw new Error('The method "'+name+'" has no parent.');return previous.apply(this,arguments)}.protect())},Implements:function(items){$splat(items).each(function(item){if(item instanceof Function)item=Class.instantiate(item);this.implement(item)},this)}};var Chain=new Class({$chain:[],chain:function(){this.$chain.extend(Array.flatten(arguments));return this},callChain:function(){return(this.$chain.length)?this.$chain.shift().apply(this,arguments):false},clearChain:function(){this.$chain.empty();return this}});var Events=new Class({$events:{},addEvent:function(type,fn,internal){type=Events.removeOn(type);if(fn!=$empty){this.$events[type]=this.$events[type]||[];this.$events[type].include(fn);if(internal)fn.internal=true}return this},addEvents:function(events){for(var type in events)this.addEvent(type,events[type]);return this},fireEvent:function(type,args,delay){type=Events.removeOn(type);if(!this.$events||!this.$events[type])return this;this.$events[type].each(function(fn){fn.create({'bind':this,'delay':delay,'arguments':args})()},this);return this},removeEvent:function(type,fn){type=Events.removeOn(type);if(!this.$events[type])return this;if(!fn.internal)this.$events[type].erase(fn);return this},removeEvents:function(events){var type;if($type(events)=='object'){for(type in events)this.removeEvent(type,events[type]);return this}if(events)events=Events.removeOn(events);for(type in this.$events){if(events&&events!=type)continue;var fns=this.$events[type];for(var i=fns.length;i--;i)this.removeEvent(type,fns[i])}return this}});Events.removeOn=function(string){return string.replace(/^on([A-Z])/,function(full,first){return first.toLowerCase()})};var Options=new Class({setOptions:function(){this.options=$merge.run([this.options].extend(arguments));if(!this.addEvent)return this;for(var option in this.options){if($type(this.options[option])!='function'||!(/^on[A-Z]/).test(option))continue;this.addEvent(option,this.options[option]);delete this.options[option]}return this}});var Element=new Native({name:'Element',legacy:window.Element,initialize:function(tag,props){var konstructor=Element.Constructors.get(tag);if(konstructor)return konstructor(props);if(typeof tag=='string')return document.newElement(tag,props);return document.id(tag).set(props)},afterImplement:function(key,value){Element.Prototype[key]=value;if(Array[key])return;Elements.implement(key,function(){var items=[],elements=true;for(var i=0,j=this.length;i'}return document.id(this.createElement(tag)).set(props)},newTextNode:function(text){return this.createTextNode(text)},getDocument:function(){return this},getWindow:function(){return this.window},id:(function(){var types={string:function(id,nocash,doc){id=doc.getElementById(id);return(id)?types.element(id,nocash):null},element:function(el,nocash){$uid(el);if(!nocash&&!el.$family&&!(/^object|embed$/i).test(el.tagName)){var proto=Element.Prototype;for(var p in proto)el[p]=proto[p]};return el},object:function(obj,nocash,doc){if(obj.toElement)return types.element(obj.toElement(doc),nocash);return null}};types.textnode=types.whitespace=types.window=types.document=$arguments(0);return function(el,nocash,doc){if(el&&el.$family&&el.uid)return el;var type=$type(el);return(types[type])?types[type](el,nocash,doc||document):null}})()});if(window.$==null)Window.implement({$:function(el,nc){return document.id(el,nc,this.document)}});Window.implement({$$:function(selector){if(arguments.length==1&&typeof selector=='string')return this.document.getElements(selector);var elements=[];var args=Array.flatten(arguments);for(var i=0,l=args.length;i1);tags.each(function(tag){var partial=this.getElementsByTagName(tag.trim());(ddup)?elements.extend(partial):elements=partial},this);return new Elements(elements,{ddup:ddup,cash:!nocash})}});(function(){var collected={},storage={};var props={input:'checked',option:'selected',textarea:(Browser.Engine.webkit&&Browser.Engine.version<420)?'innerHTML':'value'};var get=function(uid){return(storage[uid]||(storage[uid]={}))};var clean=function(item,retain){if(!item)return;var uid=item.uid;if(Browser.Engine.trident){if(item.clearAttributes){var clone=retain&&item.cloneNode(false);item.clearAttributes();if(clone)item.mergeAttributes(clone)}else if(item.removeEvents){item.removeEvents()}if((/object/i).test(item.tagName)){for(var p in item){if(typeof item[p]=='function')item[p]=$empty}Element.dispose(item)}}if(!uid)return;collected[uid]=storage[uid]=null};var purge=function(){Hash.each(collected,clean);if(Browser.Engine.trident)$A(document.getElementsByTagName('object')).each(clean);if(window.CollectGarbage)CollectGarbage();collected=storage=null};var walk=function(element,walk,start,match,all,nocash){var el=element[start||walk];var elements=[];while(el){if(el.nodeType==1&&(!match||Element.match(el,match))){if(!all)return document.id(el,nocash);elements.push(el)}el=el[walk]}return(all)?new Elements(elements,{ddup:false,cash:!nocash}):null};var attributes={'html':'innerHTML','class':'className','for':'htmlFor','defaultValue':'defaultValue','text':(Browser.Engine.trident||(Browser.Engine.webkit&&Browser.Engine.version<420))?'innerText':'textContent'};var bools=['compact','nowrap','ismap','declare','noshade','checked','disabled','readonly','multiple','selected','noresize','defer'];var camels=['value','type','defaultValue','accessKey','cellPadding','cellSpacing','colSpan','frameBorder','maxLength','readOnly','rowSpan','tabIndex','useMap'];bools=bools.associate(bools);Hash.extend(attributes,bools);Hash.extend(attributes,camels.associate(camels.map(String.toLowerCase)));var inserters={before:function(context,element){if(element.parentNode)element.parentNode.insertBefore(context,element)},after:function(context,element){if(!element.parentNode)return;var next=element.nextSibling;(next)?element.parentNode.insertBefore(context,next):element.parentNode.appendChild(context)},bottom:function(context,element){element.appendChild(context)},top:function(context,element){var first=element.firstChild;(first)?element.insertBefore(context,first):element.appendChild(context)}};inserters.inside=inserters.bottom;Hash.each(inserters,function(inserter,where){where=where.capitalize();Element.implement('inject'+where,function(el){inserter(this,document.id(el,true));return this});Element.implement('grab'+where,function(el){inserter(document.id(el,true),this);return this})});Element.implement({set:function(prop,value){switch($type(prop)){case'object':for(var p in prop)this.set(p,prop[p]);break;case'string':var property=Element.Properties.get(prop);(property&&property.set)?property.set.apply(this,Array.slice(arguments,1)):this.setProperty(prop,value)}return this},get:function(prop){var property=Element.Properties.get(prop);return(property&&property.get)?property.get.apply(this,Array.slice(arguments,1)):this.getProperty(prop)},erase:function(prop){var property=Element.Properties.get(prop);(property&&property.erase)?property.erase.apply(this):this.removeProperty(prop);return this},setProperty:function(attribute,value){var key=attributes[attribute];if(value==undefined)return this.removeProperty(attribute);if(key&&bools[attribute])value=!!value;(key)?this[key]=value:this.setAttribute(attribute,''+value);return this},setProperties:function(attributes){for(var attribute in attributes)this.setProperty(attribute,attributes[attribute]);return this},getProperty:function(attribute){var key=attributes[attribute];var value=(key)?this[key]:this.getAttribute(attribute,2);return(bools[attribute])?!!value:(key)?value:value||null},getProperties:function(){var args=$A(arguments);return args.map(this.getProperty,this).associate(args)},removeProperty:function(attribute){var key=attributes[attribute];(key)?this[key]=(key&&bools[attribute])?false:'':this.removeAttribute(attribute);return this},removeProperties:function(){Array.each(arguments,this.removeProperty,this);return this},hasClass:function(className){return this.className.contains(className,' ')},addClass:function(className){if(!this.hasClass(className))this.className=(this.className+' '+className).clean();return this},removeClass:function(className){this.className=this.className.replace(new RegExp('(^|\\s)'+className+'(?:\\s|$)'),'$1');return this},toggleClass:function(className){return this.hasClass(className)?this.removeClass(className):this.addClass(className)},adopt:function(){Array.flatten(arguments).each(function(element){element=document.id(element,true);if(element)this.appendChild(element)},this);return this},appendText:function(text,where){return this.grab(this.getDocument().newTextNode(text),where)},grab:function(el,where){inserters[where||'bottom'](document.id(el,true),this);return this},inject:function(el,where){inserters[where||'bottom'](this,document.id(el,true));return this},replaces:function(el){el=document.id(el,true);el.parentNode.replaceChild(this,el);return this},wraps:function(el,where){el=document.id(el,true);return this.replaces(el).grab(el,where)},getPrevious:function(match,nocash){return walk(this,'previousSibling',null,match,false,nocash)},getAllPrevious:function(match,nocash){return walk(this,'previousSibling',null,match,true,nocash)},getNext:function(match,nocash){return walk(this,'nextSibling',null,match,false,nocash)},getAllNext:function(match,nocash){return walk(this,'nextSibling',null,match,true,nocash)},getFirst:function(match,nocash){return walk(this,'nextSibling','firstChild',match,false,nocash)},getLast:function(match,nocash){return walk(this,'previousSibling','lastChild',match,false,nocash)},getParent:function(match,nocash){return walk(this,'parentNode',null,match,false,nocash)},getParents:function(match,nocash){return walk(this,'parentNode',null,match,true,nocash)},getSiblings:function(match,nocash){return this.getParent().getChildren(match,nocash).erase(this)},getChildren:function(match,nocash){return walk(this,'nextSibling','firstChild',match,true,nocash)},getWindow:function(){return this.ownerDocument.window},getDocument:function(){return this.ownerDocument},getElementById:function(id,nocash){var el=this.ownerDocument.getElementById(id);if(!el)return null;for(var parent=el.parentNode;parent!=this;parent=parent.parentNode){if(!parent)return null}return document.id(el,nocash)},getSelected:function(){return new Elements($A(this.options).filter(function(option){return option.selected}))},getComputedStyle:function(property){if(this.currentStyle)return this.currentStyle[property.camelCase()];var computed=this.getDocument().defaultView.getComputedStyle(this,null);return(computed)?computed.getPropertyValue([property.hyphenate()]):null},toQueryString:function(){var queryString=[];this.getElements('input, select, textarea',true).each(function(el){if(!el.name||el.disabled||el.type=='submit'||el.type=='reset'||el.type=='file')return;var value=(el.tagName.toLowerCase()=='select')?Element.getSelected(el).map(function(opt){return opt.value}):((el.type=='radio'||el.type=='checkbox')&&!el.checked)?null:el.value;$splat(value).each(function(val){if(typeof val!='undefined')queryString.push(el.name+'='+encodeURIComponent(val))})});return queryString.join('&')},clone:function(contents,keepid){contents=contents!==false;var clone=this.cloneNode(contents);var clean=function(node,element){if(!keepid)node.removeAttribute('id');if(Browser.Engine.trident){node.clearAttributes();node.mergeAttributes(element);node.removeAttribute('uid');if(node.options){var no=node.options,eo=element.options;for(var j=no.length;j--;)no[j].selected=eo[j].selected}}var prop=props[element.tagName.toLowerCase()];if(prop&&element[prop])node[prop]=element[prop]};if(contents){var ce=clone.getElementsByTagName('*'),te=this.getElementsByTagName('*');for(var i=ce.length;i--;)clean(ce[i],te[i])}clean(clone,this);return document.id(clone)},destroy:function(){Element.empty(this);Element.dispose(this);clean(this,true);return null},empty:function(){$A(this.childNodes).each(function(node){Element.destroy(node)});return this},dispose:function(){return(this.parentNode)?this.parentNode.removeChild(this):this},hasChild:function(el){el=document.id(el,true);if(!el)return false;if(Browser.Engine.webkit&&Browser.Engine.version<420)return $A(this.getElementsByTagName(el.tagName)).contains(el);return(this.contains)?(this!=el&&this.contains(el)):!!(this.compareDocumentPosition(el)&16)},match:function(tag){return(!tag||(tag==this)||(Element.get(this,'tag')==tag))}});Native.implement([Element,Window,Document],{addListener:function(type,fn){if(type=='unload'){var old=fn,self=this;fn=function(){self.removeListener('unload',fn);old()}}else{collected[this.uid]=this}if(this.addEventListener)this.addEventListener(type,fn,false);else this.attachEvent('on'+type,fn);return this},removeListener:function(type,fn){if(this.removeEventListener)this.removeEventListener(type,fn,false);else this.detachEvent('on'+type,fn);return this},retrieve:function(property,dflt){var storage=get(this.uid),prop=storage[property];if(dflt!=undefined&&prop==undefined)prop=storage[property]=dflt;return $pick(prop)},store:function(property,value){var storage=get(this.uid);storage[property]=value;return this},eliminate:function(property){var storage=get(this.uid);delete storage[property];return this}});window.addListener('unload',purge)})();Element.Properties=new Hash;Element.Properties.style={set:function(style){this.style.cssText=style},get:function(){return this.style.cssText},erase:function(){this.style.cssText=''}};Element.Properties.tag={get:function(){return this.tagName.toLowerCase()}};Element.Properties.html=(function(){var wrapper=document.createElement('div');var translations={table:[1,'','
'],select:[1,''],tbody:[2,'','
'],tr:[3,'','
']};translations.thead=translations.tfoot=translations.tbody;var html={set:function(){var html=Array.flatten(arguments).join('');var wrap=Browser.Engine.trident&&translations[this.get('tag')];if(wrap){var first=wrapper;first.innerHTML=wrap[1]+html+wrap[2];for(var i=wrap[0];i--;)first=first.firstChild;this.empty().adopt(first.childNodes)}else{this.innerHTML=html}}};html.erase=html.set;return html})();if(Browser.Engine.webkit&&Browser.Engine.version<420)Element.Properties.text={get:function(){if(this.innerText)return this.innerText;var temp=this.ownerDocument.newElement('div',{html:this.innerHTML}).inject(this.ownerDocument.body);var text=temp.innerText;temp.destroy();return text}};Element.Properties.events={set:function(events){this.addEvents(events)}};Native.implement([Element,Window,Document],{addEvent:function(type,fn){var events=this.retrieve('events',{});events[type]=events[type]||{'keys':[],'values':[]};if(events[type].keys.contains(fn))return this;events[type].keys.push(fn);var realType=type,custom=Element.Events.get(type),condition=fn,self=this;if(custom){if(custom.onAdd)custom.onAdd.call(this,fn);if(custom.condition){condition=function(event){if(custom.condition.call(this,event))return fn.call(this,event);return true}}realType=custom.base||realType}var defn=function(){return fn.call(self)};var nativeEvent=Element.NativeEvents[realType];if(nativeEvent){if(nativeEvent==2){defn=function(event){event=new Event(event,self.getWindow());if(condition.call(self,event)===false)event.stop()}}this.addListener(realType,defn)}events[type].values.push(defn);return this},removeEvent:function(type,fn){var events=this.retrieve('events');if(!events||!events[type])return this;var pos=events[type].keys.indexOf(fn);if(pos==-1)return this;events[type].keys.splice(pos,1);var value=events[type].values.splice(pos,1)[0];var custom=Element.Events.get(type);if(custom){if(custom.onRemove)custom.onRemove.call(this,fn);type=custom.base||type}return(Element.NativeEvents[type])?this.removeListener(type,value):this},addEvents:function(events){for(var event in events)this.addEvent(event,events[event]);return this},removeEvents:function(events){var type;if($type(events)=='object'){for(type in events)this.removeEvent(type,events[type]);return this}var attached=this.retrieve('events');if(!attached)return this;if(!events){for(type in attached)this.removeEvents(type);this.eliminate('events')}else if(attached[events]){while(attached[events].keys[0])this.removeEvent(events,attached[events].keys[0]);attached[events]=null}return this},fireEvent:function(type,args,delay){var events=this.retrieve('events');if(!events||!events[type])return this;events[type].keys.each(function(fn){fn.create({'bind':this,'delay':delay,'arguments':args})()},this);return this},cloneEvents:function(from,type){from=document.id(from);var fevents=from.retrieve('events');if(!fevents)return this;if(!type){for(var evType in fevents)this.cloneEvents(from,evType)}else if(fevents[type]){fevents[type].keys.each(function(fn){this.addEvent(type,fn)},this)}return this}});Element.NativeEvents={click:2,dblclick:2,mouseup:2,mousedown:2,contextmenu:2,mousewheel:2,DOMMouseScroll:2,mouseover:2,mouseout:2,mousemove:2,selectstart:2,selectend:2,keydown:2,keypress:2,keyup:2,focus:2,blur:2,change:2,reset:2,select:2,submit:2,load:1,unload:1,beforeunload:2,resize:1,move:1,DOMContentLoaded:1,readystatechange:1,error:1,abort:1,scroll:1};(function(){var $check=function(event){var related=event.relatedTarget;if(related==undefined)return true;if(related===false)return false;return($type(this)!='document'&&related!=this&&related.prefix!='xul'&&!this.hasChild(related))};Element.Events=new Hash({mouseenter:{base:'mouseover',condition:$check},mouseleave:{base:'mouseout',condition:$check},mousewheel:{base:(Browser.Engine.gecko)?'DOMMouseScroll':'mousewheel'}})})();Element.Properties.styles={set:function(styles){this.setStyles(styles)}};Element.Properties.opacity={set:function(opacity,novisibility){if(!novisibility){if(opacity==0){if(this.style.visibility!='hidden')this.style.visibility='hidden'}else{if(this.style.visibility!='visible')this.style.visibility='visible'}}if(!this.currentStyle||!this.currentStyle.hasLayout)this.style.zoom=1;if(Browser.Engine.trident)this.style.filter=(opacity==1)?'':'alpha(opacity='+opacity*100+')';this.style.opacity=opacity;this.store('opacity',opacity)},get:function(){return this.retrieve('opacity',1)}};Element.implement({setOpacity:function(value){return this.set('opacity',value,true)},getOpacity:function(){return this.get('opacity')},setStyle:function(property,value){switch(property){case'opacity':return this.set('opacity',parseFloat(value));case'float':property=(Browser.Engine.trident)?'styleFloat':'cssFloat'}property=property.camelCase();if($type(value)!='string'){var map=(Element.Styles.get(property)||'@').split(' ');value=$splat(value).map(function(val,i){if(!map[i])return'';return($type(val)=='number')?map[i].replace('@',Math.round(val)):val}).join(' ')}else if(value==String(Number(value))){value=Math.round(value)}this.style[property]=value;return this},getStyle:function(property){switch(property){case'opacity':return this.get('opacity');case'float':property=(Browser.Engine.trident)?'styleFloat':'cssFloat'}property=property.camelCase();var result=this.style[property];if(!$chk(result)){result=[];for(var style in Element.ShortStyles){if(property!=style)continue;for(var s in Element.ShortStyles[style])result.push(this.getStyle(s));return result.join(' ')}result=this.getComputedStyle(property)}if(result){result=String(result);var color=result.match(/rgba?\([\d\s,]+\)/);if(color)result=result.replace(color[0],color[0].rgbToHex())}if(Browser.Engine.presto||(Browser.Engine.trident&&!$chk(parseInt(result,10)))){if(property.test(/^(height|width)$/)){var values=(property=='width')?['left','right']:['top','bottom'],size=0;values.each(function(value){size+=this.getStyle('border-'+value+'-width').toInt()+this.getStyle('padding-'+value).toInt()},this);return this['offset'+property.capitalize()]-size+'px'}if((Browser.Engine.presto)&&String(result).test('px'))return result;if(property.test(/(border(.+)Width|margin|padding)/))return'0px'}return result},setStyles:function(styles){for(var style in styles)this.setStyle(style,styles[style]);return this},getStyles:function(){var result={};Array.flatten(arguments).each(function(key){result[key]=this.getStyle(key)},this);return result}});Element.Styles=new Hash({left:'@px',top:'@px',bottom:'@px',right:'@px',width:'@px',height:'@px',maxWidth:'@px',maxHeight:'@px',minWidth:'@px',minHeight:'@px',backgroundColor:'rgb(@, @, @)',backgroundPosition:'@px @px',color:'rgb(@, @, @)',fontSize:'@px',letterSpacing:'@px',lineHeight:'@px',clip:'rect(@px @px @px @px)',margin:'@px @px @px @px',padding:'@px @px @px @px',border:'@px @ rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @)',borderWidth:'@px @px @px @px',borderStyle:'@ @ @ @',borderColor:'rgb(@, @, @) rgb(@, @, @) rgb(@, @, @) rgb(@, @, @)',zIndex:'@','zoom':'@',fontWeight:'@',textIndent:'@px',opacity:'@'});Element.ShortStyles={margin:{},padding:{},border:{},borderWidth:{},borderStyle:{},borderColor:{}};['Top','Right','Bottom','Left'].each(function(direction){var Short=Element.ShortStyles;var All=Element.Styles;['margin','padding'].each(function(style){var sd=style+direction;Short[style][sd]=All[sd]='@px'});var bd='border'+direction;Short.border[bd]=All[bd]='@px @ rgb(@, @, @)';var bdw=bd+'Width',bds=bd+'Style',bdc=bd+'Color';Short[bd]={};Short.borderWidth[bdw]=Short[bd][bdw]=All[bdw]='@px';Short.borderStyle[bds]=Short[bd][bds]=All[bds]='@';Short.borderColor[bdc]=Short[bd][bdc]=All[bdc]='rgb(@, @, @)'});(function(){Element.implement({scrollTo:function(x,y){if(isBody(this)){this.getWindow().scrollTo(x,y)}else{this.scrollLeft=x;this.scrollTop=y}return this},getSize:function(){if(isBody(this))return this.getWindow().getSize();return{x:this.offsetWidth,y:this.offsetHeight}},getScrollSize:function(){if(isBody(this))return this.getWindow().getScrollSize();return{x:this.scrollWidth,y:this.scrollHeight}},getScroll:function(){if(isBody(this))return this.getWindow().getScroll();return{x:this.scrollLeft,y:this.scrollTop}},getScrolls:function(){var element=this,position={x:0,y:0};while(element&&!isBody(element)){position.x+=element.scrollLeft;position.y+=element.scrollTop;element=element.parentNode}return position},getOffsetParent:function(){var element=this;if(isBody(element))return null;if(!Browser.Engine.trident)return element.offsetParent;while((element=element.parentNode)&&!isBody(element)){if(styleString(element,'position')!='static')return element}return null},getOffsets:function(){if(this.getBoundingClientRect){var bound=this.getBoundingClientRect(),html=document.id(this.getDocument().documentElement),scroll=html.getScroll(),isFixed=(styleString(this,'position')=='fixed');return{x:parseInt(bound.left,10)+((isFixed)?0:scroll.x)-html.clientLeft,y:parseInt(bound.top,10)+((isFixed)?0:scroll.y)-html.clientTop}}var element=this,position={x:0,y:0};if(isBody(this))return position;while(element&&!isBody(element)){position.x+=element.offsetLeft;position.y+=element.offsetTop;if(Browser.Engine.gecko){if(!borderBox(element)){position.x+=leftBorder(element);position.y+=topBorder(element)}var parent=element.parentNode;if(parent&&styleString(parent,'overflow')!='visible'){position.x+=leftBorder(parent);position.y+=topBorder(parent)}}else if(element!=this&&Browser.Engine.webkit){position.x+=leftBorder(element);position.y+=topBorder(element)}element=element.offsetParent}if(Browser.Engine.gecko&&!borderBox(this)){position.x-=leftBorder(this);position.y-=topBorder(this)}return position},getPosition:function(relative){if(isBody(this))return{x:0,y:0};var offset=this.getOffsets(),scroll=this.getScrolls();var position={x:offset.x-scroll.x,y:offset.y-scroll.y};var relativePosition=(relative&&(relative=document.id(relative)))?relative.getPosition():{x:0,y:0};return{x:position.x-relativePosition.x,y:position.y-relativePosition.y}},getCoordinates:function(element){if(isBody(this))return this.getWindow().getCoordinates();var position=this.getPosition(element),size=this.getSize();var obj={left:position.x,top:position.y,width:size.x,height:size.y};obj.right=obj.left+obj.width;obj.bottom=obj.top+obj.height;return obj},computePosition:function(obj){return{left:obj.x-styleNumber(this,'margin-left'),top:obj.y-styleNumber(this,'margin-top')}},setPosition:function(obj){return this.setStyles(this.computePosition(obj))}});Native.implement([Document,Window],{getSize:function(){if(Browser.Engine.presto||Browser.Engine.webkit){var win=this.getWindow();return{x:win.innerWidth,y:win.innerHeight}}var doc=getCompatElement(this);return{x:doc.clientWidth,y:doc.clientHeight}},getScroll:function(){var win=this.getWindow(),doc=getCompatElement(this);return{x:win.pageXOffset||doc.scrollLeft,y:win.pageYOffset||doc.scrollTop}},getScrollSize:function(){var doc=getCompatElement(this),min=this.getSize();return{x:Math.max(doc.scrollWidth,min.x),y:Math.max(doc.scrollHeight,min.y)}},getPosition:function(){return{x:0,y:0}},getCoordinates:function(){var size=this.getSize();return{top:0,left:0,bottom:size.y,right:size.x,height:size.y,width:size.x}}});var styleString=Element.getComputedStyle;function styleNumber(element,style){return styleString(element,style).toInt()||0};function borderBox(element){return styleString(element,'-moz-box-sizing')=='border-box'};function topBorder(element){return styleNumber(element,'border-top-width')};function leftBorder(element){return styleNumber(element,'border-left-width')};function isBody(element){return(/^(?:body|html)$/i).test(element.tagName)};function getCompatElement(element){var doc=element.getDocument();return(!doc.compatMode||doc.compatMode=='CSS1Compat')?doc.html:doc.body}})();Element.alias('setPosition','position');Native.implement([Window,Document,Element],{getHeight:function(){return this.getSize().y},getWidth:function(){return this.getSize().x},getScrollTop:function(){return this.getScroll().y},getScrollLeft:function(){return this.getScroll().x},getScrollHeight:function(){return this.getScrollSize().y},getScrollWidth:function(){return this.getScrollSize().x},getTop:function(){return this.getPosition().y},getLeft:function(){return this.getPosition().x}});Native.implement([Document,Element],{getElements:function(expression,nocash){expression=expression.split(',');var items,local={};for(var i=0,l=expression.length;i1),cash:!nocash})}});Element.implement({match:function(selector){if(!selector||(selector==this))return true;var tagid=Selectors.Utils.parseTagAndID(selector);var tag=tagid[0],id=tagid[1];if(!Selectors.Filters.byID(this,id)||!Selectors.Filters.byTag(this,tag))return false;var parsed=Selectors.Utils.parseSelector(selector);return(parsed)?Selectors.Utils.filter(this,parsed,{}):true}});var Selectors={Cache:{nth:{},parsed:{}}};Selectors.RegExps={id:(/#([\w-]+)/),tag:(/^(\w+|\*)/),quick:(/^(\w+|\*)$/),splitter:(/\s*([+>~\s])\s*([a-zA-Z#.*:\[])/g),combined:(/\.([\w-]+)|\[(\w+)(?:([!*^$~|]?=)(["']?)([^\4]*?)\4)?\]|:([\w-]+)(?:\(["']?(.*?)?["']?\)|$)/g)};Selectors.Utils={chk:function(item,uniques){if(!uniques)return true;var uid=$uid(item);if(!uniques[uid])return uniques[uid]=true;return false},parseNthArgument:function(argument){if(Selectors.Cache.nth[argument])return Selectors.Cache.nth[argument];var parsed=argument.match(/^([+-]?\d*)?([a-z]+)?([+-]?\d*)?$/);if(!parsed)return false;var inta=parseInt(parsed[1],10);var a=(inta||inta===0)?inta:1;var special=parsed[2]||false;var b=parseInt(parsed[3],10)||0;if(a!=0){b--;while(b<1)b+=a;while(b>=a)b-=a}else{a=b;special='index'}switch(special){case'n':parsed={a:a,b:b,special:'n'};break;case'odd':parsed={a:2,b:0,special:'n'};break;case'even':parsed={a:2,b:1,special:'n'};break;case'first':parsed={a:0,special:'index'};break;case'last':parsed={special:'last-child'};break;case'only':parsed={special:'only-child'};break;default:parsed={a:(a-1),special:'index'}}return Selectors.Cache.nth[argument]=parsed},parseSelector:function(selector){if(Selectors.Cache.parsed[selector])return Selectors.Cache.parsed[selector];var m,parsed={classes:[],pseudos:[],attributes:[]};while((m=Selectors.RegExps.combined.exec(selector))){var cn=m[1],an=m[2],ao=m[3],av=m[5],pn=m[6],pa=m[7];if(cn){parsed.classes.push(cn)}else if(pn){var parser=Selectors.Pseudo.get(pn);if(parser)parsed.pseudos.push({parser:parser,argument:pa});else parsed.attributes.push({name:pn,operator:'=',value:pa})}else if(an){parsed.attributes.push({name:an,operator:ao,value:av})}}if(!parsed.classes.length)delete parsed.classes;if(!parsed.attributes.length)delete parsed.attributes;if(!parsed.pseudos.length)delete parsed.pseudos;if(!parsed.classes&&!parsed.attributes&&!parsed.pseudos)parsed=null;return Selectors.Cache.parsed[selector]=parsed},parseTagAndID:function(selector){var tag=selector.match(Selectors.RegExps.tag);var id=selector.match(Selectors.RegExps.id);return[(tag)?tag[1]:'*',(id)?id[1]:false]},filter:function(item,parsed,local){var i;if(parsed.classes){for(i=parsed.classes.length;i--;i){var cn=parsed.classes[i];if(!Selectors.Filters.byClass(item,cn))return false}}if(parsed.attributes){for(i=parsed.attributes.length;i--;i){var att=parsed.attributes[i];if(!Selectors.Filters.byAttribute(item,att.name,att.operator,att.value))return false}}if(parsed.pseudos){for(i=parsed.pseudos.length;i--;i){var psd=parsed.pseudos[i];if(!Selectors.Filters.byPseudo(item,psd.parser,psd.argument,local))return false}}return true},getByTagAndID:function(ctx,tag,id){if(id){var item=(ctx.getElementById)?ctx.getElementById(id,true):Element.getElementById(ctx,id,true);return(item&&Selectors.Filters.byTag(item,tag))?[item]:[]}else{return ctx.getElementsByTagName(tag)}},search:function(self,expression,local){var splitters=[];var selectors=expression.trim().replace(Selectors.RegExps.splitter,function(m0,m1,m2){splitters.push(m1);return':)'+m2}).split(':)');var items,filtered,item;for(var i=0,l=selectors.length;i':function(found,self,tag,id,uniques){var children=Selectors.Utils.getByTagAndID(self,tag,id);for(var i=0,l=children.length;iindex)return false}return(count==index)},even:function(argument,local){return Selectors.Pseudo['nth-child'].call(this,'2n+1',local)},odd:function(argument,local){return Selectors.Pseudo['nth-child'].call(this,'2n',local)},selected:function(){return this.selected},enabled:function(){return(this.disabled===false)}});Element.Events.domready={onAdd:function(fn){if(Browser.loaded)fn.call(this)}};(function(){var domready=function(){if(Browser.loaded)return;Browser.loaded=true;window.fireEvent('domready');document.fireEvent('domready')};if(Browser.Engine.trident){var temp=document.createElement('div');(function(){($try(function(){temp.doScroll();return document.id(temp).inject(document.body).set('html','temp').dispose()}))?domready():arguments.callee.delay(50)})()}else if(Browser.Engine.webkit&&Browser.Engine.version<525){(function(){(['loaded','complete'].contains(document.readyState))?domready():arguments.callee.delay(50)})()}else{window.addEvent('load',domready);document.addEvent('DOMContentLoaded',domready)}})();var JSON=new Hash({$specialChars:{'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},$replaceChars:function(chr){return JSON.$specialChars[chr]||'\\u00'+Math.floor(chr.charCodeAt()/16).toString(16)+(chr.charCodeAt()%16).toString(16)},encode:function(obj){switch($type(obj)){case'string':return'"'+obj.replace(/[\x00-\x1f\\"]/g,JSON.$replaceChars)+'"';case'array':return'['+String(obj.map(JSON.encode).clean())+']';case'object':case'hash':var string=[];Hash.each(obj,function(value,key){var json=JSON.encode(value);if(json)string.push(JSON.encode(key)+':'+json)});return'{'+string+'}';case'number':case'boolean':return String(obj);case false:return'null'}return null},decode:function(string,secure){if($type(string)!='string'||!string.length)return null;if(secure&&!(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(string.replace(/\\./g,'@').replace(/"[^"\\\n\r]*"/g,'')))return null;return eval('('+string+')')}});Native.implement([Hash,Array,String,Number],{toJSON:function(){return JSON.encode(this)}});var Cookie=new Class({Implements:Options,options:{path:false,domain:false,duration:false,secure:false,document:document},initialize:function(key,options){this.key=key;this.setOptions(options)},write:function(value){value=encodeURIComponent(value);if(this.options.domain)value+='; domain='+this.options.domain;if(this.options.path)value+='; path='+this.options.path;if(this.options.duration){var date=new Date();date.setTime(date.getTime()+this.options.duration*24*60*60*1000);value+='; expires='+date.toGMTString()}if(this.options.secure)value+='; secure';this.options.document.cookie=this.key+'='+value;return this},read:function(){var value=this.options.document.cookie.match('(?:^|;)\\s*'+this.key.escapeRegExp()+'=([^;]*)');return(value)?decodeURIComponent(value[1]):null},dispose:function(){new Cookie(this.key,$merge(this.options,{duration:-1})).write('');return this}});Cookie.write=function(key,value,options){return new Cookie(key,options).write(value)};Cookie.read=function(key){return new Cookie(key).read()};Cookie.dispose=function(key,options){return new Cookie(key,options).dispose()};var Swiff=new Class({Implements:[Options],options:{id:null,height:1,width:1,container:null,properties:{},params:{quality:'high',allowScriptAccess:'always',wMode:'transparent',swLiveConnect:true},callBacks:{},vars:{}},toElement:function(){return this.object},initialize:function(path,options){this.instance='Swiff_'+$time();this.setOptions(options);options=this.options;var id=this.id=options.id||this.instance;var container=document.id(options.container);Swiff.CallBacks[this.instance]={};var params=options.params,vars=options.vars,callBacks=options.callBacks;var properties=$extend({height:options.height,width:options.width},options.properties);var self=this;for(var callBack in callBacks){Swiff.CallBacks[this.instance][callBack]=(function(option){return function(){return option.apply(self.object,arguments)}})(callBacks[callBack]);vars[callBack]='Swiff.CallBacks.'+this.instance+'.'+callBack}params.flashVars=Hash.toQueryString(vars);if(Browser.Engine.trident){properties.classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';params.movie=path}else{properties.type='application/x-shockwave-flash';properties.data=path}var build=''}build+='';this.object=((container)?container.empty():new Element('div')).set('html',build).firstChild},replaces:function(element){element=document.id(element,true);element.parentNode.replaceChild(this.toElement(),element);return this},inject:function(element){document.id(element,true).appendChild(this.toElement());return this},remote:function(){return Swiff.remote.apply(Swiff,[this.toElement()].extend(arguments))}});Swiff.CallBacks={};Swiff.remote=function(obj,fn){var rs=obj.CallFunction(''+__flash__argumentsToXML(arguments,2)+'');return eval(rs)};var Fx=new Class({Implements:[Chain,Events,Options],options:{fps:50,unit:false,duration:500,link:'ignore'},initialize:function(options){this.subject=this.subject||this;this.setOptions(options);this.options.duration=Fx.Durations[this.options.duration]||this.options.duration.toInt();var wait=this.options.wait;if(wait===false)this.options.link='cancel'},getTransition:function(){return function(p){return-(Math.cos(Math.PI*p)-1)/2}},step:function(){var time=$time();if(time=(7-4*a)/11){value=b*b-Math.pow((11-6*a-11*p)/4,2);break}}return value},Elastic:function(p,x){return Math.pow(2,10*--p)*Math.cos(20*p*Math.PI*(x[0]||1)/3)}});['Quad','Cubic','Quart','Quint'].each(function(transition,i){Fx.Transitions[transition]=new Fx.Transition(function(p){return Math.pow(p,[i+2])})});var Request=new Class({Implements:[Chain,Events,Options],options:{url:'',data:'',headers:{'X-Requested-With':'XMLHttpRequest','Accept':'text/javascript, text/html, application/xml, text/xml, */*'},async:true,format:false,method:'post',link:'ignore',isSuccess:null,emulation:true,urlEncoded:true,encoding:'utf-8',evalScripts:false,evalResponse:false,noCache:false},initialize:function(options){this.xhr=new Browser.Request();this.setOptions(options);this.options.isSuccess=this.options.isSuccess||this.isSuccess;this.headers=new Hash(this.options.headers)},onStateChange:function(){if(this.xhr.readyState!=4||!this.running)return;this.running=false;this.status=0;$try(function(){this.status=this.xhr.status}.bind(this));this.xhr.onreadystatechange=$empty;if(this.options.isSuccess.call(this,this.status)){this.response={text:this.xhr.responseText,xml:this.xhr.responseXML};this.success(this.response.text,this.response.xml)}else{this.response={text:null,xml:null};this.failure()}},isSuccess:function(){return((this.status>=200)&&(this.status<300))},processScripts:function(text){if(this.options.evalResponse||(/(ecma|java)script/).test(this.getHeader('Content-type')))return $exec(text);return text.stripScripts(this.options.evalScripts)},success:function(text,xml){this.onSuccess(this.processScripts(text),xml)},onSuccess:function(){this.fireEvent('complete',arguments).fireEvent('success',arguments).callChain()},failure:function(){this.onFailure()},onFailure:function(){this.fireEvent('complete').fireEvent('failure',this.xhr)},setHeader:function(name,value){this.headers.set(name,value);return this},getHeader:function(name){return $try(function(){return this.xhr.getResponseHeader(name)}.bind(this))},check:function(){if(!this.running)return true;switch(this.options.link){case'cancel':this.cancel();return true;case'chain':this.chain(this.caller.bind(this,arguments));return false}return false},send:function(options){if(!this.check(options))return this;this.running=true;var type=$type(options);if(type=='string'||type=='element')options={data:options};var old=this.options;options=$extend({data:old.data,url:old.url,method:old.method},options);var data=options.data,url=options.url,method=options.method.toLowerCase();switch($type(data)){case'element':data=document.id(data).toQueryString();break;case'object':case'hash':data=Hash.toQueryString(data)}if(this.options.format){var format='format='+this.options.format;data=(data)?format+'&'+data:format}if(this.options.emulation&&!['get','post'].contains(method)){var _method='_method='+method;data=(data)?_method+'&'+data:_method;method='post'}if(this.options.urlEncoded&&method=='post'){var encoding=(this.options.encoding)?'; charset='+this.options.encoding:'';this.headers.set('Content-type','application/x-www-form-urlencoded'+encoding)}if(this.options.noCache){var noCache='noCache='+new Date().getTime();data=(data)?noCache+'&'+data:noCache}var trimPosition=url.lastIndexOf('/');if(trimPosition>-1&&(trimPosition=url.indexOf('#'))>-1)url=url.substr(0,trimPosition);if(data&&method=='get'){url=url+(url.contains('?')?'&':'?')+data;data=null}this.xhr.open(method.toUpperCase(),url,this.options.async);this.xhr.onreadystatechange=this.onStateChange.bind(this);this.headers.each(function(value,key){try{this.xhr.setRequestHeader(key,value)}catch(e){this.fireEvent('exception',[key,value])}},this);this.fireEvent('request');this.xhr.send(data);if(!this.options.async)this.onStateChange();return this},cancel:function(){if(!this.running)return this;this.running=false;this.xhr.abort();this.xhr.onreadystatechange=$empty;this.xhr=new Browser.Request();this.fireEvent('cancel');return this}});(function(){var methods={};['get','post','put','delete','GET','POST','PUT','DELETE'].each(function(method){methods[method]=function(){var params=Array.link(arguments,{url:String.type,data:$defined});return this.send($extend(params,{method:method}))}});Request.implement(methods)})();Element.Properties.send={set:function(options){var send=this.retrieve('send');if(send)send.cancel();return this.eliminate('send').store('send:options',$extend({data:this,link:'cancel',method:this.get('method')||'post',url:this.get('action')},options))},get:function(options){if(options||!this.retrieve('send')){if(options||!this.retrieve('send:options'))this.set('send',options);this.store('send',new Request(this.retrieve('send:options')))}return this.retrieve('send')}};Element.implement({send:function(url){var sender=this.get('send');sender.send({data:this,url:url||sender.options.url});return this}});Request.HTML=new Class({Extends:Request,options:{update:false,append:false,evalScripts:true,filter:false},processHTML:function(text){var match=text.match(/]*>([\s\S]*?)<\/body>/i);text=(match)?match[1]:text;var container=new Element('div');return $try(function(){var root=''+text+'',doc;if(Browser.Engine.trident){doc=new ActiveXObject('Microsoft.XMLDOM');doc.async=false;doc.loadXML(root)}else{doc=new DOMParser().parseFromString(root,'text/xml')}root=doc.getElementsByTagName('root')[0];if(!root)return null;for(var i=0,k=root.childNodes.length;idiff.abs())return 0;return((d.get('time')-this.get('time'))/Date.units[resolution]()).round()}return null},getLastDayOfMonth:function(){return Date.daysInMonth(this.get('mo'),this.get('year'))},getDayOfYear:function(){return(Date.UTC(this.get('year'),this.get('mo'),this.get('date')+1)-Date.UTC(this.get('year'),0,1))/Date.units.day()},getWeek:function(){return(this.get('dayofyear')/7).ceil()},getOrdinal:function(day){return Date.getMsg('ordinal',day||this.get('date'))},getTimezone:function(){return this.toString().replace(/^.*? ([A-Z]{3}).[0-9]{4}.*$/,'$1').replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/,'$1$2$3')},getGMTOffset:function(){var off=this.get('timezoneOffset');return((off>0)?'-':'+')+zeroize((off.abs()/60).floor(),2)+zeroize(off%60,2)},setAMPM:function(ampm){ampm=ampm.toUpperCase();var hr=this.get('hr');if(hr>11&&m=='AM')return this.decrement('hour',12);else if(hr<12&&m=='PM')return this.increment('hour',12);return this},getAMPM:function(){return(this.get('hr')<12)?'AM':'PM'},parse:function(str){this.set('time',Date.parse(str));return this},isValid:function(date){return!!(date||this).valueOf()},format:function(f){if(!this.isValid())return'invalid date';f=f||'%x %X';f=formats[f.toLowerCase()]||f;var d=this;return f.replace(/%([a-z%])/gi,function($1,$2){switch($2){case'a':return Date.getMsg('days')[d.get('day')].substr(0,3);case'A':return Date.getMsg('days')[d.get('day')];case'b':return Date.getMsg('months')[d.get('month')].substr(0,3);case'B':return Date.getMsg('months')[d.get('month')];case'c':return d.toString();case'd':return zeroize(d.get('date'),2);case'H':return zeroize(d.get('hr'),2);case'I':return((d.get('hr')%12)||12);case'j':return zeroize(d.get('dayofyear'),3);case'm':return zeroize((d.get('mo')+1),2);case'M':return zeroize(d.get('min'),2);case'o':return d.get('ordinal');case'p':return Date.getMsg(d.get('ampm'));case'S':return zeroize(d.get('seconds'),2);case'U':return zeroize(d.get('week'),2);case'w':return d.get('day');case'x':return d.format(Date.getMsg('shortDate'));case'X':return d.format(Date.getMsg('shortTime'));case'y':return d.get('year').toString().substr(2);case'Y':return d.get('year');case'T':return d.get('GMTOffset');case'Z':return d.get('Timezone')}return $2})},toISOString:function(){return this.format('iso8601')}});Date.alias('diff','compare');Date.alias('format','strftime');var formats={db:'%Y-%m-%d %H:%M:%S',compact:'%Y%m%dT%H%M%S',iso8601:'%Y-%m-%dT%H:%M:%S%T',rfc822:'%a, %d %b %Y %H:%M:%S %Z','short':'%d %b %H:%M','long':'%B %d, %Y %H:%M'};var nativeParse=Date.parse;var parseWord=function(type,word,num){var ret=-1;var translated=Date.getMsg(type+'s');switch($type(word)){case'object':ret=translated[word.get(type)];break;case'number':ret=translated[month-1];if(!ret)throw new Error('Invalid '+type+' index: '+index);break;case'string':var match=translated.filter(function(name){return this.test(name)},new RegExp('^'+word,'i'));if(!match.length)throw new Error('Invalid '+type+' string');if(match.length>1)throw new Error('Ambiguous '+type);ret=match[0]}return(num)?translated.indexOf(ret):ret};Date.extend({getMsg:function(key,args){return MooTools.lang.get('Date',key,args)},units:{ms:$lambda(1),second:$lambda(1000),minute:$lambda(60000),hour:$lambda(3600000),day:$lambda(86400000),week:$lambda(608400000),month:function(month,year){var d=new Date;return Date.daysInMonth($pick(month,d.get('mo')),$pick(year,d.get('year')))*86400000},year:function(year){year=year||new Date().get('year');return Date.isLeapYear(year)?31622400000:31536000000}},daysInMonth:function(month,year){return[31,Date.isLeapYear(year)?29:28,31,30,31,30,31,31,30,31,30,31][month]},isLeapYear:function(year){return new Date(year,1,29).get('date')==29},parse:function(from){var t=$type(from);if(t=='number')return new Date(from);if(t!='string')return from;from=from.clean();if(!from.length)return null;var parsed;Date.parsePatterns.some(function(pattern){var r=pattern.re.exec(from);return(r)?(parsed=pattern.handler(r)):false});return parsed||new Date(nativeParse(from))},parseDay:function(day,num){return parseWord('day',day,num)},parseMonth:function(month,num){return parseWord('month',month,num)},parseUTC:function(value){var localDate=new Date(value);var utcSeconds=Date.UTC(localDate.get('year'),localDate.get('mo'),localDate.get('date'),localDate.get('hr'),localDate.get('min'),localDate.get('sec'));return new Date(utcSeconds)},orderIndex:function(unit){return Date.getMsg('dateOrder').indexOf(unit)+1},defineFormat:function(name,format){formats[name]=format},defineFormats:function(formats){for(var name in formats)Date.defineFormat(name,formats[f])},parsePatterns:[],defineParser:function(pattern){Date.parsePatterns.push(pattern.re&&pattern.handler?pattern:build(pattern))},defineParsers:function(){Array.flatten(arguments).each(Date.defineParser)},define2DigitYearStart:function(year){yr_start=year%100;yr_base=year-yr_start}});var yr_base=1900;var yr_start=70;var replacers=function(key){switch(key){case'x':return(Date.orderIndex('month')==1)?'%m[.-/]%d([.-/]%y)?':'%d[.-/]%m([.-/]%y)?';case'X':return'%H([.:]%M)?([.:]%S([.:]%s)?)?\\s?%p?\\s?%T?';case'o':return'[^\\d\\s]*'}return null};var keys={a:/[a-z]{3,}/,d:/[0-2]?[0-9]|3[01]/,H:/[01]?[0-9]|2[0-3]/,I:/0?[1-9]|1[0-2]/,M:/[0-5]?\d/,s:/\d+/,p:/[ap]\.?m\.?/,y:/\d{2}|\d{4}/,Y:/\d{4}/,T:/Z|[+-]\d{2}(?::?\d{2})?/};keys.B=keys.b=keys.A=keys.a;keys.m=keys.I;keys.S=keys.M;var lang;var build=function(format){if(!lang)return{format:format};var parsed=[null];var re=(format.source||format).replace(/%([a-z])/gi,function($1,$2){return replacers($2)||$1}).replace(/\((?!\?)/g,'(?:').replace(/ (?!\?|\*)/g,',? ').replace(/%([a-z%])/gi,function($1,$2){var p=keys[$2];if(!p)return $2;parsed.push($2);return'('+p.source+')'});return{format:format,re:new RegExp('^'+re+'$','i'),handler:function(bits){var date=new Date().clearTime();for(var i=1;i=length)return this;str=str||' ';var pad=str.repeat(length-this.length).substr(0,length-this.length);if(!dir||dir=='right')return this+pad;if(dir=='left')return pad+this;return pad.substr(0,(pad.length/2).floor())+this+pad.substr(0,(pad.length/2).ceil())},stripTags:function(){return this.replace(/<\/?[^>]+>/gi,'')},tidy:function(){var txt=this.toString();$each(tidymap,function(value,key){txt=txt.replace(new RegExp(key,'g'),value)});return txt}})})();String.implement({parseQueryString:function(){var vars=this.split(/[&;]/),res={};if(vars.length)vars.each(function(val){var index=val.indexOf('='),keys=index<0?['']:val.substr(0,index).match(/[^\]\[]+/g),value=decodeURIComponent(val.substr(index+1)),obj=res;keys.each(function(key,i){var current=obj[key];if(i0)result.pop();else if(dir!='.')result.push(dir)});return result.join('/')+'/'},combine:function(bits){return bits.value||bits.scheme+'://'+(bits.user?bits.user+(bits.password?':'+bits.password:'')+'@':'')+(bits.host||'')+(bits.port&&bits.port!=this.schemes[bits.scheme]?':'+bits.port:'')+(bits.directory||'/')+(bits.file||'')+(bits.query?'?'+bits.query:'')+(bits.fragment?'#'+bits.fragment:'')},set:function(part,value,base){if(part=='value'){var scheme=value.match(URI.regs.scheme);if(scheme)scheme=scheme[1];if(scheme&&!$defined(this.schemes[scheme.toLowerCase()]))this.parsed={scheme:scheme,value:value};else this.parsed=this.parse(value,(base||this).parsed)||(scheme?{scheme:scheme,value:value}:{value:value})}else if(part=='data'){this.setData(value)}else{this.parsed[part]=value}return this},get:function(part,base){switch(part){case'value':return this.combine(this.parsed,base?base.parsed:false);case'data':return this.getData()}return this.parsed[part]||undefined},go:function(){document.location.href=this.toString()},toURI:function(){return this},getData:function(key,part){var qs=this.get(part||'query');if(!$chk(qs))return key?null:{};var obj=qs.parseQueryString();return key?obj[key]:obj},setData:function(values,merge,part){if($type(arguments[0])=='string'){values=this.getData();values[arguments[0]]=arguments[1]}else if(merge){values=$merge(this.getData(),values)}return this.set(part||'query',Hash.toQueryString(values))},clearData:function(part){return this.set(part||'query','')}});['toString','valueOf'].each(function(method){URI.prototype[method]=function(){return this.get('value')}});URI.regs={endSlash:/\/$/,scheme:/^(\w+):/,directoryDot:/\.\/|\.$/};URI.base=new URI($$('base[href]').getLast(),{base:document.location});String.implement({toURI:function(options){return new URI(this,options)}});URI=Class.refactor(URI,{combine:function(bits,base){if(!base||bits.scheme!=base.scheme||bits.host!=base.host||bits.port!=base.port)return this.previous.apply(this,arguments);var end=bits.file+(bits.query?'?'+bits.query:'')+(bits.fragment?'#'+bits.fragment:'');if(!base.directory)return(bits.directory||(bits.file?'':'./'))+end;var baseDir=base.directory.split('/'),relDir=bits.directory.split('/'),path='',offset;var i=0;for(offset=0;offset=0||parentPositioned||options.allowNegative)?pos.x:0).toInt(),top:((pos.y>=0||parentPositioned||options.allowNegative)?pos.y:0).toInt()};if(rel.getStyle('position')=='fixed'||options.relFixedPosition){var winScroll=window.getScroll();pos.top=pos.top.toInt()+winScroll.y;pos.left=pos.left.toInt()+winScroll.x}if(options.returnPos)return pos;else this.setStyles(pos);return this}})})();Element.implement({isDisplayed:function(){return this.getStyle('display')!='none'},toggle:function(){return this[this.isDisplayed()?'hide':'show']()},hide:function(){var d;try{if('none'!=this.getStyle('display'))d=this.getStyle('display')}catch(e){}return this.store('originalDisplay',d||'block').setStyle('display','none')},show:function(display){return this.setStyle('display',display||this.retrieve('originalDisplay')||'block')},swapClass:function(remove,add){return this.removeClass(remove).addClass(add)}});var OverText=new Class({Implements:[Options,Events,Class.Occlude],Binds:['reposition','assert','focus'],options:{element:'label',positionOptions:{position:'upperLeft',edge:'upperLeft',offset:{x:4,y:2}},poll:false,pollInterval:250},property:'OverText',initialize:function(element,options){this.element=document.id(element);if(this.occlude())return this.occluded;this.setOptions(options);this.attach(this.element);OverText.instances.push(this);if(this.options.poll)this.poll();return this},toElement:function(){return this.element},attach:function(){var val=this.options.textOverride||this.element.get('alt')||this.element.get('title');if(!val)return;this.text=new Element(this.options.element,{'class':'overTxtLabel',styles:{lineHeight:'normal',position:'absolute'},html:val,events:{click:this.hide.pass(true,this)}}).inject(this.element,'after');if(this.options.element=='label')this.text.set('for',this.element.get('id'));this.element.addEvents({focus:this.focus,blur:this.assert,change:this.assert}).store('OverTextDiv',this.text);window.addEvent('resize',this.reposition.bind(this));this.assert(true);this.reposition()},startPolling:function(){this.pollingPaused=false;return this.poll()},poll:function(stop){if(this.poller&&!stop)return this;var test=function(){if(!this.pollingPaused)this.assert(true)}.bind(this);if(stop)$clear(this.poller);else this.poller=test.periodical(this.options.pollInterval,this);return this},stopPolling:function(){this.pollingPaused=true;return this.poll(true)},focus:function(){if(!this.text.isDisplayed()||this.element.get('disabled'))return;this.hide()},hide:function(suppressFocus){if(this.text.isDisplayed()&&!this.element.get('disabled')){this.text.hide();this.fireEvent('textHide',[this.text,this.element]);this.pollingPaused=true;try{if(!suppressFocus)this.element.fireEvent('focus').focus()}catch(e){}}return this},show:function(){if(!this.text.isDisplayed()){this.text.show();this.reposition();this.fireEvent('textShow',[this.text,this.element]);this.pollingPaused=false}return this},assert:function(suppressFocus){this[this.test()?'show':'hide'](suppressFocus)},test:function(){var v=this.element.get('value');return!v},reposition:function(){this.assert(true);if(!this.element.getParent()||!this.element.offsetHeight)return this.stopPolling().hide();if(this.test())this.text.position($merge(this.options.positionOptions,{relativeTo:this.element}));return this}});OverText.instances=[];OverText.update=function(){return OverText.instances.map(function(ot){if(ot.element&&ot.text)return ot.reposition();return null})};if(window.Fx&&Fx.Reveal){Fx.Reveal.implement({hideInputs:Browser.Engine.trident?'select, input, textarea, object, embed, .overTxtLabel':false})}Fx.Elements=new Class({Extends:Fx.CSS,initialize:function(elements,options){this.elements=this.subject=$$(elements);this.parent(options)},compute:function(from,to,delta){var now={};for(var i in from){var iFrom=from[i],iTo=to[i],iNow=now[i]={};for(var p in iFrom)iNow[p]=this.parent(iFrom[p],iTo[p],delta)}return now},set:function(now){for(var i in now){var iNow=now[i];for(var p in iNow)this.render(this.elements[i],p,iNow[p],this.options.unit)}return this},start:function(obj){if(!this.check(obj))return this;var from={},to={};for(var i in obj){var iProps=obj[i],iFrom=from[i]={},iTo=to[i]={};for(var p in iProps){var parsed=this.prepare(this.elements[i],p,iProps[p]);iFrom[p]=parsed.from;iTo[p]=parsed.to}}return this.parent(from,to)}});var Accordion=Fx.Accordion=new Class({Extends:Fx.Elements,options:{display:0,show:false,height:true,width:false,opacity:true,fixedHeight:false,fixedWidth:false,wait:false,alwaysHide:false,trigger:'click',initialDisplayFx:true},initialize:function(){var params=Array.link(arguments,{'container':Element.type,'options':Object.type,'togglers':$defined,'elements':$defined});this.parent(params.elements,params.options);this.togglers=$$(params.togglers);this.container=document.id(params.container);this.previous=-1;if(this.options.alwaysHide)this.options.wait=true;if($chk(this.options.show)){this.options.display=false;this.previous=this.options.show}if(this.options.start){this.options.display=false;this.options.show=false}this.effects={};if(this.options.opacity)this.effects.opacity='fullOpacity';if(this.options.width)this.effects.width=this.options.fixedWidth?'fullWidth':'offsetWidth';if(this.options.height)this.effects.height=this.options.fixedHeight?'fullHeight':'scrollHeight';for(var i=0,l=this.togglers.length;i0));this.fireEvent(hide?'background':'active',[this.togglers[i],el]);for(var fx in this.effects)obj[i][fx]=hide?0:el[this.effects[fx]]},this);return useFx?this.start(obj):this.set(obj)}});Fx.Move=new Class({Extends:Fx.Morph,options:{relativeTo:document.body,position:'center',edge:false,offset:{x:0,y:0}},start:function(destination){return this.parent(this.element.position($merge(this.options,destination,{returnPos:true})))}});Element.Properties.move={set:function(options){var morph=this.retrieve('move');if(morph)morph.cancel();return this.eliminate('move').store('move:options',$extend({link:'cancel'},options))},get:function(options){if(options||!this.retrieve('move')){if(options||!this.retrieve('move:options'))this.set('move',options);this.store('move',new Fx.Move(this,this.retrieve('move:options')))}return this.retrieve('move')}};Element.implement({move:function(options){this.get('move').start(options);return this}});Fx.Reveal=new Class({Extends:Fx.Morph,options:{styles:['padding','border','margin'],transitionOpacity:!Browser.Engine.trident4,mode:'vertical',display:'block',hideInputs:Browser.Engine.trident?'select, input, textarea, object, embed':false},dissolve:function(){try{if(!this.hiding&&!this.showing){if(this.element.getStyle('display')!='none'){this.hiding=true;this.showing=false;this.hidden=true;var startStyles=this.element.getComputedSize({styles:this.options.styles,mode:this.options.mode});var setToAuto=(this.element.style.height===''||this.element.style.height=='auto');this.element.setStyle('display','block');if(this.options.transitionOpacity)startStyles.opacity=1;var zero={};$each(startStyles,function(style,name){zero[name]=[style,0]},this);var overflowBefore=this.element.getStyle('overflow');this.element.setStyle('overflow','hidden');var hideThese=this.options.hideInputs?this.element.getElements(this.options.hideInputs):null;this.$chain.unshift(function(){if(this.hidden){this.hiding=false;$each(startStyles,function(style,name){startStyles[name]=style},this);this.element.setStyles($merge({display:'none',overflow:overflowBefore},startStyles));if(setToAuto){if(['vertical','both'].contains(this.options.mode))this.element.style.height='';if(['width','both'].contains(this.options.mode))this.element.style.width=''}if(hideThese)hideThese.setStyle('visibility','visible')}this.fireEvent('hide',this.element);this.callChain()}.bind(this));if(hideThese)hideThese.setStyle('visibility','hidden');this.start(zero)}else{this.callChain.delay(10,this);this.fireEvent('complete',this.element);this.fireEvent('hide',this.element)}}else if(this.options.link=='chain'){this.chain(this.dissolve.bind(this))}else if(this.options.link=='cancel'&&!this.hiding){this.cancel();this.dissolve()}}catch(e){this.hiding=false;this.element.setStyle('display','none');this.callChain.delay(10,this);this.fireEvent('complete',this.element);this.fireEvent('hide',this.element)}return this},reveal:function(){try{if(!this.showing&&!this.hiding){if(this.element.getStyle('display')=='none'||this.element.getStyle('visiblity')=='hidden'||this.element.getStyle('opacity')==0){this.showing=true;this.hiding=false;this.hidden=false;var setToAuto,startStyles;this.element.measure(function(){setToAuto=(this.element.style.height===''||this.element.style.height=='auto');startStyles=this.element.getComputedSize({styles:this.options.styles,mode:this.options.mode})}.bind(this));$each(startStyles,function(style,name){startStyles[name]=style});if($chk(this.options.heightOverride))startStyles.height=this.options.heightOverride.toInt();if($chk(this.options.widthOverride))startStyles.width=this.options.widthOverride.toInt();if(this.options.transitionOpacity){this.element.setStyle('opacity',0);startStyles.opacity=1}var zero={height:0,display:this.options.display};$each(startStyles,function(style,name){zero[name]=0});var overflowBefore=this.element.getStyle('overflow');this.element.setStyles($merge(zero,{overflow:'hidden'}));var hideThese=this.options.hideInputs?this.element.getElements(this.options.hideInputs):null;if(hideThese)hideThese.setStyle('visibility','hidden');this.start(startStyles);this.$chain.unshift(function(){this.element.setStyle('overflow',overflowBefore);if(!this.options.heightOverride&&setToAuto){if(['vertical','both'].contains(this.options.mode))this.element.style.height='';if(['width','both'].contains(this.options.mode))this.element.style.width=''}if(!this.hidden)this.showing=false;if(hideThese)hideThese.setStyle('visibility','visible');this.callChain();this.fireEvent('show',this.element)}.bind(this))}else{this.callChain();this.fireEvent('complete',this.element);this.fireEvent('show',this.element)}}else if(this.options.link=='chain'){this.chain(this.reveal.bind(this))}else if(this.options.link=='cancel'&&!this.showing){this.cancel();this.reveal()}}catch(e){this.element.setStyles({display:this.options.display,visiblity:'visible',opacity:1});this.showing=false;this.callChain.delay(10,this);this.fireEvent('complete',this.element);this.fireEvent('show',this.element)}return this},toggle:function(){if(this.element.getStyle('display')=='none'||this.element.getStyle('visiblity')=='hidden'||this.element.getStyle('opacity')==0){this.reveal()}else{this.dissolve()}return this}});Element.Properties.reveal={set:function(options){var reveal=this.retrieve('reveal');if(reveal)reveal.cancel();return this.eliminate('reveal').store('reveal:options',$extend({link:'cancel'},options))},get:function(options){if(options||!this.retrieve('reveal')){if(options||!this.retrieve('reveal:options'))this.set('reveal',options);this.store('reveal',new Fx.Reveal(this,this.retrieve('reveal:options')))}return this.retrieve('reveal')}};Element.Properties.dissolve=Element.Properties.reveal;Element.implement({reveal:function(options){this.get('reveal',options).reveal();return this},dissolve:function(options){this.get('reveal',options).dissolve();return this},nix:function(){var params=Array.link(arguments,{destroy:Boolean.type,options:Object.type});this.get('reveal',params.options).dissolve().chain(function(){this[params.destroy?'destroy':'dispose']()}.bind(this));return this},wink:function(){var params=Array.link(arguments,{duration:Number.type,options:Object.type});var reveal=this.get('reveal',params.options);reveal.reveal().chain(function(){(function(){reveal.dissolve()}).delay(params.duration||2000)})}});Fx.Scroll=new Class({Extends:Fx,options:{offset:{x:0,y:0},wheelStops:true},initialize:function(element,options){this.element=this.subject=document.id(element);this.parent(options);var cancel=this.cancel.bind(this,false);if($type(this.element)!='element')this.element=document.id(this.element.getDocument().body);var stopper=this.element;if(this.options.wheelStops){this.addEvent('start',function(){stopper.addEvent('mousewheel',cancel)},true);this.addEvent('complete',function(){stopper.removeEvent('mousewheel',cancel)},true)}},set:function(){var now=Array.flatten(arguments);this.element.scrollTo(now[0],now[1])},compute:function(from,to,delta){return[0,1].map(function(i){return Fx.compute(from[i],to[i],delta)})},start:function(x,y){if(!this.check(x,y))return this;var offsetSize=this.element.getSize(),scrollSize=this.element.getScrollSize();var scroll=this.element.getScroll(),values={x:x,y:y};for(var z in values){var max=scrollSize[z]-offsetSize[z];if($chk(values[z]))values[z]=($type(values[z])=='number')?values[z].limit(0,max):max;else values[z]=scroll[z];values[z]+=this.options.offset[z]}return this.parent([scroll.x,scroll.y],[values.x,values.y])},toTop:function(){return this.start(false,0)},toLeft:function(){return this.start(0,false)},toRight:function(){return this.start('right',false)},toBottom:function(){return this.start(false,'bottom')},toElement:function(el){var position=document.id(el).getPosition(this.element);return this.start(position.x,position.y)},scrollIntoView:function(el,axes,offset){axes=axes?$splat(axes):['x','y'];var to={};el=document.id(el);var pos=el.getPosition(this.element);var size=el.getSize();var scroll=this.element.getScroll();var containerSize=this.element.getSize();var edge={x:pos.x+size.x,y:pos.y+size.y};['x','y'].each(function(axis){if(axes.contains(axis)){if(edge[axis]>scroll[axis]+containerSize[axis])to[axis]=edge[axis]-containerSize[axis];if(pos[axis]this.elements.length)newOrder.splice(this.elements.length-1,newOrder.length-this.elements.length)}top=0;left=0;var margin=0;var next={};newOrder.each(function(item,index){var newPos={};if(vert){newPos.top=top-current[item].top-margin;top+=current[item].height}else{newPos.left=left-current[item].left;left+=current[item].width}margin=margin+current[item].margin;next[item]=newPos},this);var mapped={};$A(newOrder).sort().each(function(index){mapped[index]=next[index]});this.start(mapped);this.currentOrder=newOrder;return this},rearrangeDOM:function(newOrder){newOrder=newOrder||this.currentOrder;var parent=this.elements[0].getParent();var rearranged=[];this.elements.setStyle('opacity',0);newOrder.each(function(index){rearranged.push(this.elements[index].inject(parent).setStyles({top:0,left:0}))},this);this.elements.setStyle('opacity',1);this.elements=$$(rearranged);this.setDefaultOrder();return this},getDefaultOrder:function(){return this.elements.map(function(el,index){return index})},forward:function(){return this.sort(this.getDefaultOrder())},backward:function(){return this.sort(this.getDefaultOrder().reverse())},reverse:function(){return this.sort(this.currentOrder.reverse())},sortByElements:function(elements){return this.sort(elements.map(function(el){return this.elements.indexOf(el)},this))},swap:function(one,two){if($type(one)=='element')one=this.elements.indexOf(one);if($type(two)=='element')two=this.elements.indexOf(two);var newOrder=$A(this.currentOrder);newOrder[this.currentOrder.indexOf(one)]=two;newOrder[this.currentOrder.indexOf(two)]=one;this.sort(newOrder)}});var Drag=new Class({Implements:[Events,Options],options:{snap:6,unit:'px',grid:false,style:true,limit:false,handle:false,invert:false,preventDefault:false,modifiers:{x:'left',y:'top'}},initialize:function(){var params=Array.link(arguments,{'options':Object.type,'element':$defined});this.element=document.id(params.element);this.document=this.element.getDocument();this.setOptions(params.options||{});var htype=$type(this.options.handle);this.handles=((htype=='array'||htype=='collection')?$$(this.options.handle):document.id(this.options.handle))||this.element;this.mouse={'now':{},'pos':{}};this.value={'start':{},'now':{}};this.selection=(Browser.Engine.trident)?'selectstart':'mousedown';this.bound={start:this.start.bind(this),check:this.check.bind(this),drag:this.drag.bind(this),stop:this.stop.bind(this),cancel:this.cancel.bind(this),eventStop:$lambda(false)};this.attach()},attach:function(){this.handles.addEvent('mousedown',this.bound.start);return this},detach:function(){this.handles.removeEvent('mousedown',this.bound.start);return this},start:function(event){if(this.options.preventDefault)event.preventDefault();this.mouse.start=event.page;this.fireEvent('beforeStart',this.element);var limit=this.options.limit;this.limit={x:[],y:[]};for(var z in this.options.modifiers){if(!this.options.modifiers[z])continue;if(this.options.style)this.value.now[z]=this.element.getStyle(this.options.modifiers[z]).toInt();else this.value.now[z]=this.element[this.options.modifiers[z]];if(this.options.invert)this.value.now[z]*=-1;this.mouse.pos[z]=event.page[z]-this.value.now[z];if(limit&&limit[z]){for(var i=2;i--;i){if($chk(limit[z][i]))this.limit[z][i]=$lambda(limit[z][i])()}}}if($type(this.options.grid)=='number')this.options.grid={x:this.options.grid,y:this.options.grid};this.document.addEvents({mousemove:this.bound.check,mouseup:this.bound.cancel});this.document.addEvent(this.selection,this.bound.eventStop)},check:function(event){if(this.options.preventDefault)event.preventDefault();var distance=Math.round(Math.sqrt(Math.pow(event.page.x-this.mouse.start.x,2)+Math.pow(event.page.y-this.mouse.start.y,2)));if(distance>this.options.snap){this.cancel();this.document.addEvents({mousemove:this.bound.drag,mouseup:this.bound.stop});this.fireEvent('start',[this.element,event]).fireEvent('snap',this.element)}},drag:function(event){if(this.options.preventDefault)event.preventDefault();this.mouse.now=event.page;for(var z in this.options.modifiers){if(!this.options.modifiers[z])continue;this.value.now[z]=this.mouse.now[z]-this.mouse.pos[z];if(this.options.invert)this.value.now[z]*=-1;if(this.options.limit&&this.limit[z]){if($chk(this.limit[z][1])&&(this.value.now[z]>this.limit[z][1])){this.value.now[z]=this.limit[z][1]}else if($chk(this.limit[z][0])&&(this.value.now[z]el.left&&now.xel.top)},checkDroppables:function(){var overed=this.droppables.filter(this.checkAgainst,this).getLast();if(this.overed!=overed){if(this.overed)this.fireEvent('leave',[this.element,this.overed]);if(overed)this.fireEvent('enter',[this.element,overed]);this.overed=overed}},drag:function(event){this.parent(event);if(this.options.checkDroppables&&this.droppables.length)this.checkDroppables()},stop:function(event){this.checkDroppables();this.fireEvent('drop',[this.element,this.overed,event]);this.overed=null;return this.parent(event)}});Element.implement({makeDraggable:function(options){var drag=new Drag.Move(this,options);this.store('dragger',drag);return drag}});var Slider=new Class({Implements:[Events,Options],Binds:['clickedElement','draggedKnob','scrolledElement'],options:{onTick:function(position){if(this.options.snap)position=this.toPosition(this.step);this.knob.setStyle(this.property,position)},snap:false,offset:0,range:false,wheel:false,steps:100,mode:'horizontal'},initialize:function(element,knob,options){this.setOptions(options);this.element=document.id(element);this.knob=document.id(knob);this.previousChange=this.previousEnd=this.step=-1;var offset,limit={},modifiers={'x':false,'y':false};switch(this.options.mode){case'vertical':this.axis='y';this.property='top';offset='offsetHeight';break;case'horizontal':this.axis='x';this.property='left';offset='offsetWidth'}this.half=this.knob[offset]/2;this.full=this.element[offset]-this.knob[offset]+(this.options.offset*2);this.min=$chk(this.options.range[0])?this.options.range[0]:0;this.max=$chk(this.options.range[1])?this.options.range[1]:this.options.steps;this.range=this.max-this.min;this.steps=this.options.steps||this.full;this.stepSize=Math.abs(this.range)/this.steps;this.stepWidth=this.stepSize*this.full/Math.abs(this.range);this.knob.setStyle('position','relative').setStyle(this.property,-this.options.offset);modifiers[this.axis]=this.property;limit[this.axis]=[-this.options.offset,this.full-this.options.offset];this.bound={clickedElement:this.clickedElement.bind(this),scrolledElement:this.scrolledElement.bindWithEvent(this),draggedKnob:this.draggedKnob.bind(this)};var dragOptions={snap:0,limit:limit,modifiers:modifiers,onDrag:this.bound.draggedKnob,onStart:this.bound.draggedKnob,onBeforeStart:(function(){this.isDragging=true}).bind(this),onComplete:function(){this.isDragging=false;this.draggedKnob();this.end()}.bind(this)};if(this.options.snap){dragOptions.grid=Math.ceil(this.stepWidth);dragOptions.limit[this.axis][1]=this.full}this.drag=new Drag(this.knob,dragOptions);this.attach()},attach:function(){this.element.addEvent('mousedown',this.bound.clickedElement);if(this.options.wheel)this.element.addEvent('mousewheel',this.bound.scrolledElement);this.drag.attach();return this},detach:function(){this.element.removeEvent('mousedown',this.bound.clickedElement);this.element.removeEvent('mousewheel',this.bound.scrolledElement);this.drag.detach();return this},set:function(step){if(!((this.range>0)^(step0)^(step>this.max)))step=this.max;this.step=Math.round(step);this.checkStep();this.fireEvent('tick',this.toPosition(this.step));this.end();return this},clickedElement:function(event){if(this.isDragging||event.target==this.knob)return;var dir=this.range<0?-1:1;var position=event.page[this.axis]-this.element.getPosition()[this.axis]-this.half;position=position.limit(-this.options.offset,this.full-this.options.offset);this.step=Math.round(this.min+dir*this.toStep(position));this.checkStep();this.fireEvent('tick',position);this.end()},scrolledElement:function(event){var mode=(this.options.mode=='horizontal')?(event.wheel<0):(event.wheel>0);this.set(mode?this.step-this.stepSize:this.step+this.stepSize);event.stop()},draggedKnob:function(){var dir=this.range<0?-1:1;var position=this.drag.value.now[this.axis];position=position.limit(-this.options.offset,this.full-this.options.offset);this.step=Math.round(this.min+dir*this.toStep(position));this.checkStep()},checkStep:function(){if(this.previousChange!=this.step){this.previousChange=this.step;this.fireEvent('change',this.step)}},end:function(){if(this.previousEnd!==this.step){this.previousEnd=this.step;this.fireEvent('complete',this.step+'')}},toStep:function(position){var step=(position+this.options.offset)*this.stepSize/this.full*this.steps;return this.options.steps?Math.round(step-=step%this.stepSize):step},toPosition:function(step){return(this.full*Math.abs(this.min-step))/(this.steps*this.stepSize)-this.options.offset}});var Sortables=new Class({Implements:[Events,Options],options:{snap:4,opacity:1,clone:false,revert:false,handle:false,constrain:false},initialize:function(lists,options){this.setOptions(options);this.elements=[];this.lists=[];this.idle=true;this.addLists($$(document.id(lists)||lists));if(!this.options.clone)this.options.revert=false;if(this.options.revert)this.effect=new Fx.Morph(null,$merge({duration:250,link:'cancel'},this.options.revert))},attach:function(){this.addLists(this.lists);return this},detach:function(){this.lists=this.removeLists(this.lists);return this},addItems:function(){Array.flatten(arguments).each(function(element){this.elements.push(element);var start=element.retrieve('sortables:start',this.start.bindWithEvent(this,element));(this.options.handle?element.getElement(this.options.handle)||element:element).addEvent('mousedown',start)},this);return this},addLists:function(){Array.flatten(arguments).each(function(list){this.lists.push(list);this.addItems(list.getChildren())},this);return this},removeItems:function(){return $$(Array.flatten(arguments).map(function(element){this.elements.erase(element);var start=element.retrieve('sortables:start');(this.options.handle?element.getElement(this.options.handle)||element:element).removeEvent('mousedown',start);return element},this))},removeLists:function(){return $$(Array.flatten(arguments).map(function(list){this.lists.erase(list);this.removeItems(list.getChildren());return list},this))},getClone:function(event,element){if(!this.options.clone)return new Element('div').inject(document.body);if($type(this.options.clone)=='function')return this.options.clone.call(this,event,element,this.list);return element.clone(true).setStyles({margin:'0px',position:'absolute',visibility:'hidden','width':element.getStyle('width')}).inject(this.list).position(element.getPosition(element.getOffsetParent()))},getDroppables:function(){var droppables=this.list.getChildren();if(!this.options.constrain)droppables=this.lists.concat(droppables).erase(this.list);return droppables.erase(this.clone).erase(this.element)},insert:function(dragging,element){var where='inside';if(this.lists.contains(element)){this.list=element;this.drag.droppables=this.getDroppables()}else{where=this.element.getAllPrevious().contains(element)?'before':'after'}this.element.inject(element,where);this.fireEvent('sort',[this.element,this.clone])},start:function(event,element){if(!this.idle)return;this.idle=false;this.element=element;this.opacity=element.get('opacity');this.list=element.getParent();this.clone=this.getClone(event,element);this.drag=new Drag.Move(this.clone,{snap:this.options.snap,container:this.options.constrain&&this.element.getParent(),droppables:this.getDroppables(),onSnap:function(){event.stop();this.clone.setStyle('visibility','visible');this.element.set('opacity',this.options.opacity||0);this.fireEvent('start',[this.element,this.clone])}.bind(this),onEnter:this.insert.bind(this),onCancel:this.reset.bind(this),onComplete:this.end.bind(this)});this.clone.inject(this.element,'before');this.drag.start(event)},end:function(){this.drag.detach();this.element.set('opacity',this.opacity);if(this.effect){var dim=this.element.getStyles('width','height');var pos=this.clone.computePosition(this.element.getPosition(this.clone.offsetParent));this.effect.element=this.clone;this.effect.start({top:pos.top,left:pos.left,width:dim.width,height:dim.height,opacity:0.25}).chain(this.reset.bind(this))}else{this.reset()}},reset:function(){this.idle=true;this.clone.destroy();this.fireEvent('complete',this.element)},serialize:function(){var params=Array.link(arguments,{modifier:Function.type,index:$defined});var serial=this.lists.map(function(list){return list.getChildren().map(params.modifier||function(element){return element.get('id')},this)},this);var index=params.index;if(this.lists.length==1)index=0;return $chk(index)&&index>=0&&index2083)this.log('JSONP '+src+' will fail in Internet Explorer, which enforces a 2083 bytes length limit on URIs');var script=new Element('script',{type:'text/javascript',src:src});Request.JSONP.request_map['request_'+index]=function(data){this.success(data,script)}.bind(this);return script.inject(this.options.injectScript)},success:function(data,script){if(script)script.destroy();this.running=false;this.log('JSONP successfully retrieved: ',data);this.fireEvent('complete',[data]).fireEvent('success',[data]).callChain()}});Request.JSONP.counter=0;Request.JSONP.request_map={};Request.Queue=new Class({Implements:[Options,Events],Binds:['attach','request','complete','cancel','success','failure','exception'],options:{stopOnFailure:true,autoAdvance:true,concurrent:1,requests:{}},initialize:function(options){this.setOptions(options);this.requests=new Hash;this.addRequests(this.options.requests);this.queue=[];this.reqBinders={}},addRequest:function(name,request){this.requests.set(name,request);this.attach(name,request);return this},addRequests:function(obj){$each(obj,function(req,name){this.addRequest(name,req)},this);return this},getName:function(req){return this.requests.keyOf(req)},attach:function(name,req){if(req._groupSend)return this;['request','complete','cancel','success','failure','exception'].each(function(evt){if(!this.reqBinders[name])this.reqBinders[name]={};this.reqBinders[name][evt]=function(){this['on'+evt.capitalize()].apply(this,[name,req].extend(arguments))}.bind(this);req.addEvent(evt,this.reqBinders[name][evt])},this);req._groupSend=req.send;req.send=function(options){this.send(name,options);return req}.bind(this);return this},removeRequest:function(req){var name=$type(req)=='object'?this.getName(req):req;if(!name&&$type(name)!='string')return this;req=this.requests.get(name);if(!req)return this;['request','complete','cancel','success','failure','exception'].each(function(evt){req.removeEvent(evt,this.reqBinders[name][evt])},this);req.send=req._groupSend;delete req._groupSend;return this},getRunning:function(){return this.requests.filter(function(r){return r.running})},isRunning:function(){return!!this.getRunning().getKeys().length},send:function(name,options){var q=function(){this.requests.get(name)._groupSend(options);this.queue.erase(q)}.bind(this);q.name=name;if(this.getRunning().getKeys().length>=this.options.concurrent||(this.error&&this.options.stopOnFailure))this.queue.push(q);else q();return this},hasNext:function(name){return(!name)?!!this.queue.length:!!this.queue.filter(function(q){return q.name==name}).length},resume:function(){this.error=false;(this.options.concurrent-this.getRunning().getKeys().length).times(this.runNext,this);return this},runNext:function(name){if(!this.queue.length)return this;if(!name){this.queue[0]()}else{var found;this.queue.each(function(q){if(!found&&q.name==name){found=true;q()}})}return this},runAll:function(){this.queue.each(function(q){q()});return this},clear:function(name){if(!name){this.queue.empty()}else{this.queue=this.queue.map(function(q){if(q.name!=name)return q;else return false}).filter(function(q){return q})}return this},cancel:function(name){this.requests.get(name).cancel();return this},onRequest:function(){this.fireEvent('request',arguments)},onComplete:function(){this.fireEvent('complete',arguments)},onCancel:function(){if(this.options.autoAdvance&&!this.error)this.runNext();this.fireEvent('cancel',arguments)},onSuccess:function(){if(this.options.autoAdvance&&!this.error)this.runNext();this.fireEvent('success',arguments)},onFailure:function(){this.error=true;if(!this.options.stopOnFailure&&this.options.autoAdvance)this.runNext();this.fireEvent('failure',arguments)},onException:function(){this.error=true;if(!this.options.stopOnFailure&&this.options.autoAdvance)this.runNext();this.fireEvent('exception',arguments)}});Request.implement({options:{initialDelay:5000,delay:5000,limit:60000},startTimer:function(data){var fn=(function(){if(!this.running)this.send({data:data})});this.timer=fn.delay(this.options.initialDelay,this);this.lastDelay=this.options.initialDelay;this.completeCheck=function(j){$clear(this.timer);if(j)this.lastDelay=this.options.delay;else this.lastDelay=(this.lastDelay+this.options.delay).min(this.options.limit);this.timer=fn.delay(this.lastDelay,this)};this.addEvent('complete',this.completeCheck);return this},stopTimer:function(){$clear(this.timer);this.removeEvent('complete',this.completeCheck);return this}});var Asset={javascript:function(source,properties){properties=$extend({onload:$empty,document:document,check:$lambda(true)},properties);var script=new Element('script',{src:source,type:'text/javascript'});var load=properties.onload.bind(script),check=properties.check,doc=properties.document;delete properties.onload;delete properties.check;delete properties.document;script.addEvents({load:load,readystatechange:function(){if(['loaded','complete'].contains(this.readyState))load()}}).set(properties);if(Browser.Engine.webkit419)var checker=(function(){if(!$try(check))return;$clear(checker);load()}).periodical(50);return script.inject(doc.head)},css:function(source,properties){return new Element('link',$merge({rel:'stylesheet',media:'screen',type:'text/css',href:source},properties)).inject(document.head)},image:function(source,properties){properties=$merge({onload:$empty,onabort:$empty,onerror:$empty},properties);var image=new Image();var element=document.id(image)||new Element('img');['load','abort','error'].each(function(name){var type='on'+name;var event=properties[type];delete properties[type];image[type]=function(){if(!image)return;if(!element.parentNode){element.width=image.width;element.height=image.height}image=image.onload=image.onabort=image.onerror=null;event.delay(1,element,element);element.fireEvent(name,element,1)}});image.src=element.src=source;if(image&&image.complete)image.onload.delay(1);return element.set(properties)},images:function(sources,options){options=$merge({onComplete:$empty,onProgress:$empty,onError:$empty,properties:{}},options);sources=$splat(sources);var images=[];var counter=0;return new Elements(sources.map(function(source){return Asset.image(source,$extend(options.properties,{onload:function(){options.onProgress.call(this,counter,sources.indexOf(source));counter++;if(counter==sources.length)options.onComplete()},onerror:function(){options.onError.call(this,counter,sources.indexOf(source));counter++;if(counter==sources.length)options.onComplete()}}))}))}};var Color=new Native({initialize:function(color,type){if(arguments.length>=3){type='rgb';color=Array.slice(arguments,0,3)}else if(typeof color=='string'){if(color.match(/rgb/))color=color.rgbToHex().hexToRgb(true);else if(color.match(/hsb/))color=color.hsbToRgb();else color=color.hexToRgb(true)}type=type||'rgb';switch(type){case'hsb':var old=color;color=color.hsbToRgb();color.hsb=old;break;case'hex':color=color.hexToRgb(true);break}color.rgb=color.slice(0,3);color.hsb=color.hsb||color.rgbToHsb();color.hex=color.rgbToHex();return $extend(color,this)}});Color.implement({mix:function(){var colors=Array.slice(arguments);var alpha=($type(colors.getLast())=='number')?colors.pop():50;var rgb=this.slice();colors.each(function(color){color=new Color(color);for(var i=0;i<3;i++)rgb[i]=Math.round((rgb[i]/ 100 * (100 - alpha)) + (color[i] /100*alpha))});return new Color(rgb,'rgb')},invert:function(){return new Color(this.map(function(value){return 255-value}))},setHue:function(value){return new Color([value,this.hsb[1],this.hsb[2]],'hsb')},setSaturation:function(percent){return new Color([this.hsb[0],percent,this.hsb[2]],'hsb')},setBrightness:function(percent){return new Color([this.hsb[0],this.hsb[1],percent],'hsb')}});var $RGB=function(r,g,b){return new Color([r,g,b],'rgb')};var $HSB=function(h,s,b){return new Color([h,s,b],'hsb')};var $HEX=function(hex){return new Color(hex,'hex')};Array.implement({rgbToHsb:function(){var red=this[0],green=this[1],blue=this[2];var hue,saturation,brightness;var max=Math.max(red,green,blue),min=Math.min(red,green,blue);var delta=max-min;brightness=max/255;saturation=(max!=0)?delta/max:0;if(saturation==0){hue=0}else{var rr=(max-red)/delta;var gr=(max-green)/delta;var br=(max-blue)/delta;if(red==max)hue=br-gr;else if(green==max)hue=2+rr-br;else hue=4+gr-rr;hue/=6;if(hue<0)hue++}return[Math.round(hue*360),Math.round(saturation*100),Math.round(brightness*100)]},hsbToRgb:function(){var br=Math.round(this[2]/100*255);if(this[1]==0){return[br,br,br]}else{var hue=this[0]%360;var f=hue%60;var p=Math.round((this[2]*(100-this[1]))/10000*255);var q=Math.round((this[2]*(6000-this[1]*f))/600000*255);var t=Math.round((this[2]*(6000-this[1]*(60-f)))/600000*255);switch(Math.floor(hue/60)){case 0:return[br,t,p];case 1:return[q,br,p];case 2:return[p,br,t];case 3:return[p,q,br];case 4:return[t,p,br];case 5:return[br,p,q]}}return false}});String.implement({rgbToHsb:function(){var rgb=this.match(/\d{1,3}/g);return(rgb)?rgb.rgbToHsb():null},hsbToRgb:function(){var hsb=this.match(/\d{1,3}/g);return(hsb)?hsb.hsbToRgb():null}});var Group=new Class({initialize:function(){this.instances=Array.flatten(arguments);this.events={};this.checker={}},addEvent:function(type,fn){this.checker[type]=this.checker[type]||{};this.events[type]=this.events[type]||[];if(this.events[type].contains(fn))return false;else this.events[type].push(fn);this.instances.each(function(instance,i){instance.addEvent(type,this.check.bind(this,[type,instance,i]))},this);return this},check:function(type,instance,i){this.checker[type][i]=true;var every=this.instances.every(function(current,j){return this.checker[type][j]||false},this);if(!every)return;this.checker[type]={};this.events[type].each(function(event){event.call(this,this.instances,instance)},this)}});Hash.Cookie=new Class({Extends:Cookie,options:{autoSave:true},initialize:function(name,options){this.parent(name,options);this.load()},save:function(){var value=JSON.encode(this.hash);if(!value||value.length>4096)return false;if(value=='{}')this.dispose();else this.write(value);return true},load:function(){this.hash=new Hash(JSON.decode(this.read(),true));return this}});Hash.each(Hash.prototype,function(method,name){if(typeof method=='function')Hash.Cookie.implement(name,function(){var value=method.apply(this.hash,arguments);if(this.options.autoSave)this.save();return value})});var IframeShim=new Class({Implements:[Options,Events,Class.Occlude],options:{className:'iframeShim',display:false,zIndex:null,margin:0,offset:{x:0,y:0},browsers:(Browser.Engine.trident4||(Browser.Engine.gecko&&!Browser.Engine.gecko19&&Browser.Platform.mac))},property:'IframeShim',initialize:function(element,options){this.element=document.id(element);if(this.occlude())return this.occluded;this.setOptions(options);this.makeShim();return this},makeShim:function(){if(this.options.browsers){var zIndex=this.element.getStyle('zIndex').toInt();if(!zIndex){zIndex=1;var pos=this.element.getStyle('position');if(pos=='static'||!pos)this.element.setStyle('position','relative');this.element.setStyle('zIndex',zIndex)}zIndex=($chk(this.options.zIndex)&&zIndex>this.options.zIndex)?this.options.zIndex:zIndex-1;if(zIndex<0)zIndex=1;this.shim=new Element('iframe',{src:'javascript:false;document.write("");',scrolling:'no',frameborder:0,styles:{zIndex:zIndex,position:'absolute',border:'none',filter:'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)'},'class':this.options.className}).store('IframeShim',this);var inject=(function(){this.shim.inject(this.element,'after');this[this.options.display?'show':'hide']();this.fireEvent('inject')}).bind(this);if(Browser.Engine.trident&&!IframeShim.ready)window.addEvent('load',inject);else inject()}else{this.position=this.hide=this.show=this.dispose=$lambda(this)}},position:function(){if(!IframeShim.ready)return this;var size=this.element.measure(function(){return this.getSize()});if($type(this.options.margin)){size.x=size.x-(this.options.margin*2);size.y=size.y-(this.options.margin*2);this.options.offset.x+=this.options.margin;this.options.offset.y+=this.options.margin}if(this.shim){this.shim.set({width:size.x,height:size.y}).position({relativeTo:this.element,offset:this.options.offset})}return this},hide:function(){if(this.shim)this.shim.setStyle('display','none');return this},show:function(){if(this.shim)this.shim.setStyle('display','block');return this.position()},dispose:function(){if(this.shim)this.shim.dispose();return this},destroy:function(){if(this.shim)this.shim.destroy();return this}});window.addEvent('load',function(){IframeShim.ready=true});var Scroller=new Class({Implements:[Events,Options],options:{area:20,velocity:1,onChange:function(x,y){this.element.scrollTo(x,y)},fps:50},initialize:function(element,options){this.setOptions(options);this.element=document.id(element);this.listener=($type(this.element)!='element')?document.id(this.element.getDocument().body):this.element;this.timer=null;this.bound={attach:this.attach.bind(this),detach:this.detach.bind(this),getCoords:this.getCoords.bind(this)}},start:function(){this.listener.addEvents({mouseenter:this.bound.attach,mouseleave:this.bound.detach})},stop:function(){this.listener.removeEvents({mouseenter:this.bound.attach,mouseleave:this.bound.detach});this.timer=$clear(this.timer)},attach:function(){this.listener.addEvent('mousemove',this.bound.getCoords)},detach:function(){this.listener.removeEvent('mousemove',this.bound.getCoords);this.timer=$clear(this.timer)},getCoords:function(event){this.page=(this.listener.get('tag')=='body')?event.client:event.page;if(!this.timer)this.timer=this.scroll.periodical(Math.round(1000/this.options.fps),this)},scroll:function(){var size=this.element.getSize(),scroll=this.element.getScroll(),pos=this.element.getOffsets(),scrollSize=this.element.getScrollSize(),change={x:0,y:0};for(var z in this.page){if(this.page[z]<(this.options.area+pos[z])&&scroll[z]!=0)change[z]=(this.page[z]-this.options.area-pos[z])*this.options.velocity;else if(this.page[z]+this.options.area>(size[z]+pos[z])&&scroll[z]+size[z]!=scrollSize[z])change[z]=(this.page[z]-size[z]+this.options.area-pos[z])*this.options.velocity}if(change.y||change.x)this.fireEvent('change',[scroll.x+change.x,scroll.y+change.y])}});var Tips=new Class({Implements:[Events,Options],options:{onShow:function(tip){tip.setStyle('visibility','visible')},onHide:function(tip){tip.setStyle('visibility','hidden')},title:'title',text:function(el){return el.get('rel')||el.get('href')},showDelay:100,hideDelay:100,className:null,offset:{x:16,y:16},fixed:false},initialize:function(){var params=Array.link(arguments,{options:Object.type,elements:$defined});if(params.options&¶ms.options.offsets)params.options.offset=params.options.offsets;this.setOptions(params.options);this.container=new Element('div',{'class':'tip'});this.tip=this.getTip();if(params.elements)this.attach(params.elements)},getTip:function(){return new Element('div',{'class':this.options.className,styles:{visibility:'hidden',display:'none',position:'absolute',top:0,left:0}}).adopt(new Element('div',{'class':'tip-top'}),this.container,new Element('div',{'class':'tip-bottom'})).inject(document.body)},attach:function(elements){var read=function(option,element){if(option==null)return'';return $type(option)=='function'?option(element):element.get(option)};$$(elements).each(function(element){var title=read(this.options.title,element);element.erase('title').store('tip:native',title).retrieve('tip:title',title);element.retrieve('tip:text',read(this.options.text,element));var events=['enter','leave'];if(!this.options.fixed)events.push('move');events.each(function(value){element.addEvent('mouse'+value,element.retrieve('tip:'+value,this['element'+value.capitalize()].bindWithEvent(this,element)))},this)},this);return this},detach:function(elements){$$(elements).each(function(element){['enter','leave','move'].each(function(value){element.removeEvent('mouse'+value,element.retrieve('tip:'+value)||$empty)});element.eliminate('tip:enter').eliminate('tip:leave').eliminate('tip:move');if($type(this.options.title)=='string'&&this.options.title=='title'){var original=element.retrieve('tip:native');if(original)element.set('title',original)}},this);return this},elementEnter:function(event,element){$A(this.container.childNodes).each(Element.dispose);['title','text'].each(function(value){var content=element.retrieve('tip:'+value);if(!content)return;this[value+'Element']=new Element('div',{'class':'tip-'+value}).inject(this.container);this.fill(this[value+'Element'],content)},this);this.timer=$clear(this.timer);this.timer=this.show.delay(this.options.showDelay,this,element);this.tip.setStyle('display','block');this.position((!this.options.fixed)?event:{page:element.getPosition()})},elementLeave:function(event,element){$clear(this.timer);this.tip.setStyle('display','none');this.timer=this.hide.delay(this.options.hideDelay,this,element)},elementMove:function(event){this.position(event)},position:function(event){var size=window.getSize(),scroll=window.getScroll(),tip={x:this.tip.offsetWidth,y:this.tip.offsetHeight},props={x:'left',y:'top'},obj={};for(var z in props){obj[props[z]]=event.page[z]+this.options.offset[z];if((obj[props[z]]+tip[z]-scroll[z])>size[z])obj[props[z]]=event.page[z]-this.options.offset[z]-tip[z]}this.tip.setStyles(obj)},fill:function(element,contents){if(typeof contents=='string')element.set('html',contents);else element.adopt(contents)},show:function(el){this.fireEvent('show',[this.tip,el])},hide:function(el){this.fireEvent('hide',[this.tip,el])}});MooTools.lang.set('en-US','Date',{months:['January','February','March','April','May','June','July','August','September','October','November','December'],days:['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],dateOrder:['month','date','year'],shortDate:'%m/%d/%Y',shortTime:'%I:%M%p',AM:'AM',PM:'PM',ordinal:function(dayOfMonth){return(dayOfMonth>3&&dayOfMonth<21)?'th':['th','st','nd','rd','th'][Math.min(dayOfMonth%10,4)]},lessThanMinuteAgo:'less than a minute ago',minuteAgo:'about a minute ago',minutesAgo:'{delta} minutes ago',hourAgo:'about an hour ago',hoursAgo:'about {delta} hours ago',dayAgo:'1 day ago',daysAgo:'{delta} days ago',lessThanMinuteUntil:'less than a minute from now',minuteUntil:'about a minute from now',minutesUntil:'{delta} minutes from now',hourUntil:'about an hour from now',hoursUntil:'about {delta} hours from now',dayUntil:'1 day from now',daysUntil:'{delta} days from now'});var Clientcide={version:'2.1.0',setAssetLocation:function(baseHref){var clean=function(str){return str.replace(/\/\//g,'/')};if(window.StickyWin&&StickyWin.UI){StickyWin.UI.implement({options:{baseHref:clean(baseHref+'/stickyWinHTML/')}});if(StickyWin.Alert){StickyWin.Alert.implement({options:{baseHref:baseHref+"/simple.error.popup"}})}if(StickyWin.UI.Pointy){StickyWin.UI.Pointy.implement({options:{baseHref:clean(baseHref+'/PointyTip/')}})}}if(window.TagMaker){TagMaker.implement({options:{baseHref:clean(baseHref+'/tips/')}})}if(window.ProductPicker){ProductPicker.implement({options:{baseHref:clean(baseHref+'/Picker')}})}if(window.Autocompleter){Autocompleter.Base.implement({options:{baseHref:clean(baseHref+'/autocompleter/')}})}if(window.Lightbox){Lightbox.implement({options:{assetBaseUrl:clean(baseHref+'/slimbox/')}})}if(window.Waiter){Waiter.implement({options:{baseHref:clean(baseHref+'/waiter/')}})}},preLoadCss:function(){if(window.StickyWin&&StickyWin.ui)StickyWin.ui();if(window.StickyWin&&StickyWin.pointy)StickyWin.pointy();Clientcide.preloaded=true;return true},preloaded:false};(function(){if(!window.addEvent)return;var preload=function(){if(window.dbug)dbug.log('preloading clientcide css');if(!Clientcide.preloaded)Clientcide.preLoadCss()};window.addEvent('domready',preload);window.addEvent('load',preload)})();setCNETAssetBaseHref=Clientcide.setAssetLocation;var dbug={logged:[],timers:{},firebug:false,enabled:false,log:function(){dbug.logged.push(arguments)},nolog:function(msg){dbug.logged.push(arguments)},time:function(name){dbug.timers[name]=new Date().getTime()},timeEnd:function(name){if(dbug.timers[name]){var end=new Date().getTime()-dbug.timers[name];dbug.timers[name]=false;dbug.log('%s: %s',name,end)}else dbug.log('no such timer: %s',name)},enable:function(silent){var con=window.firebug?firebug.d.console.cmd:window.console;if((!!window.console&&!!window.console.warn)||window.firebug){try{dbug.enabled=true;dbug.log=function(){(con.debug||con.log).apply(con,arguments)};dbug.time=function(){con.time.apply(con,arguments)};dbug.timeEnd=function(){con.timeEnd.apply(con,arguments)};if(!silent)dbug.log('enabling dbug');for(var i=0;i0||debugCookie=='true')dbug.enable();if(debugCookie=='true')dbug.log('debugging cookie enabled');if(window.location.href.indexOf("jsdebugCookie=true")>0){dbug.cookie();if(!dbug.enabled)dbug.enable()}if(window.location.href.indexOf("jsdebugCookie=false")>0)dbug.disableCookie()}Class.ToElement=new Class({toElement:function(){return this.element}});var ToElement=Class.ToElement;$extend(Browser,{fixPNG:function(el){try{if(Browser.Engine.trident4){el=document.id(el);if(!el)return el;if(el.get('tag')=="img"&&el.get('src').test(".png")){var vis=el.isDisplayed();try{dim=el.getSize()}catch(e){}if(!vis){var before={};['visibility','display','position'].each(function(style){before[style]=this.style[style]||''},this);this.setStyles({visibility:'hidden',display:'block',position:'absolute'});dim=el.getSize();this.setStyles(before);el.hide()}var replacement=new Element('span',{id:(el.id)?el.id:'','class':(el.className)?el.className:'',title:(el.title)?el.title:(el.alt)?el.alt:'',styles:{display:vis?'inline-block':'none',width:dim.x,height:dim.y,filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader (src='"+el.src+"', sizingMethod='scale');"},src:el.src});if(el.style.cssText){try{var styles={};var s=el.style.cssText.split(';');s.each(function(style){var n=style.split(':');styles[n[0]]=n[1]});replacement.setStyle(styles)}catch(e){dbug.log('fixPNG1: ',e)}}if(replacement.cloneEvents)replacement.cloneEvents(el);replacement.replaces(el)}else if(el.get('tag')!="img"){var imgURL=el.getStyle('background-image');if(imgURL.test(/\((.+)\)/)){el.setStyles({background:'',filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true', sizingMethod='crop', src="+imgURL.match(/\((.+)\)/)[1]+")"})}}}}catch(e){dbug.log('fixPNG2: ',e)}},pngTest:/\.png$/,scanForPngs:function(el,className){className=className||'fixPNG';if(document.getElements){el=document.id(el||document.body);el.getElements('img[src$=.png]').addClass(className)}else{var els=$$('img').each(function(img){if(Browser.pngTest(img.src)){img.addClass(className)}})}}});if(Browser.Engine.trident4)window.addEvent('domready',function(){$$('img.fixPNG').each(Browser.fixPNG)});Browser.Popup=new Class({Implements:[Options,Events],options:{width:500,height:300,x:50,y:50,toolbar:0,location:0,directories:0,status:0,scrollbars:'yes',resizable:1,name:'popup'},initialize:function(url,options){this.url=url||false;this.setOptions(options);if(this.options.x=='center')this.options.x=Math.floor((screen.availWidth-this.options.width)/2);if(this.options.y=='center')this.options.y=Math.floor((screen.availHeight-this.options.height)/2);if(this.url)this.openWin()},openWin:function(url){url=url||this.url;var options='toolbar='+this.options.toolbar+',location='+this.options.location+',directories='+this.options.directories+',status='+this.options.status+',scrollbars='+this.options.scrollbars+',resizable='+this.options.resizable+',width='+this.options.width+',height='+this.options.height+',top='+this.options.y+',left='+this.options.x;this.window=window.open(url,this.options.name,options);if(!this.window){this.window=window.open('',this.options.name,options);this.window.location.href=url}this.focus.delay(100,this);return this},focus:function(){if(this.window)this.window.focus();else if(this.focusTries<10)this.focus.delay(100,this);else{this.blocked=true;this.fireEvent('onBlock')}return this},focusTries:0,blocked:null,close:function(){this.window.close();return this}});$E=document.getElement.bind(document);$G=function(elements){return $splat(document.id(elements)||$$(elements))};Fx.Marquee=new Class({Extends:Fx.Morph,options:{mode:'horizontal',message:'',revert:true,delay:5000,cssClass:'msg',showEffect:{opacity:1},hideEffect:{opacity:0},revertEffect:{opacity:[0,1]},currentMessage:null},initialize:function(container,options){container=document.id(container);var msg=this.options.currentMessage||(container.getChildren().length==1)?container.getFirst():'';var wrapper=new Element('div',{styles:{position:'relative'},'class':'fxMarqueeWrapper'}).inject(container);this.parent(wrapper,options);this.current=this.wrapMessage(msg)},wrapMessage:function(msg){if(document.id(msg)&&document.id(msg).hasClass('fxMarquee')){var wrapper=document.id(msg)}else{var wrapper=new Element('span',{'class':'fxMarquee',styles:{position:'relative'}});if(document.id(msg))wrapper.grab(document.id(msg));else if($type(msg)=="string")wrapper.set('html',msg)}return wrapper.inject(this.element)},announce:function(options){this.setOptions(options).showMessage();return this},showMessage:function(reverting){(function(){var chain=this.$chain?$A(this.$chain):[];this.clearChain();this.element=document.id(this.element);this.current=document.id(this.current);this.message=document.id(this.message);this.start(this.options.hideEffect).chain(function(){if(reverting){this.message.hide();if(this.current)this.current.show()}else{if(this.message)this.message.dispose();this.message=this.wrapMessage(this.options.message);if(this.current)this.current.hide()}this.start((reverting)?this.options.revertEffect:this.options.showEffect).chain(function(){if(this.$chain)this.$chain.combine(chain);else this.$chain=chain;this.fireEvent((reverting)?'onRevert':'onMessage');if(!reverting&&this.options.revert)this.showMessage(true);else this.callChain.delay(this.options.delay,this)}.bind(this))}.bind(this))}).delay((reverting)?this.options.delay:10,this);return this}});var IconMenu=new Class({Implements:[Options,Events],options:{container:document,images:".iconImgs",captions:".iconCaptions",removeLinks:false,clearLinks:false,useAxis:'x',onFocusDelay:0,initialFocusDelay:250,onBlurDelay:0,length:'auto',iconPadding:1,scrollFxOptions:{duration:1800,transition:'cubic:in:out'},backScrollButtons:'#scrollLeft',forwardScrollButtons:'#scrollRight',onSelect:function(index,img){img.morph({'border-top-color':'#00A0C6','border-left-color':'#00A0C6','border-right-color':'#00A0C6','border-bottom-color':'#00A0C6'})},onDeSelect:function(index,img){img.morph({'border-top-color':'#555','border-left-color':'#555','border-right-color':'#555','border-bottom-color':'#555'})}},imgs:[],selected:[],initialize:function(options){this.setOptions(options);this.container=document.id(this.options.container);var captions=($type(this.options.captions)=="string")?this.container.getElements(this.options.captions):this.options.captions;var imgs=($type(this.options.images)=="string")?this.container.getElements(this.options.images):this.options.images;imgs.each(function(img,index){this.addItem(img,captions[index],null)},this);this.fireEvent('onItemsAdded',this.imgs,50);this.side=(this.options.useAxis=='x')?'left':'top';this.container.setStyle(this.side,this.container.getStyle(this.side).toInt()||0);this.onFocusDelay=this.options.initialFocusDelay;this.setupEvents()},toElement:function(){return this.container},bound:{mouseover:{},mouseout:{}},scrollTo:function(index,useFx){useFx=$pick(useFx,true);var currentRange=this.calculateRange();if(index==currentRange.start)return this;var newRange=this.calculateRange(index);if(!newRange.elements.length)return this;if(this.container.getStyle('position')=='static')this.container.setStyle('position','relative');if(!this.scrollerFx)this.scrollerFx=new Fx.Tween(this.container,$merge(this.options.scrollFxOptions,{property:this.side,wait:false}));if(useFx){this.scrollerFx.start(-newRange.elements[0].offset).chain(function(){this.fireEvent('onScroll',[index,newRange])}.bind(this))}else{this.scrollerFx.set(-newRange.elements[0].offset);this.fireEvent('onScroll',[index,newRange])}this.currentOffset=index;return this},pageForward:function(howMany){var range=this.calculateRange();return this.scrollTo(($type(howMany)=="number")?range.start+howMany:range.end)},pageBack:function(howMany){return this.scrollTo(($type(howMany)=="number")?this.currentOffset-howMany:this.calculateRange(this.currentOffset,true).start)},addItem:function(img,caption,where){if(caption){img.store('caption',caption);caption.store('image',img)}where=($defined(where))?where:this.imgs.length;if(this.imgs.contains(img))this.removeItems([img],true);this.imgs.splice(where,0,document.id(img));this.setupIconEvents(img,caption);this.fireEvent('onAdd',[img,caption]);return this},removeItems:function(imgs,useFx){var range=this.calculateRange();if(!imgs.length)return this;imgs=$A(imgs);useFx=$pick(useFx,true);var fadeItems=[];var fadeItemImgs=[];var effect={width:0,'border-width':0};var fadeEffects={};var itemsToQuietlyRemove={before:[],beforeImgs:[],after:[],afterImgs:[]};var indexes=[];imgs.each(function(image){var index=this.imgs.indexOf(image);if(index>=range.end){itemsToQuietlyRemove.after.push(image.getParent());itemsToQuietlyRemove.afterImgs.push(image)}else if(index0)this.pageBack();if(!this.imgs.length)this.fireEvent('onEmpty')}if(useFx)new Fx.Elements(fadeItems).start(fadeEffects).chain(clean.bind(this,[range,removed]));else clean.apply(this,[range,removed]);return this},removeSelected:function(useFx){this.removeItems(this.selected,useFx);return this},empty:function(suppressEvent){var effect={};var items=[];this.imgs.each(function(img,index){items.push(img.getParent());effect[index]={opacity:0}});new Fx.Elements(items).start(effect).chain(function(){this.removeItems(this.imgs,false);if(!suppressEvent)this.fireEvent('onEmpty')}.bind(this));return this},selectItem:function(index,select){var img=this.imgs[index];if($defined(select)){if(select)img.addClass('selected');else img.removeClass('selected')}else{img.toggleClass('selected')}if(img.hasClass('selected')){this.selected.push(img);this.fireEvent('select',[index,img])}else{this.selected.erase(img);this.fireEvent('onDeSelect',[index,img])}return this},getDefaultWidth:function(){if($type(this.options.length)=="number")return this.options.length;var container=document.id(this.options.length);if(!container)container=this.container.getParent();return container.getSize()[this.options.useAxis]},getIconPositions:function(){var offsets=[];var cumulative=0;var prev;this.imgs.each(function(img,index){var parent=img.getParent();cumulative+=(prev)?img['offset'+this.side.capitalize()]-prev['offset'+this.side.capitalize()]:0;prev=img;offsets.push({image:img,size:parent.getSize()[this.options.useAxis],offset:cumulative,container:parent})},this);return offsets},calculateRange:function(index,fromEnd){if(!this.imgs.length)return{start:0,end:0,elements:[]};index=$pick(index,this.currentOffset||0);if(index<0)index=0;var length=this.getDefaultWidth();var positions=this.getIconPositions();var referencePoint;if(positions[index]){referencePoint=positions[index].offset}else{var lastIcon=this.imgs.getLast().getParent();var coords=lastIcon.getCoordinates();referencePoint=coords.width+coords.left-lastIcon.getParent().getPosition().x}var range=positions.filter(function(position,i){if(fromEnd)return i=referencePoint-length;else return i>=index&&position.offset+position.size<=length+positions[index].offset});return(fromEnd)?{start:index-range.length,end:index,elements:range}:{start:index,end:range.length+index,elements:range}},inRange:function(index){var range=this.calculateRange();return index=range.start},setupEvents:function(){document.id(this.options.container).addEvents({"mouseleave":function(){if(this.inFocus)this.inFocus=null;this.imgOut(null,true)}.bind(this)});$$(this.options.backScrollButtons).each(function(el){el.addEvents({click:this.pageBack.bind(this),mouseover:function(){this.addClass('hover')},mouseout:function(){this.removeClass('hover')}})},this);$$(this.options.forwardScrollButtons).each(function(el){el.addEvents({click:this.pageForward.bind(this),mouseover:function(){this.addClass('hover')},mouseout:function(){this.removeClass('hover')}})},this);$$(this.options.clearLinks).each(function(el){el.addEvent('click',this.empty.bind(this))},this);$$(this.options.removeLinks).each(function(el){el.addEvent('click',this.removeSelected.bind(this))},this)},imgOver:function(img){this.inFocus=img;$clear(this.overTimeout);this.overTimeout=(function(){this.onFocusDelay=this.options.onFocusDelay;if(this.inFocus==img)this.fireEvent("onFocus",[img,this.imgs.indexOf(img)])}).delay(this.onFocusDelay,this)},imgOut:function(img,force){if(!$defined(img)&&force)img=this.prevFocus||this.imgs[0];if(this.inFocus==img&&img){this.inFocus=null;$clear(this.outTimeout);this.outTimeout=(function(){this.prevFocus=img;if(this.inFocus!=img||(img==null&&force))this.fireEvent("onBlur",[img,this.imgs.indexOf(img)]);if(!this.inFocus)this.onFocusDelay=this.options.initialFocusDelay}).delay(this.options.onBlurDelay,this)}},setupIconEvents:function(img,caption){img.addEvents({click:function(e){if(e.control||e.meta){this.selectItem(this.imgs.indexOf(img));e.stop()}}.bind(this)});img.getParent().addEvents({mouseover:this.imgOver.bind(this,img),mouseout:this.imgOver.bind(this,img)})}});var Modalizer=new Class({defaultModalStyle:{display:'block',position:'fixed',top:0,left:0,'z-index':5000,'background-color':'#333',opacity:0.8},setModalOptions:function(options){this.modalOptions=$merge({width:(window.getScrollSize().x),height:(window.getScrollSize().y),elementsToHide:'select, embed'+(Browser.Engine.trident?'':', object'),hideOnClick:true,modalStyle:{},updateOnResize:true,layerId:'modalOverlay',onModalHide:$empty,onModalShow:$empty},this.modalOptions,options);return this},layer:function(){if(!this.modalOptions.layerId)this.setModalOptions();return document.id(this.modalOptions.layerId)||new Element('div',{id:this.modalOptions.layerId}).inject(document.body)},resize:function(){if(this.layer()){this.layer().setStyles({width:(window.getScrollSize().x),height:(window.getScrollSize().y)})}},setModalStyle:function(styleObject){this.modalOptions.modalStyle=styleObject;this.modalStyle=$merge(this.defaultModalStyle,{width:this.modalOptions.width,height:this.modalOptions.height},styleObject);if(this.layer())this.layer().setStyles(this.modalStyle);return(this.modalStyle)},modalShow:function(options){this.setModalOptions(options);this.layer().setStyles(this.setModalStyle(this.modalOptions.modalStyle));if(Browser.Engine.trident4)this.layer().setStyle('position','absolute');this.layer().removeEvents('click').addEvent('click',function(){this.modalHide(this.modalOptions.hideOnClick)}.bind(this));this.bound=this.bound||{};if(!this.bound.resize&&this.modalOptions.updateOnResize){this.bound.resize=this.resize.bind(this);window.addEvent('resize',this.bound.resize)}if($type(this.modalOptions.onModalShow)=="function")this.modalOptions.onModalShow();this.togglePopThroughElements(0);this.layer().setStyle('display','block');return this},modalHide:function(override,force){if(override===false)return false;this.togglePopThroughElements(1);if($type(this.modalOptions.onModalHide)=="function")this.modalOptions.onModalHide();this.layer().setStyle('display','none');if(this.modalOptions.updateOnResize){this.bound=this.bound||{};if(!this.bound.resize)this.bound.resize=this.resize.bind(this);window.removeEvent('resize',this.bound.resize)}return this},togglePopThroughElements:function(opacity){if(Browser.Engine.trident4||(Browser.Engine.gecko&&Browser.Platform.mac)){$$(this.modalOptions.elementsToHide).each(function(sel){sel.setStyle('opacity',opacity)})}}});var PopupDetail=new Class({Implements:[Options,Events],visible:false,observed:false,hasData:false,options:{observerAction:'mouseenter',closeOnMouseOut:true,linkPopup:false,data:{},templateOptions:{},useAjax:false,ajaxOptions:{method:'get'},ajaxLink:false,ajaxCache:{},delayOn:100,delayOff:100,stickyWinOptions:{},stickyWinToUse:StickyWin,showNow:false,htmlResponse:false,regExp:/\\?%([^%]+)%/g},initialize:function(html,observer,options){this.setOptions(options);this.observer=document.id(observer);this.html=(document.id(html))?document.id(html).get('html'):html||'';if(this.options.showNow)this.show.delay(this.options.delayOn,this);this.setUpObservers()},setUpObservers:function(){var opt=this.options;this.observer.addEvent(opt.observerAction,function(){this.observed=true;this.show.delay(opt.delayOn,this)}.bind(this));if((opt.observerAction=="mouseenter"||opt.observerAction=="mouseover")&&this.options.closeOnMouseOut){this.observer.addEvent("mouseleave",function(){this.observed=false;this.hide.delay(opt.delayOff,this)}.bind(this))}return this},parseTemplate:function(string,values){return string.substitute(values,this.options.regExp)},makePopup:function(){if(!this.stickyWin){var opt=this.options;if(opt.htmlResponse)this.content=this.data;else this.content=this.parseTemplate(this.html,opt.data);this.stickyWin=new opt.stickyWinToUse($merge(opt.stickyWinOptions,{relativeTo:this.observer,showNow:false,content:this.content,allowMultipleByClass:true}));if(document.id(opt.linkPopup)||$type(opt.linkPopup)=='string'){this.stickyWin.win.setStyle('cursor','pointer').addEvent('click',function(){window.location.href=($type(url)=='string')?url:url.src})}this.stickyWin.win.addEvent('mouseenter',function(){this.observed=true}.bind(this));this.stickyWin.win.addEvent('mouseleave',function(){this.observed=false;if(opt.closeOnMouseOut)this.hide.delay(opt.delayOff,this)}.bind(this))}return this},getContent:function(){try{new Request($merge(this.options.ajaxOptions,{url:this.options.ajaxLink||this.observer.href,onSuccess:this.show.bind(this)})).send()}catch(e){dbug.log('ajax error on PopupDetail: %s',e)}},show:function(data){var opt=this.options;if(data)this.data=data;if(this.observed&&!this.visible){if(opt.useAjax&&!this.data){var cachedVal=opt.ajaxCache[this.options.ajaxLink]||opt.ajaxCache[this.observer.href];if(cachedVal){this.fireEvent('onPopupShow',this);return this.show(cachedVal)}this.cursorStyle=this.observer.getStyle('cursor');this.observer.setStyle('cursor','wait');this.getContent();return false}else{if(this.cursorStyle)this.observer.setStyle('cursor',this.cursorStyle);if(opt.useAjax&&!opt.htmlResponse)opt.data=JSON.decode(this.data);this.makePopup();this.fireEvent('onPopupShow',this);this.stickyWin.show();this.visible=true;return this}}return this},hide:function(){if(!this.observed){this.fireEvent('onPopupHide');if(this.stickyWin)this.stickyWin.hide();this.visible=false}return this}});var PopupDetailCollection=new Class({Implements:[Options],options:{details:{},links:[],ajaxLinks:[],useCache:true,template:'',popupDetailOptions:{}},cache:{},initialize:function(observers,options){this.observers=$$(observers);this.setOptions(options);var ln=this.options.ajaxLinks.length;if(ln<=0)ln=this.options.details.length;if(this.observers.length!=ln)dbug.log("warning: observers and details are out of sync.");this.makePopupDetails()},makePopupDetails:function(){this.popupDetailObjs=this.observers.map(function(observer,index){var opt=this.options.popupDetailOptions;var pd=new PopupDetail(this.options.template,observer,$merge(opt,{data:$pick(this.options.details[index],{}),linkItem:$pick(this.options.links[index],$pick(opt.linkItem,false)),ajaxLink:$pick(this.options.ajaxLinks[index],false),ajaxCache:(this.options.useCache)?this.cache:{},useAjax:this.options.ajaxLinks.length>0}));return pd},this)}});var StyleWriter=new Class({createStyle:function(css,id){window.addEvent('domready',function(){try{if(document.id(id)&&id)return;var style=new Element('style',{id:id||''}).inject($$('head')[0]);if(Browser.Engine.trident)style.styleSheet.cssText=css;else style.set('text',css)}catch(e){dbug.log('error: %s',e)}}.bind(this))}});var StickyWin=new Class({Binds:['destroy','hide','togglepin','esc'],Implements:[Options,Events,StyleWriter,Class.ToElement],options:{closeClassName:'closeSticky',pinClassName:'pinSticky',content:'',zIndex:10000,className:'',width:false,height:false,timeout:-1,allowMultipleByClass:false,allowMultiple:true,showNow:true,useIframeShim:true,iframeShimSelector:'',destroyOnClose:false,closeOnClickOut:false,closeOnEsc:false},css:'.SWclearfix:after {content: "."; display: block; height: 0; clear: both; visibility: hidden;}'+'.SWclearfix {display: inline-table;} * html .SWclearfix {height: 1%;} .SWclearfix {display: block;}',initialize:function(options){this.options.inject=this.options.inject||{target:document.body,where:'bottom'};this.setOptions(options);this.id=this.options.id||'StickyWin_'+new Date().getTime();this.makeWindow();if(this.options.content)this.setContent(this.options.content);if(this.options.timeout>0){this.addEvent('onDisplay',function(){this.hide.delay(this.options.timeout,this)}.bind(this))}this.createStyle(this.css,'StickyWinClearFix');if(this.options.closeOnClickOut||this.options.closeOnEsc)this.attach();if(this.options.destroyOnClose)this.addEvent('close',this.destroy);if(this.options.showNow)this.show()},attach:function(attach){var method=$pick(attach,true)?'addEvents':'removeEvents';var events={};if(this.options.closeOnClickOut)events.click=this.esc;if(this.options.closeOnEsc)events.keyup=this.esc;document[method](events)},esc:function(e){if(e.key=="esc")this.hide();if(e.type=="click"&&this.element!=e.target&&!this.element.hasChild(e.target))this.hide()},makeWindow:function(){this.destroyOthers();if(!document.id(this.id)){this.win=new Element('div',{id:this.id}).addClass(this.options.className).addClass('StickyWinInstance').addClass('SWclearfix').setStyles({display:'none',position:'absolute',zIndex:this.options.zIndex}).inject(this.options.inject.target,this.options.inject.where).store('StickyWin',this)}else this.win=document.id(this.id);this.element=this.win;if(this.options.width&&$type(this.options.width.toInt())=="number")this.win.setStyle('width',this.options.width.toInt());if(this.options.height&&$type(this.options.height.toInt())=="number")this.win.setStyle('height',this.options.height.toInt());return this},show:function(suppressEvent){this.showWin();if(!suppressEvent)this.fireEvent('display');if(this.options.useIframeShim)this.showIframeShim();this.visible=true;return this},showWin:function(){if(!this.positioned)this.position();this.win.show()},hide:function(suppressEvent){if($type(suppressEvent)=="event"||!suppressEvent)this.fireEvent('close');this.hideWin();if(this.options.useIframeShim)this.hideIframeShim();this.visible=false;return this},hideWin:function(){this.win.setStyle('display','none')},destroyOthers:function(){if(!this.options.allowMultipleByClass||!this.options.allowMultiple){$$('div.StickyWinInstance').each(function(sw){if(!this.options.allowMultiple||(!this.options.allowMultipleByClass&&sw.hasClass(this.options.className)))sw.retrieve('StickyWin').destroy()},this)}},setContent:function(html){if(this.win.getChildren().length>0)this.win.empty();if($type(html)=="string")this.win.set('html',html);else if(document.id(html))this.win.adopt(html);this.win.getElements('.'+this.options.closeClassName).each(function(el){el.addEvent('click',this.hide)},this);this.win.getElements('.'+this.options.pinClassName).each(function(el){el.addEvent('click',this.togglepin)},this);return this},position:function(options){this.positioned=true;this.setOptions(options);this.win.position({allowNegative:$pick(this.options.allowNegative,this.options.relativeTo!=document.body),relativeTo:this.options.relativeTo,position:this.options.position,offset:this.options.offset,edge:this.options.edge});if(this.shim)this.shim.position();return this},pin:function(pin){if(!this.win.pin){dbug.log('you must include element.pin.js!');return this}this.pinned=$pick(pin,true);this.win.pin(pin);return this},unpin:function(){return this.pin(false)},togglepin:function(){return this.pin(!this.pinned)},makeIframeShim:function(){if(!this.shim){var el=(this.options.iframeShimSelector)?this.win.getElement(this.options.iframeShimSelector):this.win;this.shim=new IframeShim(el,{display:false,name:'StickyWinShim'})}},showIframeShim:function(){if(this.options.useIframeShim){this.makeIframeShim();this.shim.show()}},hideIframeShim:function(){if(this.shim)this.shim.hide()},destroy:function(){if(this.win)this.win.destroy();if(this.options.useIframeShim&&this.shim)this.shim.destroy();if(document.id('modalOverlay'))document.id('modalOverlay').destroy();this.fireEvent('destroy')}});StickyWin=Class.refactor(StickyWin,{options:{fade:true,fadeDuration:150},hideWin:function(){if(this.options.fade)this.fade(0);else this.previous()},showWin:function(){if(this.options.fade)this.fade(1);else this.previous()},hide:function(){this.previous(this.options.fade)},show:function(){this.previous(this.options.fade)},fade:function(to){if(!this.fadeFx){this.win.setStyles({opacity:0,display:'block'});var opts={property:'opacity',duration:this.options.fadeDuration};if(this.options.fadeTransition)opts.transition=this.options.fadeTransition;this.fadeFx=new Fx.Tween(this.win,opts)}if(to>0){this.win.setStyle('display','block');this.position()}this.fadeFx.clearChain();this.fadeFx.start(to).chain(function(){if(to==0){this.win.setStyle('display','none');this.fireEvent('onClose')}else{this.fireEvent('onDisplay')}}.bind(this));return this}});StickyWin.Fx=StickyWin;StickyWin=Class.refactor(StickyWin,{options:{draggable:false,dragOptions:{},dragHandleSelector:'.dragHandle',resizable:false,resizeOptions:{},resizeHandleSelector:''},setContent:function(html){this.previous(html);if(this.options.draggable)this.makeDraggable();if(this.options.resizable)this.makeResizable();return this},makeDraggable:function(){var toggled=this.toggleVisible(true);if(this.options.useIframeShim){this.makeIframeShim();var onComplete=(this.options.dragOptions.onComplete||$empty);this.options.dragOptions.onComplete=function(){onComplete();this.shim.position()}.bind(this)}if(this.options.dragHandleSelector){var handle=this.win.getElement(this.options.dragHandleSelector);if(handle){handle.setStyle('cursor','move');this.options.dragOptions.handle=handle}}this.win.makeDraggable(this.options.dragOptions);if(toggled)this.toggleVisible(false)},makeResizable:function(){var toggled=this.toggleVisible(true);if(this.options.useIframeShim){this.makeIframeShim();var onComplete=(this.options.resizeOptions.onComplete||$empty);this.options.resizeOptions.onComplete=function(){onComplete();this.shim.position()}.bind(this)}if(this.options.resizeHandleSelector){var handle=this.win.getElement(this.options.resizeHandleSelector);if(handle)this.options.resizeOptions.handle=this.win.getElement(this.options.resizeHandleSelector)}this.win.makeResizable(this.options.resizeOptions);if(toggled)this.toggleVisible(false)},toggleVisible:function(show){if(!this.visible&&Browser.Engine.webkit&&$pick(show,true)){this.win.setStyles({display:'block',opacity:0});return true}else if(!$pick(show,false)){this.win.setStyles({display:'none',opacity:1});return false}return false}});StickyWin.Fx=StickyWin;StickyWin.Modal=new Class({Extends:StickyWin,Implements:Modalizer,options:{modalize:true},initialize:function(options){options=options||{};this.setModalOptions($merge(options.modalOptions||{},{onModalHide:function(){this.hide(false)}.bind(this)}));this.parent(options)},show:function(showModal){if($pick(showModal,this.options.modalize)){this.modalShow();if(this.modalOptions.elementsToHide)this.win.getElements(this.modalOptions.elementsToHide).setStyle('opacity',1)}this.parent()},hide:function(hideModal){if($pick(hideModal,true))this.modalHide();else this.parent()}});if(StickyWin.Fx)StickyWin.Fx.Modal=StickyWin.Modal;(function(){var SWA=function(extend){return{Extends:extend,options:{url:'',showNow:false,requestOptions:{method:'get',evalScripts:true},wrapWithUi:false,caption:'',uiOptions:{},handleResponse:function(response){var responseScript="";this.Request.response.text.stripScripts(function(script){responseScript+=script});if(this.options.wrapWithUi)response=StickyWin.ui(this.options.caption,response,this.options.uiOptions);this.setContent(response);this.show();if(this.evalScripts)$exec(responseScript)}},initialize:function(options){var showNow;if(options&&options.showNow){showNow=true;options.showNow=false}this.parent(options);this.evalScripts=this.options.requestOptions.evalScripts;this.options.requestOptions.evalScripts=false;this.createRequest();if(showNow)this.update()},createRequest:function(){this.Request=new Request(this.options.requestOptions).addEvent('onSuccess',this.options.handleResponse.bind(this))},update:function(url,options){this.Request.setOptions(options).send({url:url||this.options.url});return this}}};try{StickyWin.Ajax=new Class(SWA(StickyWin))}catch(e){}try{StickyWin.Modal.Ajax=new Class(SWA(StickyWin.Modal))}catch(e){}})();StickyWin.Alert=new Class({Implements:Options,Extends:StickyWin.Modal,options:{baseHref:"http://www.cnet.com/html/rb/assets/global/simple.error.popup",destroyOnClose:true,modalOptions:{modalStyle:{zIndex:11000}},zIndex:110001,uiOptions:{width:250,buttons:[{text:'Ok'}]}},initialize:function(caption,message,options){this.message=message;this.caption=caption;this.setOptions(options);this.setOptions({content:this.build()});this.parent(options)},makeMessage:function(){return new Element('p',{'class':'errorMsg SWclearfix',styles:{margin:0,minHeight:10},html:this.message})},build:function(){return StickyWin.ui(this.caption,this.makeMessage(),this.options.uiOptions)}});StickyWin.Error=new Class({Extends:StickyWin.Alert,makeMessage:function(){var message=this.parent();new Element('img',{src:this.options.baseHref+'/icon_problems_sm.gif','class':'bang clearfix',styles:{'float':'left',width:30,height:30,margin:'3px 5px 5px 0px'}}).inject(message,'top');return message}});StickyWin.alert=function(caption,message,options){if($type(options)=="string")options={baseHref:options};return new StickyWin.Alert(caption,message)};StickyWin.error=function(caption,message,options){return new StickyWin.Error(caption,message,options)};StickyWin.Confirm=new Class({Extends:StickyWin.Alert,options:{uiOptions:{width:250}},build:function(callback){this.setOptions({uiOptions:{buttons:[{text:'Cancel'},{text:'Ok',onClick:callback||function(){this.fireEvent('confirm')}.bind(this)}]}});return this.parent()}});StickyWin.confirm=function(caption,message,callback,options){return new StickyWin.Confirm(caption,message,options).addEvent('confirm',callback)};StickyWin.Prompt=new Class({Extends:StickyWin.Confirm,options:{defaultValue:''},initialize:function(message,header,options){this.addEvent('display',function(){this.input.select()}.bind(this));this.parent.apply(this,arguments)},makeMessage:function(){this.input=new Element('input',{value:this.options.defaultValue,type:'text',id:'foo',styles:{width:'100%'},events:{keyup:function(e){if(e.key=='enter'){this.fireEvent('confirm',this.input.get('value'));this.hide()}}.bind(this)}});return new Element('div').adopt(this.parent()).adopt(this.input)},build:function(){return this.parent(function(){this.fireEvent('confirm',this.input.get('value'))}.bind(this))}});StickyWin.prompt=function(caption,message,callback,options){return new StickyWin.Prompt(caption,message,options).addEvent('confirm',callback)};StickyWin.UI=new Class({Implements:[Options,Class.ToElement,StyleWriter],options:{width:300,css:"div.DefaultStickyWin {font-family:verdana; font-size:11px; line-height: 13px;}"+"div.DefaultStickyWin div.top_ul{background:url({%baseHref%}full.png) top left no-repeat; height:30px; width:15px; float:left}"+"div.DefaultStickyWin div.top_ur{position:relative; left:0px !important; left:-4px; background:url({%baseHref%}full.png) top right !important; height:30px; margin:0px 0px 0px 15px !important; margin-right:-4px; padding:0px}"+"div.DefaultStickyWin h1.caption{clear: none !important; margin:0px !important; overflow: hidden; padding:0 !important; font-weight:bold; color:#555; font-size:14px !important; position:relative; top:8px !important; left:5px !important; float: left; height: 22px !important;}"+"div.DefaultStickyWin div.middle, div.DefaultStickyWin div.closeBody {background:url({%baseHref%}body.png) top left repeat-y; margin:0px 20px 0px 0px !important; margin-bottom: -3px; position: relative; top: 0px !important; top: -3px;}"+"div.DefaultStickyWin div.body{background:url({%baseHref%}body.png) top right repeat-y; padding:8px 30px 8px 0px !important; margin-left:5px !important; position:relative; right:-20px !important; z-index: 1;}"+"div.DefaultStickyWin div.bottom{clear:both;}"+"div.DefaultStickyWin div.bottom_ll{background:url({%baseHref%}full.png) bottom left no-repeat; width:15px; height:15px; float:left}"+"div.DefaultStickyWin div.bottom_lr{background:url({%baseHref%}full.png) bottom right; position:relative; left:0px !important; left:-4px; margin:0px 0px 0px 15px !important; margin-right:-4px; height:15px}"+"div.DefaultStickyWin div.closeButtons{text-align: center; background:url({%baseHref%}body.png) top right repeat-y; padding: 4px 30px 8px 0px; margin-left:5px; position:relative; right:-20px}"+"div.DefaultStickyWin a.button:hover{background:url({%baseHref%}big_button_over.gif) repeat-x}"+"div.DefaultStickyWin a.button {background:url({%baseHref%}big_button.gif) repeat-x; margin: 2px 8px 2px 8px; padding: 2px 12px; cursor:pointer; border: 1px solid #999 !important; text-decoration:none; color: #000 !important;}"+"div.DefaultStickyWin div.closeButton{width:13px; height:13px; background:url({%baseHref%}closebtn.gif) no-repeat; position: absolute; right: 0px; margin:10px 15px 0px 0px !important; cursor:pointer;top:0px}"+"div.DefaultStickyWin div.dragHandle { width: 11px; height: 25px; position: relative; top: 5px; left: -3px; cursor: move; background: url({%baseHref%}drag_corner.gif); float: left;}",cornerHandle:false,cssClass:'',baseHref:'http://www.cnet.com/html/rb/assets/global/stickyWinHTML/',buttons:[],cssId:'defaultStickyWinStyle',cssClassName:'DefaultStickyWin',closeButton:true},initialize:function(){var args=this.getArgs(arguments);this.setOptions(args.options);this.legacy();var css=this.options.css.substitute({baseHref:this.options.baseHref},/\\?\{%([^}]+)%\}/g);if(Browser.Engine.trident4)css=css.replace(/png/g,'gif');this.createStyle(css,this.options.cssId);this.build();if(args.caption||args.body)this.setContent(args.caption,args.body)},getArgs:function(){return StickyWin.UI.getArgs.apply(this,arguments)},legacy:function(){var opt=this.options;if(opt.confirmTxt)opt.buttons.push({text:opt.confirmTxt,onClick:opt.onConfirm||$empty});if(opt.closeTxt)opt.buttons.push({text:opt.closeTxt,onClick:opt.onClose||$empty})},build:function(){var opt=this.options;var container=new Element('div',{'class':opt.cssClassName});if(opt.width)container.setStyle('width',opt.width);this.element=container;this.element.store('StickyWinUI',this);if(opt.cssClass)container.addClass(opt.cssClass);var bodyDiv=new Element('div').addClass('body');this.body=bodyDiv;var top_ur=new Element('div').addClass('top_ur');this.top_ur=top_ur;this.top=new Element('div').addClass('top').adopt(new Element('div').addClass('top_ul')).adopt(top_ur);container.adopt(this.top);if(opt.cornerHandle)new Element('div').addClass('dragHandle').inject(top_ur,'top');container.adopt(new Element('div').addClass('middle').adopt(bodyDiv));if(opt.buttons.length>0){var closeButtons=new Element('div').addClass('closeButtons');opt.buttons.each(function(button){if(button.properties&&button.properties.className){button.properties['class']=button.properties.className;delete button.properties.className}var properties=$merge({'class':'closeSticky'},button.properties);new Element('a').addEvent('click',button.onClick||$empty).appendText(button.text).inject(closeButtons).set(properties).addClass('button')});container.adopt(new Element('div').addClass('closeBody').adopt(closeButtons))}container.adopt(new Element('div').addClass('bottom').adopt(new Element('div').addClass('bottom_ll')).adopt(new Element('div').addClass('bottom_lr')));if(this.options.closeButton)container.adopt(new Element('div').addClass('closeButton').addClass('closeSticky'));return this},makeCaption:function(caption){if(!caption)return this.destroyCaption();this.caption=caption;var opt=this.options;var h1Caption=new Element('h1').addClass('caption');if(opt.width)h1Caption.setStyle('width',(opt.width-(opt.cornerHandle?55:40)-(opt.closeButton?10:0)));if(document.id(this.caption))h1Caption.adopt(this.caption);else h1Caption.set('html',this.caption);this.top_ur.adopt(h1Caption);this.h1=h1Caption;if(!this.options.cornerHandle)this.h1.addClass('dragHandle');return this},destroyCaption:function(){if(this.h1){this.h1.destroy();this.h1=null}return this},setContent:function(){var args=this.getArgs.apply(this,arguments);var caption=args.caption;var body=args.body;if(this.h1)this.destroyCaption();this.makeCaption(caption);if(document.id(body))this.body.empty().adopt(body);else this.body.set('html',body);return this}});StickyWin.UI.getArgs=function(){var input=$type(arguments[0])=="arguments"?arguments[0]:arguments;var cap=input[0],bod=input[1];var args=Array.link(input,{options:Object.type});if(input.length==3||(!args.options&&input.length==2)){args.caption=cap;args.body=bod}else if(($type(bod)=='object'||!bod)&&cap&&$type(cap)!='object'){args.body=cap}return args};StickyWin.ui=function(caption,body,options){return document.id(new StickyWin.UI(caption,body,options))};StickyWin.UI.Pointy=new Class({Extends:StickyWin.UI,options:{theme:'dark',themes:{dark:{bgColor:'#333',fgColor:'#ddd',imgset:'dark'},light:{bgColor:'#ccc',fgColor:'#333',imgset:'light'}},css:"div.DefaultPointyTip {vertical-align: auto; position: relative;}"+"div.DefaultPointyTip * {text-align:left !important}"+"div.DefaultPointyTip .pointyWrapper div.body{background: {%bgColor%}; color: {%fgColor%}; left: 0px; right: 0px !important;padding: 0px 10px !important;margin-left: 0px !important;font-family: verdana;font-size: 11px;line-height: 13px;position: relative;}"+"div.DefaultPointyTip .pointyWrapper div.top {position: relative;height: 25px; overflow: visible;}"+"div.DefaultPointyTip .pointyWrapper div.top_ul{background: url({%baseHref%}{%imgset%}_back.png) top left no-repeat;width: 8px;height: 25px; position: absolute; left: 0px;}"+"div.DefaultPointyTip .pointyWrapper div.top_ur{background: url({%baseHref%}{%imgset%}_back.png) top right !important;margin: 0 0 0 8px !important;height: 25px;position: relative;left: 0px !important;padding: 0;}"+"div.DefaultPointyTip .pointyWrapper h1.caption{color: {%fgColor%};left: 0px !important;top: 4px !important;clear: none !important;overflow: hidden;font-weight: 700;font-size: 12px !important;position: relative;float: left;height: 22px !important;margin: 0 !important;padding: 0 !important;}"+"div.DefaultPointyTip .pointyWrapper div.middle, div.DefaultPointyTip .pointyWrapper div.closeBody{background: {%bgColor%};margin: 0 0px 0 0 !important;position: relative;top: 0 !important;}"+"div.DefaultPointyTip .pointyWrapper div.bottom {clear: both; width: 100% !important; background: none; height: 6px} "+"div.DefaultPointyTip .pointyWrapper div.bottom_ll{font-size:1; background: url({%baseHref%}{%imgset%}_back.png) bottom left no-repeat;width: 6px;height: 6px;position: absolute; left: 0px;}"+"div.DefaultPointyTip .pointyWrapper div.bottom_lr{font-size:1; background: url({%baseHref%}{%imgset%}_back.png) bottom right;height: 6px;margin: 0 0 0 6px !important;position: relative;left: 0 !important;}"+"div.DefaultPointyTip .pointyWrapper div.noCaption{ height: 6px; overflow: hidden}"+"div.DefaultPointyTip .pointyWrapper div.closeButton{width:13px; height:13px; background:url({%baseHref%}{%imgset%}_x.png) no-repeat; position: absolute; right: 0px; margin:0px !important; cursor:pointer; z-index: 1; top: 4px;}"+"div.DefaultPointyTip .pointyWrapper div.pointyDivot {background: url({%divot%}) no-repeat;}",baseHref:'http://github.com/anutron/clientcide/raw/master/Assets/PointyTip/',divot:'{%baseHref%}{%imgset%}_divot.png',divotSize:22,direction:12,cssId:'defaultPointyTipStyle',cssClassName:'DefaultPointyTip'},initialize:function(){var args=this.getArgs(arguments);this.setOptions(args.options);$extend(this.options,this.options.themes[this.options.theme]);this.options.divot=this.options.divot.substitute(this.options,/\\?\{%([^}]+)%\}/g);if(Browser.Engine.trident4)this.options.divot=this.options.divot.replace(/png/g,'gif');this.options.css=this.options.css.substitute(this.options,/\\?\{%([^}]+)%\}/g);if(args.options&&args.options.theme){while(!this.id){var id=$random(0,999999999);if(!StickyWin.UI.Pointy[id]){StickyWin.UI.Pointy[id]=this;this.id=id}}this.options.css=this.options.css.replace(/div\.DefaultPointyTip/g,"div#pointy_"+this.id);this.options.cssId="pointyTipStyle_"+this.id}if($type(this.options.direction)=='string'){var map={left:9,right:3,up:12,down:6};this.options.direction=map[this.options.direction]}this.parent(args.caption,args.body,this.options);if(this.id)document.id(this).set('id',"pointy_"+this.id)},build:function(){this.parent();var opt=this.options;this.pointyWrapper=new Element('div',{'class':'pointyWrapper'}).inject(document.id(this));document.id(this).getChildren().each(function(el){if(el!=this.pointyWrapper)this.pointyWrapper.grab(el)},this);var w=opt.divotSize;var h=w;var left=(opt.width-opt.divotSize)/2;var orient=function(){switch(opt.direction){case 12:case 1:case 11:return{height:h/2};case 5:case 6:case 7:return{height:h/2,backgroundPosition:'0 -'+h/2+'px'};case 8:case 9:case 10:return{width:w/2};case 2:case 3:case 4:return{width:w/2,backgroundPosition:'100%'}}};this.pointer=new Element('div',{styles:$extend({width:w,height:h,overflow:'hidden'},orient()),'class':'pointyDivot pointy_'+opt.direction}).inject(this.pointyWrapper)},expose:function(){if(document.id(this).getStyle('display')!='none'&&document.id(document.body).hasChild(document.id(this)))return $empty;document.id(this).setStyles({visibility:'hidden',position:'absolute'});var dispose;if(!document.body.hasChild(document.id(this))){document.id(this).inject(document.body);dispose=true}return(function(){if(dispose)document.id(this).dispose();document.id(this).setStyles({visibility:'visible',position:'relative'})}).bind(this)},positionPointer:function(options){if(!this.pointer)return;var opt=options||this.options;var pos;var d=opt.direction;switch(d){case 12:case 1:case 11:pos={edge:{x:'center',y:'bottom'},position:{x:d==12?'center':d==1?'right':'left',y:'top'},offset:{x:(d==12?0:d==1?-1:1)*opt.divotSize,y:1}};break;case 2:case 3:case 4:pos={edge:{x:'left',y:'center'},position:{x:'right',y:d==3?'center':d==2?'top':'bottom'},offset:{x:-1,y:(d==3?0:d==4?-1:1)*opt.divotSize}};break;case 5:case 6:case 7:pos={edge:{x:'center',y:'top'},position:{x:d==6?'center':d==5?'right':'left',y:'bottom'},offset:{x:(d==6?0:d==5?-1:1)*opt.divotSize,y:-1}};break;case 8:case 9:case 10:pos={edge:{x:'right',y:'center'},position:{x:'left',y:d==9?'center':d==10?'top':'bottom'},offset:{x:1,y:(d==9?0:d==8?-1:1)*opt.divotSize}};break};var putItBack=this.expose();this.pointer.position($extend({relativeTo:this.pointyWrapper},pos,options));putItBack()},setContent:function(a1,a2){this.parent(a1,a2);this.top[this.h1?'removeClass':'addClass']('noCaption');if(Browser.Engine.trident4)document.id(this).getElements('.bottom_ll, .bottom_lr').setStyle('font-size',1);if(this.options.closeButton)this.body.setStyle('margin-right',6);this.positionPointer();return this},makeCaption:function(caption){this.parent(caption);if(this.options.width&&this.h1)this.h1.setStyle('width',(this.options.width-(this.options.closeButton?25:15)))}});StickyWin.UI.pointy=function(caption,body,options){return document.id(new StickyWin.UI.Pointy(caption,body,options))};StickyWin.ui.pointy=StickyWin.UI.pointy;StickyWin.PointyTip=new Class({Extends:StickyWin,options:{point:"left",pointyOptions:{}},initialize:function(){var args=this.getArgs(arguments);this.setOptions(args.options);var popts=this.options.pointyOptions;var d=popts.direction;if(!d){var map={left:9,right:3,up:12,down:6};d=map[this.options.point];if(!d)d=this.options.point;popts.direction=d}if(!popts.width)popts.width=this.options.width;this.pointy=new StickyWin.UI.Pointy(args.caption,args.body,popts);this.options.content=null;this.setOptions(args.options,this.getPositionSettings());this.parent(this.options);this.win.empty().adopt(document.id(this.pointy));this.attachHandlers(this.win);if(this.options.showNow)this.position()},getArgs:function(){return StickyWin.UI.getArgs.apply(this,arguments)},getPositionSettings:function(){var s=this.pointy.options.divotSize;var d=this.options.point;switch(d){case"left":case 8:case 9:case 10:return{edge:{x:'left',y:d==10?'top':d==8?'bottom':'center'},position:{x:'right',y:'center'},offset:{x:s}};case"right":case 2:case 3:case 4:return{edge:{x:'right',y:d==2?'top':d==4?'bottom':'center'},position:{x:'left',y:'center'},offset:{x:-s}};case"up":case 11:case 12:case 1:return{edge:{x:d==11?'left':d==1?'right':'center',y:'top'},position:{x:'center',y:'bottom'},offset:{y:s,x:d==11?-s:d==1?s:0}};case"down":case 5:case 6:case 7:return{edge:{x:d==7?'left':d==5?'right':'center',y:'bottom'},position:{x:'center',y:'top'},offset:{y:-s,x:d==7?-s:d==5?s:0}}}},setContent:function(){var args=this.getArgs(arguments);this.pointy.setContent(args.caption,args.body);[this.pointy.h1,this.pointy.body].each(this.attachHandlers,this);if(this.visible)this.position();return this},showWin:function(){this.parent();this.pointy.positionPointer()},position:function(options){this.parent(options);this.pointy.positionPointer()},attachHandlers:function(content){if(!content)return;content.getElements('.'+this.options.closeClassName).addEvent('click',function(){this.hide()}.bind(this));content.getElements('.'+this.options.pinClassName).addEvent('click',function(){this.togglepin()}.bind(this))}});Tips.Pointy=new Class({Extends:Tips,options:{onShow:function(tip,stickyWin){stickyWin.show()},onHide:function(tip,stickyWin){stickyWin.hide()},pointyTipOptions:{point:11,width:150,pointyOptions:{closeButton:false}}},initialize:function(){var params=Array.link(arguments,{options:Object.type,elements:$defined});this.setOptions(params.options);this.tip=new StickyWin.PointyTip($extend(this.options.pointyTipOptions,{showNow:false}));if(this.options.className)document.id(this.tip).addClass(this.options.className);if(params.elements)this.attach(params.elements)},elementEnter:function(event,element){var title=element.retrieve('tip:title');var text=element.retrieve('tip:text');this.tip.setContent(title,text);this.timer=$clear(this.timer);this.timer=this.show.delay(this.options.showDelay,this);this.position(element)},elementLeave:function(event){$clear(this.timer);this.timer=this.hide.delay(this.options.hideDelay,this)},elementMove:function(event){return},position:function(element){this.tip.setOptions({relativeTo:element});this.tip.position()},show:function(){this.fireEvent('show',[document.id(this.tip),this.tip])},hide:function(){this.fireEvent('hide',[document.id(this.tip),this.tip])}});var Waiter=new Class({Implements:[Options,Events,Chain,Class.Occlude],options:{baseHref:'http://www.cnet.com/html/rb/assets/global/waiter/',containerProps:{styles:{position:'absolute','text-align':'center'},'class':'waiterContainer'},containerPosition:{},msg:false,msgProps:{styles:{'text-align':'center',fontWeight:'bold'},'class':'waiterMsg'},img:{src:'waiter.gif',styles:{width:24,height:24},'class':'waiterImg'},layer:{styles:{width:0,height:0,position:'absolute',zIndex:999,display:'none',opacity:0.9,background:'#fff'},'class':'waitingDiv'},useIframeShim:true,fxOptions:{},injectWhere:null},property:'Waiter',initialize:function(target,options){this.element=document.id(target)||document.id(document.body);if(this.occlude())return this.occluded;this.setOptions(options);this.build();this.place(target)},build:function(){this.waiterContainer=new Element('div',this.options.containerProps);if(this.options.msg){this.msgContainer=new Element('div',this.options.msgProps);this.waiterContainer.adopt(this.msgContainer);if(!document.id(this.options.msg))this.msg=new Element('p').appendText(this.options.msg);else this.msg=document.id(this.options.msg);this.msgContainer.adopt(this.msg)}if(this.options.img)this.waiterImg=document.id(this.options.img.id)||new Element('img',$merge(this.options.img,{src:this.options.baseHref+this.options.img.src})).inject(this.waiterContainer);this.waiterOverlay=document.id(this.options.layer.id)||new Element('div').adopt(this.waiterContainer);this.waiterOverlay.set(this.options.layer);try{if(this.options.useIframeShim)this.shim=new IframeShim(this.waiterOverlay,this.options.iframeShimOptions)}catch(e){dbug.log("Waiter attempting to use IframeShim but failed; did you include IframeShim? Error: ",e);this.options.useIframeShim=false}this.waiterFx=this.waiterFx||new Fx.Elements($$(this.waiterContainer,this.waiterOverlay),this.options.fxOptions)},place:function(target,where){var where=where||this.options.injectWhere||target==document.body?'inside':'after';this.waiterOverlay.inject(target,where)},toggle:function(element,show){element=document.id(element)||document.id(this.active)||document.id(this.element);this.place(element);if(!document.id(element))return this;if(this.active&&element!=this.active)return this.stop(this.start.bind(this,element));if((!this.active||show)&&show!==false)this.start(element);else if(this.active&&!show)this.stop();return this},reset:function(){this.waiterFx.cancel().set({0:{opacity:[0]},1:{opacity:[0]}})},start:function(element){this.reset();element=document.id(element)||document.id(this.element);this.place(element);var start=function(){var dim=element.getComputedSize();this.active=element;this.waiterOverlay.setStyles({width:this.options.layer.width||dim.totalWidth,height:this.options.layer.height||dim.totalHeight,display:'block'}).position({relativeTo:element,position:'upperLeft'});this.waiterContainer.position($merge({relativeTo:this.waiterOverlay},this.options.containerPosition));if(this.options.useIframeShim)this.shim.show();this.waiterFx.start({0:{opacity:[1]},1:{opacity:[this.options.layer.styles.opacity]}}).chain(function(){if(this.active==element)this.fireEvent('onShow',element);this.callChain()}.bind(this))}.bind(this);if(this.active&&this.active!=element)this.stop(start);else start();return this},stop:function(callback){if(!this.active){if($type(callback)=="function")callback.attempt();return this}this.waiterFx.cancel();this.waiterFx.clearChain();this.waiterFx.start({0:{opacity:[0]},1:{opacity:[0]}}).chain(function(){this.active=null;this.waiterOverlay.hide();if(this.options.useIframeShim)this.shim.hide();this.fireEvent('onHide',this.active);this.callChain();this.clearChain();if($type(callback)=="function")callback.attempt()}.bind(this));return this}});if(window.Request){Request=Class.refactor(Request,{options:{useWaiter:false,waiterOptions:{},waiterTarget:false},initialize:function(options){this._send=this.send;this.send=function(options){if(this.waiter)this.waiter.start().chain(this._send.bind(this,options));else this._send(options);return this};this.previous(options);if(this.options.useWaiter&&(document.id(this.options.update)||document.id(this.options.waiterTarget))){this.waiter=new Waiter(this.options.waiterTarget||this.options.update,this.options.waiterOptions);['onComplete','onException','onCancel'].each(function(event){this.addEvent(event,this.waiter.stop.bind(this.waiter))},this)}}})}Element.Properties.waiter={set:function(options){var waiter=this.retrieve('waiter');return this.eliminate('waiter').store('waiter:options',options)},get:function(options){if(options||!this.retrieve('waiter')){if(options||!this.retrieve('waiter:options'))this.set('waiter',options);this.store('waiter',new Waiter(this,this.retrieve('waiter:options')))}return this.retrieve('waiter')}};Element.implement({wait:function(options){this.get('waiter',options).start();return this},release:function(){var opt=Array.link(arguments,{options:Object.type,callback:Function.type});this.get('waiter',opt.options).stop(opt.callback);return this}});var Collapsable=new Class({Extends:Fx.Reveal,initialize:function(clicker,section,options){this.clicker=document.id(clicker);this.section=document.id(section);this.parent(this.section,options);this.addEvents()},addEvents:function(){this.clicker.addEvent('click',this.toggle.bind(this))}});var HoverGroup=new Class({Implements:[Options,Events],Binds:['enter','leave','remain'],options:{elements:[],delay:300,start:['mouseenter'],remain:[],end:['mouseleave']},initialize:function(options){this.setOptions(options);this.attachTo(this.options.elements);this.addEvents({leave:function(){this.active=false},enter:function(){this.active=true}})},elements:[],attachTo:function(elements,detach){var starters={},remainers={},enders={};elements=$G(elements);this.options.start.each(function(start){starters[start]=this.enter},this);this.options.end.each(function(end){enders[end]=this.leave},this);this.options.remain.each(function(remain){remainers[remain]=this.remain},this);if(detach){elements.each(function(el){el.removeEvents(starters).removeEvents(enders).removeEvents(remainers);this.elements.erase(el)})}else{elements.each(function(el){el.addEvents(starters).addEvents(enders).addEvents(remainers)});this.elements.combine(elements)}return this},detachFrom:function(elements){this.attachTo(elements,true)},enter:function(e){this.isMoused=true;this.assert(e)},leave:function(e){this.isMoused=false;this.assert(e)},remain:function(e){if(this.active)this.enter(e)},assert:function(e){$clear(this.assertion);this.assertion=(function(){if(!this.isMoused&&this.active)this.fireEvent('leave',e);else if(this.isMoused&&!this.active)this.fireEvent('enter',e)}).delay(this.options.delay,this)}});var HtmlTable=new Class({Implements:[Options],options:{properties:{cellpadding:0,cellspacing:0,border:0},rows:[]},initialize:function(options){this.setOptions(options);this.table=new Element('table').setProperties(this.options.properties);this.table.store('HtmlTable',this);this.tbody=new Element('tbody').inject(this.table);this.options.rows.each(this.push.bind(this));["adopt","inject","wraps","grab","replaces","empty","dispose"].each(function(method){this[method]=this.table[method].bind(this.table)},this)},toElement:function(){return this.table},push:function(row){var tr=new Element('tr').inject(this.tbody);var tds=row.map(function(tdata){tdata=tdata||'';var td=new Element('td').inject(tr);if(tdata.properties)td.setProperties(tdata.properties);function setContent(content){if(document.id(content))td.adopt(document.id(content));else td.set('html',content)};if($defined(tdata.content))setContent(tdata.content);else setContent(tdata);return td},this);return{tr:tr,tds:tds}}});var MenuSlider=new Class({Implements:[Options,Events],Binds:['slideIn','slideOut'],options:{fxOptions:{duration:400,transition:'expo:out',link:'cancel'},useIframeShim:true},initialize:function(menu,subMenu,options){this.menu=document.id(menu);this.subMenu=document.id(subMenu);this.setOptions(options);this.makeSlider();this.hoverGroup=new HoverGroup($merge(this.options.hoverGroupOptions,{elements:[this.menu,this.subMenu],onEnter:this.slideIn,onLeave:this.slideOut}))},makeSlider:function(){this.slider=new Fx.Slide(this.subMenu,this.options.fxOptions).hide();if(this.options.useIframeShim&&window.IframeShim)this.shim=new IframeShim(this.subMenu)},slideIn:function(){this.fireEvent('inStart');this.slider.slideIn().chain(function(){if(this.shim)this.shim.show();this.fireEvent('in')}.bind(this));this.visible=true;return this},slideOut:function(){this.hide();this.fireEvent('out');if(this.shim)this.shim.hide();this.visible=false;return this},hide:function(){$clear(this.hoverGroup.assertion);this.hoverGroup.active=false;this.slider.cancel();this.slider.hide();if(this.shim)this.shim.hide();this.visible=true;return this},isVisible:function(){return this.visible}});var MooScroller=new Class({Implements:[Options,Events],options:{maxThumbSize:10,mode:'vertical',width:0,scrollSteps:10,wheel:true,scrollLinks:{forward:'scrollForward',back:'scrollBack'},hideWhenNoOverflow:true},initialize:function(content,knob,options){this.setOptions(options);this.horz=(this.options.mode=="horizontal");this.content=document.id(content).setStyle('overflow','hidden');this.knob=document.id(knob);this.track=this.knob.getParent();this.setPositions();if(this.horz&&this.options.width){this.wrapper=new Element('div');this.content.getChildren().each(function(child){this.wrapper.adopt(child)},this);this.wrapper.inject(this.content).setStyle('width',this.options.width)}this.bound={'start':this.start.bind(this),'end':this.end.bind(this),'drag':this.drag.bind(this),'wheel':this.wheel.bind(this),'page':this.page.bind(this)};this.position={};this.mouse={};this.update();this.attach();var clearScroll=function(){$clear(this.scrolling)}.bind(this);['forward','back'].each(function(direction){var lnk=document.id(this.options.scrollLinks[direction]);if(lnk){lnk.addEvents({mousedown:function(){this.scrolling=this[direction].periodical(50,this)}.bind(this),mouseup:clearScroll.bind(this),click:clearScroll.bind(this)})}},this);this.knob.addEvent('click',clearScroll.bind(this));window.addEvent('domready',function(){try{document.id(document.body).addEvent('mouseup',clearScroll.bind(this))}catch(e){}}.bind(this))},setPositions:function(){[this.track,this.knob].each(function(el){if(el.getStyle('position')=='static')el.setStyle('position','relative')})},toElement:function(){return this.content},update:function(){var plain=this.horz?'Width':'Height';this.contentSize=this.content['offset'+plain];this.contentScrollSize=this.content['scroll'+plain];this.trackSize=this.track['offset'+plain];this.contentRatio=this.contentSize/this.contentScrollSize;this.knobSize=(this.trackSize*this.contentRatio).limit(this.options.maxThumbSize,this.trackSize);if(this.options.hideWhenNoOverflow){this.hidden=this.knobSize==this.trackSize;this.track.setStyle('opacity',this.hidden?0:1)}this.scrollRatio=this.contentScrollSize/this.trackSize;this.knob.setStyle(plain.toLowerCase(),this.knobSize);this.updateThumbFromContentScroll();this.updateContentFromThumbPosition()},updateContentFromThumbPosition:function(){this.content[this.horz?'scrollLeft':'scrollTop']=this.position.now*this.scrollRatio},updateThumbFromContentScroll:function(){this.position.now=(this.content[this.horz?'scrollLeft':'scrollTop']/this.scrollRatio).limit(0,(this.trackSize-this.knobSize));this.knob.setStyle(this.horz?'left':'top',this.position.now)},attach:function(){this.knob.addEvent('mousedown',this.bound.start);if(this.options.scrollSteps)this.content.addEvent('mousewheel',this.bound.wheel);this.track.addEvent('mouseup',this.bound.page)},wheel:function(event){if(this.hidden)return;this.scroll(-(event.wheel*this.options.scrollSteps));this.updateThumbFromContentScroll();event.stop()},scroll:function(steps){steps=steps||this.options.scrollSteps;this.content[this.horz?'scrollLeft':'scrollTop']+=steps;this.updateThumbFromContentScroll();this.fireEvent('onScroll',steps)},forward:function(steps){this.scroll(steps)},back:function(steps){steps=steps||this.options.scrollSteps;this.scroll(-steps)},page:function(event){var axis=this.horz?'x':'y';var forward=(event.page[axis]>this.knob.getPosition()[axis]);this.scroll((forward?1:-1)*this.content['offset'+(this.horz?'Width':'Height')]);this.updateThumbFromContentScroll();this.fireEvent('onPage',forward);event.stop()},start:function(event){var axis=this.horz?'x':'y';this.mouse.start=event.page[axis];this.position.start=this.knob.getStyle(this.horz?'left':'top').toInt();document.addEvent('mousemove',this.bound.drag);document.addEvent('mouseup',this.bound.end);this.knob.addEvent('mouseup',this.bound.end);event.stop()},end:function(event){document.removeEvent('mousemove',this.bound.drag);document.removeEvent('mouseup',this.bound.end);this.knob.removeEvent('mouseup',this.bound.end);event.stop()},drag:function(event){var axis=this.horz?'x':'y';this.mouse.now=event.page[axis];this.position.now=(this.position.start+(this.mouse.now-this.mouse.start)).limit(0,(this.trackSize-this.knobSize));this.updateContentFromThumbPosition();this.updateThumbFromContentScroll();event.stop()}});var MultipleOpenAccordion=new Class({Implements:[Options,Events,Chain],options:{togglers:[],elements:[],openAll:false,firstElementsOpen:[0],fixedHeight:false,fixedWidth:false,height:true,opacity:true,width:false},togglers:[],elements:[],initialize:function(options){var args=Array.link(arguments,{options:Object.type,elements:Array.type});this.setOptions(args.options);elements=$$(this.options.elements);$$(this.options.togglers).each(function(toggler,idx){this.addSection(toggler,elements[idx],idx)},this);if(this.togglers.length){if(this.options.openAll)this.showAll();else this.toggleSections(this.options.firstElementsOpen,false,true)}this.openSections=this.showSections.bind(this);this.closeSections=this.hideSections.bind(this)},addSection:function(toggler,element){toggler=document.id(toggler);element=document.id(element);var test=this.togglers.contains(toggler);var len=this.togglers.length;this.togglers.include(toggler);this.elements.include(element);var idx=this.togglers.indexOf(toggler);toggler.addEvent('click',this.toggleSection.bind(this,idx));var mode;if(this.options.height&&this.options.width)mode="both";else mode=(this.options.height)?"vertical":"horizontal";element.store('reveal',new Fx.Reveal(element,{transitionOpacity:this.options.opacity,mode:mode,heightOverride:this.options.fixedHeight,widthOverride:this.options.fixedWidth}));return this},onComplete:function(idx,callChain){this.fireEvent(this.elements[idx].isDisplayed()?'onActive':'onBackground',[this.togglers[idx],this.elements[idx]]);this.callChain();return this},showSection:function(idx,useFx){this.toggleSection(idx,useFx,true)},hideSection:function(idx,useFx){this.toggleSection(idx,useFx,false)},toggleSection:function(idx,useFx,show,callChain){var method=show?'reveal':$defined(show)?'dissolve':'toggle';callChain=$pick(callChain,true);var el=this.elements[idx];if($pick(useFx,true)){el.retrieve('reveal')[method]().chain(this.onComplete.bind(this,[idx,callChain]))}else{if(method=="toggle")el.togglek();else el[method=="reveal"?'show':'hide']();this.onComplete(idx,callChain)}return this},toggleAll:function(useFx,show){var method=show?'reveal':$chk(show)?'disolve':'toggle';var last=this.elements.getLast();this.elements.each(function(el,idx){this.toggleSection(idx,useFx,show,el==last)},this);return this},toggleSections:function(sections,useFx,show){last=sections.getLast();this.elements.each(function(el,idx){this.toggleSection(idx,useFx,sections.contains(idx)?show:!show,idx==last)},this);return this},showSections:function(sections,useFx){sections.each(function(i){this.showSection(i,useFx)},this)},hideSections:function(sections,useFx){sections.each(function(i){this.hideSection(i,useFx)},this)},showAll:function(useFx){return this.toggleAll(useFx,true)},hideAll:function(useFx){return this.toggleAll(useFx,false)}});var SimpleSlideShow=new Class({Implements:[Events,Options,Chain],options:{startIndex:0,slides:[],currentSlideClass:'currentSlide',currentIndexContainer:false,maxContainer:false,nextLink:false,prevLink:false,wrap:true,disabledLinkClass:'disabled',crossFadeOptions:{}},initialize:function(options){this.setOptions(options);var slides=this.options.slides;this.makeSlides(slides);this.setCounters();this.setUpNav();this.now=this.options.startIndex;if(this.slides.length>0)this.show(this.now)},slides:[],setCounters:function(){if(document.id(this.options.currentIndexContainer))document.id(this.options.currentIndexContainer).set('html',this.now+1);if(document.id(this.options.maxContainer))document.id(this.options.maxContainer).set('html',this.slides.length)},makeSlides:function(slides){slides.each(function(slide,index){if(index!=this.now)slide.setStyle('display','none');else slide.setStyle('display','block');this.makeSlide(slide)},this)},makeSlide:function(slide){slide.addEvent('click',function(){this.fireEvent('onSlideClick')}.bind(this));this.slides.include(slide)},setUpNav:function(){if(document.id(this.options.nextLink)){document.id(this.options.nextLink).addEvent('click',function(){this.forward()}.bind(this))}if(document.id(this.options.prevLink)){document.id(this.options.prevLink).addEvent('click',function(){this.back()}.bind(this))}},disableLinks:function(now){if(this.options.wrap)return;now=$pick(now,this.now);var prev=document.id(this.options.prevLink);var next=document.id(this.options.nextLink);var dlc=this.options.disabledLinkClass;if(now>0){if(prev)prev.removeClass(dlc);if(now===this.slides.length-1&&next)next.addClass(dlc);else if(next)next.removeClass(dlc)}else{if(this.slides.length>0&&next)next.removeClass(dlc);if(prev)prev.addClass(dlc)}},forward:function(){if($type(this.now)&&this.now0){this.show(this.now-1);this.fireEvent('onPrev')}else if(this.options.wrap&&this.slides.length>1){this.show(this.slides.length-1);this.fireEvent('prev')}return this},show:function(index){if(this.showing)return this.chain(this.show.bind(this,index));var now=this.now;var s=this.slides[index];function fadeIn(s,resetOpacity){s.setStyle('display','block');if(!Browser.Engine.trident4){if(resetOpacity)s.setStyle('opacity',0);s.set('tween',this.options.crossFadeOptions).get('tween').start('opacity',1).chain(function(){this.showing=false;this.disableLinks();this.callChain();this.fireEvent('onSlideDisplay',index)}.bind(this))}};if(s){if($type(this.now)&&this.now!=index){if(!Browser.Engine.trident4){var fx=this.slides[this.now].get('tween');fx.setOptions(this.options.crossFadeOptions);this.showing=true;fx.start('opacity',0).chain(function(){this.slides[now].setStyle('display','none');s.addClass(this.options.currentSlideClass);fadeIn.run([s,true],this);this.fireEvent('onSlideDisplay',index)}.bind(this))}else{this.slides[this.now].setStyle('display','none');fadeIn.run(s,this)}}else fadeIn.run(s,this);this.now=index;this.setCounters()}},slideClick:function(){this.fireEvent('onSlideClick',[this.slides[this.now],this.now])}});SimpleSlideShow.Carousel=new Class({Extends:SimpleSlideShow,Implements:[Class.ToElement],Binds:['makeSlide'],options:{sliderWidth:999999},initialize:function(container,options){this.setOptions(options);this.container=document.id(container);this.element=new Element('div').wraps(this.container).setStyles({width:this.container.getSize().x,overflow:'hidden',position:'relative'});this.container.setStyles({width:this.options.sliderWidth,position:'relative'});this.parent(options)},makeSlides:function(slides){this.slides=[];slides.each(this.makeSlide)},makeSlide:function(slide){if(slide.retrieve('slideSetup'))return;slide.store('slideSetup',true);slide.show();var s=new Element('div',{styles:{'float':'left',width:document.id(this).getSize().x}}).wraps(slide);this.parent(s);this.slides.erase(slide);this.setCounters();s.show();s.inject(this.container)},show:function(index){if(!this.container)return;this.fx=this.fx||new Fx.Tween(this.container,{property:'left'});if(this.showing)return this.chain(this.show.bind(this,index));var now=this.now;var s=this.slides[index];if(s){if(this.now!=index){this.fx.start(-s.getPosition(this.container).x).chain(function(){s.addClass(this.options.currentSlideClass);this.showing=false;this.disableLinks();this.callChain();this.fireEvent('onSlideDisplay',index)}.bind(this))}this.now=index;this.setCounters()}}});var SimpleImageSlideShow;(function(){var extender=function(extend,passContainer){return{Extends:extend,Implements:Class.ToElement,options:{imgUrls:[],imgClass:'screenshot',container:false},initialize:function(){var args=Array.link(arguments,{options:Object.type,container:$defined});this.container=document.id(args.container)||(args.options?document.id(args.options.container):false);if(passContainer)this.parent(this.container,args.options);else this.parent(args.options);this.options.imgUrls.each(function(url){this.addImg(url)},this);this.show(this.options.startIndex)},addImg:function(url){if(this.container){var img=new Element('img',{'src':url,'id':this.options.imgClass+this.slides.length}).addClass(this.options.imgClass).setStyle('display','none').inject(this.container).addEvent('click',this.slideClick.bind(this));this.slides.push(img);this.makeSlide(img);this.setCounters()}return this}}};SimpleImageSlideShow=new Class(extender(SimpleSlideShow));SimpleImageSlideShow.Carousel=new Class(extender(SimpleSlideShow.Carousel,true))})();var TabSwapper=new Class({Implements:[Options,Events],options:{selectedClass:'tabSelected',mouseoverClass:'tabOver',deselectedClass:'',rearrangeDOM:true,initPanel:0,smooth:false,smoothSize:false,maxSize:null,effectOptions:{duration:500},cookieName:null,cookieDays:999},tabs:[],sections:[],clickers:[],sectionFx:[],initialize:function(options){this.setOptions(options);var prev=this.setup();if(prev)return prev;if(this.options.cookieName&&this.recall())this.show(this.recall().toInt());else this.show(this.options.initPanel)},setup:function(){var opt=this.options;sections=$$(opt.sections);tabs=$$(opt.tabs);if(tabs[0]&&tabs[0].retrieve('tabSwapper'))return tabs[0].retrieve('tabSwapper');clickers=$$(opt.clickers);tabs.each(function(tab,index){this.addTab(tab,sections[index],clickers[index],index)},this)},addTab:function(tab,section,clicker,index){tab=document.id(tab);clicker=document.id(clicker);section=document.id(section);if(this.tabs.indexOf(tab)>=0&&tab.retrieve('tabbered')&&this.tabs.indexOf(tab)!=index&&this.options.rearrangeDOM){this.moveTab(this.tabs.indexOf(tab),index);return this}if(!$defined(index))index=this.tabs.length;if(index>0&&this.tabs[index-1]&&this.options.rearrangeDOM){tab.inject(this.tabs[index-1],'after');section.inject(this.tabs[index-1].retrieve('section'),'after')}this.tabs.splice(index,0,tab);clicker=clicker||tab;tab.addEvents({mouseout:function(){tab.removeClass(this.options.mouseoverClass)}.bind(this),mouseover:function(){tab.addClass(this.options.mouseoverClass)}.bind(this)});clicker.addEvent('click',function(e){e.preventDefault();this.show(index)}.bind(this));tab.store('tabbered',true);tab.store('section',section);tab.store('clicker',clicker);this.hideSection(index);return this},removeTab:function(index){var now=this.tabs[this.now];if(this.now==index){if(index>0)this.show(index-1);else if(index0&&this.selectedDates.end.diff(atDate,'minute')<0)td.addClass('range')}.bind(this));this.addEvent('selectedDateMatch',function(td,when){if(this.options.range)td.addClass('selected_'+when)}.bind(this))},updateInput:function(){this.previous();if(this.options.time)this.updateView()},updateView:function(){this.whens.each(function(when){var stamp=this.stamps[when];var date=this.getDates()[when];stamp.date.set('html',date?date.format("%b. %d, %Y"):"");if(stamp.hr){stamp.hr.set('value',date?date.format("%I"):"");stamp.min.set('value',date?date.format("%M"):"")}},this)},stamps:{},setupWideView:function(){var timeStampMap={hr:'%I','min':'%M'};timeSetMap={hr:'setHours','min':'setMinutes'};var dates=this.getDates();if(!this.options.range&&!this.options.time)return;this.stamps.table=new Element('table',{'class':'stamp'}).inject(this.container);this.stamps.tbody=new Element('tbody').inject(this.stamps.table);this.whens.each(function(when){this.stamps[when]={};var s=this.stamps[when];s.container=new Element('tr').addClass(when+'_stamp').inject(this.stamps.tbody);s.label=new Element('td').inject(s.container).addClass('label');if(this.whens.length==1){s.label.set('html','date:')}else{s.label.set('html',when=="start"?"from:":"to:")}s.date=new Element('td').inject(s.container);if(this.options.time){currentWhen=dates[when]||new Date();s.time=new Element('tr').inject(this.stamps.tbody);new Element('td').inject(s.time);s.timeTD=new Element('td').inject(s.time);s.timeInputs=new Element('div').addClass('time clearfix').inject(s.timeTD);s.timeSub=new Element('div',{'class':'timeSub'}).inject(s.timeTD);['hr','min'].each(function(t,i){s[t]=new Element('input',{type:'text','class':t,name:t,events:{focus:function(){this.select()},change:function(){this.selectedDates[when][timeSetMap[t]](s[t].get('value'));this.selectedDates[when].setAMPM(s.ampm.get('value'));this.updateInput()}.bind(this)}}).inject(s.timeInputs);s[t].set('value',currentWhen.format(timeStampMap[t]));if(i<1)s.timeInputs.adopt(new Element('span',{'class':'seperator'}).set('html',":"));new Element('span',{'class':t}).set('html',t).inject(s.timeSub)},this);s.ampm=new Element('select').inject(s.timeInputs);['AM','PM'].each(function(ampm){var opt=new Element('option',{value:ampm,text:ampm.toLowerCase()}).set('html',ampm).inject(s.ampm);if(ampm==currentWhen.format("%p"))opt.selected=true});s.ampm.addEvent('change',function(){var date=this.getDates()[when];var ampm=s.ampm.get('value');if(ampm!=date.format("%p")){date.setAMPM(ampm);this.updateInput()}}.bind(this))}},this);new Element('tr').inject(this.stamps.tbody).adopt(new Element('td',{colspan:2}).adopt(new Element('a',{'class':'closeSticky button',events:{click:function(){this.hide()}.bind(this)}}).set('html','Ok')))},show:function(){this.previous();if(this.options.time){if(!this.stamps.table)this.setupWideView();this.updateView()}},startSet:false,onPick:function(){if((this.options.range&&this.selectedDates.start&&this.selectedDates.end)||!this.options.range){this.previous()}},setSelectedDates:function(e,newDate){if(this.options.range){if(this.selectedDates.start&&this.startSet){if(this.selectedDates.start.getTime()>newDate.getTime()){this.selectedDates.end=new Date(this.selectedDates.start);this.selectedDates.start=newDate}else{this.selectedDates.end=newDate}this.startSet=false}else{this.selectedDates.start=newDate;if(this.selectedDates.end&&this.selectedDates.start.getTime()>this.selectedDates.end.getTime())this.selectedDates.end=new Date(newDate);this.startSet=true}}else{this.previous(e,newDate)}if(this.options.time){this.whens.each(function(when){var hr=this.stamps[when].hr.get('value').toInt();if(this.stamps[when].ampm.get('value')=="PM"&&hr<12)hr+=12;this.selectedDates[when].setHours(hr);this.selectedDates[when].setMinutes(this.stamps[when]['min'].get('value')||"0");this.selectedDates[when].setAMPM(this.stamps[when].ampm.get('value')||"AM")},this)}}});var Fupdate;(function(){Fupdate=new Class({Implements:[Options,Events,Class.Occlude,Class.ToElement],options:{requestOptions:{evalScripts:true,useWaiter:true,link:'ignore'},extraData:{},resetForm:true},property:'fupdate',initialize:function(form,update,options){this.element=document.id(form);if(this.occlude())return this.occluded;this.update=document.id(update);this.setOptions(options);this.makeRequest();if(this.options.resetForm){this.request.addEvent('success',function(){$try(function(){document.id(this).reset()}.bind(this));if(window.OverText)OverText.update()}.bind(this))}this.addFormEvent()},makeRequest:function(){this.request=new Request.HTML($merge({url:document.id(this).get('action'),update:this.update,emulation:false,waiterTarget:document.id(this),method:document.id(this).get('method')||'post'},this.options.requestOptions)).addEvents({success:function(text,xml){['success','complete'].each(function(evt){this.fireEvent(evt,[this.update,text,xml])},this)}.bind(this),failure:function(xhr){this.fireEvent('failure',xhr)}.bind(this),exception:function(){this.fireEvent('failure',xhr)}.bind(this)})},addFormEvent:function(){var fv=document.id(this).retrieve('validator');if(fv){fv.addEvent('onFormValidate',function(valid,form,e){if(valid||!fv.options.stopOnFailure){if(e&&e.stop)e.stop();this.send()}}.bind(this))}else{document.id(this).addEvent('submit',function(e){e.stop();this.send()}.bind(this))}},send:function(){var str=document.id(this).toQueryString().trim();formData=str.parseQueryString();var data=$H(this.options.extraData).combine(formData);this.fireEvent('send',[document.id(this),data]);this.request.send({data:data});return this}});Element.Properties.fupdate={set:function(){var opt=Array.link(arguments,{options:Object.type,update:Element.type,updateId:String.type});var update=opt.update||opt.updateId;var fupdate=this.retrieve('fupdate');if(update){if(fupdate)fupdate.update=document.id(update);this.store('fupdate:update',update)}if(opt.options){if(fupdate)fupdate.setOptions(opt.options);this.store('fupdate:options',opt.options)}return this},get:function(){var opt=Array.link(arguments,{options:Object.type,update:Element.type,updateId:String.type});var update=opt.update||opt.updateId;if(opt.options||update||!this.retrieve('fupdate')){if(opt.options||!this.retrieve('fupdate:options'))this.set('fupdate',opt.options);if(update)this.set('fupdate',update);this.store('fupdate',new Fupdate(this,this.retrieve('fupdate:update'),this.retrieve('fupdate:options')))}return this.retrieve('fupdate')}};Element.implement({fupdate:function(update,options){this.get('fupdate',update,options).send();return this}})})();Fupdate.Append=new Class({Extends:Fupdate,options:{useReveal:true,revealOptions:{},inject:'bottom'},makeRequest:function(){this.request=new Request.HTML($merge({url:document.id(this).get('action'),method:document.id(this).get('method')||'post',emulation:false,waiterTarget:document.id(this)},this.options.requestOptions,{evalScripts:false})).addEvents({success:function(tree,elements,html,javascript){var container=new Element('div').set('html',html).hide();var kids=container.getChildren();if(kids.length==1)container=kids[0];container.inject(this.update,this.options.inject);if(this.options.requestOptions.evalScripts)$exec(javascript);this.fireEvent('beforeEffect',container);var finish=function(){this.fireEvent('success',[container,this.update,tree,elements,html,javascript])}.bind(this);if(this.options.useReveal){container.set('reveal',this.options.revealOptions).get('reveal').chain(finish);container.reveal()}else{finish()}}.bind(this),failure:function(xhr){this.fireEvent('failure',xhr)}.bind(this)})}});(function(){var prompter=function(ext){return{Extends:ext,options:{stickyWinToUse:StickyWin.Modal,stickyWinOptions:{},caption:'Update Info',useUi:true,stickyWinUiOptions:{width:500},useWaiter:true},initialize:function(form,update,options){this.setOptions(options);this.update=document.id(update);this.makeStickyWin(form);this.swin.addEvent('close',function(){if(this.request&&this.request.waiter)this.request.waiter.stop()});this.addEvent('success',this.hide.bind(this))},makeStickyWin:function(form){if(document.id(form))form=document.id(form);this.swin=new this.options.stickyWinToUse({content:this.options.useUi?StickyWin.ui(this.options.caption,form,this.options.stickyWinUiOptions):form,showNow:false});this.element=this.swin.win.getElement('form');this.initAfterUpdate()},hide:function(){this.swin.hide();return this},prompt:function(){this.swin.show();return this},initAfterUpdate:function(){this.setOptions({requestOptions:{useWaiter:this.options.useWaiter,waiterTarget:document.id(this),waiterOptions:{layer:{styles:{zIndex:10001}}}}});this.makeRequest();this.addFormEvent();document.id(this).store('fupdate',this)}}};Fupdate.Prompt=new Class(prompter(Fupdate));if(Fupdate.Append)Fupdate.Append.Prompt=new Class(prompter(Fupdate.Append));var ajaxPrompter=function(ext){return{Extends:ext,options:{stickyWinToUse:StickyWin.Modal.Ajax},makeStickyWin:function(formUrl){if(this.swin)return this.swin;this.swin=new this.options.stickyWinToUse($merge({showNow:false,requestOptions:this.options.requestOptions,onHide:function(){this.win.empty()},url:formUrl,handleResponse:function(response){var responseScript="";this.swin.Request.response.text.stripScripts(function(script){responseScript+=script});var content=this.options.useUi?StickyWin.ui('Update Info',response,this.options.stickyWinUiOptions):response;this.swin.setContent(content);if(this.options.requestOptions.evalScripts)$exec(responseScript);this.element=this.swin.win.getElement('form');this.initAfterUpdate();this.swin.show()}.bind(this)},this.options.stickyWinOptions));return this.swin},prompt:function(){this.makeStickyWin().update();return this}}};Fupdate.AjaxPrompt=new Class(ajaxPrompter(Fupdate.Prompt));if(Fupdate.Append)Fupdate.Append.AjaxPrompt=new Class(ajaxPrompter(Fupdate.Append.Prompt))})();var InputFocus=new Class({Implements:[Options,Class.Occlude,Class.ToElement],Binds:['focus','blur'],options:{focusedClass:'focused',hideOutline:false},initialize:function(input,options){this.element=document.id(input);if(this.occlude('focuser'))return this.occluded;this.setOptions(options);this.element.addEvents({focus:this.focus,blur:this.blur})},focus:function(){if(this.options.hideOutline){(function(){if(Browser.Engine.trident)document.id(this).set('hideFocus',true);else document.id(this).setStyle('outline','0')}).delay(500,this)}document.id(this).addClass(this.options.focusedClass)},blur:function(){document.id(this).removeClass(this.options.focusedClass)}});var Picklet=new Class({Implements:[Options,Events],inputElements:{},initialize:function(className,options){this.setOptions(options);this.className=className;this.getQuery=this.options.getQuery}});var ProductPicker=new Class({Implements:[Options,Events,StyleWriter],options:{title:'Product picker',showOnFocus:true,additionalShowLinks:[],stickyWinToUse:StickyWin,stickyWinOptions:{fadeDuration:200,draggable:true,width:450},moveIntoView:true,baseHref:'http://www.cnet.com/html/rb/assets/global/Picker',css:"div.productPickerProductDiv div.results { overflow: 'auto'; width: 100%; margin-top: 4px }"+"div.productPickerProductDiv select { margin: 4px 0px 4px 0px}"+"div.pickerPreview div.sliderContent img {border: 1px solid #000}"+"div.pickerPreview div.sliderContent a {color: #0d63a0}"+"div.productPickerProductDiv * {color: #000}"+".tool-tip { color: #fff; width: 172px; z-index: 13000; }"+".tool-title { font: Verdana, Arial, Helvetica, sans-serif; font-weight: bold; font-size: 11px; margin: 0; padding: 8px 8px 4px; background: url(%tipsArt%/bubble.png) top left !important; background: url(%tipsArt%/bubble.gif) top left; }"+".tool-text {font-size: 11px; margin: 0px; padding: 4px 8px 8px; background: url(%tipsArt%/bubble.png) bottom right !important; background: url(%tipsArt%/bubble.gif) bottom right; }"},initialize:function(input,picklets,options){this.setOptions(options);this.writeCss();this.input=document.id(input);if(!this.input)return;this.picklets=picklets;this.setUpObservers()},writeCss:function(){var art=this.options.baseHref;var tipsArt=art.replace("Picker","tips");this.createStyle(this.options.css.replace("%tipsArt%",tipsArt,"g"),'pickerStyles')},getPickletList:function(){if(this.picklets.length>1){var selector=new Element('select').setStyle('width',399);this.picklets.each(function(picklet,index){var opt=new Element('option').set('value',index);opt.text=picklet.options.descriptiveName;selector.adopt(opt)},this);selector.addEvent('change',function(){this.showForm(this.picklets[selector.getSelected()[0].get('value')]);this.focusInput(true)}.bind(this));return selector}else return false},buildPicker:function(picklet){var contents=new Element('div');this.formBody=new Element('div');this.pickletList=this.getPickletList();if(this.pickletList)contents.adopt(this.pickletList);contents.adopt(this.formBody);var body=StickyWin.ui(this.options.title,contents,{width:this.options.stickyWinOptions.width,closeTxt:'close'}).addClass('productPickerProductDiv');this.showForm();return body},showForm:function(picklet){this.form=this.makeSearchForm(picklet||this.picklets[0]);this.formBody.empty().adopt(this.form);(picklet||this.picklets[0]).fireEvent('onShow');this.results=new Element('div').addClass('results');this.formBody.adopt(this.results);this.sliderFx=null;this.fireEvent("onShow")},makeSlider:function(){var png=(Browser.Engine.trident)?'gif':'png';this.slider=new Element('div',{styles:{background:'url('+this.options.baseHref+'/slider.'+png+') top right no-repeat',display:'none',height:250,left:this.options.stickyWinOptions.width-11,position:'absolute',top:25,width:0,overflow:'hidden'}}).addClass('pickerPreview').inject(this.swin.win).addEvents({mouseover:function(){this.previewHover=true}.bind(this),mouseout:function(){this.previewHover=false;(function(){if(!this.previewHover)this.hidePreview()}).delay(400,this)}.bind(this)});this.sliderContent=new Element('div',{styles:{width:130,height:200,padding:10,margin:'10px 10px 0px 0px',overflow:'auto',cssFloat:'right'}}).inject(this.slider).addClass('sliderContent')},makeSearchForm:function(picklet){this.currentPicklet=picklet;var formTable=new Element('table',{styles:{width:"100%",cellpadding:'0',cellspacing:'0'}});var tBody=new Element('tbody').inject(formTable);var form=new Element('form').addEvent('submit',function(e){this.getResults(e.target,picklet)}.bind(this)).adopt(formTable).set('action','javascript:void(0);');$each(picklet.options.inputs,function(val,name){var ins=this.getSearchInputTr(val,name);tBody.adopt(ins.holder);picklet.inputElements[name]=ins.input},this);return form},getSearchInputTr:function(val,name){try{var style=($type(val.style))?val.style:{};var input=(Browser.Engine.trident)?new Element('<'+val.tagName+' name="'+name+'" />'):new Element(val.tagName,{name:name});input.setStyles(style);if(val.type)input.set('type',val.type);if(val.tip&&Tips){input.set('title',val.tip);new Tips([input],{onShow:function(tip){this.shown=true;(function(){if(!this.shown)return;document.id(tip).setStyles({display:'block',opacity:0});new Fx.Tween(tip,{property:'opacity',duration:300}).start(0,.9)}).delay(500,this)},onHide:function(tip){tip.setStyle('visibility','hidden');this.shown=false}})}if(val.tagName=="select"){val.value.each(function(option,index){var opt=new Element('option',{value:option});opt.text=(val.optionNames&&val.optionNames[index])?$pick(val.optionNames[index],option):option;input.adopt(opt)})}else{input.set('value',$pick(val.value,""))}var holder=new Element('tr');var colspan=0;if(val.instructions)holder.adopt(new Element('td').set('html',val.instructions));else colspan=2;var inputTD=new Element('td').adopt(input);if(colspan)inputTD.set('colspan',colspan);holder.adopt(inputTD);return{holder:holder,input:input}}catch(e){dbug.log(e);return false}},getResults:function(form,picklet){if(form.get('tag')!="form")form=$$('form').filter(function(fm){return fm.hasChild(form)})[0];if(!form){dbug.log('error computing form');return null}var query=picklet.getQuery(unescape(form.toQueryString()).parseQueryString());query.addEvent('onComplete',this.showResults.bind(this));query.send();return this},showResults:function(data){var empty=false;if(this.results.innerHTML==''){empty=true;this.results.setStyles({height:0,border:'1px solid #666',padding:0,overflow:'auto',opacity:0})}else this.results.empty();this.items=this.currentPicklet.options.resultsList(data);if(this.items&&this.items.length>0){this.items.each(function(item,index){var name=this.currentPicklet.options.listItemName(item);var value=this.currentPicklet.options.listItemValue(item);this.results.adopt(this.makeProductListEntry(name,value,index))},this)}else{this.results.set('html',"Sorry, there don't seem to be any items for that search")}this.results.morph({height:200,opacity:1});this.listStyles();this.getOnScreen.delay(500,this)},getOnScreen:function(){if(document.compatMode=="BackCompat")return;var s=this.swin.win.getCoordinates();if(s.topwindow.getScroll().y+window.getSize().y&&window.getSize().y>s.height){this.swin.win.tween('top',window.getScroll().y+window.getSize().y-s.height-100);return}try{this.swin.shim.show.delay(500,this.swin.shim)}catch(e){}return},listStyles:function(){var defaultStyle={cursor:'pointer',borderBottom:'1px solid #ddd',padding:'2px 8px 2px 8px',backgroundColor:'#fff',color:'#000',fontWeight:'normal'};var hoverStyle={backgroundColor:'#fcfbd1',color:'#d56a00'};var selectedStyle=$extend(defaultStyle,{color:'#D00000',fontWeight:'bold',backgroundColor:'#eee'});this.results.getElements('div.productPickerProductDiv').each(function(p){var useStyle=(this.input.value.toInt()==p.get('val').toInt())?selectedStyle:defaultStyle;p.setStyles(useStyle);if(!Browser.Engine.trident){p.addEvent('mouseover',function(){p.setStyles(hoverStyle)}.bind(this));p.addEvent('mouseout',function(){p.setStyles(useStyle)})}},this)},makeProductListEntry:function(name,value,index){var pDiv=new Element("div").addClass('productPickerProductDiv').adopt(new Element("div").set('html',name)).set('val',value);pDiv.addEvent('mouseenter',function(e){this.preview=true;this.sliderContent.empty();var content=this.getPreview(index);if($type(content)=="string")this.sliderContent.set('html',content);else if(document.id(content))this.sliderContent.adopt(content);this.showPreview.delay(200,this)}.bind(this));pDiv.addEvent('mouseleave',function(e){this.preview=false;(function(){if(!this.previewHover)this.hidePreview()}).delay(400,this)}.bind(this));pDiv.addEvent('click',function(){this.currentPicklet.options.updateInput(this.input,this.items[index]);this.fireEvent('onPick',[this.input,this.items[index],this]);this.hide();this.listStyles.delay(200,this)}.bind(this));return pDiv},makeStickyWin:function(){if(document.compatMode=="BackCompat")this.options.stickyWinOptions.relativeTo=this.input;this.swin=new this.options.stickyWinToUse($merge(this.options.stickyWinOptions,{draggable:true,content:this.buildPicker()}))},focusInput:function(force){if((!this.focused||$pick(force,false))&&this.form.getElement('input')){this.focused=true;try{this.form.getElement('input').focus()}catch(e){}}},show:function(){if(!this.swin)this.makeStickyWin();if(!this.slider)this.makeSlider();if(!this.swin.visible)this.swin.show();this.focusInput();return this},hide:function(){$$('.tool-tip').hide();this.swin.hide();this.focused=false;return this},setUpObservers:function(){try{if(this.options.showOnFocus)this.input.addEvent('focus',this.show.bind(this));if(this.options.additionalShowLinks.length>0){this.options.additionalShowLinks.each(function(lnk){document.id(lnk).addEvent('click',this.show.bind(this))},this)}}catch(e){dbug.log(e)}},showPreview:function(index){width=this.currentPicklet.options.previewWidth||150;this.sliderContent.setStyle('width',(width-30));if(!this.sliderFx)this.sliderFx=new Fx.Elements([this.slider,this.swin.win]);this.sliderFx.clearChain();this.sliderFx.setOptions({duration:1000,transition:'elastic:out'});if(this.preview&&this.slider.getStyle('width').toInt()0)new ProductPicker(input,picklets,this.options.pickletOptions)}});$extend(Browser,{getHost:function(url){return new URI(url).get('host')},getQueryStringValue:function(key,url){return new URI(url).getData(key)},getQueryStringValues:function(url){return new URI(url).getData()},getPort:function(url){return new URI(url).get('port')},redraw:function(element){var n=document.createTextNode(' ');this.adopt(n);(function(){n.dispose()}).delay(1);return this}});window.addEvent('domready',function(){var count=0;function setQs(){function retry(){count++;if(count<20)setQs.delay(50)};try{if(!Browser.getQueryStringValues())retry();else Browser.qs=Browser.getQueryStringValues()}catch(e){retry()}}setQs()});$extend(Class.prototype,{refactor:function(props){this.prototype=Class.refactor(this,props).prototype;return this}});Number.implement({zeroise:function(length){return String(this).zeroise(length)}});String.implement({zeroise:function(length){return'0'.repeat(length-this.length)+this}});Date.prototype.compare=Date.prototype.diff;Date.prototype.strftime=Date.prototype.format;Element.Properties.inputValue={get:function(){switch(this.get('tag')){case'select':vals=this.getSelected().map(function(op){var v=$pick(op.get('value'),op.get('text'));return(v=="")?op.get('text'):v});return this.get('multiple')?vals:vals[0];case'input':switch(this.get('type')){case'checkbox':return this.get('checked')?this.get('value'):false;case'radio':var checked;if(this.get('checked'))return this.get('value');document.id(this.getParent('form')||document.body).getElements('input').each(function(input){if(input.get('name')==this.get('name')&&input.get('checked'))checked=input.get('value')},this);return checked||null}case'input':case'textarea':return this.get('value');default:return this.get('inputValue')}},set:function(value){switch(this.get('tag')){case'select':this.getElements('option').each(function(op){var v=$pick(op.get('value'),op.get('text'));if(v=="")v=op.get('text');op.set('selected',$splat(value).contains(v))});break;case'input':if(['radio','checkbox'].contains(this.get('type'))){this.set('checked',$type(value)=="boolean"?value:$splat(value).contains(this.get('value')));break}case'textarea':case'input':this.set('value',value);break;default:this.set('inputValue',value)}return this},erase:function(){switch(this.get('tag')){case'select':this.getElements('option').each(function(op){op.erase('selected')});break;case'input':if(['radio','checkbox'].contains(this.get('type'))){this.set('checked',false);break}case'input':case'textarea':this.set('value','');break;default:this.set('inputValue','')}return this}};Element.implement({autoMouseOvers:function(options){options=$extend({outString:'_out',overString:'_over',cssOver:'hover',cssOut:'hoverOut',subSelector:'',applyToBoth:false},options);el=this;if(options.subSelector){el=this.getElements(options.subSelector);if(el.every(function(kid){return kid.retrieve('autoMouseOverSetup')}))return this}el.store('autoMouseOverSetup',true);return el.addEvents({mouseenter:function(){this.swapClass(options.cssOut,options.cssOver);if(this.src&&this.src.contains(options.outString))this.src=this.src.replace(options.outString,options.overString);if(options.applyToBoth&&options.subSelector){this.getElements(options.subSelector).each(function(el){el.swapClass(options.cssOut,options.cssOver)})}}.bind(this),mouseleave:function(){this.swapClass(options.cssOver,options.cssOut);if(this.src&&this.src.contains(options.overString))this.src=this.src.replace(options.overString,options.outString);if(options.applyToBoth&&options.subSelector){this.getElements(options.subSelector).each(function(el){el.swapClass(options.cssOver,options.cssOut)})}}.bind(this)}).swapClass(options.cssOver,options.cssOut);el=null}});window.addEvent('domready',function(){$$('img.autoMouseOver').each(function(img){img.autoMouseOvers()})});(function(){var orig=Element.prototype.setPosition;Element.implement({setPosition:function(options){if(options&&($defined(options.x)||$defined(options.y)))return orig.apply(this,arguments);else return this.position(options)}})})();Element.alias('isDisplayed','isVisible');IframeShim=Class.refactor(IframeShim,{initialize:function(element,options){if(options&&options.zindex)options.zIndex=options.zindex;this.previous(element,options)}});var JsonP=Class.refactor(Request.JSONP,{initialize:function(){var params=Array.link(arguments,{url:String.type,options:Object.type});options=(params.options||{});options.url=options.url||params.url;if(options.callBackKey)options.callbackKey=options.callBackKey;this.previous(options)},getScript:function(options){var queryString=options.queryString||this.options.queryString;if(options.url&&queryString)options.url+=(options.url.indexOf("?")>=0?"&":"?")+queryString;var script=this.previous(options);if($chk(options.globalFunction)){window[options.globalFunction]=function(r){JsonP.requestors[index].handleResults(r)}}return script},request:function(url){this.send({url:url||this.options.url})}});OverText=Class.refactor(OverText,{initialize:function(inputs,options){this.instances=[];if(['array','string'].contains($type(inputs))){this.setOptions(options);$$(inputs).each(this.addElement,this)}else{return this.previous.apply(this,arguments)}},addElement:function(el){this.instances.push(new OverText(el,this.options))},startPolling:function(){if(!this.instances||!this.instances.length)return this.previous.apply(this,arguments);this.instances.each(function(instance){instance.startPolling()})},stopPolling:function(){if(!this.instances.length)return this.previous.apply(this,arguments);this.instances.each(function(instance){instance.stopPolling()})},hideTxt:function(el){var ot=el.retrieve('OverText');if(ot)ot.hide()},showTxt:function(el){var ot=el.retrieve('OverText');if(ot)ot.show()},testOverTxt:function(el){var ot=el.retrieve('OverText');if(ot)ot.test()},repositionAll:function(){this.instances.each(function(instance){instance.reposition()})},repositionOverTxt:function(el){var ot=el.retrieve('OverText');if(ot)ot.reposition()}});Request.Queue=Class.refactor(Request.Queue,{initialize:function(options){if(options){$each({onRequestStart:'onRequest',onRequestSuccess:'onSuccess',onRequestComplete:'onComplete',onRequestCancel:'onCancel',onRequestException:'onException',onRequestFailure:'onFailure'},function(value,key){if(options[key])options[value]=options[key]})}this.previous(options)}});String.implement({findAllEmails:function(){return this.match(new RegExp("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?","gi"))||[]}});String.alias('parseQueryString','parseQuery');/** * Swiff.Uploader - Flash FileReference Control * * @version 3.0 * * @license MIT License * * @author Harald Kirschner * @author Valerio Proietti, * @copyright Authors */ Swiff.Uploader = new Class({ Extends: Swiff, Implements: Events, options: { path: 'Swiff.Uploader.swf', target: null, zIndex: 9999, height: 30, width: 100, callBacks: null, params: { wMode: 'opaque', menu: 'false', allowScriptAccess: 'always' }, typeFilter: null, multiple: true, queued: true, verbose: false, url: null, method: null, data: null, mergeData: true, fieldName: null, fileSizeMin: 1, fileSizeMax: null, // Official limit is 100 MB for FileReference, but I tested up to 2Gb! allowDuplicates: false, timeLimit: (Browser.Platform.linux) ? 0 : 30, buttonImage: null, policyFile: null, fileListMax: 0, fileListSizeMax: 0, instantStart: false, appendCookieData: false, fileClass: null /* onLoad: $empty, onFail: $empty, onStart: $empty, onQueue: $empty, onComplete: $empty, onBrowse: $empty, onDisabledBrowse: $empty, onCancel: $empty, onSelect: $empty, onSelectSuccess: $empty, onSelectFail: $empty, onButtonEnter: $empty, onButtonLeave: $empty, onButtonDown: $empty, onButtonDisable: $empty, onFileStart: $empty, onFileStop: $empty, onFileRequeue: $empty, onFileOpen: $empty, onFileProgress: $empty, onFileComplete: $empty, onFileRemove: $empty, onBeforeStart: $empty, onBeforeStop: $empty, onBeforeRemove: $empty */ }, initialize: function(options) { // protected events to control the class, added // before setting options (which adds own events) this.addEvent('load', this.initializeSwiff, true) .addEvent('select', this.processFiles, true) .addEvent('complete', this.update, true) .addEvent('fileRemove', function(file) { this.fileList.erase(file); }.bind(this), true); this.setOptions(options); // callbacks are no longer in the options, every callback // is fired as event, this is just compat if (this.options.callBacks) { Hash.each(this.options.callBacks, function(fn, name) { this.addEvent(name, fn); }, this); } this.options.callBacks = { fireCallback: this.fireCallback.bind(this) }; var path = this.options.path; if (!path.contains('?')) path += '?noCache=' + $time(); // cache in IE // container options for Swiff class this.options.container = this.box = new Element('span', {'class': 'swiff-uploader-box'}).inject($(this.options.container) || document.body); // target this.target = $(this.options.target); if (this.target) { var scroll = window.getScroll(); this.box.setStyles({ position: 'absolute', visibility: 'visible', zIndex: this.options.zIndex, overflow: 'hidden', height: 1, width: 1, top: scroll.y, left: scroll.x }); // we force wMode to transparent for the overlay effect this.parent(path, { params: { wMode: 'transparent' }, height: '100%', width: '100%' }); this.target.addEvent('mouseenter', this.reposition.bind(this, [])); // button interactions, relayed to to the target this.addEvents({ buttonEnter: this.targetRelay.bind(this, ['mouseenter']), buttonLeave: this.targetRelay.bind(this, ['mouseleave']), buttonDown: this.targetRelay.bind(this, ['mousedown']), buttonDisable: this.targetRelay.bind(this, ['disable']) }); this.reposition(); window.addEvent('resize', this.reposition.bind(this, [])); } else { this.parent(path); } this.inject(this.box); this.fileList = []; this.size = this.uploading = this.bytesLoaded = this.percentLoaded = 0; if (Browser.Plugins.Flash.version < 9) { this.fireEvent('fail', ['flash']); } else { this.verifyLoad.delay(1000, this); } }, verifyLoad: function() { if (this.loaded) return; if (!this.object.parentNode) { this.fireEvent('fail', ['disabled']); } else if (this.object.style.display == 'none') { this.fireEvent('fail', ['hidden']); } else if (!this.object.offsetWidth) { this.fireEvent('fail', ['empty']); } }, fireCallback: function(name, args) { // file* callbacks are relayed to the specific file if (name.substr(0, 4) == 'file') { // updated queue data is the second argument if (args.length > 1) this.update(args[1]); var data = args[0]; var file = this.findFile(data.id); this.fireEvent(name, file || data, 5); if (file) { var fire = name.replace(/^file([A-Z])/, function($0, $1) { return $1.toLowerCase(); }); file.update(data).fireEvent(fire, [data], 10); } } else { this.fireEvent(name, args, 5); } }, update: function(data) { // the data is saved right to the instance $extend(this, data); this.fireEvent('queue', [this], 10); return this; }, findFile: function(id) { for (var i = 0; i < this.fileList.length; i++) { if (this.fileList[i].id == id) return this.fileList[i]; } return null; }, initializeSwiff: function() { // extracted options for the swf this.remote('initialize', { width: this.options.width, height: this.options.height, typeFilter: this.options.typeFilter, multiple: this.options.multiple, queued: this.options.queued, url: this.options.url, method: this.options.method, data: this.options.data, mergeData: this.options.mergeData, fieldName: this.options.fieldName, verbose: this.options.verbose, fileSizeMin: this.options.fileSizeMin, fileSizeMax: this.options.fileSizeMax, allowDuplicates: this.options.allowDuplicates, timeLimit: this.options.timeLimit, buttonImage: this.options.buttonImage, policyFile: this.options.policyFile }); this.loaded = true; this.appendCookieData(); }, targetRelay: function(name) { if (this.target) this.target.fireEvent(name); }, reposition: function(coords) { // update coordinates, manual or automatically coords = coords || (this.target && this.target.offsetHeight) ? this.target.getCoordinates(this.box.getOffsetParent()) : {top: window.getScrollTop(), left: 0, width: 40, height: 40} this.box.setStyles(coords); this.fireEvent('reposition', [coords, this.box, this.target]); }, setOptions: function(options) { if (options) { if (options.url) options.url = Swiff.Uploader.qualifyPath(options.url); if (options.buttonImage) options.buttonImage = Swiff.Uploader.qualifyPath(options.buttonImage); this.parent(options); if (this.loaded) this.remote('setOptions', options); } return this; }, setEnabled: function(status) { this.remote('setEnabled', status); }, start: function() { this.fireEvent('beforeStart'); this.remote('start'); }, stop: function() { this.fireEvent('beforeStop'); this.remote('stop'); }, remove: function() { this.fireEvent('beforeRemove'); this.remote('remove'); }, fileStart: function(file) { this.remote('fileStart', file.id); }, fileStop: function(file) { this.remote('fileStop', file.id); }, fileRemove: function(file) { this.remote('fileRemove', file.id); }, fileRequeue: function(file) { this.remote('fileRequeue', file.id); }, appendCookieData: function() { var append = this.options.appendCookieData; if (!append) return; var hash = {}; document.cookie.split(/;\s*/).each(function(cookie) { cookie = cookie.split('='); if (cookie.length == 2) { hash[decodeURIComponent(cookie[0])] = decodeURIComponent(cookie[1]); } }); var data = this.options.data || {}; if ($type(append) == 'string') data[append] = hash; else $extend(data, hash); this.setOptions({data: data}); }, processFiles: function(successraw, failraw, queue) { var cls = this.options.fileClass || Swiff.Uploader.File; var fail = [], success = []; if (successraw) { successraw.each(function(data) { var ret = new cls(this, data); if (!ret.validate()) { ret.remove.delay(10, ret); fail.push(ret); } else { this.size += data.size; this.fileList.push(ret); success.push(ret); ret.render(); } }, this); this.fireEvent('selectSuccess', [success], 10); } if (failraw || fail.length) { fail.extend((failraw) ? failraw.map(function(data) { return new cls(this, data); }, this) : []).each(function(file) { file.invalidate().render(); }); this.fireEvent('selectFail', [fail], 10); } this.update(queue); if (this.options.instantStart && success.length) this.start(); } }); $extend(Swiff.Uploader, { STATUS_QUEUED: 0, STATUS_RUNNING: 1, STATUS_ERROR: 2, STATUS_COMPLETE: 3, STATUS_STOPPED: 4, log: function() { if (window.console && console.info) console.info.apply(console, arguments); }, unitLabels: { b: [{min: 1, unit: 'B'}, {min: 1024, unit: 'kB'}, {min: 1048576, unit: 'MB'}, {min: 1073741824, unit: 'GB'}], s: [{min: 1, unit: 's'}, {min: 60, unit: 'm'}, {min: 3600, unit: 'h'}, {min: 86400, unit: 'd'}] }, formatUnit: function(base, type, join) { var labels = Swiff.Uploader.unitLabels[(type == 'bps') ? 'b' : type]; var append = (type == 'bps') ? '/s' : ''; var i, l = labels.length, value; if (base < 1) return '0 ' + labels[0].unit + append; if (type == 's') { var units = []; for (i = l - 1; i >= 0; i--) { value = Math.floor(base / labels[i].min); if (value) { units.push(value + ' ' + labels[i].unit); base -= value * labels[i].min; if (!base) break; } } return (join === false) ? units : units.join(join || ', '); } for (i = l - 1; i >= 0; i--) { value = labels[i].min; if (base >= value) break; } return (base / value).toFixed(1) + ' ' + labels[i].unit + append; } }); Swiff.Uploader.qualifyPath = (function() { var anchor; return function(path) { (anchor || (anchor = new Element('a'))).href = path; return anchor.href; }; })(); Swiff.Uploader.File = new Class({ Implements: Events, initialize: function(base, data) { this.base = base; this.update(data); }, update: function(data) { return $extend(this, data); }, validate: function() { var options = this.base.options; if (options.fileListMax && this.base.fileList.length >= options.fileListMax) { this.validationError = 'fileListMax'; return false; } if (options.fileListSizeMax && (this.base.size + this.size) > options.fileListSizeMax) { this.validationError = 'fileListSizeMax'; return false; } return true; }, invalidate: function() { this.invalid = true; this.base.fireEvent('fileInvalid', this, 10); return this.fireEvent('invalid', this, 10); }, render: function() { return this; }, setOptions: function(options) { if (options) { if (options.url) options.url = Swiff.Uploader.qualifyPath(options.url); this.base.remote('fileSetOptions', this.id, options); this.options = $merge(this.options, options); } return this; }, start: function() { this.base.fileStart(this); return this; }, stop: function() { this.base.fileStop(this); return this; }, remove: function() { this.base.fileRemove(this); return this; }, requeue: function() { this.base.fileRequeue(this); } }); /** * Fx.ProgressBar * * @version 1.1 * * @license MIT License * * @author Harald Kirschner * @copyright Authors */ Fx.ProgressBar = new Class({ Extends: Fx, options: { text: null, url: null, transition: Fx.Transitions.Circ.easeOut, fit: true, link: 'cancel' }, initialize: function(element, options) { this.element = $(element); this.parent(options); var url = this.options.url; if (url) { this.element.setStyles({ 'background-image': 'url(' + url + ')', 'background-repeat': 'no-repeat' }); } if (this.options.fit) { url = url || this.element.getStyle('background-image').replace(/^url\(["']?|["']?\)$/g, ''); if (url) { var fill = new Image(); fill.onload = function() { this.fill = fill.width; fill = fill.onload = null; this.set(this.now || 0); }.bind(this); fill.src = url; if (!this.fill && fill.width) fill.onload(); } } else { this.set(0); } }, start: function(to, total) { return this.parent(this.now, (arguments.length == 1) ? to.limit(0, 100) : to / total * 100); }, set: function(to) { this.now = to; var css = (this.fill) ? (((this.fill / -2) + (to / 100) * (this.element.width || 1) || 0).round() + 'px') : ((100 - to) + '%'); this.element.setStyle('backgroundPosition', css + ' 0px').title = Math.round(to) + '%'; var text = $(this.options.text); if (text) text.set('text', Math.round(to) + '%'); return this; } });/** * FancyUpload.Attach - Flash meets Ajax for powerful and elegant uploads. * * @version 3.0 rc3 * * @license MIT License * * @author Harald Kirschner * @copyright Authors */ if (!window.FancyUpload3) var FancyUpload3 = {}; FancyUpload3.Attach = new Class({ Extends: Swiff.Uploader, options: { queued: false, instantStart: true }, initialize: function(list, selects, options) { this.list = $(list); this.selects = $(selects) ? $$($(selects)) : $$(selects); options.target = this.selects[0]; options.fileClass = options.fileClass || FancyUpload3.Attach.File; this.parent(options); /** * Button state */ var self = this; this.selects.addEvents({ click: function() { return false; }, mouseenter: function() { this.addClass('hover'); self.reposition(); }, mouseleave: function() { this.removeClass('hover'); this.blur(); }, mousedown: function() { this.focus(); } }); if (this.selects.length == 2) { this.selects[1].setStyle('display', 'none'); this.addEvents({ 'selectSuccess': this.onSelectSuccess, 'fileRemove': this.onFileRemove }); } }, onSelectSuccess: function() { if (this.fileList.length > 0) { this.selects[0].setStyle('display', 'none'); this.selects[1].setStyle('display', 'inline'); this.target = this.selects[1]; this.reposition(); } }, onFileRemove: function() { if (this.fileList.length == 0) { this.selects[0].setStyle('display', 'inline'); this.selects[1].setStyle('display', 'none'); this.target = this.selects[0]; this.reposition(); } }, start: function() { if (Browser.Platform.linux && window.confirm(MooTools.lang.get('FancyUpload', 'linuxWarning'))) return this; return this.parent(); } }); FancyUpload3.Attach.File = new Class({ Extends: Swiff.Uploader.File, render: function() { if (this.invalid) { if (this.validationError) { var msg = MooTools.lang.get('FancyUpload', 'validationErrors')[this.validationError] || this.validationError; this.validationErrorMessage = msg.substitute({ name: this.name, size: Swiff.Uploader.formatUnit(this.size, 'b'), fileSizeMin: Swiff.Uploader.formatUnit(this.base.options.fileSizeMin || 0, 'b'), fileSizeMax: Swiff.Uploader.formatUnit(this.base.options.fileSizeMax || 0, 'b'), fileListMax: this.base.options.fileListMax || 0, fileListSizeMax: Swiff.Uploader.formatUnit(this.base.options.fileListSizeMax || 0, 'b') }); } this.remove(); return; } this.addEvents({ 'open': this.onOpen, 'remove': this.onRemove, 'requeue': this.onRequeue, 'progress': this.onProgress, 'stop': this.onStop, 'complete': this.onComplete, 'error': this.onError }); this.ui = {}; this.ui.element = new Element('li', {'class': 'file', id: 'file-' + this.id}); this.ui.title = new Element('span', {'class': 'file-title', text: this.name}); this.ui.size = new Element('span', {'class': 'file-size', text: Swiff.Uploader.formatUnit(this.size, 'b')}); this.ui.cancel = new Element('a', {'class': 'file-cancel', text: 'Cancel', href: '#'}); this.ui.cancel.addEvent('click', function() { this.remove(); return false; }.bind(this)); this.ui.element.adopt( this.ui.title, this.ui.size, this.ui.cancel ).inject(this.base.list).highlight(); var progress = new Element('img', {'class': 'file-progress', src: img_path+'/upload/progress-bar/bar.gif'}).inject(this.ui.size, 'after'); this.ui.progress = new Fx.ProgressBar(progress, { fit: true }).set(0); this.base.reposition(); return this.parent(); }, onOpen: function() { this.ui.element.addClass('file-uploading'); if (this.ui.progress) this.ui.progress.set(0); }, onRemove: function() { this.ui = this.ui.element.destroy(); }, onProgress: function() { if (this.ui.progress) this.ui.progress.start(this.progress.percentLoaded); }, onStop: function() { this.remove(); }, onComplete: function() { this.ui.element.removeClass('file-uploading'); if (this.response.error) { var msg = MooTools.lang.get('FancyUpload', 'errors')[this.response.error] || '{error} #{code}'; this.errorMessage = msg.substitute($extend({name: this.name}, this.response)); this.base.fireEvent('fileError', [this, this.response, this.errorMessage]); this.fireEvent('error', [this, this.response, this.errorMessage]); return; } if (this.ui.progress) this.ui.progress = this.ui.progress.cancel().element.destroy(); this.ui.cancel = this.ui.cancel.destroy(); var response = this.response.text || ''; this.base.fireEvent('fileSuccess', [this, response]); }, onError: function() { this.ui.element.addClass('file-failed'); } }); //Avoiding MooTools.lang dependency (function() { var phrases = { 'fileName': '{name}', 'cancel': 'Cancel', 'cancelTitle': 'Click to cancel and remove this entry.', 'validationErrors': { 'duplicate': 'File {name} is already added, duplicates are not allowed.', 'sizeLimitMin': 'File {name} ({size}) is too small, the minimal file size is {fileSizeMin}.', 'sizeLimitMax': 'File {name} ({size}) is too big, the maximal file size is {fileSizeMax}.', 'fileListMax': 'File {name} could not be added, amount of {fileListMax} files exceeded.', 'fileListSizeMax': 'File {name} ({size}) is too big, overall filesize of {fileListSizeMax} exceeded.' }, 'errors': { 'httpStatus': 'Server returned HTTP-Status #{code}', 'securityError': 'Security error occured ({text})', 'ioError': 'Error caused a send or load operation to fail ({text})' }, 'linuxWarning': 'Warning: Due to a misbehaviour of Adobe Flash Player on Linux,\nthe browser will probably freeze during the upload process.\nDo you want to start the upload anyway?' }; if (MooTools.lang) { MooTools.lang.set('en-US', 'FancyUpload', phrases); } else { MooTools.lang = { get: function(from, key) { return phrases[key]; } }; } })();/** * ReMooz - Zoomer * * Inspired by so many boxes and zooms * * @version 1.0 * * @license MIT-style license * @author Harald Kirschner * @copyright Author */ var ReMooz = new Class({ Implements: [Events, Options, Chain], options: { link: null, type: 'image', container: null, className: null, centered: false, dragging: true, closeOnClick: true, shadow: (Browser.Engine.trident) ? 'onOpenEnd' : 'onOpen', // performance resize: true, margin: 20, resizeFactor: 0.95, resizeLimit: false, // {x: 640, y: 640} fixedSize: false, cutOut: true, addClick: true, opacityLoad: 0.6, opacityResize: 1, opacityTitle: 0.9, resizeOptions: {}, fxOptions: {}, closer: true, parse: false, // 'rel' parseSecure: false, temporary: false, onBuild: $empty, onLoad: $empty, onOpen: $empty, onOpenEnd: $empty, onClose: $empty, onCloseEnd: $empty, generateTitle: function(el) { var text = el.get('title'); if (!text) return false; var title = text.split(' :: '); var head = new Element('h6', {'html': title[0]}); return (title[1]) ? [head, new Element('p', {'html': title[1]})] : head; } }, initialize: function(element, options) { this.element = $(element); this.setOptions(options); if (this.options.parse) { var obj = this.element.getProperty(this.options.parse); if (obj && (obj = JSON.decode(obj, this.options.parseSecure))) this.setOptions(obj); } var origin = this.options.origin; this.origin = ((origin) ? $(origin) || this.element.getElement(origin) : null) || this.element; this.link = this.options.link || this.element.get('href') || this.element.get('src'); this.container = $(this.options.container) || this.element.getDocument(); this.bound = { 'click': function(e) { this.open.delay(1, this); return false; }.bind(this), 'close': this.close.bind(this), 'dragClose': function(e) { if (e.rightClick) return; this.close(); }.bind(this) }; if (this.options.addClick) this.bindToElement(); }, destroy: function() { if (this.box) this.box.destroy(); this.box = this.tweens = this.body = this.content = null; }, bindToElement: function(element) { ($(element) || this.element).addClass('remooz-element').addEvent('click', this.bound.click); return this; }, getOriginCoordinates: function() { var coords = this.origin.getCoordinates(); delete coords.right; delete coords.bottom; return coords; }, open: function(e) { if (this.opened) return (e) ? this.close() : this; this.opened = this.loading = true; if (!this.box) this.build(); this.coords = this.getOriginCoordinates(); this.coords.opacity = this.options.opacityLoad; this.coords.display = ''; this.tweens.box.set(this.coords); this.box.addClass('remooz-loading'); ReMooz.open(this.fireEvent('onLoad')); this['open' + this.options.type.capitalize()](); return this; }, finishOpen: function() { this.tweens.fade.start(0, 1); this.drag.attach(); this.fireEvent('onOpenEnd').callChain(); }, close: function() { if (!this.opened) return this; this.opened = false; ReMooz.close(this.fireEvent('onClose')); if (this.loading) { this.box.setStyle('display', 'none'); return this; } this.drag.detach(); this.tweens.fade.cancel().set(0).fireEvent('onComplete'); if (this.tweens.box.timer) this.tweens.box.clearChain(); var vars = this.getOriginCoordinates(); if (this.options.opacityResize != 1) vars.opacity = this.options.opacityResize; this.tweens.box.start(vars).chain(this.closeEnd.bind(this)); return this; }, closeEnd: function() { if (this.options.cutOut) this.element.setStyle('visibility', 'visible'); this.box.setStyle('display', 'none'); this.fireEvent('onCloseEnd').callChain(); if (this.options.temporary) this.destroy(); }, openImage: function() { var tmp = new Image(); tmp.onload = tmp.onabort = tmp.onerror = function(fast) { this.loading = tmp.onload = tmp.onabort = tmp.onerror = null; if (!tmp.width || !this.opened) { this.fireEvent('onError').close(); return; } var to = {x: tmp.width, y: tmp.height}; if (!this.content) this.content = $(tmp).inject(this.body); else tmp = null; this[(this.options.resize) ? 'zoomRelativeTo' : 'zoomTo'].create({ 'delay': (tmp && fast !== true) ? 1 : null, 'arguments': [to], 'bind': this })(); }.bind(this); tmp.src = this.link; if (tmp && tmp.complete && tmp.onload) tmp.onload(true); }, /** * @todo Test implementation */ openElement: function() { this.content = this.content || $(this.link) || $E(this.link); if (!this.content) { this.fireEvent('onError').close(); return; } this.content.inject(this.body); this.zoomTo({x: this.content.scrollWidth, y: this.content.scrollHeight}); }, zoomRelativeTo: function(to) { var scale = this.options.resizeLimit; if (!scale) { scale = this.container.getSize(); scale.x *= this.options.resizeFactor; scale.y *= this.options.resizeFactor; } for (var i = 2; i--;) { if (to.x > scale.x) { to.y *= scale.x / to.x; to.x = scale.x; } else if (to.y > scale.y) { to.x *= scale.y / to.y; to.y = scale.y; } } return this.zoomTo({x: to.x.toInt(), y: to.y.toInt()}); }, zoomTo: function(to) { to = this.options.fixedSize || to; var box = this.container.getSize(), scroll = this.container.getScroll(); var pos = (!this.options.centered) ? { x: (this.coords.left + (this.coords.width / 2) - to.x / 2).toInt() .limit(scroll.x + this.options.margin, scroll.x + box.x - this.options.margin - to.x), y: (this.coords.top + (this.coords.height / 2) - to.y / 2).toInt() .limit(scroll.y + this.options.margin, scroll.y + box.y - this.options.margin - to.y) } : { x: scroll.x + ((box.x - to.x) / 2).toInt(), y: scroll.y + ((box.y - to.y) / 2).toInt() }; if (this.options.cutOut) this.element.setStyle('visibility', 'hidden'); this.box.removeClass('remooz-loading'); var vars = {left: pos.x, top: pos.y, width: to.x, height: to.y}; if (this.options.opacityResize != 1) vars.opacity = [this.options.opacityResize, 1]; else this.box.set('opacity', 1); this.tweens.box.start(vars).chain(this.finishOpen.bind(this)); this.fireEvent('onOpen'); }, build: function() { this.addEvent('onBlur', function() { this.focused = false; this.box.removeClass('remooz-box-focus').setStyle('z-index', ReMooz.options.zIndex); }, true); this.addEvent('onFocus', function() { this.focused = true; this.box.addClass('remooz-box-focus').setStyle('z-index', ReMooz.options.zIndexFocus); }, true); var classes = ['remooz-box', 'remooz-type-' + this.options.type, 'remooz-engine-' + Browser.Engine.name + Browser.Engine.version]; if (this.options.className) classes.push(this.options.className); this.box = new Element('div', { 'class': classes.join(' '), 'styles': { 'display': 'none', 'top': 0, 'left': 0, 'zIndex': ReMooz.options.zIndex } }); this.tweens = { 'box': new Fx.Morph(this.box, $merge({ 'duration': 400, 'unit': 'px', 'transition': Fx.Transitions.Quart.easeOut, 'chain': 'cancel' }, this.options.resizeOptions) ), 'fade': new Fx.Tween(null, $merge({ 'property': 'opacity', 'duration': (Browser.Engine.trident) ? 0 : 300, 'chain': 'cancel' }, this.options.fxOptions)).addEvents({ 'onComplete': function() { if (!this.element.get('opacity')) this.element.setStyle('display', 'none'); }, 'onStart': function() { if (!this.element.get('opacity')) this.element.setStyle('display', ''); } } ) }; this.tweens.fade.element = $$(); if (this.options.shadow) { if (Browser.Engine.webkit420) { this.box.setStyle('-webkit-box-shadow', '0 0 10px rgba(0, 0, 0, 0.7)'); } else if (!Browser.Engine.trident4) { var shadow = new Element('div', {'class': 'remooz-bg-wrap'}).inject(this.box); ['n', 'ne', 'e', 'se', 's', 'sw', 'w', 'nw'].each(function(dir) { new Element('div', {'class': 'remooz-bg remooz-bg-' + dir}).inject(shadow); }); this.tweens.bg = new Fx.Tween(shadow, { 'property': 'opacity', 'chain': 'cancel' }).set(0); this.addEvent(this.options.shadow, this.tweens.bg.set.bind(this.tweens.bg, 1), true); this.addEvent('onClose', this.tweens.bg.set.bind(this.tweens.bg, 0), true); } } if (this.options.closer) { var closer = new Element('a', { 'class': 'remooz-btn-close', 'events': {'click': this.bound.close} }).inject(this.box); this.tweens.fade.element.push(closer); } this.body = new Element('div', {'class': 'remooz-body'}).inject(this.box); var title = this.options.title || this.options.generateTitle.call(this, this.element); if (title) { // thx ie6 var title = new Element('div', {'class': 'remooz-title'}).adopt( new Element('div', {'class': 'remooz-title-bg', 'opacity': this.options.opacityTitle}), new Element('div', {'class': 'remooz-title-content'}).adopt(title) ).inject(this.box); this.tweens.fade.element.push(title); } this.tweens.fade.set(0).fireEvent('onComplete'); this.drag = new Drag.Move(this.box, { 'snap': 15, 'preventDefault': true, 'onBeforeStart': function() { if (!this.focused && !this.loading) ReMooz.focus(this); else if (this.loading || this.options.closeOnClick) this.box.addEvent('mouseup', this.bound.dragClose); }.bind(this), 'onSnap': function() { this.box.removeEvent('mouseup', this.bound.dragClose); if (!this.options.dragging) this.drag.stop(); else this.box.addClass('remooz-box-dragging'); }.bind(this), 'onComplete': function() { this.box.removeClass('remooz-box-dragging'); }.bind(this) }); this.drag.detach(); this.fireEvent('onBuild', this.box, this.element); this.box.inject(this.element.getDocument().body); } }); ReMooz.factory = function(extended) { return $extend(this, extended); }; ReMooz.factory(new Options).factory({ options: { zIndex: 41, zIndexFocus: 42, query: 'a.remooz', modal: false }, assign: function(elements, options) { return $$(elements).map(function(element) { return new ReMooz(element, options); }, this); }, stack: [], open: function(obj) { var last = this.stack.getLast(); this.focus(obj); if (last && this.options.modal) last.close(); }, close: function(obj) { var length = this.stack.length - 1; if (length > 1 && this.stack[length] == obj) this.focus(this.stack[length - 1]); this.stack.erase(obj); }, focus: function(obj) { var last = this.stack.getLast(); obj.fireEvent('onFocus', [obj]); if (last == obj) return; if (last) last.fireEvent('onBlur', [last]); this.stack.erase(obj).push(obj); } });/** * SqueezeBox - Expandable Lightbox * * Allows to open various content as modal, * centered and animated box. * * Dependencies: MooTools 1.2 * * Inspired by * ... Lokesh Dhakar - The original Lightbox v2 * * @version 1.1 rc4 * * @license MIT-style license * @author Harald Kirschner * @copyright Author */ var SqueezeBox = { presets: { onOpen: $empty, onClose: $empty, onUpdate: $empty, onResize: $empty, onMove: $empty, onShow: $empty, onHide: $empty, size: {x: 600, y: 450}, sizeLoading: {x: 200, y: 150}, marginInner: {x: 20, y: 20}, marginImage: {x: 50, y: 75}, handler: false, target: null, closable: true, closeBtn: true, zIndex: 65555, overlayOpacity: 0.7, classWindow: '', classOverlay: '', overlayFx: {}, resizeFx: {}, contentFx: {}, parse: false, // 'rel' parseSecure: false, shadow: true, document: null, ajaxOptions: {} }, initialize: function(presets) { if (this.options) return this; this.presets = $merge(this.presets, presets); this.doc = this.presets.document || document; this.options = {}; this.setOptions(this.presets).build(); this.bound = { window: this.reposition.bind(this, [null]), scroll: this.checkTarget.bind(this), close: this.close.bind(this), key: this.onKey.bind(this) }; this.isOpen = this.isLoading = false; return this; }, build: function() { this.overlay = new Element('div', { id: 'sbox-overlay', styles: {display: 'none', zIndex: this.options.zIndex} }); this.win = new Element('div', { id: 'sbox-window', styles: {display: 'none', zIndex: this.options.zIndex + 2} }); if (this.options.shadow) { if (Browser.Engine.webkit420) { this.win.setStyle('-webkit-box-shadow', '0 0 10px rgba(0, 0, 0, 0.7)'); } else if (!Browser.Engine.trident4) { var shadow = new Element('div', {'class': 'sbox-bg-wrap'}).inject(this.win); var relay = function(e) { this.overlay.fireEvent('click', [e]); }.bind(this); ['n', 'ne', 'e', 'se', 's', 'sw', 'w', 'nw'].each(function(dir) { new Element('div', {'class': 'sbox-bg sbox-bg-' + dir}).inject(shadow).addEvent('click', relay); }); } } this.content = new Element('div', {id: 'sbox-content'}).inject(this.win); this.closeBtn = new Element('a', {id: 'sbox-btn-close', href: '#'}).inject(this.win); this.fx = { overlay: new Fx.Tween(this.overlay, $merge({ property: 'opacity', onStart: Events.prototype.clearChain, duration: 250, link: 'cancel' }, this.options.overlayFx)).set(0), win: new Fx.Morph(this.win, $merge({ onStart: Events.prototype.clearChain, unit: 'px', duration: 750, transition: Fx.Transitions.Quint.easeOut, link: 'cancel', unit: 'px' }, this.options.resizeFx)), content: new Fx.Tween(this.content, $merge({ property: 'opacity', duration: 250, link: 'cancel' }, this.options.contentFx)).set(0) }; $(this.doc.body).adopt(this.overlay, this.win); }, assign: function(to, options) { return ($(to) || $$(to)).addEvent('click', function() { return !SqueezeBox.fromElement(this, options); }); }, open: function(subject, options) { this.initialize(); if (this.element != null) this.trash(); this.element = $(subject) || false; this.setOptions($merge(this.presets, options || {})); if (this.element && this.options.parse) { var obj = this.element.getProperty(this.options.parse); if (obj && (obj = JSON.decode(obj, this.options.parseSecure))) this.setOptions(obj); } this.url = ((this.element) ? (this.element.get('href')) : subject) || this.options.url || ''; this.assignOptions(); var handler = handler || this.options.handler; if (handler) return this.setContent(handler, this.parsers[handler].call(this, true)); var ret = false; return this.parsers.some(function(parser, key) { var content = parser.call(this); if (content) { ret = this.setContent(key, content); return true; } return false; }, this); }, fromElement: function(from, options) { return this.open(from, options); }, assignOptions: function() { this.overlay.set('class', this.options.classOverlay); this.win.set('class', this.options.classWindow); if (Browser.Engine.trident4) this.win.addClass('sbox-window-ie6'); }, close: function(e) { var stoppable = ($type(e) == 'event'); if (stoppable) e.stop(); if (!this.isOpen || (stoppable && !$lambda(this.options.closable).call(this, e))) return this; this.fx.overlay.start(0).chain(this.toggleOverlay.bind(this)); this.win.setStyle('display', 'none'); this.fireEvent('onClose', [this.content]); this.trash(); this.toggleListeners(); this.isOpen = false; return this; }, trash: function() { this.element = this.asset = null; this.content.empty(); this.options = {}; this.removeEvents().setOptions(this.presets).callChain(); }, onError: function() { this.asset = null; this.setContent('string', this.options.errorMsg || 'An error occurred'); }, setContent: function(handler, content) { if (!this.handlers[handler]) return false; this.content.className = 'sbox-content-' + handler; this.applyTimer = this.applyContent.delay(this.fx.overlay.options.duration, this, this.handlers[handler].call(this, content)); if (this.overlay.retrieve('opacity')) return this; this.toggleOverlay(true); this.fx.overlay.start(this.options.overlayOpacity); return this.reposition(); }, applyContent: function(content, size) { if (!this.isOpen && !this.applyTimer) return; this.applyTimer = $clear(this.applyTimer); this.hideContent(); if (!content) { this.toggleLoading(true); } else { if (this.isLoading) this.toggleLoading(false); this.fireEvent('onUpdate', [this.content], 20); } if (content) { if (['string', 'array'].contains($type(content))) this.content.set('html', content); else if (!this.content.hasChild(content)) this.content.adopt(content); } this.callChain(); if (!this.isOpen) { this.toggleListeners(true); this.resize(size, true); this.isOpen = true; this.fireEvent('onOpen', [this.content]); } else { this.resize(size); } }, resize: function(size, instantly) { this.showTimer = $clear(this.showTimer || null); var box = this.doc.getSize(), scroll = this.doc.getScroll(); this.size = $merge((this.isLoading) ? this.options.sizeLoading : this.options.size, size); var to = { width: this.size.x, height: this.size.y, left: (scroll.x + (box.x - this.size.x - this.options.marginInner.x) / 2).toInt(), top: (scroll.y + (box.y - this.size.y - this.options.marginInner.y) / 2).toInt() }; this.hideContent(); if (!instantly) { this.fx.win.start(to).chain(this.showContent.bind(this)); } else { this.win.setStyles(to).setStyle('display', ''); this.showTimer = this.showContent.delay(50, this); } return this.reposition(); }, toggleListeners: function(state) { var fn = (state) ? 'addEvent' : 'removeEvent'; this.closeBtn[fn]('click', this.bound.close); this.overlay[fn]('click', this.bound.close); this.doc[fn]('keydown', this.bound.key)[fn]('mousewheel', this.bound.scroll); this.doc.getWindow()[fn]('resize', this.bound.window)[fn]('scroll', this.bound.window); }, toggleLoading: function(state) { this.isLoading = state; this.win[(state) ? 'addClass' : 'removeClass']('sbox-loading'); if (state) this.fireEvent('onLoading', [this.win]); }, toggleOverlay: function(state) { var full = this.doc.getSize().x; this.overlay.setStyle('display', (state) ? '' : 'none'); this.doc.body[(state) ? 'addClass' : 'removeClass']('body-overlayed'); if (state) { this.scrollOffset = this.doc.getWindow().getSize().x - full; this.doc.body.setStyle('margin-right', this.scrollOffset); } else { this.doc.body.setStyle('margin-right', ''); } }, showContent: function() { if (this.content.get('opacity')) this.fireEvent('onShow', [this.win]); this.fx.content.start(1); }, hideContent: function() { if (!this.content.get('opacity')) this.fireEvent('onHide', [this.win]); this.fx.content.cancel().set(0); }, onKey: function(e) { switch (e.key) { case 'esc': this.close(e); case 'up': case 'down': return false; } }, checkTarget: function(e) { return this.content.hasChild(e.target); }, reposition: function() { var size = this.doc.getSize(), scroll = this.doc.getScroll(), ssize = this.doc.getScrollSize(); this.overlay.setStyles({ width: ssize.x + 'px', height: ssize.y + 'px' }); this.win.setStyles({ left: (scroll.x + (size.x - this.win.offsetWidth) / 2 - this.scrollOffset).toInt() + 'px', top: (scroll.y + (size.y - this.win.offsetHeight) / 2).toInt() + 'px' }); return this.fireEvent('onMove', [this.overlay, this.win]); }, removeEvents: function(type){ if (!this.$events) return this; if (!type) this.$events = null; else if (this.$events[type]) this.$events[type] = null; return this; }, extend: function(properties) { return $extend(this, properties); }, handlers: new Hash(), parsers: new Hash() }; SqueezeBox.extend(new Events($empty)).extend(new Options($empty)).extend(new Chain($empty)); SqueezeBox.parsers.extend({ image: function(preset) { return (preset || (/\.(?:jpg|png|gif)$/i).test(this.url)) ? this.url : false; }, clone: function(preset) { if ($(this.options.target)) return $(this.options.target); if (this.element && !this.element.parentNode) return this.element; var bits = this.url.match(/#([\w-]+)$/); return (bits) ? $(bits[1]) : (preset ? this.element : false); }, ajax: function(preset) { return (preset || (this.url && !(/^(?:javascript|#)/i).test(this.url))) ? this.url : false; }, iframe: function(preset) { return (preset || this.url) ? this.url : false; }, string: function(preset) { return true; } }); SqueezeBox.handlers.extend({ image: function(url) { var size, tmp = new Image(); this.asset = null; tmp.onload = tmp.onabort = tmp.onerror = (function() { tmp.onload = tmp.onabort = tmp.onerror = null; if (!tmp.width) { this.onError.delay(10, this); return; } var box = this.doc.getSize(); box.x -= this.options.marginImage.x; box.y -= this.options.marginImage.y; size = {x: tmp.width, y: tmp.height}; for (var i = 2; i--;) { if (size.x > box.x) { size.y *= box.x / size.x; size.x = box.x; } else if (size.y > box.y) { size.x *= box.y / size.y; size.y = box.y; } } size.x = size.x.toInt(); size.y = size.y.toInt(); this.asset = $(tmp); tmp = null; this.asset.width = size.x; this.asset.height = size.y; this.applyContent(this.asset, size); }).bind(this); tmp.src = url; if (tmp && tmp.onload && tmp.complete) tmp.onload(); return (this.asset) ? [this.asset, size] : null; }, clone: function(el) { if (el) return el.clone(); return this.onError(); }, adopt: function(el) { if (el) return el; return this.onError(); }, ajax: function(url) { var options = this.options.ajaxOptions || {}; this.asset = new Request.HTML($merge({ method: 'get', evalScripts: false }, this.options.ajaxOptions)).addEvents({ onSuccess: function(resp) { this.applyContent(resp); if (options.evalScripts !== null && !options.evalScripts) $exec(this.asset.response.javascript); this.fireEvent('onAjax', [resp, this.asset]); this.asset = null; }.bind(this), onFailure: this.onError.bind(this) }); this.asset.send.delay(10, this.asset, [{url: url}]); }, iframe: function(url) { this.asset = new Element('iframe', $merge({ src: url, frameBorder: 0, width: this.options.size.x, height: this.options.size.y }, this.options.iframeOptions)); if (this.options.iframePreload) { this.asset.addEvent('load', function() { this.applyContent(this.asset.setStyle('display', '')); }.bind(this)); this.asset.setStyle('display', 'none').inject(this.content); return false; } return this.asset; }, string: function(str) { return str; } }); SqueezeBox.handlers.url = SqueezeBox.handlers.ajax; SqueezeBox.parsers.url = SqueezeBox.parsers.ajax; SqueezeBox.parsers.adopt = SqueezeBox.parsers.clone;// MonkeyPhysics: DatePicker // this is a minified version, for production use // source, updates and documentation available @ http://www.monkeyphysics.com/mootools var DatePicker=new Class({Implements:Options,d:'',today:'',choice:{},bodysize:{},limit:{},attachTo:null,picker:null,slider:null,oldContents:null,newContents:null,input:null,visual:null,options:{pickerClass:'datepicker',days:['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],months:['January','February','March','April','May','June','July','August','September','October','November','December'],dayShort:2,monthShort:3,startDay:1,timePicker:false,timePickerOnly:false,yearPicker:true,yearsPerPage:20,format:'d-m-Y',allowEmpty:false,inputOutputFormat:'U',animationDuration:400,useFadeInOut:!Browser.Engine.trident,startView:'month',positionOffset:{x:0,y:0},minDate:null,maxDate:null,debug:false,toggleElements:null,onShow:$empty,onClose:$empty,onSelect:$empty},initialize:function(attachTo,options){this.attachTo=attachTo;this.setOptions(options).attach();if(this.options.timePickerOnly){this.options.timePicker=true;this.options.startView='time';} this.formatMinMaxDates();document.addEvent('mousedown',this.close.bind(this));},formatMinMaxDates:function(){if(this.options.minDate&&this.options.minDate.format){this.options.minDate=this.unformat(this.options.minDate.date,this.options.minDate.format);} if(this.options.maxDate&&this.options.maxDate.format){this.options.maxDate=this.unformat(this.options.maxDate.date,this.options.maxDate.format);this.options.maxDate.setHours(23);this.options.maxDate.setMinutes(59);this.options.maxDate.setSeconds(59);}},attach:function(){if($chk(this.options.toggleElements)){var togglers=$$(this.options.toggleElements);document.addEvents({'keydown':function(e){if(e.key=="tab"){this.close(null,true);}}.bind(this)});};$$(this.attachTo).each(function(item,index){if(item.retrieve('datepicker'))return;if($chk(item.get('value'))){var init_clone_val=this.format(new Date(this.unformat(item.get('value'),this.options.inputOutputFormat)),this.options.format);}else if(!this.options.allowEmpty){var init_clone_val=this.format(new Date(),this.options.format);}else{var init_clone_val='';} var display=item.getStyle('display');var clone=item.setStyle('display',this.options.debug?display:'none').store('datepicker',true).clone().store('datepicker',true).removeProperty('name').setStyle('display',display).set('value',init_clone_val).inject(item,'after');if($chk(this.options.toggleElements)){togglers[index].setStyle('cursor','pointer').addEvents({'click':function(e){this.onFocus(item,clone);}.bind(this)});clone.addEvents({'blur':function(){item.set('value',clone.get('value'));}});}else{clone.addEvents({'keydown':function(e){if(this.options.allowEmpty&&(e.key=="delete"||e.key=="backspace")){item.set('value','');e.target.set('value','');this.close(null,true);}else if(e.key=="tab"){this.close(null,true);}else{e.stop();}}.bind(this),'focus':function(e){this.onFocus(item,clone);}.bind(this)});}}.bind(this));},onFocus:function(original_input,visual_input){var init_visual_date,d=visual_input.getCoordinates();if($chk(original_input.get('value'))){init_visual_date=this.unformat(original_input.get('value'),this.options.inputOutputFormat).valueOf();}else{init_visual_date=new Date();if($chk(this.options.maxDate)&&init_visual_date.valueOf()>this.options.maxDate.valueOf()){init_visual_date=new Date(this.options.maxDate.valueOf());} if($chk(this.options.minDate)&&init_visual_date.valueOf()0){v=(v<23)?v+1:0;}else{v=(v>0)?v-1:23;} i.set('value',this.leadZero(v));e.stop();}.bind(this)}).set('maxlength',2).inject(container);new Element('input',{type:'text','class':'minutes'}).set('value',this.leadZero(this.d.getMinutes())).addEvents({mousewheel:function(e){var i=e.target,v=i.get('value').toInt();i.focus();if(e.wheel>0){v=(v<59)?v+1:0;}else{v=(v>0)?v-1:59;} i.set('value',this.leadZero(v));e.stop();}.bind(this)}).set('maxlength',2).inject(container);new Element('div',{'class':'separator'}).set('text',':').inject(container);new Element('input',{type:'submit',value:'OK','class':'ok'}).addEvents({click:function(e){e.stop();this.select($merge(this.dateToObject(this.d),{hours:this.picker.getElement('.hour').get('value').toInt(),minutes:this.picker.getElement('.minutes').get('value').toInt()}));}.bind(this)}).set('maxlength',2).inject(container);},renderMonth:function(){var month=this.d.getMonth();this.picker.getElement('.titleText').set('text',this.options.months[month]+' '+this.d.getFullYear());this.d.setDate(1);while(this.d.getDay()!=this.options.startDay){this.d.setDate(this.d.getDate()-1);} var container=new Element('div',{'class':'days'}).inject(this.newContents);var titles=new Element('div',{'class':'titles'}).inject(container);var d,i,classes,e,weekcontainer;for(d=this.options.startDay;d<(this.options.startDay+7);d++){new Element('div',{'class':'title day day'+(d%7)}).set('text',this.options.days[(d%7)].substring(0,this.options.dayShort)).inject(titles);} var available=false;var t=this.today.toDateString();var currentChoice=this.dateFromObject(this.choice).toDateString();for(i=0;i<42;i++){classes=[];classes.push('day');classes.push('day'+this.d.getDay());if(this.d.toDateString()==t)classes.push('today');if(this.d.toDateString()==currentChoice)classes.push('selected');if(this.d.getMonth()!=month)classes.push('otherMonth');if(i%7==0){weekcontainer=new Element('div',{'class':'week week'+(Math.floor(i/7))}).inject(container);} e=new Element('div',{'class':classes.join(' ')}).set('text',this.d.getDate()).inject(weekcontainer);if(this.limited('date')){e.addClass('unavailable');if(available){this.limit.right=true;}else if(this.d.getMonth()==month){this.limit.left=true;}}else{available=true;e.addEvent('click',function(e,d){if(this.options.timePicker){this.d.setDate(d.day);this.d.setMonth(d.month);this.mode='time';this.render('fade');}else{this.select(d);}}.bindWithEvent(this,{day:this.d.getDate(),month:this.d.getMonth(),year:this.d.getFullYear()}));} this.d.setDate(this.d.getDate()+1);} if(!available)this.limit.right=true;},renderYear:function(){var month=this.today.getMonth();var thisyear=this.d.getFullYear()==this.today.getFullYear();var selectedyear=this.d.getFullYear()==this.choice.year;this.picker.getElement('.titleText').set('text',this.d.getFullYear());this.d.setMonth(0);var i,e;var available=false;var container=new Element('div',{'class':'months'}).inject(this.newContents);for(i=0;i<=11;i++){e=new Element('div',{'class':'month month'+(i+1)+(i==month&&thisyear?' today':'')+(i==this.choice.month&&selectedyear?' selected':'')}).set('text',this.options.monthShort?this.options.months[i].substring(0,this.options.monthShort):this.options.months[i]).inject(container);if(this.limited('month')){e.addClass('unavailable');if(available){this.limit.right=true;}else{this.limit.left=true;}}else{available=true;e.addEvent('click',function(e,d){this.d.setDate(1);this.d.setMonth(d);this.mode='month';this.render('fade');}.bindWithEvent(this,i));} this.d.setMonth(i);} if(!available)this.limit.right=true;},renderDecades:function(){while(this.d.getFullYear()%this.options.yearsPerPage>0){this.d.setFullYear(this.d.getFullYear()-1);} this.picker.getElement('.titleText').set('text',this.d.getFullYear()+'-'+(this.d.getFullYear()+this.options.yearsPerPage-1));var i,y,e;var available=false;var container=new Element('div',{'class':'years'}).inject(this.newContents);if($chk(this.options.minDate)&&this.d.getFullYear()<=this.options.minDate.getFullYear()){this.limit.left=true;} for(i=0;i=this.options.maxDate.getFullYear()){this.limit.right=true;}},limited:function(type){var cs=$chk(this.options.minDate);var ce=$chk(this.options.maxDate);if(!cs&&!ce)return false;switch(type){case'year':return(cs&&this.d.getFullYear()this.options.maxDate.getFullYear());case'month':var ms=(''+this.d.getFullYear()+this.leadZero(this.d.getMonth())).toInt();return cs&&ms<(''+this.options.minDate.getFullYear()+this.leadZero(this.options.minDate.getMonth())).toInt()||ce&&ms>(''+this.options.maxDate.getFullYear()+this.leadZero(this.options.maxDate.getMonth())).toInt() case'date':return(cs&&this.dthis.options.maxDate);}},allowZoomOut:function(){if(this.mode=='time'&&this.options.timePickerOnly)return false;if(this.mode=='decades')return false;if(this.mode=='year'&&!this.options.yearPicker)return false;return true;},zoomOut:function(){if(!this.allowZoomOut())return;if(this.mode=='year'){this.mode='decades';}else if(this.mode=='time'){this.mode='month';}else{this.mode='year';} this.render('fade');},previous:function(){if(this.mode=='decades'){this.d.setFullYear(this.d.getFullYear()-this.options.yearsPerPage);}else if(this.mode=='year'){this.d.setFullYear(this.d.getFullYear()-1);}else if(this.mode=='month'){this.d.setMonth(this.d.getMonth()-1);} this.render('left');},next:function(){if(this.mode=='decades'){this.d.setFullYear(this.d.getFullYear()+this.options.yearsPerPage);}else if(this.mode=='year'){this.d.setFullYear(this.d.getFullYear()+1);}else if(this.mode=='month'){this.d.setMonth(this.d.getMonth()+1);} this.render('right');},close:function(e,force){if(!$(this.picker))return;var clickOutside=($chk(e)&&e.target!=this.picker&&!this.picker.hasChild(e.target)&&e.target!=this.visual);if(force||clickOutside){if(this.options.useFadeInOut){this.picker.set('tween',{duration:this.options.animationDuration/2,onComplete:this.destroy.bind(this)}).tween('opacity',1,0);}else{this.destroy();}}},destroy:function(){this.picker.destroy();this.picker=null;this.options.onClose();},select:function(values){this.choice=$merge(this.choice,values);var d=this.dateFromObject(this.choice);this.input.set('value',this.format(d,this.options.inputOutputFormat));this.visual.set('value',this.format(d,this.options.format));this.options.onSelect(d);this.close(null,true);},leadZero:function(v){return v<10?'0'+v:v;},format:function(t,format){var f='';var h=t.getHours();var m=t.getMonth();for(var i=0;i11?'pm':'am');break;case'A':f+=(h>11?'PM':'AM');break;case'i':f+=this.leadZero(t.getMinutes());break;case's':f+=this.leadZero(t.getSeconds());break;case'U':f+=Math.floor(t.valueOf()/1000);break;default:f+=format.charAt(i);}} return f;},unformat:function(t,format){var d=new Date();var a={};var c,m;t=t.toString();for(var i=0;i0){ new Request.JSON({ url: '/request.php?page=cities&id='+p, method: 'get', onComplete: function(res){ if($chk(res) && res.ok==1){ res.msg.each(function(c){ new Element('option',{ 'value': c.id, 'html': c.city }).inject(s); }); } } }).send(); } } } function createOptionSearch(arr,row,sel){ if($chk($(row)) && $chk($(sel))){ row = $(row); sel = $(sel); sel.empty(); if(arr.length>0){ var t = [{id: 0, title: 'Tutti'}]; t.extend(arr); var optn = ''; var optg; var optl = arguments.length>3 ? arguments[3] : ''; t.each(function(el,i){ var opt = new Element('option',{ 'value': el.id, 'text': el.title }); if(optl!='' && i>0){ if(optn!=el[optl]){ optg = new Element('optgroup',{ 'label': el[optl] }).inject(sel); } optn = el[optl]; opt.inject(optg); } else { opt.inject(sel); } }); row.setStyle('display',''); } else { row.setStyle('display','none'); } } } function createCheckboxSearch(arr,row,col,name){ if($chk($(row)) && $chk($(col))){ row = $(row); col = $(col); col.empty(); if(arr.length>0){ arr.each(function(el){ var p = new Element('p',{ 'text': el.title }).inject(col); new Element('input',{ 'type': 'checkbox', 'name': name+'[]', 'value': el.id }).inject(p,'top'); }); row.setStyle('display',''); } else { row.setStyle('display','none'); } } } function domreadyFunction(){ /*ReMooz*/ $$('a[rel=remooz]').each(function(el){ new ReMooz(el,{ centered: true, origin: el.getElement('img') }); }); /*SqueezeBox*/ new Asset.css('/js/SqueezeBox/assets/SqueezeBox.css'); var sbOption = { size: {x: 420, y: 470}, overlayOpacity: 0.2, onUpdate: function(el){ el = new Element(el); el.getElements('form[rel^=boxed]').each(function(f){ var a = f.get('rel').slice(6,-1).split('|'); a[0] = a[0].replace(/index.php\?page=/,'request.php?boxpage='); f.addEvent('submit',function(e){ new Event(e).stop(); var boxFormResult = new Element('div'); new Request.HTML({ url: a[0], method: f.get('method'), update: boxFormResult, evalScripts: false, onSuccess: function(t,e,h,j){ var d = $chk(sbOption) ? sbOption : {}; var o = a.length>1 ? $merge(d,JSON.decode(a[1]) || {}) : d; o = $merge(o,{ handler: 'adopt', onUpdate: function(el){ $exec(j); } }); SqueezeBox.open(boxFormResult,o); } }).send(f); }); }); } }; SqueezeBox.initialize(sbOption); $$('a[rel^=boxed]').each(function(b){ b.addEvent('click',function(e){ new Event(e); var l = b.get('rel').slice(6,-1).split('|'); var o = l.length>1 ? $merge(sbOption,JSON.decode(l[1]) || {}) : sbOption; var q = new URI(l[0]).get('query'); if($chk(q)){ SqueezeBox.open('/request.php?'+q.replace(/page=/,'boxpage='),o); } e.stop(); }); }); domreadyPersonal(); } window.addEvent('domready',function(){ domreadyFunction(); });/** * Funzione generica per inviare una richiesta JSON * @param array p parametri * @param array f funzioni da eseguire in base al risultato * @param array fp parametri delle funzioni da eseguire in base al risultato */ function requestJsonPage(p,f,fp){ new Request.JSON({ url: '/request.php', method: 'get', onComplete: function(res){ requestComplete(res,f,fp); } }).send(Hash.toQueryString(p)); } /** * Funzione generica per inviare i dati di un form * @param object fo form * @param array f funzioni da eseguire in base al risultato * @param array fp parametri delle funzioni da eseguire in base al risultato */ function sendForm(fo,f,fp){ if(!$chk(fo)) return; fo = new Element(fo); new Request.JSON({ url: fo.get('action'), method: fo.get('method'), onComplete: function(res){ requestComplete(res,f,fp); } }).send(fo); } /** * Funzione generica per eseguire le funzione delle richieste * @param array res risultato in JSON * @param array f funzioni da eseguire in base al risultato * @param array fp parametri delle funzioni da eseguire in base al risultato */ function requestComplete(res,f,fp){ if($chk(res) && $chk(res.ok)){ if($chk(f[res.ok])){ var fa = new Hash(res); if($chk(fp) && $chk(fp[res.ok])){ fa = fa.combine(fp[res.ok]) } f[res.ok].attempt(fa); } } }function changeFields(f,s){ if(s){ undisableFields(f); showFields(f); } else { disableFields(f); hideFields(f); } } function showUserTypeFields(t){ if($chk(t)){ var h = []; var azienda = ['rag_soc','vat']; var privato = []; var professionista = ['vat']; if(t=='azienda'){ changeFields(azienda,true); changeFields(privato,false); } else if(t=='professionista'){ changeFields(azienda,false); changeFields(professionista,true); } else { changeFields(privato,true); changeFields(azienda,false); } } } var cities = {"1":["Agrigento","Alessandria Della Rocca","Aragona","Bivona","Burgio","Calamonaci","Caltabellotta","Camastra","Cammarata","Campobello Di Licata","Canicatt\u00ec","Casteltermini","Castrofilippo","Cattolica Eraclea","Cianciana","Comitini","Favara","Grotte","Joppolo Giancaxio","Lampedusa E Linosa","Licata","Lucca Sicula","Menfi","Montallegro","Montevago","Naro","Palma Di Montechiaro","Porto Empedocle","Racalmuto","Raffadali","Ravanusa","Realmonte","Ribera","Sambuca Di Sicilia","San Biagio Platani","San Giovanni Gemini","Sant'angelo Muxaro","Santa Elisabetta","Santa Margherita Di Belice","Santo Stefano Quisquina","Sciacca","Siculiana","Villafranca Sicula"],"2":["Acqui Terme","Albera Ligure","Alessandria","Alfiano Natta","Alice Bel Colle","Alluvioni Cambi\u00f2","Altavilla Monferrato","Alzano Scrivia","Arquata Scrivia","Avolasca","Balzola","Basaluzzo","Bassignana","Belforte Monferrato","Bergamasco","Berzano Di Tortona","Bistagno","Borghetto Di Borbera","Borgo San Martino","Borgoratto Alessandrino","Bosco Marengo","Bosio","Bozzole","Brignano Frascata","Cabella Ligure","Camagna Monferrato","Camino","Cantalupo Ligure","Capriata D'orba","Carbonara Scrivia","Carentino","Carezzano","Carpeneto","Carrega Ligure","Carrosio","Cartosio","Casal Cermelli","Casale Monferrato","Casaleggio Boiro","Casalnoceto","Casasco","Cassano Spinola","Cassine","Cassinelle","Castellania","Castellar Guidobono","Castellazzo Bormida","Castelletto D'erro","Castelletto D'orba","Castelletto Merli","Castelletto Monferrato","Castelnuovo Bormida","Castelnuovo Scrivia","Castelspina","Cavatore","Cella Monte","Cereseto","Cerreto Grue","Cerrina","Coniolo","Conzano","Costa Vescovato","Cremolino","Cuccaro Monferrato","Denice","Dernice","Fabbrica Curone","Felizzano","Fraconalto","Francavilla Bisio","Frascaro","Frassinello Monferrato","Frassineto Po","Fresonara","Frugarolo","Fubine","Gabiano","Gamalero","Garbagna","Gavazzana","Gavi","Giarole","Gremiasco","Grognardo","Grondona","Guazzora","Isola Sant'antonio","Lerma","Lu","Malvicino","Masio","Melazzo","Merana","Mirabello Monferrato","Molare","Molino D\u00e9 Torti","Mombello Monferrato","Momperone","Moncestino","Mongiardino Ligure","Monleale","Montacuto","Montaldeo","Montaldo Bormida","Montecastello","Montechiaro D'acqui","Montegioco","Montemarzino","Morano Sul Po","Morbello","Mornese","Morsasco","Murisengo","Novi Ligure","Occimiano","Odalengo Grande","Odalengo Piccolo","Olivola","Orsara Bormida","Ottiglio","Ovada","Oviglio","Ozzano Monferrato","Paderna","Pareto","Parodi Ligure","Pasturana","Pecetto Di Valenza","Pietra Marazzi","Piovera","Pomaro Monferrato","Pontecurone","Pontestura","Ponti","Ponzano Monferrato","Ponzone","Pozzol Groppo","Pozzolo Formigaro","Prasco","Predosa","Quargnento","Quattordio","Ricaldone","Rivalta Bormida","Rivarone","Rocca Grimalda","Roccaforte Ligure","Rocchetta Ligure","Rosignano Monferrato","Sala Monferrato","Sale","San Cristoforo","San Giorgio Monferrato","San Salvatore Monferrato","San Sebastiano Curone","Sant'agata Fossili","Sardigliano","Sarezzano","Serralunga Di Crea","Serravalle Scrivia","Sezzadio","Silvano D'orba","Solero","Solonghello","Spigno Monferrato","Spineto Scrivia","Stazzano","Strevi","Tagliolo Monferrato","Tassarolo","Terruggia","Terzo","Ticineto","Tortona","Treville","Trisobbio","Valenza","Valmacca","Vignale Monferrato","Vignole Borbera","Viguzzolo","Villadeati","Villalvernia","Villamiroglio","Villanova Monferrato","Villaromagnano","Visone","Volpedo","Volpeglino","Voltaggio"],"3":["Agugliano","Ancona","Arcevia","Barbara","Belvedere Ostrense","Camerano","Camerata Picena","Castel Colonna","Castelbellino","Castelfidardo","Castelleone Di Suasa","Castelplanio","Cerreto D'esi","Chiaravalle","Corinaldo","Cupramontana","Fabriano","Falconara Marittima","Filottrano","Genga","Jesi","Loreto","Maiolati Spontini","Mergo","Monsano","Monte Roberto","Monte San Vito","Montecarotto","Montemarciano","Monterado","Morro D'alba","Numana","Offagna","Osimo","Ostra","Ostra Vetere","Poggio San Marcello","Polverigi","Ripe","Rosora","San Marcello","San Paolo Di Jesi","Santa Maria Nuova","Sassoferrato","Senigallia","Serra D\u00e9 Conti","Serra San Quirico","Sirolo","Staffolo"],"4":["Allein","Antey Saint Andr\u00e9","Aosta","Arnad","Arvier","Avise","Ayas","Aymavilles","Bard","Bionaz","Brissogne","Brusson","Challand Saint Anselme","Challand Saint Victor","Chambave","Chamois","Champdepraz","Champorcher","Charvensod","Chatillon","Cogne","Courmayeur","Donnas","Doues","Emarese","Etroubles","Fenis","Fontainemore","Gaby","Gignod","Gressan","Gressoney La Trinit\u00e9","Gressoney Saint Jean","Hone","Introd","Issime","Issogne","Jovencan","La Magdeleine","La Salle","La Thuile","Lillianes","Montjovet","Morgex","Nus","Ollomont","Oyace","P\u00e8 Saint Didier","Perloz","Pollein","Pont Saint Martin","Pontboset","Pontey","Quart","Rhemes Notre Dame","Rhemes Saint Georges","Roisan","Saint Christophe","Saint Denis","Saint Marcel","Saint Nicolas","Saint Oyen","Saint Pierre","Saint Rhemy En Bosses","Saint Vincent","Sarre","Torgnon","Valgrisenche","Valpelline","Valsavarenche","Valtournenche","Verrayes","Verres","Villeneuve"],"5":["Anghiari","Arezzo","Badia Tedalda","Bibbiena","Bucine","Capolona","Caprese Michelangelo","Castel Focognano","Castel San Niccol\u00f2","Castelfranco Di Sopra","Castiglion Fibocchi","Castiglion Fiorentino","Cavriglia","Chitignano","Chiusi Della Verna","Civitella In Val Di Chian","Cortona","Foiano Della Chiana","Laterina","Loro Ciuffenna","Lucignano","Marciano Della Chiana","Monte San Savino","Montemignaio","Monterchi","Montevarchi","Ortignano Raggiolo","Pergine Valdarno","Pian Di Sco","Pieve Santo Stefano","Poppi","Pratovecchio","San Giovanni Valdarno","Sansepolcro","Sestino","Stia","Subbiano","Talla","Terranuova Bracciolini"],"6":["Acquasanta Terme","Acquaviva Picena","Altidona","Amandola","Appignano Del Tronto","Arquata Del Tronto","Ascoli Piceno","Belmonte Piceno","Campofilone","Carassai","Castel Di Lama","Castignano","Castorano","Colli Del Tronto","Comunanza","Cossignano","Cupra Marittima","Falerone","Fermo","Folignano","Force","Francavilla D'ete","Grottammare","Grottazzolina","Lapedona","Magliano Di Tenna","Maltignano","Massa Fermana","Massignano","Monsampietro Morico","Monsampolo Del Tronto","Montalto Delle Marche","Montappone","Monte Giberto","Monte Rinaldo","Monte San Pietrangeli","Monte Urano","Monte Vidon Combatte","Monte Vidon Corrado","Montedinove","Montefalcone Appennino","Montefiore Dell'aso","Montefortino","Montegallo","Montegiorgio","Montegranaro","Monteleone Di Fermo","Montelparo","Montemonaco","Monteprandone","Monterubbiano","Montottone","Moresco","Offida","Ortezzano","Palmiano","Pedaso","Petritoli","Ponzano Di Fermo","Porto San Giorgio","Porto Sant'elpidio","Rapagnano","Ripatransone","Roccafluvione","Rotella","San Benedetto Del Tronto","Sant'elpidio A Mare","Santa Vittoria In Matenan","Servigliano","Smerillo","Spinetoli","Torre San Patrizio","Venarotta"],"7":["Agliano","Albugnano","Antignano","Aramengo","Asti","Azzano D'asti","Baldichieri D'asti","Belveglio","Berzano Di San Pietro","Bruno","Bubbio","Buttigliera D'asti","Calamandrana","Calliano","Calosso","Camerano Casasco","Canelli","Cantarana","Capriglio","Casorzo","Cassinasco","Castagnole Delle Lanze","Castagnole Monferrato","Castel Boglione","Castel Rocchero","Castell'alfero","Castellero","Castelletto Molina","Castello Di Annone","Castelnuovo Belbo","Castelnuovo Calcea","Castelnuovo Don Bosco","Cellarengo","Celle Enomondo","Cerreto D'asti","Cerro Tanaro","Cessole","Chiusano D'asti","Cinaglio","Cisterna D'asti","Coazzolo","Cocconato","Colcavagno","Corsione","Cortandone","Cortanze","Cortazzone","Cortiglione","Cossombrato","Costigliole D'asti","Cunico","Dusino San Michele","Ferrere","Fontanile","Frinco","Grana","Grazzano Badoglio","Incisa Scapaccino","Isola D'asti","Loazzolo","Maranzana","Maretto","Moasca","Mombaldone","Mombaruzzo","Mombercelli","Monale","Monastero Bormida","Moncalvo","Moncucco Torinese","Mongardino","Montabone","Montafia","Montaldo Scarampi","Montechiaro D'asti","Montegrosso D'asti","Montemagno","Montiglio","Moransengo","Nizza Monferrato","Olmo Gentile","Passerano Marmorito","Penango","Piea","Pino D'asti","Piov\u00e0 Massaia","Portacomaro","Quaranti","Refrancore","Revigliasco D'asti","Roatto","Robella","Rocca D'arazzo","Roccaverano","Rocchetta Palafea","Rocchetta Tanaro","San Damiano D'asti","San Giorgio Scarampi","San Martino Alfieri","San Marzano Oliveto","San Paolo Solbrito","Scandeluzza","Scurzolengo","Serole","Sessame","Settime","Soglio","Tigliole","Tonco","Tonengo","Vaglio Serra","Valfenera","Vesime","Viale","Viarigi","Vigliano D'asti","Villa San Secondo","Villafranca D'asti","Villanova D'asti","Vinchio"],"8":["Aiello Del Sabato","Altavilla Irpina","Andretta","Aquilonia","Ariano Irpino","Atripalda","Avella","Avellino","Bagnoli Irpino","Baiano","Bisaccia","Bonito","Cairano","Calabritto","Calitri","Candida","Caposele","Capriglia Irpina","Carife","Casalbore","Cassano Irpino","Castel Baronia","Castelfranci","Castelvetere Sul Calore","Cervinara","Cesinali","Chianche","Chiusano Di San Domenico","Contrada","Conza Della Campania","Domicella","Flumeri","Fontanarosa","Forino","Frigento","Gesualdo","Greci","Grottaminarda","Grottolella","Guardia Lombardi","Lacedonia","Lapio","Lauro","Lioni","Luogosano","Manocalzati","Marzano Di Nola","Melito Irpino","Mercogliano","Mirabella Eclano","Montaguto","Montecalvo Irpino","Montefalcione","Monteforte Irpino","Montefredane","Montefusco","Montella","Montemarano","Montemiletto","Monteverde","Montoro Inferiore","Montoro Superiore","Morra De Sanctis","Moschiano","Mugnano Del Cardinale","Nusco","Ospedaletto D'alpinolo","Pago Del Vallo Di Lauro","Parolise","Paternopoli","Petruro Irpino","Pietradefusi","Pietrastornina","Prata Di Principato Ultra","Pratola Serra","Quadrelle","Quindici","Rocca San Felice","Roccabascerana","Rotondi","Salza Irpina","San Mango Sul Calore","San Martino Valle Caudina","San Michele Di Serino","San Nicola Baronia","San Potito Ultra","San Sossio Baronia","Sant'andrea Di Conza","Sant'angelo A Scala","Sant'angelo All'esca","Sant'angelo Dei Lombardi","Santa Lucia Di Serino","Santa Paolina","Santo Stefano Del Sole","Savignano Irpino","Scampitella","Senerchia","Serino","Sirignano","Solofra","Sorbo Serpico","Sperone","Sturno","Summonte","Taurano","Taurasi","Teora","Torella Dei Lombardi","Torre Le Nocelle","Torrioni","Trevico","Tufo","Vallata","Vallesaccarda","Venticano","Villamaina","Villanova Del Battista","Volturara Irpina","Zungoli"],"9":["Acquaviva Delle Fonti","Adelfia","Alberobello","Altamura","Andria","Bari","Barletta","Binetto","Bisceglie","Bitetto","Bitonto","Bitritto","Canosa Di Puglia","Capurso","Casamassima","Cassano Delle Murge","Castellana Grotte","Cellamare","Conversano","Corato","Gioia Del Colle","Giovinazzo","Gravina In Puglia","Grumo Appula","Locorotondo","Minervino Murge","Modugno","Mola Di Bari","Molfetta","Monopoli","Noci","Noicattaro","Palo Del Colle","Poggiorsini","Polignano A Mare","Putignano","Rutigliano","Ruvo Di Puglia","Sammichele Di Bari","Sannicandro Di Bari","Santeramo In Colle","Spinazzola","Terlizzi","Toritto","Trani","Triggiano","Turi","Valenzano"],"10":["Agordo","Alano Di Piave","Alleghe","Arsi\u00e9","Auronzo Di Cadore","Belluno","Borca Di Cadore","Calalzo Di Cadore","Canale D'agordo","Castello Lavazzo","Cencenighe Agordino","Cesiomaggiore","Chies D'alpago","Cibiana Di Cadore","Colle Santa Lucia","Comelico Superiore","Cortina D'ampezzo","Danta","Domegge Di Cadore","Falcade","Farra D'alpago","Feltre","Fonzaso","Forno Di Zoldo","Gosaldo","La Valle Agordina","Lamon","Lentiai","Limana","Livinallongo Del Col Di L","Longarone","Lorenzago Di Cadore","Lozzo Di Cadore","Mel","Ospitale Di Cadore","Pedavena","Perarolo Di Cadore","Pieve D'alpago","Pieve Di Cadore","Ponte Nelle Alpi","Puos D'alpago","Quero","Rivamonte Agordino","Rocca Pietore","San Gregorio Nelle Alpi","San Nicol\u00f2 Di Comelico","San Pietro Di Cadore","San Tomaso Agordino","San Vito Di Cadore","Santa Giustina","Santo Stefano Di Cadore","Sappada","Sedico","Selva Di Cadore","Seren Del Grappa","Sospirolo","Soverzene","Sovramonte","Taibon Agordino","Tambre","Trichiana","Vallada Agordina","Valle Di Cadore","Vas","Vigo Di Cadore","Vodo Cadore","Voltago Agordino","Zoldo Alto","Zopp\u00e9 Di Cadore"],"11":["Airola","Amorosi","Apice","Apollosa","Arpaia","Arpaise","Baselice","Benevento","Bonea","Bucciano","Buonalbergo","Calvi","Campolattaro","Campoli Del Monte Taburno","Casalduni","Castelfranco In Miscano","Castelpagano","Castelpoto","Castelvenere","Castelvetere In Val Forto","Cautano","Ceppaloni","Cerreto Sannita","Circello","Colle Sannita","Cusano Mutri","Dugenta","Durazzano","Faicchio","Foglianise","Foiano Di Val Fortore","Forchia","Fragneto L'abate","Fragneto Monforte","Frasso Telesino","Ginestra Degli Schiavoni","Guardia Sanframondi","Limatola","Melizzano","Moiano","Molinara","Montefalcone Di Val Forto","Montesarchio","Morcone","Paduli","Pago Veiano","Pannarano","Paolisi","Paupisi","Pesco Sannita","Pietraroja","Pietrelcina","Ponte","Pontelandolfo","Puglianello","Reino","San Bartolomeo In Galdo","San Giorgio Del Sannio","San Giorgio La Molara","San Leucio Del Sannio","San Lorenzello","San Lorenzo Maggiore","San Lupo","San Marco Dei Cavoti","San Martino Sannita","San Nazzaro","San Nicola Manfredi","San Salvatore Telesino","Sant'agata D\u00e9 Goti","Sant'angelo A Cupolo","Sant'arcangelo Trimonte","Santa Croce Del Sannio","Sassinoro","Solopaca","Telese","Tocco Caudio","Torrecuso","Vitulano"],"12":["Adrara San Martino","Adrara San Rocco","Albano Sant'alessandro","Albino","Algua","Alm\u00e9","Almenno San Bartolomeo","Almenno San Salvatore","Alzano Lombardo","Ambivere","Antegnate","Arcene","Ardesio","Arzago D'adda","Averara","Aviatico","Azzano San Paolo","Azzone","Bagnatica","Barbata","Bariano","Barzana","Bedulita","Berbenno","Bergamo","Berzo San Fermo","Bianzano","Blello","Bolgare","Boltiere","Bonate Sopra","Bonate Sotto","Borgo Di Terzo","Bossico","Bottanuco","Bracca","Branzi","Brembate","Brembate Di Sopra","Brembilla","Brignano Gera D'adda","Brumano","Brusaporto","Calcinate","Calcio","Calusco D'adda","Calvenzano","Camerata Cornello","Canonica D'adda","Capizzone","Capriate San Gervasio","Caprino Bergamasco","Caravaggio","Carobbio Degli Angeli","Carona","Carvico","Casazza","Casirate D'adda","Casnigo","Cassiglio","Castel Rozzone","Castelli Calepio","Castione Della Presolana","Castro","Cavernago","Cazzano Sant'andrea","Cenate Sopra","Cenate Sotto","Cene","Cerete","Chignolo D'isola","Chiuduno","Cisano Bergamasco","Ciserano","Cividate Al Piano","Clusone","Colere","Cologno Al Serio","Colzate","Comun Nuovo","Corna Imagna","Cornalba","Cortenuova","Costa Di Mezzate","Costa Di Serina","Costa Valle Imagna","Costa Volpino","Covo","Credaro","Curno","Cusio","Dalmine","Dossena","Endine Gaiano","Entratico","Fara Gera D'adda","Fara Olivana Con Sola","Filago","Fino Del Monte","Fiorano Al Serio","Fontanella","Fonteno","Foppolo","Foresto Sparso","Fornovo San Giovanni","Fuipiano Valle Imagna","Gandellino","Gandino","Gandosso","Gaverina Terme","Gazzaniga","Gerosa","Ghisalba","Gorlago","Gorle","Gorno","Grassobbio","Gromo","Grone","Grumello Del Monte","Isola Di Fondra","Isso","Lallio","Leffe","Lenna","Levate","Locatello","Lovere","Lurano","Luzzana","Madone","Mapello","Martinengo","Medolago","Mezzoldo","Misano Di Gera D'adda","Moio D\u00e9 Calvi","Monasterolo Del Castello","Montello","Morengo","Mornico Al Serio","Mozzanica","Mozzo","Nembro","Olmo Al Brembo","Oltre Il Colle","Oltressenda Alta","Oneta","Onore","Orio Al Serio","Ornica","Osio Sopra","Osio Sotto","Pagazzano","Paladina","Palazzago","Palosco","Parre","Parzanica","Pedrengo","Peia","Pianico","Piario","Piazza Brembana","Piazzatorre","Piazzolo","Pognano","Ponte Nossa","Ponte San Pietro","Ponteranica","Pontida","Pontirolo Nuovo","Pradalunga","Predore","Premolo","Presezzo","Pumenengo","Ranica","Ranzanico","Riva Di Solto","Rogno","Romano Di Lombardia","Roncobello","Roncola","Rota D'imagna","Rovetta","San Giovanni Bianco","San Paolo D'argon","San Pellegrino Terme","Sant'omobono Imagna","Santa Brigida","Sarnico","Scanzorosciate","Schilpario","Sedrina","Selvino","Seriate","Serina","Solto Collina","Solza","Songavazzo","Sorisole","Sotto Il Monte Giovanni X","Sovere","Spinone Al Lago","Spirano","Stezzano","Strozza","Suisio","Taleggio","Tavernola Bergamasca","Telgate","Terno D'isola","Torre Boldone","Torre D\u00e9 Roveri","Torre Pallavicina","Trescore Balneario","Treviglio","Treviolo","Ubiale Clanezzo","Urgnano","Valbondione","Valbrembo","Valgoglio","Valleve","Valnegra","Valsecca","Valtorta","Vedeseta","Verdellino","Verdello","Vertova","Viadanica","Vigano San Martino","Vigolo","Villa D'adda","Villa D'alm\u00e9","Villa D'ogna","Villa Di Serio","Villongo","Vilminore Di Scalve","Zandobbio","Zanica","Zogno"],"13":["Ailoche","Andorno Micca","Benna","Biella","Bioglio","Borriana","Brusnengo","Callabiana","Camandona","Camburzano","Campiglia Cervo","Candelo","Caprile","Casapinta","Castelletto Cervo","Cavagli\u00e0","Cerreto Castello","Cerrione","Coggiola","Cossato","Crevacuore","Crosa","Curino","Donato","Dorzano","Gaglianico","Gifflenga","Graglia","Lessona","Magnano","Massazza","Masserano","Mezzana Mortigliengo","Mongrando","Mosso Santa Maria","Mottalciata","Muzzano","Netro","Occhieppo Inferiore","Occhieppo Superiore","Pettinengo","Piatto","Piedicavallo","Pistolesa","Pollone","Ponderano","Portula","Pralungo","Pray","Quaregna","Quittengo","Ronco Biellese","Roppolo","Rosazza","Sagliano Micca","Sala Biellese","Salussola","San Paolo Cervo","Sandigliano","Selve Marcone","Soprana","Sordevolo","Strona","Tavigliano","Ternengo","Tollegno","Torrazzo","Trivero","Valdengo","Vallanzengo","Valle Mosso","Valle San Nicolao","Veglio","Verrone","Vigliano Biellese","Villa Del Bosco","Villanova Biellese","Viverone","Zimone","Zubiena","Zumaglia"],"14":["Anzola Dell'emilia","Argelato","Baricella","Bazzano","Bentivoglio","Bologna","Borgo Tossignano","Budrio","Calderara Di Reno","Camugnano","Casalecchio Di Reno","Casalfiumanese","Castel D'aiano","Castel Del Rio","Castel Di Casio","Castel Guelfo Di Bologna","Castel Maggiore","Castel San Pietro Terme","Castello D'argile","Castello Di Serravalle","Castenaso","Castiglione Dei Pepoli","Crespellano","Crevalcore","Dozza","Fontanelice","Gaggio Montano","Galliera","Granaglione","Granarolo Dell'emilia","Grizzana","Imola","Lizzano In Belvedere","Loiano","Malalbergo","Marzabotto","Medicina","Minerbio","Molinella","Monghidoro","Monte San Pietro","Monterenzio","Monteveglio","Monzuno","Mordano","Ozzano Dell'emilia","Pianoro","Pieve Di Cento","Porretta Terme","Sala Bolognese","San Benedetto Val Di Samb","San Giorgio Di Piano","San Giovanni In Persiceto","San Lazzaro Di Savena","San Pietro In Casale","Sant'agata Bolognese","Sasso Marconi","Savigno","Vergato","Zola Predosa"],"15":["Aldino","Andriano","Anterivo","Appiano Sulla Strada Del","Avelengo","Badia","Barbiano","Bolzano","Braies","Brennero","Bressanone","Bronzolo","Brunico","Caines","Caldaro Sulla Strada","Campo Di Trens","Campo Tures","Castelbello Ciardes","Castelrotto","Cermes","Chienes","Chiusa","Cornedo All'isarco","Cortaccia","Cortina All'adige","Corvara In Badia","Curon Venosta","Dobbiaco","Egna","Falzes","Fi\u00e9 Allo Sciliar","Fortezza","Funes","Gais","Gargazzone","Glorenza","La Valle","Laces","Lagundo","Laion","Laives","Lana","Lasa","Lauregno","Luson","Magr\u00e9 All'adige","Malles Venosta","Marebbe","Marlengo","Martello","Meltina","Merano","Monguelfo","Montagna","Moso In Passiria","Nalles","Naturno","Naz Sciaves","Nova Levante","Nova Ponente","Ora","Ortisei","Parcines","Perca","Plaus","Ponte Gardena","Postal","Prato Allo Stelvio","Predoi","Proves","Racines","Rasun Anterselva","Renon","Rifiano","Rio Di Pusteria","Rodengo","Salorno","San Candido","San Genesio Atesino","San Leonardo In Passiria","San Lorenzo Di Sebato","San Martino In Badia","San Martino In Passiria","San Pancrazio","Santa Cristina Valgardena","Sarentino","Scena","Selva Dei Molini","Selva Di Val Gardena","Senale San Felice","Senales","Sesto","Silandro","Sluderno","Stelvio","Terento","Terlano","Termeno","Tesimo","Tires","Tirolo","Trodena","Tubre","Ultimo","Vadena","Val Di Vizze","Valdaora","Valle Aurina","Valle Di Casies","Vandoies","Varna","Velturno","Verano","Villabassa","Villandro","Vipiteno"],"16":["Acquafredda","Adro","Agnosine","Alfianello","Anfo","Angolo Terme","Artogne","Azzano Mella","Bagnolo Mella","Bagolino","Barbariga","Barghe","Bassano Bresciano","Bedizzole","Berlingo","Berzo Demo","Berzo Inferiore","Bienno","Bione","Borgo San Giacomo","Borgosatollo","Borno","Botticino","Bovegno","Bovezzo","Brandico","Braone","Breno","Brescia","Brione","Caino","Calcinato","Calvagese Della Riviera","Calvisano","Capo Di Ponte","Capovalle","Capriano Del Colle","Capriolo","Carpenedolo","Castegnato","Castel Mella","Castelcovati","Castenedolo","Casto","Castrezzato","Cazzago San Martino","Cedegolo","Cellatica","Cerveno","Ceto","Cevo","Chiari","Cigole","Cimbergo","Cividate Camuno","Coccaglio","Collebeato","Collio","Cologne","Comezzano Cizzago","Concesio","Corte Franca","Corteno Golgi","Corzano","Darfo Boario Terme","Dello","Desenzano Del Garda","Edolo","Erbusco","Esine","Fiesse","Flero","Gambara","Gardone Riviera","Gardone Val Trompia","Gargnano","Gavardo","Ghedi","Gianico","Gottolengo","Gussago","Idro","Incudine","Irma","Iseo","Isorella","Lavenone","Leno","Limone Sul Garda","Lodrino","Lograto","Lonato","Longhena","Losine","Lozio","Lumezzane","Maclodio","Magasa","Mairano","Malegno","Malonno","Manerba Del Garda","Manerbio","Marcheno","Marmentino","Marone","Mazzano","Milzano","Moniga Del Garda","Monno","Monte Isola","Monticelli Brusati","Montichiari","Montirone","Mura","Muscoline","Nave","Niardo","Nuvolento","Nuvolera","Odolo","Offlaga","Ome","Ono San Pietro","Orzinuovi","Orzivecchi","Ospitaletto","Ossimo","Padenghe Sul Garda","Paderno Franciacorta","Paisco Loveno","Paitone","Palazzolo Sull'oglio","Paratico","Paspardo","Passirano","Pavone Del Mella","Pertica Alta","Pertica Bassa","Pezzaze","Pian Camuno","Piancogno","Pisogne","Polaveno","Polpenazze","Pompiano","Poncarale","Ponte Di Legno","Pontevico","Pontoglio","Pozzolengo","Pralboino","Preseglie","Prestine","Prevalle","Provaglio D'iseo","Provaglio Val Sabbia","Puegnago Sul Garda","Quinzano D'oglio","Remedello","Rezzato","Roccafranca","Rodengo Saiano","Ro\u00e9 Volciano","Roncadelle","Rovato","Rudiano","Sabbio Chiese","Sale Marasino","Sal\u00f2","San Felice Del Benaco","San Gervasio Bresciano","San Paolo","San Zeno Naviglio","Sarezzo","Saviore Dell'adamello","Sellero","Seniga","Serle","Sirmione","Soiano Del Lago","Sonico","Sulzano","Tavernole Sul Mella","Tem\u00f9","Tignale","Torbole Casaglia","Toscolano Maderno","Travagliato","Tremosine","Trenzano","Treviso Bresciano","Urago D'oglio","Vallio Terme","Valvestino","Verolanuova","Verolavecchia","Vestone","Vezza D'oglio","Villa Carcina","Villachiara","Villanuova Sul Clisi","Vione","Visano","Vobarno","Zone"],"17":["Brindisi","Carovigno","Ceglie Messapica","Cellino San Marco","Cisternino","Erchie","Fasano","Francavilla Fontana","Latiano","Mesagne","Oria","Ostuni","San Donaci","San Michele Salentino","San Pancrazio Salentino","San Pietro Vernotico","San Vito Dei Normanni","Torchiarolo","Torre Santa Susanna","Villa Castelli"],"18":["Armungia","Assemini","Ballao","Barrali","Burcei","Cagliari","Capoterra","Castiadas","Decimomannu","Decimoputzu","Dolianova","Domus De Maria","Donori","Elmas","Gesico","Goni","Guamaggiore","Guasila","Mandas","Maracalagonis","Monastir","Monserrato","Muravera","Nuraminis","Ortacesus","Pimentel","Pula","Quartu Sant'elena","Quartucciu","Samatzai","San Basilio","San Nicol\u00f2 Gerrei","San Sperate","San Vito","Sant'andrea Frius","Sarroch","Selargius","Selegas","Senorb\u00ec","Serdiana","Sestu","Settimo San Pietro","Siddi","Siliqua","Silius","Sinnai","Siurgus Donigala","Soleminis","Suelli","Teulada","Ussana","Uta","Vallermosa","Villa San Pietro","Villaputzu","Villasalto","Villasimius","Villasor","Villaspeciosa"],"19":["Acquaviva Platani","Bompensiere","Butera","Caltanissetta","Campofranco","Delia","Gela","Marianopoli","Mazzarino","Milena","Montedoro","Mussomeli","Niscemi","Resuttano","Riesi","San Cataldo","Santa Caterina Villarmosa","Serradifalco","Sommatino","Sutera","Vallelunga Pratameno","Villalba"],"20":["Acquaviva Collecroce","Baranello","Bojano","Bonefro","Busso","Campobasso","Campochiaro","Campodipietra","Campolieto","Campomarino","Casacalenda","Casalciprano","Castelbottaccio","Castellino Del Biferno","Castelmauro","Castropignano","Cercemaggiore","Cercepiccola","Civitacampomarano","Colle D'anchise","Colletorto","Duronia","Ferrazzano","Fossalto","Gambatesa","Gildone","Guardialfiera","Guardiaregia","Guglionesi","Jelsi","Larino","Limosano","Lucito","Lupara","Macchia Valfortore","Mafalda","Matrice","Mirabello Sannitico","Molise","Monacilioni","Montagano","Montecilfone","Montefalcone Nel Sannio","Montelongo","Montemitro","Montenero Di Bisaccia","Montorio Nei Frentani","Morrone Del Sannio","Oratino","Palata","Petacciato","Petrella Tifernina","Pietracatella","Pietracupa","Portocannone","Provvidenti","Riccia","Ripabottoni","Ripalimosani","Roccavivara","Rotello","Salcito","San Biase","San Felice Del Molise","San Giacomo Degli Schiavo","San Giovanni In Galdo","San Giuliano Del Sannio","San Giuliano Di Puglia","San Martino In Pensilis","San Massimo","San Polo Matese","Sant'angelo Limosano","Sant'elia A Pianisi","Santa Croce Di Magliano","Sepino","Spinete","Tavenna","Termoli","Torella Del Sannio","Toro","Trivento","Tufara","Ururi","Vinchiaturo"],"21":["Buggerru","Calasetta","Carbonia","Carloforte","Domusnovas","Fluminimaggiore","Giba","Gonnesa","Iglesias","Masainas","Musei","Narcao","Nuxis","Perdaxius","Piscinas","Portoscuso","San Giovanni Suergiu","Sant'anna Arresi","Sant'antioco","Santadi","Tratalias","Villamassargia","Villaperuccio"],"22":["Ailano","Alife","Alvignano","Arienzo","Aversa","Baia E Latina","Bellona","Caianello","Caiazzo","Calvi Risorta","Camigliano","Cancello Ed Arnone","Capodrise","Capriati A Volturno","Capua","Carinaro","Carinola","Casagiove","Casal Di Principe","Casaluce","Casapesenna","Casapulla","Caserta","Castel Campagnano","Castel Di Sasso","Castel Morrone","Castel Volturno","Castello Del Matese","Cellole","Cervino","Cesa","Ciorlano","Conca Della Campania","Curti","Dragoni","Falciano Del Massico","Fontegreca","Formicola","Francolise","Frignano","Gallo","Galluccio","Giano Vetusto","Gioia Sannitica","Grazzanise","Gricignano Di Aversa","Letino","Liberi","Lusciano","Macerata Campania","Maddaloni","Marcianise","Marzano Appio","Mignano Monte Lungo","Mondragone","Orta Di Atella","Parete","Pastorano","Piana Di Monte Verna","Piedimonte Matese","Pietramelara","Pietravairano","Pignataro Maggiore","Pontelatone","Portico Di Caserta","Prata Sannita","Pratella","Presenzano","Raviscanina","Recale","Riardo","Rocca D'evandro","Roccamonfina","Roccaromana","Rocchetta E Croce","Ruviano","San Cipriano D'aversa","San Felice A Cancello","San Gregorio Matese","San Marcellino","San Marco Evangelista","San Nicola La Strada","San Pietro Infine","San Potito Sannitico","San Prisco","San Tammaro","Sant'angelo D'alife","Sant'arpino","Santa Maria A Vico","Santa Maria Capua Vetere","Santa Maria La Fossa","Sessa Aurunca","Sparanise","Succivo","Teano","Teverola","Tora E Piccilli","Trentola Ducenta","Vairano Patenora","Valle Agricola","Valle Di Maddaloni","Villa Di Briano","Villa Literno","Vitulazio"],"23":["Aci Bonaccorsi","Aci Castello","Aci Catena","Aci Sant'antonio","Acireale","Adrano","Belpasso","Biancavilla","Bronte","Calatabiano","Caltagirone","Camporotondo Etneo","Castel Di Iudica","Castiglione Di Sicilia","Catania","Fiumefreddo Di Sicilia","Giarre","Grammichele","Gravina Di Catania","Licodia Eubea","Linguaglossa","Maletto","Maniace","Mascali","Mascalucia","Mazzarrone","Militello In Val Di Catan","Milo","Mineo","Mirabella Imbaccari","Misterbianco","Motta Sant'anastasia","Nicolosi","Palagonia","Patern\u00f2","Pedara","Piedimonte Etneo","Raddusa","Ragalna","Ramacca","Randazzo","Riposto","San Cono","San Giovanni La Punta","San Gregorio Di Catania","San Michele Di Ganzaria","San Pietro Clarenza","Sant'agata Li Battiati","Sant'alfio","Santa Maria Di Licodia","Santa Venerina","Scordia","Trecastagni","Tremestieri Etneo","Valverde","Viagrande","Vizzini","Zafferana Etnea"],"24":["Albi","Amaroni","Amato","Andali","Argusto","Badolato","Belcastro","Borgia","Botricello","Caraffa Di Catanzaro","Cardinale","Carlopoli","Catanzaro","Cenadi","Centrache","Cerva","Chiaravalle Centrale","Cicala","Conflenti","Cortale","Cropani","Curinga","Davoli","Decollatura","Falerna","Feroleto Antico","Fossato Serralta","Gagliato","Gasperina","Gimigliano","Girifalco","Gizzeria","Guardavalle","Isca Sullo Ionio","Jacurso","Lamezia Terme","Magisano","Maida","Marcedusa","Marcellinara","Martirano","Martirano Lombardo","Miglierina","Montauro","Montepaone","Motta Santa Lucia","Nocera Tirinese","Olivadi","Palermiti","Pentone","Petrizzi","Petron\u00e0","Pianopoli","Platania","San Floro","San Mango D'aquino","San Pietro A Maida","San Pietro Apostolo","San Sostene","San Vito Sullo Ionio","Sant'andrea Apostolo Dell","Santa Caterina Dello Ioni","Satriano","Sellia","Sellia Marina","Serrastretta","Sersale","Settingiano","Simeri Crichi","Sorbo San Basile","Soverato","Soveria Mannelli","Soveria Simeri","Squillace","Staletti","Taverna","Tiriolo","Torre Di Ruggiero","Vallefiorita","Zagarise"],"25":["Altino","Archi","Ari","Arielli","Atessa","Bomba","Borrello","Bucchianico","Canosa Sannita","Carpineto Sinello","Carunchio","Casacanditella","Casalanguida","Casalbordino","Casalincontrada","Casoli","Castel Frentano","Castelguidone","Castiglione Messer Marino","Celenza Sul Trigno","Chieti","Civitaluparella","Civitella Messer Raimondo","Colledimacine","Colledimezzo","Crecchio","Cupello","Dogliola","Fallo","Fara Filiorum Petri","Fara San Martino","Filetto","Fossacesia","Fraine","Francavilla Al Mare","Fresagrandinaria","Frisa","Furci","Gamberale","Gessopalena","Gissi","Giuliano Teatino","Guardiagrele","Guilmi","Lama Dei Peligni","Lanciano","Lentella","Lettopalena","Liscia","Miglianico","Montazzoli","Montebello Sul Sangro","Monteferrante","Montelapiano","Montenerodomo","Monteodorisio","Mozzagrogna","Orsogna","Ortona A Mare","Paglieta","Palena","Palmoli","Palombaro","Pennadomo","Pennapiedimonte","Perano","Pietraferrazzana","Pizzoferrato","Poggiofiorito","Pollutri","Pretoro","Quadri","Rapino","Ripa Teatina","Rocca San Giovanni","Roccamontepiano","Roccascalegna","Roccaspinalveti","Roio Del Sangro","Rosello","San Buono","San Giovanni Lipioni","San Giovanni Teatino","San Martino Sulla Marruci","San Salvo","San Vito Chietino","Sant'eusanio Del Sangro","Santa Maria Imbaro","Scerni","Schiavi Di Abruzzo","Taranta Peligna","Tollo","Torino Di Sangro","Tornareccio","Torrebruna","Torrevecchia Teatina","Torricella Peligna","Treglio","Tufillo","Vacri","Vasto","Villa Santa Maria","Villalfonsina","Villamagna"],"26":["Albavilla","Albese Con Cassano","Albiolo","Alserio","Alzate Brianza","Anzano Del Parco","Appiano Gentile","Argegno","Arosio","Asso","Barni","Bellagio","Bene Lario","Beregazzo Con Figliaro","Binago","Bizzarone","Blessagno","Blevio","Bregnano","Brenna","Brienno","Brunate","Bulgarograsso","Cabiate","Cadorago","Caglio","Cagno","Campione D'italia","Cant\u00f9","Canzo","Capiago Intimiano","Carate Urio","Carbonate","Carimate","Carlazzo","Carugo","Casasco D'intelvi","Caslino D'erba","Casnate Con Bernate","Cassina Rizzardi","Castelmarte","Castelnuovo Bozzente","Castiglione D'intelvi","Cavallasca","Cavargna","Cerano D'intelvi","Cermenate","Cernobbio","Cirimido","Civenna","Claino Con Osteno","Colonno","Como","Consiglio Di Rumo","Corrido","Cremia","Cucciago","Cusino","Dizzasco","Domaso","Dongo","Dosso Del Liro","Drezzo","Erba","Eupilio","Faggeto Lario","Faloppio","Fenegr\u00f2","Figino Serenza","Fino Mornasco","Garzeno","Gera Lario","Germasino","Gironico","Grandate","Grandola Ed Uniti","Gravedona","Griante","Guanzate","Inverigo","Laglio","Laino","Lambrugo","Lanzo D'intelvi","Lasnigo","Lenno","Lezzeno","Limido Comasco","Lipomo","Livo","Locate Varesino","Lomazzo","Longone Al Segrino","Luisago","Lurago D'erba","Lurago Marinone","Lurate Caccivio","Magreglio","Mariano Comense","Maslianico","Menaggio","Merone","Mezzegra","Moltrasio","Monguzzo","Montano Lucino","Montemezzo","Montorfano","Mozzate","Musso","Nesso","Novedrate","Olgiate Comasco","Oltrona Di San Mamette","Orsenigo","Ossuccio","Par\u00e9","Peglio","Pellio Intelvi","Pianello Del Lario","Pigra","Plesio","Pognana Lario","Ponna","Ponte Lambro","Porlezza","Proserpio","Pusiano","Ramponio Verna","Rezzago","Rodero","Ronago","Rovellasca","Rovello Porro","Sala Comacina","San Bartolomeo Val Cavarg","San Fedele Intelvi","San Fermo Della Battaglia","San Nazzaro Val Cavargna","Sant'abbondio","Santa Maria Rezzonico","Schignano","Senna Comasco","Solbiate","Sorico","Sormano","Stazzona","Tavernerio","Torno","Tremezzo","Trezzone","Turate","Uggiate Trevano","Val Rezzo","Valbrona","Valmorea","Valsolda","Veleso","Veniano","Vercana","Vertemate Con Minoprio","Villa Guardia","Zelbio"],"27":["Acquaformosa","Acquappesa","Acri","Aiello Calabro","Aieta","Albidona","Alessandria Del Carretto","Altilia","Altomonte","Amantea","Amendolara","Aprigliano","Belmonte Calabro","Belsito","Belvedere Marittimo","Bianchi","Bisignano","Bocchigliero","Bonifati","Buonvicino","Calopezzati","Caloveto","Campana","Canna","Cariati","Carolei","Carpanzano","Casole Bruzio","Cassano Allo Ionio","Castiglione Cosentino","Castrolibero","Castroregio","Castrovillari","Celico","Cellara","Cerchiara Di Calabria","Cerisano","Cervicati","Cerzeto","Cetraro","Civita","Cleto","Colosimi","Corigliano Calabro","Cosenza","Cropalati","Crosia","Diamante","Dipignano","Domanico","Fagnano Castello","Falconara Albanese","Figline Vegliaturo","Firmo","Fiumefreddo Bruzio","Francavilla Marittima","Frascineto","Fuscaldo","Grimaldi","Grisolia","Guardia Piemontese","Lago","Laino Borgo","Laino Castello","Lappano","Lattarico","Longobardi","Longobucco","Lungro","Luzzi","Maier\u00e0","Malito","Malvito","Mandatoriccio","Mangone","Marano Marchesato","Marano Principato","Marzi","Mendicino","Mongrassano","Montalto Uffugo","Montegiordano","Morano Calabro","Mormanno","Mottafollone","Nocara","Oriolo","Orsomarso","Paludi","Panettieri","Paola","Papasidero","Parenti","Paterno Calabro","Pedace","Pedivigliano","Piane Crati","Pietrafitta","Pietrapaola","Plataci","Praia A Mare","Rende","Rocca Imperiale","Roggiano Gravina","Rogliano","Rose","Roseto Capo Spulico","Rossano","Rota Greca","Rovito","San Basile","San Benedetto Ullano","San Cosmo Albanese","San Demetrio Corone","San Donato Di Ninea","San Fili","San Giorgio Albanese","San Giovanni In Fiore","San Lorenzo Bellizzi","San Lorenzo Del Vallo","San Lucido","San Marco Argentano","San Martino Di Finita","San Nicola Arcella","San Pietro In Amantea","San Pietro In Guarano","San Sosti","San Vincenzo La Costa","Sangineto","Sant'agata Di Esaro","Santa Caterina Albanese","Santa Domenica Talao","Santa Maria Del Cedro","Santa Sofia D'epiro","Santo Stefano Di Rogliano","Saracena","Scala Coeli","Scalea","Scigliano","Serra D'aiello","Serra Pedace","Spezzano Albanese","Spezzano Della Sila","Spezzano Piccolo","Tarsia","Terranova Da Sibari","Terravecchia","Torano Castello","Tortora","Trebisacce","Trenta","Vaccarizzo Albanese","Verbicaro","Villapiana","Zumpano"],"28":["Acquanegra Cremonese","Agnadello","Annicco","Azzanello","Bagnolo Cremasco","Bonemerse","Bordolano","C\u00e0 D'andrea","Calvatone","Camisano","Campagnola Cremasca","Capergnanica","Cappella Cantone","Cappella D\u00e9 Picenardi","Capralba","Casalbuttano Ed Uniti","Casale Cremasco Vidolasco","Casaletto Ceredano","Casaletto Di Sopra","Casaletto Vaprio","Casalmaggiore","Casalmorano","Castel Gabbiano","Casteldidone","Castelleone","Castelverde","Castelvisconti","Cella Dati","Chieve","Cicognolo","Cingia D\u00e9botti","Corte D\u00e9cortesi Con Cign","Corte D\u00e9frati","Credera Rubbiano","Crema","Cremona","Cremosano","Crotta D'adda","Cumignano Sul Naviglio","Derovere","Dovera","Drizzona","Fiesco","Formigara","Gabbioneta Binanuova","Gadesco Pieve Delmona","Genivolta","Gerre D\u00e9 Caprioli","Gombito","Grontardo","Grumello Cremonese Ed Uni","Gussola","Isola Dovarese","Izano","Madignano","Malagnino","Martignana Di Po","Monte Cremasco","Montodine","Moscazzano","Motta Baluffi","Offanengo","Olmeneta","Ostiano","Paderno Ponchielli","Palazzo Pignano","Pandino","Persico Dosimo","Pescarolo Ed Uniti","Pessina Cremonese","Piadena","Pianengo","Pieranica","Pieve D'olmi","Pieve San Giacomo","Pizzighettone","Pozzaglio Ed Uniti","Quintano","Ricengo","Ripalta Arpina","Ripalta Cremasca","Ripalta Guerina","Rivarolo Del Re Ed Uniti","Rivolta D'adda","Robecco D'oglio","Romanengo","Salvirola","San Bassano","San Daniele Po","San Giovanni In Croce","San Martino Del Lago","Scandolara Ravara","Scandolara Ripa D'oglio","Sergnano","Sesto Ed Uniti","Solarolo Rainerio","Soncino","Soresina","Sospiro","Spinadesco","Spineda","Spino D'adda","Stagno Lombardo","Ticengo","Torlino Vimercati","Tornata","Torre D\u00e9 Picenardi","Torricella Del Pizzo","Trescore Cremasco","Trigolo","Vaiano Cremasco","Vailate","Vescovato","Volongo","Voltido"],"29":["Belvedere Di Spinello","Caccuri","Carfizzi","Casabona","Castelsilano","Cerenzia","Cir\u00f2","Cir\u00f2 Marina","Cotronei","Crotone","Crucoli","Cutro","Isola Di Capo Rizzuto","Melissa","Mesoraca","Pallagorio","Petilia Policastro","Rocca Di Neto","Roccabernarda","San Mauro Marchesato","San Nicola Dell'alto","Santa Severina","Savelli","Scandale","Strongoli","Umbriatico","Verzino"],"30":["Acceglio","Aisone","Alba","Albaretto Della Torre","Alto","Argentera","Arguello","Bagnasco","Bagnolo Piemonte","Baldissero D'alba","Barbaresco","Barge","Barolo","Bastia Mondov\u00ec","Battifollo","Beinette","Bellino","Belvedere Langhe","Bene Vagienna","Benevello","Bergolo","Bernezzo","Bonvicino","Borgo San Dalmazzo","Borgomale","Bosia","Bossolasco","Boves","Bra","Briaglia","Briga Alta","Brondello","Brossasco","Busca","Camerana","Camo","Canale","Canosio","Caprauna","Caraglio","Caramagna Piemonte","Card\u00e9","Carr\u00f9","Cartignano","Casalgrasso","Castagnito","Casteldelfino","Castellar","Castelletto Stura","Castelletto Uzzone","Castellinaldo","Castellino Tanaro","Castelmagno","Castelnuovo Di Ceva","Castiglione Falletto","Castiglione Tinella","Castino","Cavallerleone","Cavallermaggiore","Celle Di Macra","Centallo","Ceresole Alba","Cerretto Delle Langhe","Cervasca","Cervere","Ceva","Cherasco","Chiusa Di Pesio","Cigli\u00e9","Cissone","Clavesana","Corneliano D'alba","Cortemilia","Cossano Belbo","Costigliole Saluzzo","Cravanzana","Crissolo","Cuneo","Demonte","Diano D'alba","Dogliani","Dronero","Elva","Entracque","Envie","Farigliano","Faule","Feisoglio","Fossano","Frabosa Soprana","Frabosa Sottana","Frassino","Gaiola","Gambasca","Garessio","Genola","Gorzegno","Gottasecca","Govone","Grinzane Cavour","Guarene","Igliano","Isasca","La Morra","Lagnasco","Lequio Berria","Lequio Tanaro","Lesegno","Levice","Limone Piemonte","Lisio","Macra","Magliano Alfieri","Magliano Alpi","Mango","Manta","Marene","Margarita","Marmora","Marsaglia","Martiniana Po","Melle","Moiola","Mombarcaro","Mombasiglio","Monastero Di Vasco","Monasterolo Casotto","Monasterolo Di Savigliano","Monchiero","Mondov\u00ec","Monesiglio","Monforte D'alba","Mont\u00e0","Montaldo Di Mondov\u00ec","Montaldo Roero","Montanera","Montelupo Albese","Montemale Di Cuneo","Monterosso Grana","Monteu Roero","Montezemolo","Monticello D'alba","Moretta","Morozzo","Murazzano","Murello","Narzole","Neive","Neviglie","Niella Belbo","Niella Tanaro","Novello","Nucetto","Oncino","Ormea","Ostana","Paesana","Pagno","Pamparato","Paroldo","Perletto","Perlo","Peveragno","Pezzolo Valle Uzzone","Pianfei","Piasco","Pietraporzio","Piobesi D'alba","Piozzo","Pocapaglia","Polonghera","Pontechianale","Pradleves","Prazzo","Priero","Priocca","Priola","Prunetto","Racconigi","Revello","Rifreddo","Rittana","Roaschia","Roascio","Robilante","Roburent","Rocca Cigli\u00e9","Rocca D\u00e9 Baldi","Roccabruna","Roccaforte Mondov\u00ec","Roccasparvera","Roccavione","Rocchetta Belbo","Roddi","Roddino","Rodello","Rossana","Ruffia","Sale Delle Langhe","Sale San Giovanni","Saliceto","Salmour","Saluzzo","Sambuco","Sampeyre","San Benedetto Belbo","San Damiano Macra","San Michele Mondov\u00ec","Sanfr\u00e9","Sanfront","Sant'albano Stura","Santa Vittoria D'alba","Santo Stefano Belbo","Santo Stefano Roero","Savigliano","Scagnello","Scarnafigi","Serralunga D'alba","Serravalle Langhe","Sinio","Somano","Sommariva Del Bosco","Sommariva Perno","Stroppo","Tarantasca","Torre Bormida","Torre Mondov\u00ec","Torre San Giorgio","Torresina","Treiso","Trezzo Tinella","Trinit\u00e0","Valdieri","Valgrana","Valloriate","Valmala","Venasca","Verduno","Vernante","Verzuolo","Vezza D'alba","Vicoforte","Vignolo","Villafalletto","Villanova Mondov\u00ec","Villanova Solaro","Villar San Costanzo","Vinadio","Viola","Vottignasco"],"31":["Agira","Aidone","Assoro","Barrafranca","Calascibetta","Catenanuova","Centuripe","Cerami","Enna","Gagliano Castelferrato","Leonforte","Nicosia","Nissoria","Piazza Armerina","Pietraperzia","Regalbuto","Sperlinga","Troina","Valguarnera Caropepe","Villarosa"],"32":["Argenta","Berra","Bondeno","Cento","Codigoro","Comacchio","Copparo","Ferrara","Formignana","Goro","Jolanda Di Savoia","Lagosanto","Masi Torello","Massa Fiscaglia","Mesola","Migliarino","Migliaro","Mirabello","Ostellato","Poggio Renatico","Portomaggiore","Ro","Sant'agostino","Tresigallo","Vigarano Mainarda","Voghiera"],"33":["Bagno A Ripoli","Barberino Di Mugello","Barberino Val D'elsa","Borgo San Lorenzo","Calenzano","Campi Bisenzio","Capraia E Limite","Castelfiorentino","Cerreto Guidi","Certaldo","Dicomano","Empoli","Fiesole","Figline Valdarno","Firenze","Firenzuola","Fucecchio","Gambassi Terme","Greve In Chianti","Impruneta","Incisa Val D'arno","Lastra A Signa","Londa","Marradi","Montaione","Montelupo Fiorentino","Montespertoli","Palazzuolo Sul Senio","Pelago","Pontassieve","Reggello","Rignano Sull'arno","Rufina","San Casciano In Val Di Pe","San Godenzo","San Piero A Sieve","Scandicci","Scarperia","Sesto Fiorentino","Signa","Tavarnelle Val Di Pesa","Vaglia","Vicchio","Vinci"],"34":["Accadia","Alberona","Anzano Di Puglia","Apricena","Ascoli Satriano","Biccari","Bovino","Cagnano Varano","Candela","Carapelle","Carlantino","Carpino","Casalnuovo Monterotaro","Casalvecchio Di Puglia","Castelluccio D\u00e9 Sauri","Castelluccio Valmaggiore","Castelnuovo Della Daunia","Celenza Valfortore","Celle Di San Vito","Cerignola","Chieuti","Deliceto","Faeto","Foggia","Ischitella","Isole Tremiti","Lesina","Lucera","Manfredonia","Margherita Di Savoia","Mattinata","Monte Sant'angelo","Monteleone Di Puglia","Motta Montecorvino","Ordona","Orsara Di Puglia","Orta Nova","Panni","Peschici","Pietramontecorvino","Poggio Imperiale","Rignano Garganico","Rocchetta Sant'antonio","Rodi Garganico","Roseto Valfortore","San Ferdinando Di Puglia","San Giovanni Rotondo","San Marco In Lamis","San Marco La Catola","San Paolo Di Civitate","San Severo","Sannicandro Garganico","Sant'agata Di Puglia","Serracapriola","Stornara","Stornarella","Torremaggiore","Trinitapoli","Troia","Vico Del Gargano","Vieste","Volturara Appula","Volturino","Zapponeta"],"35":["Bagno Di Romagna","Bertinoro","Borghi","Castrocaro Terme E Terra","Cesena","Cesenatico","Civitella Di Romagna","Dovadola","Forl\u00ec","Forlimpopoli","Galeata","Gambettola","Gatteo","Longiano","Meldola","Mercato Saraceno","Modigliana","Montiano","Portico E San Benedetto","Predappio","Premilcuore","Rocca San Casciano","Roncofreddo","San Mauro Pascoli","Santa Sofia","Sarsina","Savignano Sul Rubicone","Sogliano Al Rubicone","Tredozio","Verghereto"],"36":["Acquafondata","Acuto","Alatri","Alvito","Amaseno","Anagni","Aquino","Arce","Arnara","Arpino","Atina","Ausonia","Belmonte Castello","Boville Ernica","Broccostella","Campoli Appennino","Casalattico","Casalvieri","Cassino","Castelliri","Castelnuovo Parano","Castro Dei Volsci","Castrocielo","Ceccano","Ceprano","Cervaro","Colfelice","Colle San Magno","Collepardo","Coreno Ausonio","Esperia","Falvaterra","Ferentino","Filettino","Fiuggi","Fontana Liri","Fontechiari","Frosinone","Fumone","Gallinaro","Giuliano Di Roma","Guarcino","Isola Del Liri","Monte San Giovanni Campano","Morolo","Paliano","Pastena","Patrica","Pescosolido","Picinisco","Pico","Piedimonte San Germano","Piglio","Pignataro Interamna","Pofi","Pontecorvo","Posta Fibreno","Ripi","Roccadarce","Roccasecca","San Biagio Saracinisco","San Donato Val Di Comino","San Giorgio A Liri","San Giovanni Incarico","San Vittore Del Lazio","Sant'ambrogio Sul Garigli","Sant'andrea Del Gariglian","Sant'apollinare","Sant'elia Fiumerapido","Santopadre","Serrone","Settefrati","Sgurgola","Sora","Strangolagalli","Supino","Terelle","Torre Cajetani","Torrice","Trevi Nel Lazio","Trivigliano","Vallecorsa","Vallemaio","Vallerotonda","Veroli","Vicalvi","Vico Nel Lazio","Villa Latina","Villa Santa Lucia","Villa Santo Stefano","Viticuso"],"37":["Arenzano","Avegno","Bargagli","Bogliasco","Borzonasca","Busalla","Camogli","Campo Ligure","Campomorone","Carasco","Casarza Ligure","Casella","Castiglione Chiavarese","Ceranesi","Chiavari","Cicagna","Cogoleto","Cogorno","Coreglia Ligure","Crocefieschi","Davagna","Fascia","Favale Di Malvaro","Fontanigorda","Genova","Gorreto","Isola Del Cantone","Lavagna","Leivi","Lorsica","Lumarzo","Masone","Mele","Mezzanego","Mignanego","Moconesi","Moneglia","Montebruno","Montoggio","Ne","Neirone","Orero","Pieve Ligure","Portofino","Propata","Rapallo","Recco","Rezzoaglio","Ronco Scrivia","Rondanina","Rossiglione","Rovegno","San Colombano Certenoli","Sant'olcese","Santa Margherita Ligure","Santo Stefano D'aveto","Savignone","Serra Ricc\u00f2","Sestri Levante","Sori","Tiglieto","Torriglia","Tribogna","Uscio","Valbrevenna","Vobbia","Zoagli"],"38":["Capriva Del Friuli","Cormons","Doberd\u00f2 Del Lago","Dolegna Del Collio","Farra D'isonzo","Fogliano Redipuglia","Gorizia","Gradisca D'isonzo","Grado","Mariano Del Friuli","Medea","Monfalcone","Moraro","Mossa","Romans D'isonzo","Ronchi Dei Legionari","Sagrado","San Canzian D'isonzo","San Floriano Del Collio","San Lorenzo Isontino","San Pier D'isonzo","Savogna D'isonzo","Staranzano","Turriaco","Villesse"],"39":["Arcidosso","Campagnatico","Capalbio","Castel Del Piano","Castell'azzara","Castiglione Della Pescaia","Cinigiano","Civitella Paganico","Follonica","Gavorrano","Grosseto","Isola Del Giglio","Magliano In Toscana","Manciano","Massa Marittima","Monte Argentario","Monterotondo Marittimo","Montieri","Orbetello","Pitigliano","Roccalbegna","Roccastrada","Santa Fiora","Scansano","Scarlino","Seggiano","Semproniano","Sorano"],"40":["Airole","Apricale","Aquila Di Arroscia","Armo","Aurigo","Badalucco","Baiardo","Bordighera","Borghetto D'arroscia","Borgomaro","Camporosso","Caravonica","Carpasio","Castel Vittorio","Castellaro","Ceriana","Cervo","Cesio","Chiusanico","Chiusavecchia","Cipressa","Civezza","Cosio D'arroscia","Costarainera","Diano Arentino","Diano Castello","Diano Marina","Diano San Pietro","Dolceacqua","Dolcedo","Imperia","Isolabona","Lucinasco","Mendatica","Molini Di Triora","Montalto Ligure","Montegrosso Pian Latte","Olivetta San Michele","Ospedaletti","Perinaldo","Pietrabruna","Pieve Di Teco","Pigna","Pompeiana","Pontedassio","Pornassio","Prel\u00e0","Ranzo","Rezzo","Riva Ligure","Rocchetta Nervina","San Bartolomeo Al Mare","San Biagio Della Cima","San Lorenzo Al Mare","San Remo","Santo Stefano Al Mare","Seborga","Soldano","Taggia","Terzorio","Triora","Vallebona","Vallecrosia","Vasia","Ventimiglia","Vessalico","Villa Faraldi"],"41":["Acquaviva D'isernia","Agnone","Bagnoli Del Trigno","Belmonte Del Sannio","Cantalupo Nel Sannio","Capracotta","Carovilli","Carpinone","Castel Del Giudice","Castel San Vincenzo","Castelpetroso","Castelpizzuto","Castelverrino","Cerro Al Volturno","Chiauci","Civitanova Del Sannio","Colli A Volturno","Conca Casale","Filignano","Forl\u00ec Del Sannio","Fornelli","Frosolone","Isernia","Longano","Macchia D'isernia","Macchiagodena","Miranda","Montaquila","Montenero Val Cocchiara","Monteroduni","Pesche","Pescolanciano","Pescopennataro","Pettoranello Del Molise","Pietrabbondante","Pizzone","Poggio Sannita","Pozzilli","Rionero Sannitico","Roccamandolfi","Roccasicura","Rocchetta A Volturno","San Pietro Avellana","Sant'agapito","Sant'angelo Del Pesco","Sant'elena Sannita","Santa Maria Del Molise","Scapoli","Sessano Del Molise","Sesto Campano","Vastogirardi","Venafro"],"43":["Ameglia","Arcola","Beverino","Bolano","Bonassola","Borghetto Di Vara","Brugnato","Calice Al Cornoviglio","Carro","Carrodano","Castelnuovo Magra","Deiva Marina","Follo","Framura","La Spezia","Lerici","Levanto","Maissana","Monterosso Al Mare","Ortonovo","Pignone","Portovenere","Ricc\u00f2 Del Golfo Di Spezi","Riomaggiore","Rocchetta Di Vara","Santo Stefano Di Magra","Sarzana","Sesta Godano","Varese Ligure","Vernazza","Vezzano Ligure","Zignago"],"44":["Aprilia","Bassiano","Campodimele","Castelforte","Cisterna Di Latina","Cori","Fondi","Formia","Gaeta","Itri","Latina","Lenola","Maenza","Minturno","Monte San Biagio","Norma","Pontinia","Ponza","Priverno","Prossedi","Rocca Massima","Roccagorga","Roccasecca Dei Volsci","Sabaudia","San Felice Circeo","Santi Cosma E Damiano","Sermoneta","Sezze","Sonnino","Sperlonga","Spigno Saturnia","Terracina","Ventotene"],"45":["Acquarica Del Capo","Alessano","Alezio","Alliste","Andrano","Aradeo","Arnesano","Bagnolo Del Salento","Botrugno","Calimera","Campi Salentina","Cannole","Caprarica Di Lecce","Carmiano","Carpignano Salentino","Casarano","Castri Di Lecce","Castrignano D\u00e9 Greci","Castrignano Del Capo","Castro","Cavallino","Collepasso","Copertino","Corigliano D'otranto","Corsano","Cursi","Cutrofiano","Diso","Gagliano Del Capo","Galatina","Galatone","Gallipoli","Giuggianello","Giurdignano","Guagnano","Lecce","Lequile","Leverano","Lizzanello","Maglie","Martano","Martignano","Matino","Melendugno","Melissano","Melpignano","Miggiano","Minervino Di Lecce","Monteroni Di Lecce","Montesano Salentino","Morciano Di Leuca","Muro Leccese","Nard\u00f2","Neviano","Nociglia","Novoli","Ortelle","Otranto","Palmariggi","Parabita","Pat\u00f9","Poggiardo","Porto Cesareo","Presicce","Racale","Ruffano","Salice Salentino","Salve","San Cassiano","San Cesario Di Lecce","San Donato Di Lecce","San Pietro In Lama","Sanarica","Sannicola","Santa Cesarea Terme","Scorrano","Secl\u00ec","Sogliano Cavour","Soleto","Specchia","Spongano","Squinzano","Sternatia","Supersano","Surano","Surbo","Taurisano","Taviano","Tiggiano","Trepuzzi","Tricase","Tuglie","Ugento","Uggiano La Chiesa","Veglie","Vernole","Zollino"],"46":["Abbadia Lariana","Airuno","Annone Di Brianza","Ballabio","Barzago","Barzan\u00f2","Barzio","Bellano","Bosisio Parini","Brivio","Bulciago","Calco","Calolziocorte","Carenno","Casargo","Casatenovo","Cassago Brianza","Cassina Valsassina","Castello Di Brianza","Cernusco Lombardone","Cesana Brianza","Civate","Colico","Colle Brianza","Cortenova","Costa Masnaga","Crandola Valsassina","Cremella","Cremeno","Dervio","Dolzago","Dorio","Ello","Erve","Esino Lario","Galbiate","Garbagnate Monastero","Garlate","Imbersago","Introbio","Introzzo","Lecco","Lierna","Lomagna","Malgrate","Mandello Del Lario","Margno","Merate","Missaglia","Moggio","Molteno","Monte Marenzo","Montevecchia","Monticello Brianza","Morterone","Nibionno","Oggiono","Olgiate Molgora","Olginate","Oliveto Lario","Osnago","Paderno D'adda","Pagnona","Parlasco","Pasturo","Perego","Perledo","Pescate","Premana","Primaluna","Robbiate","Rogeno","Rovagnate","Santa Maria Ho\u00e9","Sirone","Sirtori","Sueglio","Suello","Taceno","Torre D\u00e9busi","Tremenico","Valgreghentino","Valmadrera","Varenna","Vendrogno","Vercurago","Verderio Inferiore","Verderio Superiore","Vestreno","Vigan\u00f2"],"47":["Bibbona","Campiglia Marittima","Campo Nell'elba","Capoliveri","Capraia Isola","Castagneto Carducci","Cecina","Collesalvetti","Livorno","Marciana","Marciana Marina","Piombino","Porto Azzurro","Portoferraio","Rio Marina","Rio Nell'elba","Rosignano Marittimo","San Vincenzo","Sassetta","Suvereto"],"48":["Abbadia Cerreto","Bertonico","Boffalora D'adda","Borghetto Lodigiano","Borgo San Giovanni","Brembio","Camairago","Casaletto Lodigiano","Casalmaiocco","Casalpusterlengo","Caselle Landi","Caselle Lurani","Castelnuovo Bocca D'adda","Castiglione D'adda","Castiraga Vidardo","Cavacurta","Cavenago D'adda","Cervignano D'adda","Codogno","Comazzo","Cornegliano Laudense","Corno Giovine","Cornovecchio","Corte Palasio","Crespiatica","Fombio","Galgagnano","Graffignana","Guardamiglio","Livraga","Lodi","Lodi Vecchio","Maccastorna","Mairago","Maleo","Marudo","Massalengo","Meleti","Merlino","Montanaso Lombardo","Mulazzano","Orio Litta","Ospedaletto Lodigiano","Ossago Lodigiano","Pieve Fissiraga","Salerano Sul Lambro","San Fiorano","San Martino In Strada","San Rocco Al Porto","Sant'angelo Lodigiano","Santo Stefano Lodigiano","Secugnago","Senna Lodigiana","Somaglia","Sordio","Tavazzano Con Villavesco","Terranova Dei Passerini","Turano Lodigiano","Valera Fratta","Villanova Del Sillaro","Zelo Buon Persico"],"49":["Altopascio","Bagni Di Lucca","Barga","Borgo A Mozzano","Camaiore","Camporgiano","Capannori","Careggine","Castelnuovo Di Garfagnana","Castiglione Di Garfagnana","Coreglia Antelminelli","Fabbriche Di Vallico","Forte Dei Marmi","Fosciandora","Gallicano","Giuncugnano","Lucca","Massarosa","Minucciano","Molazzana","Montecarlo","Pescaglia","Piazza Al Serchio","Pietrasanta","Pieve Fosciana","Porcari","San Romano In Garfagnana","Seravezza","Sillano","Stazzema","Vagli Sotto","Vergemoli","Viareggio","Villa Basilica","Villa Collemandina"],"42":["Acciano","Aielli","Alfedena","Anversa Degli Abruzzi","Ateleta","Avezzano","Balsorano","Barete","Barisciano","Barrea","Bisegna","Bugnara","Cagnano Amiterno","Calascio","Campo Di Giove","Campotosto","Canistro","Cansano","Capestrano","Capistrello","Capitignano","Caporciano","Cappadocia","Carapelle Calvisio","Carsoli","Castel Del Monte","Castel Di Ieri","Castel Di Sangro","Castellafiume","Castelvecchio Calvisio","Castelvecchio Subequo","Celano","Cerchio","Civita D'antino","Civitella Alfedena","Civitella Roveto","Cocullo","Collarmele","Collelongo","Collepietro","Corfinio","Fagnano Alto","Fontecchio","Fossa","Gagliano Aterno","Gioia Dei Marsi","Goriano Sicoli","Introdacqua","L'aquila","Lecce Nei Marsi","Luco Dei Marsi","Lucoli","Magliano D\u00e9 Marsi","Massa D'albe","Molina Aterno","Montereale","Morino","Navelli","Ocre","Ofena","Opi","Oricola","Ortona Nei Marsi","Ortucchio","Ovindoli","Pacentro","Pereto","Pescasseroli","Pescina","Pescocostanzo","Pettorano Sul Gizio","Pizzoli","Poggio Picenze","Prata D'ansidonia","Pratola Peligna","Prezza","Raiano","Rivisondoli","Rocca Di Botte","Rocca Di Cambio","Rocca Di Mezzo","Rocca Pia","Roccacasale","Roccaraso","San Benedetto Dei Marsi","San Benedetto In Perillis","San Demetrio N\u00e9 Vestini","San Pio Delle Camere","San Vincenzo Valle Roveto","Sant'eusanio Forconese","Sante Marie","Santo Stefano Di Sessanio","Sassa Scalo","Scanno","Scontrone","Scoppito","Scurcola Marsicana","Secinaro","Sulmona","Tagliacozzo","Tione Degli Abruzzi","Tornimparte","Trasacco","Villa Sant'angelo","Villa Santa Lucia Degli A","Villalago","Villavallelonga","Villetta Barrea","Vittorito"],"50":["Acquacanina","Apiro","Appignano","Belforte Del Chienti","Bolognola","Caldarola","Camerino","Camporotondo Di Fiastrone","Castelraimondo","Castelsantangelo Sul Nera","Cessapalombo","Cingoli","Civitanova Marche","Colmurano","Corridonia","Esanatoglia","Fiastra","Fiordimonte","Fiuminata","Gagliole","Gualdo","Loro Piceno","Macerata","Matelica","Mogliano","Monte Cavallo","Monte San Giusto","Monte San Martino","Montecassiano","Montecosaro","Montefano","Montelupone","Morrovalle","Muccia","Penna San Giovanni","Petriolo","Pieve Torina","Pievebovigliana","Pioraco","Poggio San Vicino","Pollenza","Porto Recanati","Potenza Picena","Recanati","Ripe San Ginesio","San Ginesio","San Severino Marche","Sant'angelo In Pontano","Sarnano","Sefro","Serrapetrona","Serravalle Di Chienti","Tolentino","Treia","Urbisaglia","Ussita","Visso"],"51":["Acquanegra Sul Chiese","Asola","Bagnolo San Vito","Bigarello","Borgoforte","Borgofranco Sul Po","Bozzolo","Canneto Sull'oglio","Carbonara Di Po","Casalmoro","Casaloldo","Casalromano","Castel D'ario","Castel Goffredo","Castelbelforte","Castellucchio","Castiglione Delle Stivier","Cavriana","Ceresara","Commessaggio","Curtatone","Dosolo","Felonica","Gazoldo Degli Ippoliti","Gazzuolo","Goito","Gonzaga","Guidizzolo","Magnacavallo","Mantova","Marcaria","Mariana Mantovana","Marmirolo","Medole","Moglia","Monzambano","Motteggiana","Ostiglia","Pegognaga","Pieve Di Coriano","Piubega","Poggio Rusco","Pomponesco","Ponti Sul Mincio","Porto Mantovano","Quingentole","Quistello","Redondesco","Revere","Rivarolo Mantovano","Rodigo","Roncoferraro","Roverbella","Sabbioneta","San Benedetto Po","San Giacomo Delle Segnate","San Giorgio Di Mantova","San Giovanni Del Dosso","San Martino Dall'argine","Schivenoglia","Sermide","Serravalle A Po","Solferino","Sustinente","Suzzara","Viadana","Villa Poma","Villimpenta","Virgilio","Volta Mantovana"],"52":["Aulla","Bagnone","Carrara","Casola In Lunigiana","Comano","Filattiera","Fivizzano","Fosdinovo","Licciana Nardi","Massa","Montignoso","Mulazzo","Podenzana","Pontremoli","Tresana","Villafranca In Lunigiana","Zeri"],"53":["Accettura","Aliano","Bernalda","Calciano","Cirigliano","Colobraro","Craco","Ferrandina","Garaguso","Gorgoglione","Grassano","Grottole","Irsina","Matera","Miglionico","Montalbano Ionico","Montescaglioso","Nova Siri","Oliveto Lucano","Pisticci","Policoro","Pomarico","Rotondella","Salandra","San Giorgio Lucano","San Mauro Forte","Scanzano Ionico","Stigliano","Tricarico","Tursi","Valsinni"],"54":["Arbus","Barumini","Collinas","Furtei","Genuri","Gesturi","Gonnosfanadiga","Guspini","Las Plassas","Lunamatrona","Pabillonis","Pauli Arbarei","Samassi","San Gavino Monreale","Sanluri","Sardara","Segariu","Serramanna","Serrenti","Setzu","Tuili","Turri","Ussaramanna","Villacidro","Villamar","Villanovaforru","Villanovafranca"],"55":["Acquedolci","Alcara Li Fusi","Al\u00ec","Al\u00ec Terme","Antillo","Barcellona Pozzo Di Gotto","Basic\u00f2","Brolo","Capizzi","Capo D'orlando","Capri Leone","Caronia","Casalvecchio Siculo","Castel Di Lucio","Castell'umberto","Castelmola","Castroreale","Cesar\u00f2","Condr\u00f2","Falcone","Ficarra","Fiumedinisi","Floresta","Fondachelli Fantina","Forza D'agr\u00f2","Francavilla Di Sicilia","Frazzan\u00f2","Furci Siculo","Furnari","Gaggi","Galati Mamertino","Gallodoro","Giardini Naxos","Gioiosa Marea","Graniti","Gualtieri Sicamin\u00f2","Itala","Leni","Letojanni","Librizzi","Limina","Lipari","Longi","Malfa","Malvagna","Mandanici","Mazzarr\u00e0 Sant'andrea","Mer\u00ec","Messina","Milazzo","Militello Rosmarino","Mirto","Mistretta","Moio Alcantara","Monforte San Giorgio","Mongiuffi Melia","Montagnareale","Montalbano Elicona","Motta Camastra","Motta D'affermo","Naso","Nizza Di Sicilia","Novara Di Sicilia","Oliveri","Pace Del Mela","Pagliara","Patti","Pettineo","Piraino","Raccuja","Reitano","Roccafiorita","Roccalumera","Roccavaldina","Roccella Valdemone","Rod\u00ec Milici","Rometta","San Filippo Del Mela","San Fratello","San Marco D'alunzio","San Pier Niceto","San Piero Patti","San Salvatore Di Fitalia","Sant'agata Di Militello","Sant'alessio Siculo","Sant'angelo Di Brolo","Santa Domenica Vittoria","Santa Lucia Del Mela","Santa Marina Salina","Santa Teresa Di Riva","Santo Stefano Di Camastra","Saponara","Savoca","Scaletta Zanclea","Sinagra","Spadafora","Taormina","Terme Vigliatore","Torregrotta","Torrenova","Tortorici","Tripi","Tusa","Ucria","Valdina","Venetico","Villafranca Tirrena"],"56":["Abbiategrasso","Agrate Brianza","Aicurzio","Albairate","Albiate","Arconate","Arcore","Arese","Arluno","Assago","Baranzate","Bareggio","Barlassina","Basiano","Basiglio","Bellinzago Lombardo","Bellusco","Bernareggio","Bernate Ticino","Besana In Brianza","Besate","Biassono","Binasco","Boffalora Sopra Ticino","Bollate","Bovisio Masciago","Bresso","Briosco","Brugherio","Bubbiano","Buccinasco","Burago Di Molgora","Buscate","Busnago","Bussero","Busto Garolfo","Calvignasco","Cambiago","Camparada","Canegrate","Caponago","Carate Brianza","Carnate","Carpiano","Carugate","Casarile","Casorezzo","Cassano D'adda","Cassina D\u00e9 Pecchi","Cassinetta Di Lugagnano","Castano Primo","Cavenago Di Brianza","Ceriano Laghetto","Cernusco Sul Naviglio","Cerro Al Lambro","Cerro Maggiore","Cesano Boscone","Cesano Maderno","Cesate","Cinisello Balsamo","Cisliano","Cogliate","Cologno Monzese","Colturano","Concorezzo","Corbetta","Cormano","Cornaredo","Cornate D'adda","Correzzana","Corsico","Cuggiono","Cusago","Cusano Milanino","Dairago","Desio","Dresano","Gaggiano","Garbagnate Milanese","Gessate","Giussano","Gorgonzola","Grezzago","Gudo Visconti","Inveruno","Inzago","Lacchiarella","Lainate","Lazzate","Legnano","Lentate Sul Seveso","Lesmo","Limbiate","Liscate","Lissone","Locate Di Triulzi","Macherio","Magenta","Magnago","Marcallo Con Casone","Masate","Meda","Mediglia","Melegnano","Melzo","Mesero","Mezzago","Milano","Misinto","Monza","Morimondo","Motta Visconti","Muggi\u00f2","Nerviano","Nosate","Nova Milanese","Novate Milanese","Noviglio","Opera","Ornago","Ossona","Ozzero","Paderno Dugnano","Pantigliate","Parabiago","Paullo","Pero","Peschiera Borromeo","Pessano Con Bornago","Pieve Emanuele","Pioltello","Pogliano Milanese","Pozzo D'adda","Pozzuolo Martesana","Pregnana Milanese","Renate","Rescaldina","Rho","Robecchetto Con Induno","Robecco Sul Naviglio","Rodano","Roncello","Ronco Briantino","Rosate","Rozzano","San Colombano Al Lambro","San Donato Milanese","San Giorgio Su Legnano","San Giuliano Milanese","San Vittore Olona","San Zenone Al Lambro","Santo Stefano Ticino","Sedriano","Segrate","Senago","Seregno","Sesto San Giovanni","Settala","Settimo Milanese","Seveso","Solaro","Sovico","Sulbiate","Trezzano Rosa","Trezzano Sul Naviglio","Trezzo Sull'adda","Tribiano","Triuggio","Truccazzano","Turbigo","Usmate Velate","Vanzaghello","Vanzago","Vaprio D'adda","Varedo","Vedano Al Lambro","Veduggio Con Colzano","Verano Brianza","Vermezzo","Vernate","Vignate","Villa Cortese","Villasanta","Vimercate","Vimodrone","Vittuone","Vizzolo Predabissi","Zelo Surrigone","Zibido San Giacomo"],"57":["Bastiglia","Bomporto","Campogalliano","Camposanto","Carpi","Castelfranco Emilia","Castelnuovo Rangone","Castelvetro Di Modena","Cavezzo","Concordia Sulla Secchia","Fanano","Finale Emilia","Fiorano Modenese","Fiumalbo","Formigine","Frassinoro","Guiglia","Lama Mocogno","Maranello","Marano Sul Panaro","Medolla","Mirandola","Modena","Montecreto","Montefiorino","Montese","Nonantola","Novi Di Modena","Palagano","Pavullo Nel Frignano","Pievepelago","Polinago","Prignano Sulla Secchia","Ravarino","Riolunato","Saltino Di Prignano","San Cesario Sul Panaro","San Felice Sul Panaro","San Possidonio","San Prospero","Sassuolo","Savignano Sul Panaro","Serramazzoni","Sestola","Soliera","Spilamberto","Vignola","Zocca"],"58":["Acerra","Afragola","Agerola","Anacapri","Arzano","Bacoli","Barano D'ischia","Boscoreale","Boscotrecase","Brusciano","Caivano","Calvizzano","Camposano","Capri","Carbonara Di Nola","Cardito","Casalnuovo Di Napoli","Casamarciano","Casamicciola Terme","Casandrino","Casavatore","Casola Di Napoli","Casoria","Castellammare Di Stabia","Castello Di Cisterna","Cercola","Cicciano","Cimitile","Comiziano","Crispano","Ercolano","Forio","Frattamaggiore","Frattaminore","Giugliano In Campania","Gragnano","Grumo Nevano","Ischia","Lacco Ameno","Lettere","Liveri","Marano Di Napoli","Mariglianella","Marigliano","Massa Di Somma","Massa Lubrense","Melito Di Napoli","Meta","Monte Di Procida","Mugnano Di Napoli","Napoli","Nola","Ottaviano","Palma Campania","Piano Di Sorrento","Pimonte","Poggiomarino","Pollena Trocchia","Pomigliano D'arco","Pompei","Portici","Pozzuoli","Procida","Qualiano","Quarto","Roccarainola","San Gennaro Vesuviano","San Giorgio A Cremano","San Giuseppe Vesuviano","San Paolo Bel Sito","San Sebastiano Al Vesuvio","San Vitaliano","Sant'agnello","Sant'anastasia","Sant'antimo","Sant'antonio Abate","Santa Maria La Carit\u00e0","Saviano","Scisciano","Serrara Fontana","Somma Vesuviana","Sorrento","Striano","Terzigno","Torre Annunziata","Torre Del Greco","Trecase","Tufino","Vico Equense","Villaricca","Visciano","Volla"],"59":[],"60":["Agrate Conturbia","Ameno","Armeno","Arona","Barengo","Bellinzago Novarese","Biandrate","Boca","Bogogno","Bolzano Novarese","Borgo Ticino","Borgolavezzaro","Borgomanero","Briga Novarese","Briona","Caltignaga","Cameri","Carpignano Sesia","Casalbeltrame","Casaleggio Novara","Casalino","Casalvolone","Castellazzo Novarese","Castelletto Ticino","Cavaglietto","Cavaglio D'agogna","Cavallirio","Cerano","Colazza","Comignago","Cressa","Cureggio","Divignano","Dormelletto","Fara Novarese","Fontaneto D'agogna","Galliate","Garbagna Novarese","Gargallo","Gattico","Ghemme","Gozzano","Granozzo Con Monticello","Grignasco","Invorio","Landiona","Lesa","Maggiora","Mandello Vitta","Marano Ticino","Massino Visconti","Meina","Mezzomerico","Miasino","Momo","Nebbiuno","Nibbiola","Novara","Oleggio","Oleggio Castello","Orta San Giulio","Paruzzaro","Pella","Pettenasco","Pisano","Pogno","Pombia","Prato Sesia","Recetto","Romagnano Sesia","Romentino","San Maurizio D'opaglio","San Nazzaro Sesia","San Pietro Mosezzo","Sillavengo","Sizzano","Soriso","Sozzago","Suno","Terdobbiate","Tornaco","Trecate","Vaprio D'agogna","Varallo Pombia","Veruno","Vespolate","Vicolungo","Vinzaglio"],"61":["Aritzo","Atzara","Austis","Belvi","Birori","Bitti","Bolotana","Borore","Bortigali","Bosa","Desulo","Dorgali","Dualchi","Escalaplano","Escolca","Esterzili","Flussio","Fonni","Gadoni","Galtelli","Gavoi","Genoni","Gergei","Irgoli","Isili","Laconi","Lei","Loculi","Lod\u00e9","Lodine","Lula","Macomer","Magomadas","Mamoiada","Meana Sardo","Modolo","Montresta","Noragugume","Nuoro","Nuragus","Nurallao","Nurri","Oliena","Ollolai","Olzai","Onani","Onifai","Oniferi","Orani","Orgosolo","Orosei","Orotelli","Orroli","Ortueri","Orune","Osidda","Ottana","Ovodda","Posada","Sadali","Sagama","Sarule","Serri","Seulo","Silanus","Sindia","Siniscola","Sorgono","Suni","Teti","Tiana","Tinnura","Tonara","Torp\u00e9","Villanova Tulo"],"62":["Arzana","Bari Sardo","Baunei","Cardedu","Elini","Gairo","Girasole","Ilbono","Jerzu","Lanusei","Loceri","Lotzorai","Osini","Perdasdefogu","Seui","Talana","Tertenia","Tortol\u00ec","Triei","Ulassai","Urzulei","Ussassai","Villagrande Strisaili"],"63":["Aggius","Aglientu","Al\u00e0 Dei Sardi","Arzachena","Badesi","Berchidda","Bortigiadas","Buddus\u00f2","Budoni","Calangianus","Golfo Aranci","La Maddalena","Loiri Porto San Paolo","Luogosanto","Luras","Monti","Olbia","Oschiri","Padru","Palau","San Teodoro","Sant'antonio Di Gallura","Santa Teresa Gallura","Telti","Tempio Pausania","Trinit\u00e0 D'agultu E Vignola"],"64":["Abbasanta","Aidomaggiore","Albagiara","Ales","Allai","Arborea","Ardauli","Assolo","Asuni","Baradili","Baratili San Pietro","Baressa","Bauladu","Bidon\u00ec","Bonarcado","Boroneddu","Busachi","Cabras","Cuglieri","Curcuris","Fordongianus","Ghilarza","Gonnoscodina","Gonnosn\u00f2","Gonnostramatza","Marrubiu","Masullas","Milis","Mogorella","Mogoro","Morgongiori","Narbolia","Neoneli","Norbello","Nughedu Santa Vittoria","Nurachi","Nureci","Ollastra","Oristano","Palmas Arborea","Pau","Paulilatino","Pompu","Riola Sardo","Ruinas","Samugheo","San Nicol\u00f2 D'arcidano","San Vero Milis","Sant'antonio Ruinas","Santa Giusta","Santu Lussurgiu","Scano Di Montiferro","Sedilo","Seneghe","Senis","Sennariolo","Siamaggiore","Siamanna","Siapiccia","Simala","Simaxis","Sini","Siris","Sodd\u00ec","Solarussa","Sorradile","Tadasuni","Terralba","Tramatza","Tresnuraghes","Ul\u00e0 Tirso","Uras","Usellus","Villa Verde","Villanova Truschedu","Villaurbana","Zeddiani","Zerfaliu"],"65":["Abano Terme","Agna","Albignasego","Anguillara Veneta","Arqu\u00e0 Petrarca","Arre","Arzergrande","Bagnoli Di Sopra","Baone","Barbona","Battaglia Terme","Boara Pisani","Borgoricco","Bovolenta","Brugine","Cadoneghe","Campo San Martino","Campodarsego","Campodoro","Camposampiero","Candiana","Carceri","Carmignano Di Brenta","Carrara San Giorgio","Carrara Santo Stefano","Cartura","Casale Di Scodosia","Casalserugo","Castelbaldo","Cervarese Santa Croce","Cinto Euganeo","Cittadella","Codevigo","Conselve","Correzzola","Curtarolo","Due Carrare","Este","Fontaniva","Galliera Veneta","Galzignano Terme","Gazzo Padovano","Grantorto","Granze","Legnaro","Limena","Loreggia","Lozzo Atestino","Maser\u00e0 Di Padova","Masi","Massanzago","Megliadino San Fidenzio","Megliadino San Vitale","Merlara","Mestrino","Monselice","Montagnana","Montegrotto Terme","Noventa Padovana","Ospedaletto Euganeo","Padova","Pernumia","Piacenza D'adige","Piazzola Sul Brenta","Piombino Dese","Piove Di Sacco","Polverara","Ponso","Ponte San Nicol\u00f2","Pontelongo","Pozzonovo","Rovolon","Rubano","Saccolongo","Saletto","San Giorgio Delle Pertiche","San Giorgio In Bosco","San Martino Di Lupari","San Pietro In Gu","San Pietro Viminario","Sant'angelo Di Piove Di S","Sant'elena","Sant'urbano","Santa Giustina In Colle","Santa Margherita D'adige","Saonara","Selvazzano Dentro","Solesino","Stanghella","Teolo","Terrassa Padovana","Tombolo","Torreglia","Trebaseleghe","Tribano","Urbana","Veggiano","Vescovana","Vighizzolo D'este","Vigodarzere","Vigonza","Villa Del Conte","Villa Estense","Villafranca Padovana","Villanova Di Camposampier","Vo"],"66":["Alia","Alimena","Aliminusa","Altavilla Milicia","Altofonte","Bagheria","Balestrate","Baucina","Belmonte Mezzagno","Bisacquino","Blufi","Bolognetta","Bompietro","Borgetto","Caccamo","Caltavuturo","Campofelice Di Fitalia","Campofelice Di Roccella","Campofiorito","Camporeale","Capaci","Carini","Castelbuono","Casteldaccia","Castellana Sicula","Castronuovo Di Sicilia","Cefal\u00e0 Diana","Cefal\u00f9","Cerda","Chiusa Sclafani","Ciminna","Cinisi","Collesano","Contessa Entellina","Corleone","Ficarazzi","Gangi","Geraci Siculo","Giardinello","Giuliana","Godrano","Gratteri","Isnello","Isola Delle Femmine","Lascari","Lercara Friddi","Marineo","Mezzojuso","Misilmeri","Monreale","Montelepre","Montemaggiore Belsito","Palazzo Adriano","Palermo","Partinico","Petralia Soprana","Petralia Sottana","Piana Degli Albanesi","Polizzi Generosa","Pollina","Prizzi","Roccamena","Roccapalumba","San Cipirello","San Giuseppe Iato","San Mauro Castelverde","Santa Cristina Gela","Santa Flavia","Sciara","Scillato","Sclafani Bagni","Termini Imerese","Terrasini","Torretta","Trabia","Trappeto","Ustica","Valledolmo","Ventimiglia Di Sicilia","Vicari","Villabate","Villafrati"],"67":["Albareto","Bardi","Bedonia","Berceto","Bore","Borgo Val Di Taro","Busseto","Calestano","Collecchio","Colorno","Compiano","Corniglio","Felino","Fidenza","Fontanellato","Fontevivo","Fornovo Di Taro","Langhirano","Lesignano D\u00e9 Bagni","Medesano","Mezzani","Monchio Delle Corti","Montechiarugolo","Neviano Degli Arduini","Noceto","Palanzano","Parma","Pellegrino Parmense","Polesine Parmense","Roccabianca","Sala Baganza","Salsomaggiore Terme","San Secondo Parmense","Sissa","Solignano","Soragna","Sorbolo","Terenzo","Tizzano Val Parma","Tornolo","Torrile","Traversetolo","Trecasali","Valmozzola","Varano D\u00e9melegari","Varsi","Zibello"],"68":["Alagna","Albaredo Arnaboldi","Albonese","Albuzzano","Arena Po","Badia Pavese","Bagnaria","Barbianello","Bascap\u00e9","Bastida D\u00e9 Dossi","Bastida Pancarana","Battuda","Belgioioso","Bereguardo","Borgarello","Borgo Priolo","Borgo San Siro","Borgoratto Mormorolo","Bornasco","Bosnasco","Brallo Di Pregola","Breme","Bressana Bottarone","Broni","Calvignano","Campospinoso","Candia Lomellina","Canevino","Canneto Pavese","Carbonara Al Ticino","Casanova Lonati","Casatisma","Casei Gerola","Casorate Primo","Cassolnovo","Castana","Casteggio","Castelletto Di Branduzzo","Castello D'agogna","Castelnovetto","Cava Manara","Cecima","Ceranova","Ceretto Lomellina","Cergnago","Certosa Di Pavia","Cervesina","Chignolo Po","Cigognola","Cilavegna","Codevilla","Confienza","Copiano","Corana","Cornale","Corteolona","Corvino San Quirico","Costa D\u00e9nobili","Cozzo","Cura Carpignano","Dorno","Ferrera Erbognone","Filighera","Fortunago","Frascarolo","Galliavola","Gambarana","Gambol\u00f2","Garlasco","Genzone","Gerenzago","Giussago","Godiasco","Golferenzo","Gravellona Lomellina","Gropello Cairoli","Inverno E Monteleone","Landriano","Langosco","Lardirago","Linarolo","Lirio","Lomello","Lungavilla","Magherno","Marcignago","Marzano","Mede","Menconico","Mezzana Bigli","Mezzana Rabattone","Mezzanino","Miradolo Terme","Montalto Pavese","Montebello Della Battagli","Montecalvo Versiggia","Montescano","Montesegale","Monticelli Pavese","Mont\u00f9 Beccaria","Mornico Losana","Mortara","Nicorvo","Olevano Di Lomellina","Oliva Gessi","Ottobiano","Palestro","Pancarana","Parona","Pavia","Pietra D\u00e9 Giorgi","Pieve Albignola","Pieve Del Cairo","Pieve Porto Morone","Pinarolo Po","Pizzale","Ponte Nizza","Portalbera","Rea","Redavalle","Retorbido","Rivanazzano","Robbio","Robecco Pavese","Rocca D\u00e9 Giorgi","Rocca Susella","Rognano","Romagnese","Roncaro","Rosasco","Rovescala","Ruino","San Cipriano Po","San Damiano Al Colle","San Genesio Ed Uniti","San Giorgio Di Lomellina","San Martino Siccomario","San Zenone Al Po","Sannazzaro D\u00e9burgondi","Sant'alessio Con Vialone","Sant'angelo Lomellina","Santa Cristina E Bissone","Santa Giuletta","Santa Margherita Di Staff","Santa Maria Della Versa","Sartirana Lomellina","Scaldasole","Semiana","Silvano Pietra","Siziano","Sommo","Spessa","Stradella","Suardi","Torrazza Coste","Torre Beretti E Castellar","Torre D'arese","Torre D'isola","Torre D\u00e9 Negri","Torrevecchia Pia","Torricella Verzate","Travac\u00f2 Siccomario","Trivolzio","Tromello","Trovo","Val Di Nizza","Valeggio","Valle Lomellina","Valle Salimbene","Valverde","Varzi","Velezzo Lomellina","Vellezzo Bellini","Verretto","Verrua Po","Vidigulfo","Vigevano","Villa Biscossi","Villanova D'ardenghi","Villanterio","Vistarino","Voghera","Volpara","Zavattarello","Zeccone","Zeme","Zenevredo","Zerbo","Zerbol\u00f2","Zinasco"],"69":["Assisi","Bastia Umbra","Bettona","Bevagna","Campello Sul Clitunno","Cannara","Cascia","Castel Ritaldi","Castiglione Del Lago","Cerreto Di Spoleto","Citerna","Citt\u00e0 Della Pieve","Citt\u00e0 Di Castello","Collazzone","Corciano","Costacciaro","Deruta","Foligno","Fossato Di Vico","Fratta Todina","Giano Dell'umbria","Gualdo Cattaneo","Gualdo Tadino","Gubbio","Lisciano Niccone","Magione","Marsciano","Massa Martana","Monte Castello Di Vibio","Monte Santa Maria Tiberin","Montefalco","Monteleone Di Spoleto","Montone","Nocera Umbra","Norcia","Paciano","Panicale","Passignano Sul Trasimeno","Perugia","Piegaro","Pietralunga","Poggiodomo","Preci","San Giustino","Sant'anatolia Di Narco","Scheggia E Pascelupo","Scheggino","Sellano","Sigillo","Spello","Spoleto","Todi","Torgiano","Trevi","Tuoro Sul Trasimeno","Umbertide","Valfabbrica","Vallo Di Nera","Valtopina"],"70":["Acqualagna","Apecchio","Auditore","Barchi","Belforte All'isauro","Borgo Pace","Cagli","Cantiano","Carpegna","Cartoceto","Casteldelci","Colbordolo","Fano","Fermignano","Fossombrone","Fratte Rosa","Frontino","Frontone","Gabicce Mare","Gradara","Isola Del Piano","Lunano","Macerata Feltria","Maiolo","Mercatello Sul Metauro","Mercatino Conca","Mombaroccio","Mondavio","Mondolfo","Monte Cerignone","Monte Porzio","Montecalvo In Foglia","Monteciccardo","Montecopiolo","Montefelcino","Montegrimano","Montelabbate","Montemaggiore Al Metauro","Novafeltria","Orciano Di Pesaro","Peglio","Pennabilli","Pergola","Pesaro","Petriano","Piagge","Piandimeleto","Pietrarubbia","Piobbico","Saltara","San Costanzo","San Giorgio Di Pesaro","San Leo","San Lorenzo In Campo","Sant'agata Feltria","Sant'angelo In Lizzola","Sant'angelo In Vado","Sant'ippolito","Sassocorvaro","Sassofeltrio","Serra Sant'abbondio","Serrungarina","Talamello","Tavoleto","Tavullia","Urbania","Urbino"],"71":["Abbateggio","Alanno","Bolognano","Brittoli","Bussi Sul Tirino","Cappelle Sul Tavo","Caramanico Terme","Carpineto Della Nora","Castiglione A Casauria","Catignano","Cepagatti","Citt\u00e0 Sant'angelo","Civitaquana","Civitella Casanova","Collecorvino","Corvara","Cugnoli","Elice","Farindola","Lettomanoppello","Loreto Aprutino","Manoppello","Montebello Di Bertona","Montesilvano","Moscufo","Nocciano","Penne","Pescara","Pescosansonesco","Pianella","Picciano","Pietranico","Popoli","Roccamorice","Rosciano","Salle","San Valentino In Abruzzo","Sant'eufemia A Maiella","Scafa","Serramonacesca","Spoltore","Tocco Da Casauria","Torre D\u00e9 Passeri","Turrivalignani","Vicoli","Villa Celiera"],"72":["Agazzano","Alseno","Besenzone","Bettola","Bobbio","Borgonovo Val Tidone","Cadeo","Calendasco","Caminata","Caorso","Carpaneto Piacentino","Castel San Giovanni","Castell'arquato","Castelvetro Piacentino","Cerignale","Coli","Corte Brugnatella","Cortemaggiore","Farini","Ferriere","Fiorenzuola D'arda","Gazzola","Gossolengo","Gragnano Trebbiense","Gropparello","Lugagnano Val D'arda","Monticelli D'ongina","Morfasso","Nibbiano","Ottone","Pecorara","Piacenza","Pianello Val Tidone","Piozzano","Podenzano","Ponte Dell'olio","Pontenure","Rivergaro","Rottofreno","San Giorgio Piacentino","San Pietro In Cerro","Sarmato","Travo","Vernasca","Vigolzone","Villanova Sull'arda","Zerba","Ziano Piacentino"],"73":["Bientina","Buti","Calci","Calcinaia","Capannoli","Casale Marittimo","Casciana Terme","Cascina","Castelfranco Di Sotto","Castellina Marittima","Castelnuovo Val Di Cecina","Chianni","Crespina","Fauglia","Guardistallo","Lajatico","Lari","Lorenzana","Montecatini Val Di Cecina","Montescudaio","Monteverdi Marittimo","Montopoli In Val D'arno","Orciano Pisano","Palaia","Peccioli","Pisa","Pomarance","Ponsacco","Pontedera","Riparbella","San Giuliano Terme","San Miniato","Santa Croce Sull'arno","Santa Luce","Santa Maria A Monte","Terricciola","Vecchiano","Vicopisano","Volterra"],"74":["Abetone","Agliana","Buggiano","Chiesina Uzzanese","Cutigliano","Lamporecchio","Larciano","Marliana","Massa E Cozzile","Monsummano Terme","Montale","Montecatini Terme","Pescia","Pieve A Nievole","Pistoia","Piteglio","Ponte Buggianese","Quarrata","Sambuca Pistoiese","San Marcello Pistoiese","Serravalle Pistoiese","Uzzano"],"75":["Andreis","Arba","Arzene","Aviano","Azzano Decimo","Barcis","Brugnera","Budoia","Caneva","Casarsa Della Delizia","Castelnovo Del Friuli","Cavasso Nuovo","Chions","Cimolais","Claut","Clauzetto","Cordenons","Cordovado","Erto E Casso","Fanna","Fiume Veneto","Fontanafredda","Frisanco","Maniago","Meduno","Montereale Valcellina","Morsano Al Tagliamento","Pasiano Di Pordenone","Pinzano Al Tagliamento","Polcenigo","Porcia","Pordenone","Prata Di Pordenone","Pravisdomini","Roveredo In Piano","Sacile","San Giorgio Della Richinv","San Martino Al Tagliament","San Quirino","San Vito Al Tagliamento","Sequals","Sesto Al Reghena","Spilimbergo","Tramonti Di Sopra","Tramonti Di Sotto","Travesio","Vajont","Valvasone","Vito D'asio","Vivaro","Zoppola"],"76":["Abriola","Acerenza","Albano Di Lucania","Anzi","Armento","Atella","Avigliano","Balvano","Banzi","Baragiano","Barile","Bella","Brienza","Brindisi Di Montagna","Calvello","Calvera","Campomaggiore","Cancellara","Carbone","Castelgrande","Castelluccio Inferiore","Castelluccio Superiore","Castelmezzano","Castelsaraceno","Castronuovo Sant'andrea","Cersosimo","Chiaromonte","Corleto Perticara","Episcopia","Fardella","Filiano","Forenza","Francavilla In Sinni","Gallicchio","Genzano Di Lucania","Ginestra","Grumento Nova","Guardia Perticara","Lagonegro","Latronico","Laurenzana","Lauria","Lavello","Maratea","Marsiconuovo","Marsicovetere","Maschito","Melfi","Missanello","Moliterno","Montemilone","Montemurro","Muro Lucano","Nemoli","Noepoli","Oppido Lucano","Palazzo San Gervasio","Paterno","Pescopagano","Picerno","Pietragalla","Pietrapertosa","Pignola","Potenza","Rapolla","Rapone","Rionero In Vulture","Ripacandida","Rivello","Roccanova","Rotonda","Ruoti","Ruvo Del Monte","San Chirico Nuovo","San Chirico Raparo","San Costantino Albanese","San Fele","San Martino D'agri","San Paolo Albanese","San Severino Lucano","Sant'angelo Le Fratte","Sant'arcangelo","Sarconi","Sasso Di Castalda","Satriano Di Lucania","Savoia Di Lucania","Senise","Spinoso","Teana","Terranova Di Pollino","Tito","Tolve","Tramutola","Trecchina","Trivigno","Vaglio Basilicata","Venosa","Vietri Di Potenza","Viggianello","Viggiano"],"77":["Cantagallo","Carmignano","Montemurlo","Poggio A Caiano","Prato","Vaiano","Vernio"],"78":["Acate","Chiaramonte Gulfi","Comiso","Giarratana","Ispica","Modica","Monterosso Almo","Pozzallo","Ragusa","Santa Croce Camerina","Scicli","Vittoria"],"79":["Alfonsine","Bagnacavallo","Bagnara Di Romagna","Brisighella","Casola Valsenio","Castel Bolognese","Cervia","Conselice","Cotignola","Faenza","Fusignano","Lugo","Massa Lombarda","Ravenna","Riolo Terme","Russi","Sant'agata Sul Santerno","Solarolo"],"80":["Africo","Agnana Calabra","Anoia","Antonimina","Ardore","Bagaladi","Bagnara Calabra","Benestare","Bianco","Bivongi","Bova","Bova Marina","Bovalino","Brancaleone","Bruzzano Zeffirio","Calanna","Camini","Campo Calabro","Candidoni","Canolo","Caraffa Del Bianco","Cardeto","Careri","Casignana","Caulonia","Cimin\u00e0","Cinquefrondi","Cittanova","Condofuri","Cosoleto","Delianuova","Feroleto Della Chiesa","Ferruzzano","Fiumara","Galatro","Gerace","Giffone","Gioia Tauro","Gioiosa Ionica","Grotteria","Laganadi","Laureana Di Borrello","Locri","Mammola","Marina Di Gioiosa Ionica","Maropati","Martone","Melicucc\u00e0","Melicucco","Melito Di Porto Salvo","Molochio","Monasterace","Montebello Ionico","Motta San Giovanni","Oppido Mamertina","Palizzi","Palmi","Pazzano","Placanica","Plat\u00ec","Polistena","Portigliola","Reggio Calabria","Riace","Rizziconi","Roccaforte Del Greco","Roccella Ionica","Roghudi","Rosarno","Samo","San Ferdinando","San Giorgio Morgeto","San Giovanni Di Gerace","San Lorenzo","San Luca","San Pietro Di Carid\u00e0","San Procopio","San Roberto","Sant'agata Del Bianco","Sant'alessio D'aspromonte","Sant'eufemia D'aspromonte","Sant'ilario Dello Ionio","Santa Cristina D'aspromonte","Santo Stefano In Aspromonte","Scido","Scilla","Seminara","Serrata","Siderno","Sinopoli","Staiti","Stignano","Stilo","Taurianova","Terranova Sappo Minulio","Varapodio","Villa San Giovanni"],"81":["Albinea","Bagnolo In Piano","Baiso","Bibbiano","Boretto","Brescello","Busana","Cadelbosco Di Sopra","Campagnola Emilia","Campegine","Canossa","Carpineti","Casalgrande","Casina","Castellarano","Castelnovo Di Sotto","Castelnovo N\u00e9 Monti","Cavriago","Collagna","Correggio","Fabbrico","Gattatico","Gualtieri","Guastalla","Ligonchio","Luzzara","Montecchio Emilia","Novellara","Poviglio","Quattro Castella","Ramiseto","Reggio Emilia","Reggiolo","Rio Saliceto","Rolo","Rubiera","San Martino In Rio","San Polo D'enza","Sant'ilario D'enza","Scandiano","Toano","Vetto","Vezzano Sul Crostolo","Viano","Villa Minozzo"],"82":["Accumoli","Amatrice","Antrodoco","Ascrea","Belmonte In Sabina","Borbona","Borgo Velino","Borgorose","Cantalice","Cantalupo In Sabina","Casaprota","Casperia","Castel Di Tora","Castel Sant'angelo","Castelnuovo Di Farfa","Cittaducale","Cittareale","Collalto Sabino","Colle Di Tora","Collegiove","Collevecchio","Colli Sul Velino","Concerviano","Configni","Contigliano","Cottanello","Fara In Sabina","Fiamignano","Forano","Frasso Sabino","Greccio","Labro","Leonessa","Longone Sabino","Magliano Sabina","Marcetelli","Micigliano","Mompeo","Montasola","Monte San Giovanni In Sab","Montebuono","Monteleone Sabino","Montenero Sabino","Montopoli Di Sabina","Morro Reatino","Nespolo","Orvinio","Paganico Sabino","Pescorocchiano","Petrella Salto","Poggio Bustone","Poggio Catino","Poggio Mirteto","Poggio Moiano","Poggio Nativo","Poggio San Lorenzo","Posta","Pozzaglia Sabino","Rieti","Rivodutri","Rocca Sinibalda","Roccantica","Salisano","Scandriglia","Selci","Stimigliano","Tarano","Toffia","Torri In Sabina","Torricella In Sabina","Turania","Vacone","Varco Sabino"],"83":["Bellaria Igea Marina","Cattolica","Coriano","Dragona","Fonte Nuova","Gemmano","Misano Adriatico","Mondaino","Monte Colombo","Montefiore Conca","Montegridolfo","Montescudo","Morciano Di Romagna","Poggio Berni","Riccione","Rimini","Saludecio","San Clemente","San Giovanni In Marignano","Santarcangelo Di Romagna","Torriana","Verucchio"],"84":["Affile","Agosta","Albano Laziale","Allumiere","Anguillara Sabazia","Anticoli Corrado","Anzio","Arcinazzo Romano","Ardea","Ariccia","Arsoli","Artena","Bellegra","Bracciano","Camerata Nuova","Campagnano Di Roma","Canale Monterano","Canterano","Capena","Capranica Prenestina","Carpineto Romano","Casape","Castel Gandolfo","Castel Madama","Castel San Pietro Romano","Castelnuovo Di Porto","Cave","Cerreto Laziale","Cervara Di Roma","Cerveteri","Ciampino","Ciciliano","Cineto Romano","Civitavecchia","Civitella San Paolo","Colleferro","Colonna","Fiano Romano","Filacciano","Fiumicino","Formello","Frascati","Gallicano Nel Lazio","Gavignano","Genazzano","Genzano Di Roma","Gerano","Gorga","Grottaferrata","Guidonia Montecelio","Jenne","Labico","Ladispoli","Lanuvio","Lariano","Licenza","Magliano Romano","Mandela","Manziana","Marano Equo","Marcellina","Marino","Mazzano Romano","Mentana","Monte Porzio Catone","Montecompatri","Monteflavio","Montelanico","Montelibretti","Monterotondo","Montorio Romano","Moricone","Morlupo","Nazzano","Nemi","Nerola","Nettuno","Olevano Romano","Palestrina","Palombara Sabina","Percile","Pisoniano","Poli","Pomezia","Ponzano Romano","Riano","Rignano Flaminio","Riofreddo","Rocca Canterano","Rocca Di Cave","Rocca Di Papa","Rocca Priora","Rocca Santo Stefano","Roccagiovine","Roiate","Roma","Roviano","Sacrofano","Sambuci","San Cesareo","San Gregorio Da Sassola","San Polo Dei Cavalieri","San Vito Romano","Sant'angelo Romano","Sant'oreste","Santa Marinella","Saracinesco","Segni","Subiaco","Tivoli","Tolfa","Torrita Tiberina","Trevignano Romano","Vallepietra","Vallinfreda","Valmontone","Velletri","Vicovaro","Vivaro Romano","Zagarolo"],"85":["Adria","Ariano Nel Polesine","Arqu\u00e0 Polesine","Badia Polesine","Bagnolo Di Po","Bergantino","Bosaro","Calto","Canaro","Canda","Castelguglielmo","Castelmassa","Castelnovo Bariano","Ceneselli","Ceregnano","Contarina","Corbola","Costa Di Rovigo","Crespino","Donada","Ficarolo","Fiesso Umbertiano","Frassinelle Polesine","Fratta Polesine","Gaiba","Gavello","Giacciano Con Baruchella","Guarda Veneta","Lendinara","Loreo","Lusia","Melara","Occhiobello","Papozze","Pettorazza Grimani","Pincara","Polesella","Pontecchio Polesine","Porto Tolle","Porto Viro","Rosolina","Rovigo","Salara","San Bellino","San Martino Di Venezze","Stienta","Taglio Di Po","Trecenta","Villadose","Villamarzana","Villanova Del Ghebbo","Villanova Marchesana"],"86":["Acerno","Agropoli","Albanella","Alfano","Altavilla Silentina","Amalfi","Angri","Aquara","Ascea","Atena Lucana","Atrani","Auletta","Baronissi","Battipaglia","Bellizzi","Bellosguardo","Bracigliano","Buccino","Buonabitacolo","Caggiano","Calvanico","Camerota","Campagna","Campora","Cannalonga","Capaccio","Casal Velino","Casalbuono","Casaletto Spartano","Caselle In Pittari","Castel San Giorgio","Castel San Lorenzo","Castelcivita","Castellabate","Castelnuovo Cilento","Castelnuovo Di Conza","Castiglione Del Genovesi","Cava D\u00e9 Tirreni","Celle Di Bulgheria","Centola","Ceraso","Cetara","Cicerale","Colliano","Conca Dei Marini","Controne","Contursi Terme","Corbara","Corleto Monforte","Cuccaro Vetere","Eboli","Felitto","Fisciano","Furore","Futani","Giffoni Sei Casali","Giffoni Valle Piana","Gioi","Giungano","Ispani","Laureana Cilento","Laurino","Laurito","Laviano","Lustra","Magliano Vetere","Maiori","Mercato San Severino","Minori","Moio Della Civitella","Montano Antilia","Monte San Giacomo","Montecorice","Montecorvino Pugliano","Montecorvino Rovella","Monteforte Cilento","Montesano Sulla Marcellan","Morigerati","Nocera Inferiore","Nocera Superiore","Novi Velia","Ogliastro Cilento","Olevano Sul Tusciano","Oliveto Citra","Omignano","Orria","Ottati","Padula","Pagani","Palomonte","Pellezzano","Perdifumo","Perito","Pertosa","Petina","Piaggine","Pisciotta","Polla","Pollica","Pontecagnano Faiano","Positano","Postiglione","Praiano","Prignano Cilento","Ravello","Ricigliano","Roccadaspide","Roccagloriosa","Roccapiemonte","Rofrano","Romagnano Al Monte","Roscigno","Rutino","Sacco","Sala Consilina","Salento","Salerno","Salvitelle","San Cipriano Picentino","San Giovanni A Piro","San Gregorio Magno","San Mango Piemonte","San Marzano Sul Sarno","San Mauro Cilento","San Mauro La Bruca","San Pietro Al Tanagro","San Rufo","San Valentino Torio","Sant'angelo A Fasanella","Sant'arsenio","Sant'egidio Del Monte Alb","Santa Marina","Santomenna","Sanza","Sapri","Sarno","Sassano","Scafati","Scala","Serramezzana","Serre","Sessa Cilento","Siano","Sicignano Degli Alburni","Stella Cilento","Stio","Teggiano","Torchiara","Torraca","Torre Orsaia","Tortorella","Tramonti","Trentinara","Valle Dell'angelo","Vallo Della Lucania","Valva","Vibonati","Vietri Sul Mare"],"87":["Alghero","Anela","Ardara","Banari","Benetutti","Bessude","Bonnanaro","Bono","Bonorva","Borutta","Bottidda","Bultei","Bulzi","Burgos","Cargeghe","Castelsardo","Cheremule","Chiaramonti","Codrongianos","Cossoine","Erula","Esporlatu","Florinas","Giave","Illorai","Ittireddu","Ittiri","Laerru","Mara","Martis","Monteleone Rocca Doria","Mores","Muros","Nughedu San Nicol\u00f2","Nule","Nulvi","Olmedo","Osilo","Ossi","Ozieri","Padria","Pattada","Perfugas","Ploaghe","Porto Torres","Pozzomaggiore","Putifigari","Romana","Santa Maria Coghinas","Sassari","Sedini","Semestene","Sennori","Siligo","Sorso","Stintino","Tergu","Thiesi","Tissi","Torralba","Tula","Uri","Usini","Valledoria","Viddalba","Villanova Monteleone"],"88":["Alassio","Albenga","Albisola Marina","Albisola Superiore","Altare","Andora","Arnasco","Balestrino","Bardineto","Bergeggi","Boissano","Borghetto Santo Spirito","Borgio Verezzi","Bormida","Cairo Montenotte","Calice Ligure","Calizzano","Carcare","Casanova Lerrone","Castelbianco","Castelvecchio Di Rocca Ba","Celle Ligure","Cengio","Ceriale","Cisano Sul Neva","Cosseria","Dego","Erli","Finale Ligure","Garlenda","Giustenice","Giusvalla","Laigueglia","Loano","Magliolo","Mallare","Massimino","Millesimo","Mioglia","Murialdo","Nasino","Noli","Onzo","Orco Feglino","Ortovero","Osiglia","Pallare","Piana Crixia","Pietra Ligure","Plodio","Pontinvrea","Quiliano","Rialto","Roccavignale","Sassello","Savona","Spotorno","Stella","Stellanello","Testico","Toirano","Tovo San Giacomo","Urbe","Vado Ligure","Varazze","Vendone","Vezzi Portio","Villanova D'albenga","Zuccarello"],"89":["Abbadia San Salvatore","Asciano","Buonconvento","Casole D'elsa","Castellina In Chianti","Castelnuovo Berardenga","Castiglione D'orcia","Cetona","Chianciano Terme","Chiusdino","Chiusi","Colle Di Val D'elsa","Gaiole In Chianti","Montalcino","Montepulciano","Monteriggioni","Monteroni D'arbia","Monticiano","Murlo","Piancastagnaio","Pienza","Poggibonsi","Radda In Chianti","Radicofani","Radicondoli","Rapolano Terme","San Casciano Dei Bagni","San Gimignano","San Giovanni D'asso","San Quirico D'orcia","Sarteano","Siena","Sinalunga","Sovicille","Torrita Di Siena","Trequanda"],"90":["Augusta","Avola","Buccheri","Buscemi","Canicattini Bagni","Carlentini","Cassaro","Ferla","Floridia","Francofonte","Lentini","Melilli","Noto","Pachino","Palazzolo Acreide","Portopalo Di Capo Passero","Priolo Gargallo","Rosolini","Siracusa","Solarino","Sortino"],"91":["Albaredo Per San Marco","Albosaggia","Andalo Valtellino","Aprica","Ardenno","Bema","Berbenno Di Valtellina","Bianzone","Bormio","Buglio In Monte","Caiolo","Campodolcino","Caspoggio","Castello Dell'acqua","Castione Andevenno","Cedrasco","Cercino","Chiavenna","Chiesa In Valmalenco","Chiuro","Cino","Civo","Colorina","Cosio Valtellino","Dazio","Delebio","Dubino","Faedo Valtellino","Forcola","Fusine","Gerola Alta","Gordona","Grosio","Grosotto","Lanzada","Livigno","Lovero Valtellino","Madesimo","Mantello","Mazzo Di Valtellina","Mello","Menarola","Mese","Montagna In Valtellina","Morbegno","Novate Mezzola","Pedesina","Piantedo","Piateda","Piuro","Poggiridenti","Ponte In Valtellina","Postalesio","Prata Camportaccio","Rasura","Rogolo","Samolaco","San Giacomo Filippo","Sernio","Sondalo","Sondrio","Spriana","Talamona","Tartano","Teglio","Tirano","Torre Di Santa Maria","Tovo Di Sant'agata","Traona","Tresivio","Val Masino","Valdidentro","Valdisotto","Valfurva","Verceia","Vervio","Villa Di Chiavenna","Villa Di Tirano"],"92":["Avetrana","Carosino","Castellaneta","Crispiano","Faggiano","Fragagnano","Ginosa","Grottaglie","Laterza","Leporano","Lizzano","Manduria","Martina Franca","Maruggio","Massafra","Monteiasi","Montemesola","Monteparano","Mottola","Palagianello","Palagiano","Pulsano","Roccaforzata","San Giorgio Ionico","San Marzano Di San Giusep","Sava","Statte","Taranto","Torricella"],"93":["Alba Adriatica","Ancarano","Arsita","Atri","Basciano","Bellante","Bisenti","Campli","Canzano","Castel Castagna","Castellalto","Castelli","Castiglione Messer Raimon","Castilenti","Cellino Attanasio","Cermignano","Civitella Del Tronto","Colledara","Colonnella","Controguerra","Corropoli","Cortino","Crognaleto","Fano Adriano","Giulianova","Isola Del Gran Sasso D'it","Martinsicuro","Montefino","Montorio Al Vomano","Morro D'oro","Mosciano Sant'angelo","Nereto","Notaresco","Penna Sant'andrea","Pietracamela","Pineto","Rocca Santa Maria","Roseto Degli Abruzzi","Sant'egidio Alla Vibrata","Sant'omero","Silvi","Teramo","Torano Nuovo","Torricella Sicura","Tortoreto","Tossicia","Valle Castellana"],"94":["Acquasparta","Allerona","Alviano","Amelia","Arrone","Attigliano","Avigliano Umbro","Baschi","Calvi Dell'umbria","Castel Giorgio","Castel Viscardo","Fabro","Ferentillo","Ficulle","Giove","Guardea","Lugnano In Teverina","Montecastrilli","Montecchio","Montefranco","Montegabbione","Monteleone D'orvieto","Narni","Orvieto","Otricoli","Parrano","Penna In Teverina","Polino","Porano","San Gemini","San Venanzo","Stroncone","Terni"],"95":["Agli\u00e9","Airasca","Ala Di Stura","Albiano D'ivrea","Alice Superiore","Almese","Alpette","Alpignano","Andezeno","Andrate","Angrogna","Arignano","Avigliana","Azeglio","Bairo","Balangero","Baldissero Canavese","Baldissero Torinese","Balme","Banchette","Barbania","Bardonecchia","Barone Canavese","Beinasco","Bibiana","Bobbio Pellice","Bollengo","Borgaro Torinese","Borgiallo","Borgofranco D'ivrea","Borgomasino","Borgone Susa","Bosconero","Brandizzo","Bricherasio","Brosso","Brozolo","Bruino","Brusasco","Bruzolo","Buriasco","Burolo","Busano","Bussoleno","Buttigliera Alta","Cafasse","Caluso","Cambiano","Campiglione Fenile","Candia Canavese","Candiolo","Canischio","Cantalupa","Cantoira","Caprie","Caravino","Carema","Carignano","Carmagnola","Casalborgone","Cascinette D'ivrea","Caselette","Caselle Torinese","Castagneto Po","Castagnole Piemonte","Castellamonte","Castelnuovo Nigra","Castiglione Torinese","Cavagnolo","Cavour","Cercenasco","Ceres","Ceresole Reale","Cesana Torinese","Chialamberto","Chianocco","Chiaverano","Chieri","Chiesanuova","Chiomonte","Chiusa Di San Michele","Chivasso","Ciconio","Cintano","Cinzano","Ciri\u00e9","Claviere","Coassolo Torinese","Coazze","Collegno","Colleretto Castelnuovo","Colleretto Giacosa","Condove","Corio","Cossano Canavese","Cuceglio","Cumiana","Cuorgn\u00e9","Druento","Exilles","Favria","Feletto","Fenestrelle","Fiano","Fiorano Canavese","Foglizzo","Forno Canavese","Frassinetto","Front","Frossasco","Garzigliana","Gassino Torinese","Germagnano","Giaglione","Giaveno","Givoletto","Gravere","Groscavallo","Grosso","Grugliasco","Ingria","Inverso Pinasca","Isolabella","Issiglio","Ivrea","La Cassa","La Loggia","Lanzo Torinese","Lauriano","Leini","Lemie","Lessolo","Levone","Locana","Lombardore","Lombriasco","Loranz\u00e9","Lugnacco","Luserna San Giovanni","Lusernetta","Lusigli\u00e9","Macello","Maglione","Marentino","Massello","Mathi","Mattie","Mazz\u00e9","Meana Di Susa","Mercenasco","Meugliano","Mezzenile","Mombello Di Torino","Mompantero","Monastero Di Lanzo","Moncalieri","Moncenisio","Montaldo Torinese","Montalenghe","Montalto Dora","Montanaro","Monteu Da Po","Moriondo Torinese","Nichelino","Noasca","Nole","Nomaglio","None","Novalesa","Oglianico","Orbassano","Orio Canavese","Osasco","Osasio","Oulx","Ozegna","Palazzo Canavese","Pancalieri","Parella","Pavarolo","Pavone Canavese","Pecco","Pecetto Torinese","Perosa Argentina","Perosa Canavese","Perrero","Pertusio","Pessinetto","Pianezza","Pinasca","Pinerolo","Pino Torinese","Piobesi Torinese","Piossasco","Piscina","Piverone","Poirino","Pomaretto","Pont Canavese","Porte","Pragelato","Prali","Pralormo","Pramollo","Prarostino","Prascorsano","Pratiglione","Quagliuzzo","Quassolo","Quincinetto","Reano","Ribordone","Riva Presso Chieri","Rivalba","Rivalta Di Torino","Rivara","Rivarolo Canavese","Rivarossa","Rivoli","Robassomero","Rocca Canavese","Roletto","Romano Canavese","Ronco Canavese","Rondissone","Ror\u00e0","Rosta","Roure","Rubiana","Rueglio","Salassa","Salbertrand","Salerano Canavese","Salza Di Pinerolo","Samone","San Benigno Canavese","San Carlo Canavese","San Colombano Belmonte","San Didero","San Francesco Al Campo","San Germano Chisone","San Gillio","San Giorgio Canavese","San Giorgio Di Susa","San Giusto Canavese","San Martino Canavese","San Maurizio Canavese","San Mauro Torinese","San Pietro Val Lemina","San Ponso","San Raffaele Cimena","San Sebastiano Da Po","San Secondo Di Pinerolo","Sangano","Sant'ambrogio Di Torino","Sant'antonino Di Susa","Santena","Sauze D'oulx","Sauze Di Cesana","Scalenghe","Scarmagno","Sciolze","Sestriere","Settimo Rottaro","Settimo Torinese","Settimo Vittone","Sparone","Strambinello","Strambino","Susa","Tavagnasco","Torino","Torrazza Piemonte","Torre Canavese","Torre Pellice","Trana","Trausella","Traversella","Traves","Trofarello","Usseaux","Usseglio","Vaie","Val Della Torre","Valgioie","Vallo Torinese","Valperga","Valprato Soana","Varisella","Vauda Canavese","Venaria Reale","Venaus","Verolengo","Verrua Savoia","Vestign\u00e9","Vialfr\u00e9","Vico Canavese","Vidracco","Vigone","Villafranca Piemonte","Villanova Canavese","Villar Dora","Villar Focchiardo","Villar Pellice","Villar Perosa","Villarbasse","Villareggia","Villastellone","Vinovo","Virle Piemonte","Vische","Vistrorio","Vi\u00f9","Volpiano","Volvera"],"96":["Alcamo","Buseto Palizzolo","Calatafimi","Campobello Di Mazara","Castellammare Del Golfo","Castelvetrano","Custonaci","Erice","Favignana","Gibellina","Marsala","Mazara Del Vallo","Paceco","Pantelleria","Partanna","Petrosino","Poggioreale","Salaparuta","Salemi","San Vito Lo Capo","Santa Ninfa","Trapani","Valderice","Vita"],"97":["Ala","Albiano","Aldeno","Amblar","Andalo","Arco","Avio","Baselga Di Pin\u00e9","Bedollo","Bersone","Besenello","Bezzecca","Bieno","Bleggio Inferiore","Bleggio Superiore","Bocenago","Bolbeno","Bondo","Bondone","Borgo Valsugana","Bosentino","Breguzzo","Brentonico","Bresimo","Brez","Caderzone","Calavino","Calceranica Al Lago","Caldes","Caldonazzo","Campitello Di Fassa","Campodenno","Canal San Bovo","Canazei","Capriana","Carano","Carisolo","Carzano","Castel Condino","Castelfondo","Castello Di Fiemme","Castello Tesino","Castelnuovo","Cavalese","Cavareno","Cavedago","Cavedine","Cavizzana","Cembra","Centa San Nicol\u00f2","Cimego","Cimone","Cinte Tesino","Cis","Civezzano","Cles","Cloz","Commezzadura","Concei","Condino","Coredo","Croviana","Cunevo","Daiano","Dambel","Daone","Dar\u00e9","Denno","Dimaro","Don","Dorsino","Drena","Dro","Faedo","Fai Della Paganella","Faver","Fiav\u00e9","Fiera Di Primiero","Fierozzo","Flavon","Folgaria","Fondo","Fornace","Frassilongo","Garniga","Giovo","Giustino","Grauno","Grigno","Grumes","Imer","Isera","Ivano Fracena","Lardaro","Lasino","Lavarone","Lavis","Levico Terme","Lisignago","Lomaso","Lona Lases","Luserna","Mal\u00e9","Malosco","Massimeno","Mazzin","Mezzana","Mezzano","Mezzocorona","Mezzolombardo","Moena","Molina Di Ledro","Molveno","Monclassico","Montagne","Mori","Nago Torbole","Nanno","Nave San Rocco","Nogaredo","Nomi","Novaledo","Ospedaletto","Ossana","Padergnone","Pal\u00f9 Del Fersina","Panchi\u00e0","Peio","Pellizzano","Pelugo","Pergine Valsugana","Pieve Di Bono","Pieve Di Ledro","Pieve Tesino","Pinzolo","Pomarolo","Pozza Di Fassa","Praso","Predazzo","Preore","Prezzo","Rabbi","Ragoli","Rev\u00f2","Riva Del Garda","Romallo","Romeno","Roncegno","Ronchi Valsugana","Roncone","Ronzo Chienis","Ronzone","Rover\u00e9 Della Luna","Rovereto","Ruffr\u00e9","Rumo","Sagron Mis","Samone","San Lorenzo In Banale","San Michele All'adige","Sant'orsola","Sanzeno","Sarnonico","Scurelle","Segonzano","Sfruz","Siror","Smarano","Soraga","Sover","Spera","Spiazzo","Spormaggiore","Sporminore","Stenico","Storo","Strembo","Strigno","Taio","Tassullo","Telve Di Sopra","Telve Di Sotto","Tenna","Tenno","Terlago","Terragnolo","Terres","Terzolas","Tesero","Tiarno Di Sopra","Tiarno Di Sotto","Tione Di Trento","Ton","Tonadico","Torcegno","Trambileno","Transacqua","Trento","Tres","Tuenno","Valda","Valfloriana","Vallarsa","Varena","Vattaro","Vermiglio","Verv\u00f2","Vezzano","Vignola Falesina","Vigo Di Fassa","Vigo Rendena","Vigolo Vattaro","Villa Agnedo","Villa Lagarina","Villa Rendena","Volano","Zambana","Ziano Di Fiemme","Zuclo"],"98":["Altivole","Arcade","Asolo","Borso Del Grappa","Breda Di Piave","Caerano Di San Marco","Cappella Maggiore","Carbonera","Casale Sul Sile","Casier","Castelcucco","Castelfranco Veneto","Castello Di Godego","Cavaso Del Tomba","Cessalto","Chiarano","Cimadolmo","Cison Di Valmarino","Codogn\u00e9","Colle Umberto","Conegliano","Cordignano","Cornuda","Crespano Del Grappa","Crocetta Del Montello","Farra Di Soligo","Follina","Fontanelle","Fonte","Fregona","Gaiarine","Giavera Del Montello","Godega Di Sant'urbano","Gorgo Al Monticano","Istrana","Loria","Mansu\u00e9","Mareno Di Piave","Maser","Maserada Sul Piave","Meduna Di Livenza","Miane","Mogliano Veneto","Monastier Di Treviso","Monfumo","Montebelluna","Morgano","Moriago Della Battaglia","Motta Di Livenza","Nervesa Della Battaglia","Oderzo","Ormelle","Orsago","Paderno Del Grappa","Paese","Pederobba","Pieve Di Soligo","Ponte Di Piave","Ponzano Veneto","Portobuffol\u00e9","Possagno","Povegliano","Preganziol","Quinto Di Treviso","Refrontolo","Resana","Revine Lago","Riese Pio X","Roncade","Salgareda","San Biagio Di Callalta","San Fior","San Pietro Di Feletto","San Polo Di Piave","San Vendemiano","San Zenone Degli Ezzelini","Santa Lucia Di Piave","Sarmede","Segusino","Sernaglia Della Battaglia","Silea","Spresiano","Susegana","Tarzo","Trevignano","Treviso","Valdobbiadene","Vazzola","Vedelago","Vidor","Villorba","Vittorio Veneto","Volpago Del Montello","Zenson Di Piave","Zero Branco"],"99":["Duino Aurisina","Monrupino","Muggia","San Dorligo Della Valle","Sgonico","Trieste"],"100":["Aiello Del Friuli","Amaro","Ampezzo","Aquileia","Arta Terme","Artegna","Attimis","Bagnaria Arsa","Basiliano","Bertiolo","Bicinicco","Bordano","Buia","Buttrio","Camino Al Tagliamento","Campoformido","Campolongo Al Torre","Carlino","Cassacco","Castions Di Strada","Cavazzo Carnico","Cercivento","Cervignano Del Friuli","Chiopris Viscone","Chiusaforte","Cividale Del Friuli","Codroipo","Colloredo Di Monte Albano","Comeglians","Corno Di Rosazzo","Coseano","Dignano","Dogna","Drenchia","Enemonzo","Faedis","Fagagna","Fiumicello","Flaibano","Forgaria Nel Friuli","Forni Avoltri","Forni Di Sopra","Forni Di Sotto","Gemona Del Friuli","Gonars","Grimacco","Latisana","Lauco","Lestizza","Lignano Sabbiadoro","Ligosullo","Lusevera","Magnano In Riviera","Majano","Malborghetto Valbruna","Manzano","Marano Lagunare","Martignacco","Mereto Di Tomba","Moggio Udinese","Moimacco","Montenars","Mortegliano","Moruzzo","Muzzana Del Turgnano","Nimis","Osoppo","Ovaro","Pagnacco","Palazzolo Dello Stella","Palmanova","Paluzza","Pasian Di Prato","Paularo","Pavia Di Udine","Pocenia","Pontebba","Porpetto","Povoletto","Pozzuolo Del Friuli","Pradamano","Prato Carnico","Precenicco","Premariacco","Preone","Prepotto","Pulfero","Ragogna","Ravascletto","Raveo","Reana Del Roiale","Remanzacco","Resia","Resiutta","Rigolato","Rive D'arcano","Rivignano","Ronchis","Ruda","San Daniele Del Friuli","San Giorgio Di Nogaro","San Giovanni Al Natisone","San Leonardo","San Pietro Al Natisone","San Vito Al Torre","San Vito Di Fagagna","Santa Maria La Longa","Sauris","Savogna","Sedegliano","Socchieve","Stregna","Sutrio","Taipana","Talmassons","Tapogliano","Tarcento","Tarvisio","Tavagnacco","Teor","Terzo D'aquileia","Tolmezzo","Torreano","Torviscosa","Trasaghis","Treppo Carnico","Treppo Grande","Tricesimo","Trivignano Udinese","Udine","Varmo","Venzone","Verzegnis","Villa Santina","Villa Vicentina","Visco","Zuglio"],"101":["Agra","Albizzate","Angera","Arcisate","Arsago Seprio","Azzate","Azzio","Barasso","Bardello","Bedero Valcuvia","Besano","Besnate","Besozzo","Biandronno","Bisuschio","Bodio Lomnago","Brebbia","Bregano","Brenta","Brezzo Di Bedero","Brinzio","Brissago Valtravaglia","Brunello","Brusimpiano","Buguggiate","Busto Arsizio","Cadegliano Viconago","Cadrezzate","Cairate","Cantello","Caravate","Cardano Al Campo","Carnago","Caronno Pertusella","Caronno Varesino","Casale Litta","Casalzuigno","Casciago","Casorate Sempione","Cassano Magnago","Cassano Valcuvia","Castellanza","Castello Cabiaglio","Castelseprio","Castelveccana","Castiglione Olona","Castronno","Cavaria Con Premezzo","Cazzago Brabbia","Cislago","Cittiglio","Clivio","Cocquio Trevisago","Comabbio","Comerio","Cremenaga","Crosio Della Valle","Cuasso Al Monte","Cugliate Fabiasco","Cunardo","Curiglia Con Monteviasco","Cuveglio","Cuvio","Daverio","Dumenza","Duno","Fagnano Olona","Ferno","Ferrera Di Varese","Gallarate","Galliate Lombardo","Gavirate","Gazzada Schianno","Gemonio","Gerenzano","Germignaga","Golasecca","Gorla Maggiore","Gorla Minore","Gornate Olona","Grantola","Inarzo","Induno Olona","Ispra","Jerago Con Orago","Lavena Ponte Tresa","Laveno Mombello","Leggiuno","Lonate Ceppino","Lonate Pozzolo","Lozza","Luino","Luvinate","Maccagno","Malgesso","Malnate","Marchirolo","Marnate","Marzio","Masciago Primo","Mercallo","Mesenzana","Montegrino Valtravaglia","Monvalle","Morazzone","Mornago","Oggiona Con Santo Stefano","Olgiate Olona","Origgio","Orino","Osmate","Pino Sulla Sponda Del Lago","Porto Ceresio","Porto Valtravaglia","Rancio Valcuvia","Ranco","Saltrio","Samarate","Sangiano","Saronno","Sesto Calende","Solbiate Arno","Solbiate Olona","Somma Lombardo","Sumirago","Taino","Ternate","Tradate","Travedona Monate","Tronzano Lago Maggiore","Uboldo","Valganna","Varano Borghi","Varese","Vedano Olona","Veddasca","Venegono Inferiore","Venegono Superiore","Vergiate","Viggi\u00f9","Vizzola Ticino"],"102":["Annone Veneto","Campagna Lupia","Campolongo Maggiore","Camponogara","Caorle","Cavarzere","Ceggia","Chioggia","Cinto Caomaggiore","Cona","Concordia Sagittaria","Dolo","Eraclea","Fiesso D'artico","Fossalta Di Piave","Fossalta Di Portogruaro","Foss\u00f2","Gruaro","Jesolo","Marcon","Martellago","Meolo","Mira","Mirano","Musile Di Piave","Noale","Noventa Di Piave","Pianiga","Portogruaro","Pramaggiore","Quarto D'altino","Salzano","San Don\u00e0 Di Piave","San Michele Al Tagliamento","Santa Maria Di Sala","Santo Stino Di Livenza","Scorz\u00e9","Spinea","Stra","Teglio Veneto","Torre Di Mosto","Venezia","Vigonovo"],"103":["Antrona Schieranco","Anzola D'ossola","Arizzano","Arola","Aurano","Baceno","Bannio Anzino","Baveno","Bee","Belgirate","Beura Cardezza","Bognanco","Brovello Carpugnino","Calasca Castiglione","Cambiasca","Cannero Riviera","Cannobio","Caprezzo","Casale Corte Cerro","Cavaglio Spoccia","Ceppo Morelli","Cesara","Cossogno","Craveggia","Crevoladossola","Crodo","Cursolo Orasso","Domodossola","Druogno","Falmenta","Formazza","Germagno","Ghiffa","Gignese","Gravellona Toce","Gurro","Intragna","Loreglia","Macugnaga","Madonna Del Sasso","Malesco","Masera","Massiola","Mergozzo","Miazzina","Montecrestese","Montescheno","Nonio","Oggebbio","Omegna","Ornavasso","Pallanzeno","Piedimulera","Pieve Vergonte","Premeno","Premia","Premosello Chiovenda","Quarna Sopra","Quarna Sotto","Re","San Bernardino Verbano","Santa Maria Maggiore","Seppiana","Stresa","Toceno","Trarego Viggiona","Trasquera","Trontano","Valstrona","Vanzone Con San Carlo","Varzo","Verbania","Viganella","Vignone","Villadossola","Villette","Vogogna"],"104":["Alagna Valsesia","Albano Vercellese","Alice Castello","Arborio","Asigliano Vercellese","Balmuccia","Balocco","Bianz\u00e9","Boccioleto","Borgo D'ale","Borgo Vercelli","Borgosesia","Breia","Buronzo","Campertogno","Carcoforo","Caresana","Caresanablot","Carisio","Casanova Elvo","Cellio","Cervatto","Cigliano","Civiasco","Collobiano","Costanzana","Cravagliana","Crescentino","Crova","Desana","Fobello","Fontanetto Po","Formigliana","Gattinara","Ghislarengo","Greggio","Guardabosone","Lamporo","Lenta","Lignana","Livorno Ferraris","Lozzolo","Miagliano","Mollia","Moncrivello","Motta Dei Conti","Olcenengo","Oldenico","Palazzolo Vercellese","Pertengo","Pezzana","Pila","Piode","Postua","Prarolo","Quarona","Quinto Vercellese","Rassa","Rima San Giuseppe","Rimasco","Rimella","Riva Valdobbia","Rive","Roasio","Ronsecco","Rossa","Rovasenda","Sabbia","Salasco","Sali Vercellese","Saluggia","San Germano Vercellese","San Giacomo Vercellese","Santhi\u00e0","Scopa","Scopello","Serravalle Sesia","Sostegno","Stroppiana","Tricerro","Trino","Tronzano Vercellese","Valduggia","Varallo","Vercelli","Villarboit","Villata","Vocca"],"105":["Affi","Albaredo D'adige","Angiari","Arcole","Badia Calavena","Bardolino","Belfiore","Bevilacqua","Bonavigo","Boschi Sant'anna","Bosco Chiesanuova","Bovolone","Brentino Belluno","Brenzone","Bussolengo","Buttapietra","Caldiero","Caprino Veronese","Casaleone","Castagnaro","Castel D'azzano","Castelnuovo Del Garda","Cavaion Veronese","Cazzano Di Tramigna","Cerea","Cerro Veronese","Cologna Veneta","Colognola Ai Colli","Concamarise","Costermano","Dolc\u00e9","Erb\u00e9","Erbezzo","Ferrara Di Monte Baldo","Fumane","Garda","Gazzo Veronese","Grezzana","Illasi","Isola Della Scala","Isola Rizza","Lavagno","Lazise","Legnago","Malcesine","Marano Di Valpolicella","Mezzane Di Sotto","Minerbe","Montecchia Di Crosara","Monteforte D'alpone","Mozzecane","Negrar","Nogara","Nogarole Rocca","Oppeano","Pal\u00f9","Pastrengo","Pescantina","Peschiera Del Garda","Povegliano Veronese","Pressana","Rivoli Veronese","Ronc\u00e0","Ronco All'adige","Roverchiara","Rover\u00e9 Veronese","Roveredo Di Gu\u00e0","Salizzole","San Bonifacio","San Giovanni Ilarione","San Giovanni Lupatoto","San Martino Buon Albergo","San Mauro Di Saline","San Pietro Di Morubio","San Pietro In Cariano","San Zeno Di Montagna","Sanguinetto","Sant'ambrogio Di Valpolic","Sant'anna D'alfaedo","Selva Di Progno","Soave","Sommacampagna","Sona","Sorg\u00e0","Terrazzo","Torri Del Benaco","Tregnago","Trevenzuolo","Valeggio Sul Mincio","Velo Veronese","Verona","Veronella","Vestenanova","Vigasio","Villa Bartolomea","Villafranca Di Verona","Zevio","Zimella"],"106":["Acquaro","Arena","Briatico","Brognaturo","Capistrano","Cessaniti","Das\u00e0","Dinami","Drapia","Fabrizia","Filadelfia","Filandari","Filogaso","Francavilla Angitola","Francica","Gerocarne","Ionadi","Joppolo","Limbadi","Maierato","Mileto","Mongiana","Monterosso Calabro","Nardodipace","Nicotera","Parghelia","Pizzo","Pizzoni","Polia","Ricadi","Rombiolo","San Calogero","San Costantino Calabro","San Gregorio D'ippona","San Nicola Da Crissa","Sant'onofrio","Serra San Bruno","Simbario","Sorianello","Soriano Calabro","Spadola","Spilinga","Stefanaconi","Tropea","Vallelonga","Vazzano","Vibo Valentia","Zaccanopoli","Zambrone","Zungri"],"107":["Agugliaro","Albettone","Alonte","Altavilla Vicentina","Altissimo","Arcugnano","Arsiero","Arzignano","Asiago","Asigliano Veneto","Barbarano Vicentino","Bassano Del Grappa","Bolzano Vicentino","Breganze","Brendola","Bressanvido","Brogliano","Caldogno","Caltrano","Calvene","Camisano Vicentino","Campiglia Dei Berici","Campolongo Sul Brenta","Carr\u00e9","Cartigliano","Cassola","Castegnero","Castelgomberto","Chiampo","Chiuppano","Cismon Del Grappa","Cogollo Del Cengio","Conco","Cornedo Vicentino","Costabissara","Creazzo","Crespadoro","Dueville","Enego","Fara Vicentino","Foza","Gallio","Gambellara","Gambugliano","Grancona","Grisignano Di Zocco","Grumolo Delle Abbadesse","Isola Vicentina","Laghi","Lastebasse","Longare","Lonigo","Lugo Di Vicenza","Lusiana","Malo","Marano Vicentino","Marostica","Mason Vicentino","Molvena","Monte Di Malo","Montebello Vicentino","Montecchio Maggiore","Montecchio Precalcino","Montegalda","Montegaldella","Monteviale","Monticello Conte Otto","Montorso Vicentino","Mossano","Mussolente","Nanto","Nogarole Vicentino","Nove","Noventa Vicentina","Orgiano","Pedemonte","Pianezze","Piovene Rocchette","Poiana Maggiore","Posina","Pove Del Grappa","Pozzoleone","Quinto Vicentino","Recoaro Terme","Roana","Romano D'ezzelino","Ros\u00e0","Rossano Veneto","Rotzo","Salcedo","San Germano Dei Berici","San Nazario","San Pietro Mussolino","San Vito Di Leguzzano","Sandrigo","Santorso","Sarcedo","Sarego","Schiavon","Schio","Solagna","Sossano","Sovizzo","Tezze Sul Brenta","Thiene","Tonezza Del Cimone","Torrebelvicino","Torri Di Quartesolo","Trissino","Valdagno","Valdastico","Valli Del Pasubio","Valstagna","Velo D'astico","Vicenza","Villaga","Villaverla","Zan\u00e9","Zermeghedo","Zovencedo","Zugliano"],"108":["Acquapendente","Arlena Di Castro","Bagnoregio","Barbarano Romano","Bassano In Teverina","Bassano Romano","Blera","Bolsena","Bomarzo","Calcata","Canepina","Canino","Capodimonte","Capranica","Caprarola","Carbognano","Castel Sant'elia","Castiglione In Teverina","Celleno","Cellere","Civita Castellana","Civitella D'agliano","Corchiano","Fabrica Di Roma","Faleria","Farnese","Gallese","Gradoli","Graffignano","Grotte Di Castro","Ischia Di Castro","Latera","Lubriano","Marta","Montalto Di Castro","Monte Romano","Montefiascone","Monterosi","Nepi","Onano","Oriolo Romano","Orte","Piansano","Proceno","Ronciglione","San Lorenzo Nuovo","Soriano Nel Cimino","Sutri","Tarquinia","Tessennano","Tuscania","Valentano","Vallerano","Vasanello","Vejano","Vetralla","Vignanello","Villa San Giovanni In Tus","Viterbo","Vitorchiano"]}; function changeProvince(p,city_value){ var city = $$('select[rel=city]')[0]; if($chk(city)){ city.empty(); var v = new Element(p).get('value'); if($chk(cities[v])){ cities[v].each(function(c){ new Element('option',{ 'value': c, 'text': c, 'selected': $chk(city_value) && city_value==c ? 'selected' : '' }).inject(city); }); } } } function checkCountry(c){ var f = ['number','postal_code','province']; var city_i = $$('input[rel=city]')[0]; if(!$chk(city_i)){ var city_i = $$('input[name=city]')[0]; if($chk(city_i)){ city_i.set('rel','city'); } } if($chk(city_i)){ var city_s = $$('select[rel=city]')[0]; if(!$chk(city_s)){ city_s = new Element('select',{ 'rel': 'city', 'class': city_i.get('class') }).inject(city_i,'after'); var province = $$('[name=province]')[0]; if($chk(province)){ changeProvince(province,city_i.get('value')); } } } if(c==1){ var op = { 'showFields': true, 'city_input_name': '', 'city_input_display': 'none', 'city_select_name': 'city', 'city_select_display': '' }; } else { var op = { 'showFields': false, 'city_input_name': 'city', 'city_input_display': '', 'city_select_name': '', 'city_select_display': 'none' }; } changeFields(f,op.showFields); if($chk(city_i) && $chk(city_s)){ city_i.set('name',op.city_input_name).setStyle('display',op.city_input_display); city_s.set('name',op.city_select_name).setStyle('display',op.city_select_display); } } window.addEvent('domready',function(){ var ut = $$('input[name=usertype]'); if($chk(ut)){ ut.addEvent('click',function(){ showUserTypeFields(this.value); }); ut.each(function(el){ if(el.checked){ showUserTypeFields(el.value); } }); } var c = $$('select[name=country]')[0]; if($chk(c)){ c = new Element(c); c.addEvent('change',function(){ checkCountry(this.get('value')); }); checkCountry(c.get('value')); } var p = $$('select[name=province]')[0]; if($chk(p)){ p.addEvent('change',function(){ changeProvince(this); }); var city = $$('input[name=city]')[0]; if($chk(city)){ changeProvince(p,city.get('value')); } } }).addEvent('load',function(){ $$('div.var_item').each(function(vr){ vr.addEvent('mouseenter',function(){ vr.set('class','var_item var_item_over'); }); vr.addEvent('mouseleave',function(){ vr.set('class','var_item'); }); }); });