function Meta(){}Meta.getContent=function(name,optionalDoc){var doc=optionalDoc||document;var content="";var metas=doc.getElementsByTagName("meta");Array.each(metas,function(element){if(name==element.getAttribute("name")){content=element.getAttribute("content");}});return content;};function Script(src){this.src=src;}Script.prototype.load=function(callback){var html='<script type="text/javascript" src="'+this.src+'"><\/script>';if(!callback){document.writeln(html);}else{var script=Elements.create(html);script.addEventListener("load",callback,false);Elements.addToHead(script);}};function ClassName(element){this.element=element;}ClassName.prototype.ClassSeperator=" ";ClassName.prototype.addClass=function(name){var classNames=this.getNames();if(!classNames.contains(name)){classNames.add(name);this.setNames(classNames);}};ClassName.prototype.removeClass=function(name){var classNames=this.getNames();classNames.remove(name);this.setNames(classNames);};ClassName.prototype.contains=function(name){return this.getNames().contains(name);};ClassName.prototype.getNames=function(){if(this.element.className){return this.element.className.split(this.ClassSeperator);}return[];};ClassName.prototype.setNames=function(classNames){this.element.className=classNames.join(this.ClassSeperator);};if(typeof (Node)=="undefined"){function Node(){}}if(typeof (Node.ELEMENT_NODE)=="undefined"){Node.ELEMENT_NODE=1;}function Elements(){}Elements.replaceContent=function(referenceElement,newContent){Elements.clearContent(referenceElement);referenceElement.appendChild(newContent);};Elements.clearContent=function(element){element.innerHTML="";};Elements.getSwfObject=function(swfName,definingProperty){var possibleLocations=[window[swfName],document[swfName],Elements.getElementById(swfName)];return possibleLocations.filter(function(item){return typeof (item)!="undefined"&&typeof (item[definingProperty])=="function";})[0];};Elements.addToHead=function(element){document.getElementsByTagName("head")[0].appendChild(element);};Elements.getElementById=function(id){var element=document.getElementById(id);return Elements.fix(element);};Elements.fixAll=function(elements){return Array.map(elements,Elements.fix);};Elements.fix=function(element){if(element==null){return element;}if(typeof (element.addEventListener)!="function"){element.addEventListener=function(type,listener,useCapture){element.attachEvent("on"+type,function(){if(element.tagName&&element.tagName.toLowerCase()=="iframe"){element=Frames.fix(element);}var wrapper={preventDefault:function(){window.event.returnValue=false;}};listener(wrapper);});};}if(typeof (element.isBlank)!="isBlank"){if(element.type=="text"||element.type=="textarea"||element.type=="hidden"){element.isBlank=function(){return element.value.length==0;};}else{if(element.type=="checkbox"){element.isBlank=function(){return !element.checked;};}else{if(element.type=="select"){element.isBlank=function(){return !element.selected;};}else{element.isBlank=function(){return false;};}}}}return element;};Elements.remove=function(element){if(element){var parent=element.parentNode;parent.removeChild(element);}};Elements.replace=function(elementToReplace,newElement){if(typeof (newElement)=="string"){newElement=Elements.createFragment(newElement);}if(newElement.outerHTML){newElement=Elements.createFragment(newElement.outerHTML);}var parent=elementToReplace.parentNode;parent.replaceChild(newElement,elementToReplace);};Elements.create=function(html){var temp=document.createElement("div");temp.innerHTML=html;return Elements.fix(temp.firstChild);};Elements.createFragment=function(html){var temp=document.createElement("div");temp.innerHTML=html;var fragment=document.createDocumentFragment();Elements.moveChildren(temp,fragment);return fragment;};Elements.moveChildren=function(from,to){while(from.childNodes.length>0){var child=from.removeChild(from.firstChild);to.appendChild(child);}};Elements.insertBefore=function(referenceElement,newElement){var parent=referenceElement.parentNode;parent.insertBefore(newElement,referenceElement);};Elements.insertAfter=function(referenceElement,newElement){var nextSibling=referenceElement.nextSibling;var parent=referenceElement.parentNode;parent.insertBefore(newElement,nextSibling);};Elements.forEachTagName=function(element,tagNames,handler){for(var t=0;t<tagNames.length;++t){var elements=element.getElementsByTagName(tagNames[t]);for(var e=0;e<elements.length;e++){handler(elements[e]);}}};Elements.getDescendentsByName=function(parent,name){var result=[];Elements.forEachTagName(parent,["*"],function(element){if(element.name==name){result.add(element);}});return result;};Elements.classesFor=function(element){return element.className.split(" ");};Elements.getElementsByClassName=function(parent,name){var result=[];Elements.forEachTagName(parent,["*"],function(element){var classes=new ClassName(element);if(classes.contains(name)){result.add(element);}});return result;};Elements.getChildByClass=function(element,className){for(var i=0;i<element.childNodes.length;i++){var childElement=element.childNodes[i];if(childElement.className!=null){if(Elements.classesFor(childElement).contains(className)){return childElement;}}}return null;};Elements.getChildByTagName=function(element,tagName){for(var i=0;i<element.childNodes.length;i++){var childElement=element.childNodes[i];if(childElement.tagName==tagName){return childElement;}}return null;};Elements.getElementByIdFrom=function(element,id){var children=element.getElementsByTagName("*");for(var i=0;children!=undefined&&i<children.length;i++){if(children[i].id==id){return children[i];}}return element.id==id?element:null;};function Size(width,height){this.setWidth(width||0);this.setHeight(height||0);}Size.prototype.setWidth=function(width){this.width=parseInt(width);};Size.prototype.setHeight=function(height){this.height=parseInt(height);};Size.prototype.isZero=function(){return this.width==0&&this.height==0;};Elements.findLargestSize=function(element){var largest=new Size();Elements.forEachTagName(element,["*"],function(child){if(child.width>largest.width&&child.height>largest.height){largest.setWidth(child.width);largest.setHeight(child.height);}else{if(child.scrollWidth>largest.width&&child.scrollHeight>largest.height){largest.setWidth(child.scrollWidth);largest.setHeight(child.scrollHeight);}}});return largest;};function Html(){}Html.Form=function(element,parameters){this.element=element;this.parameters=parameters||new Parameters();};Html.Form.prototype.submit=function(callBack){var parameters=this.getParameters();var requestMessage=new RequestMessage(this.getMethod(),this.getAction());requestMessage.asyncSend(parameters,callBack);};Html.Form.prototype.getParameters=function(){var parameters=this.parameters;Array.each(this.element.elements,function(element){if(element.type=="text"||element.type=="textarea"||element.type=="hidden"){parameters.add(element.name,element.value);}else{if(element.type=="checkbox"&&element.checked){parameters.add(element.name,element.value);}}});return parameters;};Html.Form.prototype.getMethod=function(){return this.element.method;};Html.Form.prototype.getAction=function(){return this.element.action;};function Parameters(){this.params={};}Parameters.forBody=function(){var parameters=new Parameters();parameters.add("decorator","body");return parameters;};Parameters.prototype.add=function(name,value){this.params[name]=value;return this;};Parameters.prototype.toString=function(){var result=new StringBuilder();for(var name in this.params){result.append(name).append("=").append(encodeURIComponent(this.params[name])).append("&");}return result.toString();};Parameters.prototype.contains=function(key){return this.params[key]!=null;};function Frames(){}Frames.fix=function(frame){if(frame.contentDocument!=frame.contentWindow.document){frame.contentDocument=frame.contentWindow.document;}return frame;};Frames.sizeToContent=function(frame){frame=Frames.fix(frame);frame.style.width=0;frame.style.height=0;frame.style.width=frame.contentDocument.body.scrollWidth+"px";frame.style.height=frame.contentDocument.body.scrollHeight+"px";};Frames.sizeToParent=function(frame){frame=Frames.fix(frame);frame.style.width="100%";frame.style.height="100%";frame.contentDocument.body.style.width=frame.scrollWidth+"px";frame.contentDocument.body.style.height=frame.scrollHeight+"px";};window.location.getHash=function(){var result=window.location.hash;return result.split("#")[1];};function Cookies(document){this.document=document||self.document;}Cookies.Seperator=";";Cookies.prototype.get=function(key){var map=this.parse();return map.get(key);};Cookies.prototype.set=function(key,value,path,expires){document.cookie=new Cookies.Cookie(key,value,path,expires).toString();};Cookies.prototype.parse=function(){var map=new Map();this.document.cookie.split(Cookies.Seperator).each(function(raw){var cookie=Cookies.Cookie.parse(raw);map.set(cookie.key,cookie.value);});return map;};Cookies.Cookie=function(key,value,path,expires){this.key=key;this.value=value;this.path=path||"/";this.expires=expires||"";};Cookies.Cookie.prototype.toString=function(){var result=new StringBuilder();result.append(this.key).append(Cookies.Cookie.Seperator).append(encodeURIComponent(this.value)).append(";path=").append(this.path).append(";expires=").append(this.expires);return result.toString();};Cookies.Cookie.Seperator="=";Cookies.Cookie.parse=function(value){var pair=value.trim().split(Cookies.Cookie.Seperator);return new Cookies.Cookie(pair[0],pair[1]);};