/* Copyright (c) 1999-2010 Guthy-Renker. All rights reserved */
/* This file was generated automatically on Mon Mar 15 17:30:12 PDT 2010 by rsmith */
/* Do not edit this file manually, or your changes will be lost! */
var mojo={Version:"0.1b"};
dojo.provide("mojo.command.Behavior");
dojo.declare("mojo.command.Behavior",null,{_requestObj:null,getRequest:function(){if(!this._requestObj){if(djConfig&&djConfig.isDebug){console.debug("ERROR mojo.command.Behavior - requestObj not set")
}}return this._requestObj
},_execute:function(requestObj){this._requestObj=requestObj;
if(typeof(requestObj.update)=="function"){requestObj.update()
}if(!this._requestObj){if(djConfig&&djConfig.isDebug){console.debug("ERROR mojo.command.Behavior - requestObj not set")
}}else{if(!this._requestObj.callerObj){if(djConfig&&djConfig.isDebug){console.debug("ERROR mojo.command.Behavior - callerObj not set")
}}}if(djConfig&&djConfig.isDebug){return this.execute(requestObj);
console.debug("EXCEPTION: "+ex.message+" in mojo.command.Behavior.execute() for command: "+requestObj.commandName+", controller: "+requestObj.controllerName)
}else{return this.execute(requestObj)
}},execute:function(requestObj){if(djConfig&&djConfig.isDebug){console.debug("ERROR mojo.command.Behavior - execute() not implemented")
}}});
dojo.provide("mojo.command.Command");
dojo.declare("mojo.command.Command",null,{_requestObj:null,getRequest:function(){if(!this._requestObj){if(djConfig&&djConfig.isDebug){console.debug("ERROR mojo.command.Command - requestObj not set")
}}return this._requestObj
},_execute:function(requestObj){this._requestObj=requestObj;
if(typeof(requestObj.update)=="function"){requestObj.update()
}if(djConfig&&djConfig.isDebug){try{return this.execute(requestObj)
}catch(ex){console.debug("EXCEPTION: "+ex.message+" in mojo.command.Command.execute() for command: "+requestObj.commandName+", controller: "+requestObj.controllerName)
}}else{return this.execute(requestObj)
}},execute:function(requestObj){if(djConfig&&djConfig.isDebug){console.debug("ERROR mojo.command.Command - execute() not implemented")
}},onResponse:function(data){if(djConfig&&djConfig.isDebug){console.debug("ERROR mojo.command.Command - onResponse() not implemented")
}},onError:function(error){if(djConfig&&djConfig.isDebug){console.debug("ERROR mojo.command.Command - onError() not implemented")
}}});
dojo.provide("mojo.command.Rule");
dojo.declare("mojo.command.Rule",null,{_requestObj:null,getRequest:function(){if(!this._requestObj){if(djConfig&&djConfig.isDebug){console.debug("ERROR mojo.command.Rule - requestObj not set")
}}return this._requestObj
},_execute:function(requestObj){this._requestObj=requestObj;
if(typeof(requestObj.update)=="function"){requestObj.update()
}if(!this._requestObj){if(djConfig&&djConfig.isDebug){console.debug("ERROR mojo.command.Rule - requestObj not set")
}}else{if(!this._requestObj.callerObj){if(djConfig&&djConfig.isDebug){console.debug("ERROR mojo.command.Rule - callerObj not set")
}}else{if(!this._requestObj.invocation){if(djConfig&&djConfig.isDebug){console.debug("ERROR mojo.command.Rule - invocation not set")
}}}}if(djConfig&&djConfig.isDebug){try{return this.execute(requestObj)
}catch(ex){console.debug("EXCEPTION: "+ex.message+" in mojo.command.Rule.execute() for command: "+requestObj.commandName+", controller: "+requestObj.controllerName)
}}else{return this.execute(requestObj)
}},execute:function(requestObj){if(this.condition(requestObj)){return requestObj.invocation.proceed()
}},condition:function(requestObj){if(djConfig&&djConfig.isDebug){console.debug("ERROR mojo.command.Rule - condition() not implemented")
}}});
dojo.provide("mojo.controller.Controller");
dojo.declare("mojo.controller.Controller",null,{constructor:function(contextElementObj){this._commands=new Array();
this._tags=new Array();
this._contextElementObj=contextElementObj;
this.addCommands();
this._addObservers();
this.addIntercepts();
this.onInit();
mojo.Messaging.subscribe("/mojo/controller/"+this.declaredClass+"/addObservers",this,"_addObservers");
mojo.Messaging.subscribe("/mojo/controller/addObservers",this,"_addObservers")
},_contextElementObj:null,_commands:new Array(),_queryCache:new Object(),_observers:new Object(),_tags:new Array(),getContextElement:function(){return this._contextElementObj
},onInit:function(){},_addObservers:function(){this._queryCache=new Object();
this._observers=new Object();
this.addObservers();
for(var key in this._queryCache){if(this._queryCache[key]["length"]){for(var func in this._observers[key]){if(this._observers[key][func]["length"]){for(var i=0;
i<this._queryCache[key].length;
i++){this._addObserver(this._queryCache[key][i],func,this._observers[key][func])
}}}}}this._queryCache=new Object();
this._observers=new Object()
},addObservers:function(){if(djConfig&&djConfig.isDebug){console.debug("ERROR mojo.controller.Controller - addObservers() not implemented")
}},addObserver:function(srcObj,srcFunc,cmdName,paramsObj){var isArrayOfStrings=function(srcObj){if(!dojo.isArray(srcObj)){return false
}for(var i=0,len=srcObj.length;
i<len;
i++){if(typeof(srcObj[i])!="string"){return false
}}return true
};
if(!srcObj){return
}if(typeof(srcObj)=="string"||isArrayOfStrings(srcObj)){if(!dojo.isArray(srcObj)){srcObj=[srcObj]
}for(var i=0,len=srcObj.length;
i<len;
i++){var tmpQuery=srcObj[i];
if(!this._queryCache[tmpQuery]){this._queryCache[tmpQuery]=mojo.query(tmpQuery,this.getContextElement())
}if(!this._observers[tmpQuery]){this._observers[tmpQuery]=new Object()
}if(!this._observers[tmpQuery][srcFunc]){this._observers[tmpQuery][srcFunc]=new Array()
}var obsLength=this._observers[tmpQuery][srcFunc].length;
this._observers[tmpQuery][srcFunc][obsLength]={cmdName:cmdName,paramsObj:paramsObj}
}}else{if(!dojo.isArray(srcObj)){srcObj=[srcObj]
}for(var i=0;
i<srcObj.length;
i++){this._addObserver(srcObj[i],srcFunc,[{cmdName:cmdName,paramsObj:paramsObj}])
}}},_addObserver:function(srcObj,srcFunc,cmds){var __setRequest=this._setRequest;
var __contextObj=this.getContextElement();
var __declaredClass=this.declaredClass;
var observerBatch=new Array();
for(var i=0;
i<cmds.length;
i++){if(!this._observerIsTagged(srcObj,srcFunc,cmds[i])){observerBatch.push(cmds[i]);
this._tagObserver(srcObj,srcFunc,cmds[i])
}}if(!srcObj.mojoObservers){srcObj.mojoObservers=new Object()
}if(!srcObj.mojoObservers[srcFunc]){srcObj.mojoObservers[srcFunc.toLowerCase()]=new Array()
}if(observerBatch.length>0){var eventFunc=function(e){for(var i=0;
i<observerBatch.length;
i++){if(typeof mojo!="undefined"){var requestObj=__setRequest(observerBatch[i].paramsObj,srcObj,__contextObj,e,observerBatch[i].cmdName,__declaredClass);
mojo.Messaging.publish("/mojo/command/"+__declaredClass+"."+observerBatch[i].cmdName,[requestObj])
}}};
if(["onmouseleave","onmouseenter"].indexOf(srcFunc.toLowerCase())!=-1&&MooTools&&Element.Events.mouseleave&&Element.Events.mouseenter){$(srcObj).addEvent(srcFunc.replace("on",""),eventFunc)
}else{dojo.connect(srcObj,srcFunc,eventFunc)
}srcObj.mojoObservers[srcFunc.toLowerCase()].push(eventFunc)
}},_tagObserver:function(srcObj,srcFunc,cmd){if(!srcObj.mojoObserve){srcObj.mojoObserve=new Object()
}if(!srcObj.mojoObserve[this.declaredClass]){var tagsLength=this._tags.length;
srcObj.mojoObserve[this.declaredClass]=tagsLength;
this._tags[tagsLength]=new Object()
}var tagIndex=srcObj.mojoObserve[this.declaredClass];
var tagKey=this._generateTagKey(srcFunc,cmd);
if(this._tags[tagIndex]&&!this._tags[tagIndex][tagKey]){this._tags[tagIndex][tagKey]=true
}},_generateTagKey:function(srcFunc,cmd){var tagKey=srcFunc+"_"+cmd.cmdName;
if(cmd.paramsObj){var serializeRequest;
if(typeof(cmd.paramsObj)=="function"){serializeRequest=cmd.paramsObj.toString()
}else{if(typeof(cmd.paramsObj)=="object"){for(var key in cmd.paramsObj){if(cmd.paramsObj[key]){serializeRequest+=key+":"+cmd.paramsObj[key].toString()+","
}}}}tagKey+="_"+serializeRequest
}return tagKey
},_observerIsTagged:function(srcObj,srcFunc,cmd){if(!srcObj.mojoObserve){srcObj.mojoObserve=new Object()
}var isTagged=false;
var tagKey=this._generateTagKey(srcFunc,cmd);
if(srcObj.mojoObserve[this.declaredClass]&&this._tags[srcObj.mojoObserve[this.declaredClass]]&&this._tags[srcObj.mojoObserve[this.declaredClass]][tagKey]){isTagged=true
}return isTagged
},addCommands:function(){if(djConfig&&djConfig.isDebug){console.debug("ERROR mojo.controller.Controller - addCommands() not implemented")
}},addCommand:function(cmdName,cmdObjPath){if(!this._commands[cmdName]){this._commands[cmdName]=new Array()
}var addFunc=function(cmdName,cmdObjPath,thisObj){dojo.require(cmdObjPath);
var cmdObj=eval("new "+cmdObjPath+"()");
thisObj._commands[cmdName].push(cmdObj);
mojo.Messaging.subscribe("/mojo/command/"+thisObj.declaredClass+"."+cmdName,cmdObj,"_execute")
};
if(djConfig&&djConfig.isDebug){try{addFunc(cmdName,cmdObjPath,this)
}catch(ex){console.debug("EXCEPTION: "+ex.message+" in mojo.controller.Controller.addCommand() for command: "+cmdName)
}}else{addFunc(cmdName,cmdObjPath,this)
}},getCommand:function(cmdName){if(this._commands[cmdName]){return this._commands[cmdName][0]
}return null
},getCommandChain:function(cmdName){if(this._commands[cmdName]){return this._commands[cmdName]
}return null
},addIntercepts:function(){if(djConfig&&djConfig.isDebug){console.debug("ERROR mojo.controller.Controller - addIntercepts() not implemented")
}},addIntercept:function(interceptType,interceptCmdName,cmdName,paramsObj){if(interceptCmdName==cmdName){if(djConfig&&djConfig.isDebug){console.debug("ERROR mojo.controller.Controller - a command cannot add advice to itself")
}}else{var __setRequest=this._setRequest;
var __contextObj=this.getContextElement();
var __declaredClass=this.declaredClass;
var originalFunc=this._commands[interceptCmdName][0]["_execute"];
var interceptFunc=function(invocation){if(typeof mojo!="undefined"){requestObj=__setRequest(paramsObj,invocation.args[0].callerObj,__contextObj,invocation.args[0].eventObj,cmdName,__declaredClass,invocation);
mojo.Messaging.publish("/mojo/command/"+__declaredClass+"."+cmdName,[requestObj])
}};
switch(interceptType){case"before":this._commands[interceptCmdName][0]["_execute"]=function(){var invocation={args:arguments,calleeObj:this};
interceptFunc.apply(this,[invocation]);
return originalFunc.apply(this,arguments)
};
break;
case"after":this._commands[interceptCmdName][0]["_execute"]=function(){var invocation={args:arguments,calleeObj:this};
originalFunc.apply(this,arguments);
return interceptFunc.apply(this,[invocation])
};
break;
case"around":this._commands[interceptCmdName][0]["_execute"]=function(){var invocation={args:arguments,calleeObj:this};
invocation.proceed=function(){return originalFunc.apply(this.calleeObj,this.args)
};
return interceptFunc.apply(this,[invocation])
};
break
}}},_setRequest:function(paramsObj,callerObj,contextObj,eventObj,cmdName,ctrlName,invocation){var requestObj=new mojo.controller.Request(paramsObj,callerObj,contextObj,eventObj,cmdName,ctrlName,invocation);
return requestObj
}});
mojo.controller.Controller.updateObservers=function(controllerName){if(controllerName){mojo.Messaging.publish("/mojo/controller/"+controllerName+"/addObservers")
}else{mojo.Messaging.publish("/mojo/controller/addObservers")
}};
dojo.declare("mojo.controller.Request",null,{constructor:function(paramsObj,callerObj,contextObj,eventObj,commandName,controllerName,invocation){if(typeof(paramsObj)=="function"){this.paramsObj={};
this._paramsFunc=paramsObj
}else{if(typeof(paramsObj)=="object"){this.paramsObj=paramsObj
}}this.callerObj=callerObj;
this.contextObj=contextObj;
this.eventObj=eventObj;
this.commandName=commandName;
this.controllerName=controllerName;
this.invocation=invocation
},_paramsFunc:null,paramsObj:null,callerObj:null,contextObj:null,eventObj:null,commandName:null,controllerName:null,invocation:null,update:function(){if(this._paramsFunc&&typeof(this._paramsFunc)=="function"){var latest=this._paramsFunc(this.contextObj,this.callerObj);
for(var key in latest){this.paramsObj[key]=latest[key]
}}},getParams:function(){if(!this.paramsObj){this.update()
}return this.paramsObj
},getCaller:function(){return this.callerObj
},getContextElement:function(){return this.contextObj
},getEvent:function(){return this.eventObj
},getCommandName:function(){return this.commandName
},getControllerName:function(){return this.controllerName
},getInvocation:function(){return this.invocation
}});
dojo.provide("mojo.controller.Map");
var __mojoControllerMap=null;
dojo.declare("mojo.controller.Map",null,{constructor:function(){mojo.Messaging.subscribe("/mojo/controller/mapControllers",this,"mapControllers")
},_controllers:new Array(),_siteMap:null,getSiteMap:function(){if(!this._siteMap){if(djConfig&&djConfig.isDebug){console.debug("ERROR mojo.controller.Map - siteMap not set")
}}return this._siteMap
},setSiteMap:function(siteMapObj){this._siteMap=siteMapObj
},mapControllers:function(mapContextObj){var siteMap=this.getSiteMap();
for(pattern in siteMap){if(pattern.indexOf("#")==0){var contextElementObj;
if(mapContextObj&&typeof(mapContextObj)=="object"){contextElementObj=mojo.queryFirst(pattern,mapContextObj)
}else{contextElementObj=mojo.queryFirst(pattern)
}if(contextElementObj){if(mapContextObj&&typeof(mapContextObj)=="object"){this._mapControllers(siteMap[pattern],contextElementObj)
}else{var isInDialog=false;
var parent=contextElementObj.parentNode;
while(parent){if(dojo.hasClass(parent,"dojoDialog")){isInDialog=true;
break
}parent=parent.parentNode
}if(!isInDialog){this._mapControllers(siteMap[pattern],contextElementObj)
}}}}else{if(mapContextObj&&typeof(mapContextObj)=="string"){var regex=new RegExp(pattern);
if(regex.test(mapContextObj)){this._mapControllers(siteMap[pattern])
}}}}this.onComplete()
},_mapControllers:function(controllers,contextElementObj){var controllersLength=controllers.length;
for(var i=0;
i<controllersLength;
i++){var controllerName=controllers[i].controller;
this.mapController(controllerName,contextElementObj)
}},mapController:function(controllerName,contextElementObj){if(!this._controllers[controllerName]){var mapFunc=function(controllerName,contextElementObj,thisObj){dojo.require(controllerName);
if(contextElementObj){thisObj._controllers[controllerName]=eval("new "+controllerName+"(contextElementObj)")
}else{thisObj._controllers[controllerName]=eval("new "+controllerName+"(null)")
}};
if(djConfig&&djConfig.isDebug){try{mapFunc(controllerName,contextElementObj,this)
}catch(ex){console.debug("EXCEPTION: "+ex.message+" in mojo.controller.Map.mapController() for controller: "+controllerName)
}}else{mapFunc(controllerName,contextElementObj,this)
}}},onComplete:function(){}});
mojo.controller.Map.mapControllers=function(mapContextObj){mojo.Messaging.publish("/mojo/controller/mapControllers",[mapContextObj])
};
mojo.controller.Map.getInstance=function(){if(__mojoControllerMap==null){__mojoControllerMap=new mojo.controller.Map()
}return __mojoControllerMap
};
dojo.provide("mojo.helper.Events");
mojo.fireEvent=function(element,eventName){var functions=element.mojoObservers[eventName.toLowerCase()];
if(functions){functions.forEach(function(func){func()
})
}};
dojo.provide("mojo.helper.String");
mojo.toSentenceCase=function(string){return string.charAt(0).toUpperCase()+string.replace(/ \w/g,function(m){return m.toUpperCase()
}).substring(1)
};
dojo.provide("mojo.History");
var __mojoHistory=null;
dojo.declare("mojo.History",null,{constructor:function(){var thisObj=this;
if(rsh.dhtmlHistory._isIE){rsh.dhtmlHistory.init();
dojo.connect(rsh.dhtmlHistory,"_fireHistoryEvent",function(newHash){thisObj.setHash(newHash);
thisObj._execute()
})
}else{this._interval=window.setInterval(function(){thisObj._execute()
},100)
}},_interval:null,_defaultHash:"",_savedHash:"",_paramsObj:null,_topic:null,getHash:function(){var hash=window.location.hash;
if(hash.length>0){hash=hash.substring(1)
}if(hash.toLowerCase()=="null"||hash.toLowerCase()=="undefined"){hash=""
}return hash
},setHash:function(newHash){window.location.hash=newHash
},setDefault:function(defaultHashObj){if(typeof(defaultHashObj)=="string"){this._defaultHash=defaultHashObj
}else{if(typeof(defaultHashObj)=="object"){this._defaultHash=this._parseObj(defaultHashObj)
}}this._execute()
},_execute:function(){var currentHash=this.getHash();
if(currentHash.length==0&&this._defaultHash.length>0){currentHash=this._defaultHash
}if(this._savedHash!=currentHash){document.title=document.title.replace(window.location.hash,"");
this._savedHash=currentHash;
this._paramsObj=this._parseHash(this._savedHash);
this._topic=this._paramsObj.topic;
this.onChange();
if(this._topic){mojo.Messaging.publish(this._topic,this._paramsObj)
}}},_parseHash:function(hash){var obj=new Object();
var vars=hash.split("&");
for(var i=0;
i<vars.length;
i++){var pair=vars[i].split("=");
if(pair.length==2){obj[pair[0]]=unescape(pair[1])
}}return obj
},_parseObj:function(obj){var hash="";
for(var key in obj){hash+=key+"="+escape(obj[key].toString())+"&"
}return hash
},onChange:function(){},getParams:function(){return this._paramsObj
},getTopic:function(){return this._topic
}});
mojo.History.getInstance=function(){if(__mojoHistory==null){__mojoHistory=new mojo.History()
}return __mojoHistory
};
dojo.provide("mojo.*");
dojo.provide("mojo.Messaging");
var __mojoMessagingTopics=new Array();
mojo.Messaging.publish=function(topic,messageObj){var topicObj=mojo.Messaging.getTopic(topic);
topicObj.setMessage(messageObj);
topicObj.onPublish(messageObj);
dojo.publish(topic,messageObj);
topicObj.setMessage(null)
};
mojo.Messaging.subscribe=function(topic,targetObj,targetFunc){mojo.Messaging.getTopic(topic);
return dojo.subscribe(topic,targetObj,targetFunc)
};
mojo.Messaging.unsubscribe=function(handle){dojo.unsubscribe(handle)
};
mojo.Messaging.getTopic=function(topic){if(!__mojoMessagingTopics[topic]){__mojoMessagingTopics[topic]=new mojo.MessagingTopic(topic)
}return __mojoMessagingTopics[topic]
};
dojo.declare("mojo.MessagingTopic",null,{constructor:function(topic){this._topic=topic
},_topic:null,_messageObj:null,getTopic:function(){return this._topic
},getMessage:function(){return this._messageObj
},setMessage:function(messageObj){this._messageObj=messageObj
},onPublish:function(){}});
dojo.provide("mojo.Model");
var __mojoModel=new Array();
var __mojoModelReferences=new Array();
mojo.Model.set=function(key,valueObj){__mojoModel[key]=valueObj;
mojo.Model.notify(key)
};
mojo.Model.add=function(key,valueObj){if(mojo.Model.contains(key)){if(!dojo.isArray(__mojoModel[key])){var tmpModel=__mojoModel[key];
__mojoModel[key]=new Array();
__mojoModel[key].push(tmpModel)
}if(dojo.isArray(valueObj)){for(var i=0;
i<valueObj.length;
i++){__mojoModel[key].push(valueObj[i])
}}else{__mojoModel[key].push(valueObj)
}mojo.Model.notify(key)
}else{mojo.Model.set(key,valueObj)
}};
mojo.Model.get=function(key){var tmp=__mojoModel[key];
if(tmp){return tmp
}else{if(djConfig&&djConfig.isDebug){console.debug('WARNING mojo.Model - No entry found for "'+key+'" key')
}}};
mojo.Model.getReference=function(key){if(!__mojoModelReferences[key]){__mojoModelReferences[key]=new mojo.ModelReference(key)
}return __mojoModelReferences[key]
};
mojo.Model.remove=function(key){__mojoModel[key]=null;
mojo.Model.notify(key)
};
mojo.Model.contains=function(key){var tmp=__mojoModel[key];
if(tmp){return true
}return false
};
mojo.Model.notify=function(key){__mojoModel.__mojoTemplateControllers={};
var ref=mojo.Model.getReference(key);
ref.onNotify();
mojo.Messaging.publish("/mojo/model/"+key);
for(var controllerName in __mojoModel.__mojoTemplateControllers){mojo.controller.Controller.updateObservers(controllerName)
}};
mojo.Model.addObserver=function(key,targetObj,targetFunc){return mojo.Messaging.subscribe("/mojo/model/"+key,targetObj,targetFunc)
};
mojo.Model.removeObserver=function(handle){mojo.Messaging.unsubscribe(handle)
};
dojo.declare("mojo.ModelReference",null,{constructor:function(key){this._key=key
},_key:null,getKey:function(){return this._key
},getValue:function(){return mojo.Model.get(this._key)
},setValue:function(valueObj){mojo.Model.set(this._key,valueObj)
},onNotify:function(){}});
dojo.provide("mojo.query");
mojo.query=function(cssSelectors,elementObj){if(elementObj&&(typeof elementObj=="string"||typeof elementObj=="object")){var results=dojo.query(cssSelectors,elementObj)
}else{if((new RegExp(/^\#[a-zA-Z0-9\-\_]*$/)).test(cssSelectors)){var tmpElm=document.getElementById(cssSelectors.substring(1));
if(tmpElm){var results=[tmpElm]
}else{var results=[]
}}else{var results=dojo.query(cssSelectors)
}}return results
};
mojo.queryFirst=function(cssSelectors,elementObj){var results=mojo.query(cssSelectors,elementObj);
if(results.length>0){return results[0]
}return null
};
mojo.distinct=function(elementListObj){if(elementListObj.length==0){return elementListObj
}var results=[],n;
for(var i=0,l=elementListObj.length;
i<l;
i++){if(!(n=elementListObj[i])._counted){n._counted=true;
results.push(n)
}}for(var i=0,node;
node=results[i];
i++){node._counted=undefined
}return results
};
dojo.provide("mojo.service.Delegate");
dojo.declare("mojo.service.Delegate",null,{constructor:function(callerObj){this._callerObj=callerObj
},_callerObj:null,getCaller:function(){return this._callerObj
},setCaller:function(callerObj){this._callerObj=callerObj
}});
dojo.provide("mojo.service.Locator");
var __mojoServiceRegistry=new Array();
dojo.declare("mojo.service.Locator",null,{constructor:function(){if(__mojoServiceRegistry.length==0){this.addServices()
}},addServices:function(){if(djConfig&&djConfig.isDebug){console.debug("ERROR mojo.service.Locator - addServices() not implemented")
}},addService:function(serviceObj){__mojoServiceRegistry[serviceObj.getName()]=serviceObj
},getService:function(name){return __mojoServiceRegistry[name]
}});
dojo.provide("mojo.service.Service");
dojo.declare("mojo.service.Service",null,{constructor:function(name,uri,paramsObj){this.setName(name);
this.setUri(uri);
this.setParams(paramsObj)
},_name:"",_uri:"",_params:new Object(),getName:function(){return this._name
},setName:function(name){this._name=name
},getUri:function(){return this._uri
},setUri:function(uri){this._uri=uri
},getParams:function(){return this._paramsObj
},setParams:function(paramsObj){if(paramsObj){this._paramsObj=paramsObj
}},invoke:function(paramsObj,callerObj){if(typeof TrimPath!="undefined"&&TrimPath.parseTemplate){var uriFinal=TrimPath.parseTemplate(this.getUri()).process(paramsObj);
if(paramsObj&&paramsObj._MODIFIERS&&paramsObj.defined){delete paramsObj._MODIFIERS;
delete paramsObj.defined
}}else{var uriFinal=this.getUri()
}var isJson=false;
if(this.getParams()&&this.getParams().json!=null){isJson=this.getParams().json
}var httpMethod="GET";
if(this.getParams()&&this.getParams().method){httpMethod=this.getParams().method
}else{if(this.getName().toLowerCase().indexOf("add")==0){httpMethod="POST"
}else{if(this.getName().toLowerCase().indexOf("update")==0){httpMethod="PUT"
}else{if(this.getName().toLowerCase().indexOf("delete")==0){httpMethod="DELETE"
}}}}var cache=false;
if(this.getParams()&&this.getParams().cache!=null){cache=this.getParams().cache
}else{if(httpMethod.toUpperCase()=="GET"){cache=true
}}var cacheExpiry=0;
if(this.getParams()&&this.getParams().cacheExpiry!=null){cacheExpiry=this.getParams().cacheExpiry
}var retry=0;
if(this.getParams()&&this.getParams().retry){retry=this.getParams().retry
}else{if(httpMethod.toUpperCase()=="GET"){retry=1
}}var hijax=false;
if(this.getParams()&&this.getParams().hijax){hijax=this.getParams().hijax
}if(hijax&&callerObj.getRequest()&&callerObj.getRequest().callerObj&&callerObj.getRequest().callerObj.tagName=="A"){uriFinal=callerObj.getRequest().callerObj.href
}var tried=0;
var serializeName=this.getName();
for(var key in paramsObj){if(typeof(paramsObj[key])!="function"){serializeName+=paramsObj[key]
}}var errorCallback=function(errorObj,httpObj){var errors=new Array();
if(httpObj){errorObj.code=httpObj.status;
errors.push(errorObj)
}if(typeof(errorObj)=="string"){var msg=errorObj;
errorObj=new Object();
errorObj.message=msg
}if(errorObj.name){errorObj.code=errorObj.name;
errors.push(errorObj)
}if(errorObj.errors){errors=errorObj.errors
}if(errorObj.error){errors.push(errorObj.error)
}if(errors[0]["redirectUrl"]){window.location.replace(errors[0]["redirectUrl"])
}if(httpObj&&retry>=tried){serviceInvoke()
}else{callerObj.onError(errors)
}};
var thisObj=this;
var serviceInvoke=function(){return dojo["xhr"+mojo.toSentenceCase(httpMethod.toLowerCase())]({url:uriFinal,preventCache:(!cache&&httpMethod=="GET"),handleAs:isJson?"json":"text",content:paramsObj,load:function(response,ioArgs){tried++;
if(ioArgs.handleAs=="json"){try{if(response.error||response.errors){errorCallback(response)
}else{if(cache){thisObj._setCache(serializeName,response,cacheExpiry)
}callerObj.onResponse(response,ioArgs.args.content)
}}catch(ex){errorCallback(ex)
}}else{if(cache){thisObj._setCache(serializeName,response,cacheExpiry)
}callerObj.onResponse(response,ioArgs.args.content)
}},error:function(response,ioArgs){tried++;
errorCallback(response,ioArgs.xhr)
}})
};
var cacheObj;
if(cache){cacheObj=this._getCache(serializeName)
}if(cacheObj){callerObj.onResponse(cacheObj.data,paramsObj)
}else{var currentXhr=serviceInvoke()
}return currentXhr
},_setCache:function(key,data,cacheExpiry){var expiryTime=0;
if(cacheExpiry>0){expiryTime=(new Date()).getTime()+(cacheExpiry*1000)
}mojo.Model.set(key,{data:data,expiryTime:expiryTime})
},_getCache:function(key){var cacheObj=null;
if(mojo.Model.contains(key)){cacheObj=mojo.Model.get(key);
var now=(new Date()).getTime();
if(cacheObj.expiryTime>0&&now>cacheObj.expiryTime){mojo.Model.remove(key);
cacheObj=null
}}return cacheObj
}});
var Prototype={Version:"1.6.0.3",Browser:{IE:!!(window.attachEvent&&navigator.userAgent.indexOf("Opera")===-1),Opera:navigator.userAgent.indexOf("Opera")>-1,WebKit:navigator.userAgent.indexOf("AppleWebKit/")>-1,Gecko:navigator.userAgent.indexOf("Gecko")>-1&&navigator.userAgent.indexOf("KHTML")===-1,MobileSafari:!!navigator.userAgent.match(/Apple.*Mobile.*Safari/)},BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:!!window.HTMLElement,SpecificElementExtensions:document.createElement("div")["__proto__"]&&document.createElement("div")["__proto__"]!==document.createElement("form")["__proto__"]},ScriptFragment:"<script[^>]*>([\\S\\s]*?)<\/script>",JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(x){return x
}};
if(Prototype.Browser.MobileSafari){Prototype.BrowserFeatures.SpecificElementExtensions=false
}var Class={create:function(){var parent=null,properties=$A(arguments);
if(Object.isFunction(properties[0])){parent=properties.shift()
}function klass(){this.initialize.apply(this,arguments)
}Object.extend(klass,Class.Methods);
klass.superclass=parent;
klass.subclasses=[];
if(parent){var subclass=function(){};
subclass.prototype=parent.prototype;
klass.prototype=new subclass;
parent.subclasses.push(klass)
}for(var i=0;
i<properties.length;
i++){klass.addMethods(properties[i])
}if(!klass.prototype.initialize){klass.prototype.initialize=Prototype.emptyFunction
}klass.prototype.constructor=klass;
return klass
}};
Class.Methods={addMethods:function(source){var ancestor=this.superclass&&this.superclass.prototype;
var properties=Object.keys(source);
if(!Object.keys({toString:true}).length){properties.push("toString","valueOf")
}for(var i=0,length=properties.length;
i<length;
i++){var property=properties[i],value=source[property];
if(ancestor&&Object.isFunction(value)&&value.argumentNames().first()=="$super"){var method=value;
value=(function(m){return function(){return ancestor[m].apply(this,arguments)
}
})(property).wrap(method);
value.valueOf=method.valueOf.bind(method);
value.toString=method.toString.bind(method)
}this.prototype[property]=value
}return this
}};
var Abstract={};
Object.extend=function(destination,source){for(var property in source){destination[property]=source[property]
}return destination
};
Object.extend(Object,{inspect:function(object){try{if(Object.isUndefined(object)){return"undefined"
}if(object===null){return"null"
}return object.inspect?object.inspect():String(object)
}catch(e){if(e instanceof RangeError){return"..."
}throw e
}},toJSON:function(object){var type=typeof object;
switch(type){case"undefined":case"function":case"unknown":return;
case"boolean":return object.toString()
}if(object===null){return"null"
}if(object.toJSON){return object.toJSON()
}if(Object.isElement(object)){return
}var results=[];
for(var property in object){var value=Object.toJSON(object[property]);
if(!Object.isUndefined(value)){results.push(property.toJSON()+": "+value)
}}return"{"+results.join(", ")+"}"
},toQueryString:function(object){return $H(object).toQueryString()
},toHTML:function(object){return object&&object.toHTML?object.toHTML():String.interpret(object)
},keys:function(object){var keys=[];
for(var property in object){keys.push(property)
}return keys
},values:function(object){var values=[];
for(var property in object){values.push(object[property])
}return values
},clone:function(object){return Object.extend({},object)
},isElement:function(object){return !!(object&&object.nodeType==1)
},isArray:function(object){return object!=null&&typeof object=="object"&&"splice" in object&&"join" in object
},isHash:function(object){return object instanceof Hash
},isFunction:function(object){return typeof object=="function"
},isString:function(object){return typeof object=="string"
},isNumber:function(object){return typeof object=="number"
},isUndefined:function(object){return typeof object=="undefined"
}});
Object.extend(Function.prototype,{argumentNames:function(){var names=this.toString().match(/^[\s\(]*function[^(]*\(([^\)]*)\)/)[1].replace(/\s+/g,"").split(",");
return names.length==1&&!names[0]?[]:names
},bind:function(){if(arguments.length<2&&Object.isUndefined(arguments[0])){return this
}var __method=this,args=$A(arguments),object=args.shift();
return function(){return __method.apply(object,args.concat($A(arguments)))
}
},bindAsEventListener:function(){var __method=this,args=$A(arguments),object=args.shift();
return function(event){return __method.apply(object,[event||window.event].concat(args))
}
},curry:function(){if(!arguments.length){return this
}var __method=this,args=$A(arguments);
return function(){return __method.apply(this,args.concat($A(arguments)))
}
},delay:function(){var __method=this,args=$A(arguments),timeout=args.shift()*1000;
return window.setTimeout(function(){return __method.apply(__method,args)
},timeout)
},defer:function(){var args=[0.01].concat($A(arguments));
return this.delay.apply(this,args)
},wrap:function(wrapper){var __method=this;
return function(){return wrapper.apply(this,[__method.bind(this)].concat($A(arguments)))
}
},methodize:function(){if(this._methodized){return this._methodized
}var __method=this;
return this._methodized=function(){return __method.apply(null,[this].concat($A(arguments)))
}
}});
Date.prototype.toJSON=function(){return'"'+this.getUTCFullYear()+"-"+(this.getUTCMonth()+1).toPaddedString(2)+"-"+this.getUTCDate().toPaddedString(2)+"T"+this.getUTCHours().toPaddedString(2)+":"+this.getUTCMinutes().toPaddedString(2)+":"+this.getUTCSeconds().toPaddedString(2)+'Z"'
};
var Try={these:function(){var returnValue;
for(var i=0,length=arguments.length;
i<length;
i++){var lambda=arguments[i];
try{returnValue=lambda();
break
}catch(e){}}return returnValue
}};
RegExp.prototype.match=RegExp.prototype.test;
RegExp.escape=function(str){return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")
};
var PeriodicalExecuter=Class.create({initialize:function(callback,frequency){this.callback=callback;
this.frequency=frequency;
this.currentlyExecuting=false;
this.registerCallback()
},registerCallback:function(){this.timer=setInterval(this.onTimerEvent.bind(this),this.frequency*1000)
},execute:function(){this.callback(this)
},stop:function(){if(!this.timer){return
}clearInterval(this.timer);
this.timer=null
},onTimerEvent:function(){if(!this.currentlyExecuting){try{this.currentlyExecuting=true;
this.execute()
}finally{this.currentlyExecuting=false
}}}});
Object.extend(String,{interpret:function(value){return value==null?"":String(value)
},specialChar:{"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r","\\":"\\\\"}});
Object.extend(String.prototype,{gsub:function(pattern,replacement){var result="",source=this,match;
replacement=arguments.callee.prepareReplacement(replacement);
while(source.length>0){if(match=source.match(pattern)){result+=source.slice(0,match.index);
result+=String.interpret(replacement(match));
source=source.slice(match.index+match[0].length)
}else{result+=source,source=""
}}return result
},sub:function(pattern,replacement,count){replacement=this.gsub.prepareReplacement(replacement);
count=Object.isUndefined(count)?1:count;
return this.gsub(pattern,function(match){if(--count<0){return match[0]
}return replacement(match)
})
},scan:function(pattern,iterator){this.gsub(pattern,iterator);
return String(this)
},truncate:function(length,truncation){length=length||30;
truncation=Object.isUndefined(truncation)?"...":truncation;
return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this)
},strip:function(){return this.replace(/^\s+/,"").replace(/\s+$/,"")
},stripTags:function(){return this.replace(/<\/?[^>]+>/gi,"")
},stripScripts:function(){return this.replace(new RegExp(Prototype.ScriptFragment,"img"),"")
},extractScripts:function(){var matchAll=new RegExp(Prototype.ScriptFragment,"img");
var matchOne=new RegExp(Prototype.ScriptFragment,"im");
return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||["",""])[1]
})
},evalScripts:function(){return this.extractScripts().map(function(script){return eval(script)
})
},escapeHTML:function(){var self=arguments.callee;
self.text.data=this;
return self.div.innerHTML
},unescapeHTML:function(){var div=new Element("div");
div.innerHTML=this.stripTags();
return div.childNodes[0]?(div.childNodes.length>1?$A(div.childNodes).inject("",function(memo,node){return memo+node.nodeValue
}):div.childNodes[0].nodeValue):""
},toQueryParams:function(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);
if(!match){return{}
}return match[1].split(separator||"&").inject({},function(hash,pair){if((pair=pair.split("="))[0]){var key=decodeURIComponent(pair.shift());
var value=pair.length>1?pair.join("="):pair[0];
if(value!=undefined){value=decodeURIComponent(value)
}if(key in hash){if(!Object.isArray(hash[key])){hash[key]=[hash[key]]
}hash[key].push(value)
}else{hash[key]=value
}}return hash
})
},toArray:function(){return this.split("")
},succ:function(){return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1)
},times:function(count){return count<1?"":new Array(count+1).join(this)
},camelize:function(){var parts=this.split("-"),len=parts.length;
if(len==1){return parts[0]
}var camelized=this.charAt(0)=="-"?parts[0].charAt(0).toUpperCase()+parts[0].substring(1):parts[0];
for(var i=1;
i<len;
i++){camelized+=parts[i].charAt(0).toUpperCase()+parts[i].substring(1)
}return camelized
},capitalize:function(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase()
},underscore:function(){return this.gsub(/::/,"/").gsub(/([A-Z]+)([A-Z][a-z])/,"#{1}_#{2}").gsub(/([a-z\d])([A-Z])/,"#{1}_#{2}").gsub(/-/,"_").toLowerCase()
},dasherize:function(){return this.gsub(/_/,"-")
},inspect:function(useDoubleQuotes){var escapedString=this.gsub(/[\x00-\x1f\\]/,function(match){var character=String.specialChar[match[0]];
return character?character:"\\u00"+match[0].charCodeAt().toPaddedString(2,16)
});
if(useDoubleQuotes){return'"'+escapedString.replace(/"/g,'\\"')+'"'
}return"'"+escapedString.replace(/'/g,"\\'")+"'"
},toJSON:function(){return this.inspect(true)
},unfilterJSON:function(filter){return this.sub(filter||Prototype.JSONFilter,"#{1}")
},isJSON:function(){var str=this;
if(str.blank()){return false
}str=this.replace(/\\./g,"@").replace(/"[^"\\\n\r]*"/g,"");
return(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str)
},evalJSON:function(sanitize){var json=this.unfilterJSON();
try{if(!sanitize||json.isJSON()){return eval("("+json+")")
}}catch(e){}throw new SyntaxError("Badly formed JSON string: "+this.inspect())
},include:function(pattern){return this.indexOf(pattern)>-1
},startsWith:function(pattern){return this.indexOf(pattern)===0
},endsWith:function(pattern){var d=this.length-pattern.length;
return d>=0&&this.lastIndexOf(pattern)===d
},empty:function(){return this==""
},blank:function(){return/^\s*$/.test(this)
},interpolate:function(object,pattern){return new Template(this,pattern).evaluate(object)
}});
if(Prototype.Browser.WebKit||Prototype.Browser.IE){Object.extend(String.prototype,{escapeHTML:function(){return this.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")
},unescapeHTML:function(){return this.stripTags().replace(/&amp;/g,"&").replace(/&lt;/g,"<").replace(/&gt;/g,">")
}})
}String.prototype.gsub.prepareReplacement=function(replacement){if(Object.isFunction(replacement)){return replacement
}var template=new Template(replacement);
return function(match){return template.evaluate(match)
}
};
String.prototype.parseQuery=String.prototype.toQueryParams;
Object.extend(String.prototype.escapeHTML,{div:document.createElement("div"),text:document.createTextNode("")});
String.prototype.escapeHTML.div.appendChild(String.prototype.escapeHTML.text);
var Template=Class.create({initialize:function(template,pattern){this.template=template.toString();
this.pattern=pattern||Template.Pattern
},evaluate:function(object){if(Object.isFunction(object.toTemplateReplacements)){object=object.toTemplateReplacements()
}return this.template.gsub(this.pattern,function(match){if(object==null){return""
}var before=match[1]||"";
if(before=="\\"){return match[2]
}var ctx=object,expr=match[3];
var pattern=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;
match=pattern.exec(expr);
if(match==null){return before
}while(match!=null){var comp=match[1].startsWith("[")?match[2].gsub("\\\\]","]"):match[1];
ctx=ctx[comp];
if(null==ctx||""==match[3]){break
}expr=expr.substring("["==match[3]?match[1].length:match[0].length);
match=pattern.exec(expr)
}return before+String.interpret(ctx)
})
}});
Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;
var $break={};
var Enumerable={each:function(iterator,context){var index=0;
try{this._each(function(value){iterator.call(context,value,index++)
})
}catch(e){if(e!=$break){throw e
}}return this
},eachSlice:function(number,iterator,context){var index=-number,slices=[],array=this.toArray();
if(number<1){return array
}while((index+=number)<array.length){slices.push(array.slice(index,index+number))
}return slices.collect(iterator,context)
},all:function(iterator,context){iterator=iterator||Prototype.K;
var result=true;
this.each(function(value,index){result=result&&!!iterator.call(context,value,index);
if(!result){throw $break
}});
return result
},any:function(iterator,context){iterator=iterator||Prototype.K;
var result=false;
this.each(function(value,index){if(result=!!iterator.call(context,value,index)){throw $break
}});
return result
},collect:function(iterator,context){iterator=iterator||Prototype.K;
var results=[];
this.each(function(value,index){results.push(iterator.call(context,value,index))
});
return results
},detect:function(iterator,context){var result;
this.each(function(value,index){if(iterator.call(context,value,index)){result=value;
throw $break
}});
return result
},findAll:function(iterator,context){var results=[];
this.each(function(value,index){if(iterator.call(context,value,index)){results.push(value)
}});
return results
},grep:function(filter,iterator,context){iterator=iterator||Prototype.K;
var results=[];
if(Object.isString(filter)){filter=new RegExp(filter)
}this.each(function(value,index){if(filter.match(value)){results.push(iterator.call(context,value,index))
}});
return results
},include:function(object){if(Object.isFunction(this.indexOf)){if(this.indexOf(object)!=-1){return true
}}var found=false;
this.each(function(value){if(value==object){found=true;
throw $break
}});
return found
},inGroupsOf:function(number,fillWith){fillWith=Object.isUndefined(fillWith)?null:fillWith;
return this.eachSlice(number,function(slice){while(slice.length<number){slice.push(fillWith)
}return slice
})
},inject:function(memo,iterator,context){this.each(function(value,index){memo=iterator.call(context,memo,value,index)
});
return memo
},invoke:function(method){var args=$A(arguments).slice(1);
return this.map(function(value){return value[method].apply(value,args)
})
},max:function(iterator,context){iterator=iterator||Prototype.K;
var result;
this.each(function(value,index){value=iterator.call(context,value,index);
if(result==null||value>=result){result=value
}});
return result
},min:function(iterator,context){iterator=iterator||Prototype.K;
var result;
this.each(function(value,index){value=iterator.call(context,value,index);
if(result==null||value<result){result=value
}});
return result
},partition:function(iterator,context){iterator=iterator||Prototype.K;
var trues=[],falses=[];
this.each(function(value,index){(iterator.call(context,value,index)?trues:falses).push(value)
});
return[trues,falses]
},pluck:function(property){var results=[];
this.each(function(value){results.push(value[property])
});
return results
},reject:function(iterator,context){var results=[];
this.each(function(value,index){if(!iterator.call(context,value,index)){results.push(value)
}});
return results
},sortBy:function(iterator,context){return this.map(function(value,index){return{value:value,criteria:iterator.call(context,value,index)}
}).sort(function(left,right){var a=left.criteria,b=right.criteria;
return a<b?-1:a>b?1:0
}).pluck("value")
},toArray:function(){return this.map()
},zip:function(){var iterator=Prototype.K,args=$A(arguments);
if(Object.isFunction(args.last())){iterator=args.pop()
}var collections=[this].concat(args).map($A);
return this.map(function(value,index){return iterator(collections.pluck(index))
})
},size:function(){return this.toArray().length
},inspect:function(){return"#<Enumerable:"+this.toArray().inspect()+">"
}};
Object.extend(Enumerable,{map:Enumerable.collect,find:Enumerable.detect,select:Enumerable.findAll,filter:Enumerable.findAll,member:Enumerable.include,entries:Enumerable.toArray,every:Enumerable.all,some:Enumerable.any});
function $A(iterable){if(!iterable){return[]
}if(iterable.toArray){return iterable.toArray()
}var length=iterable.length||0,results=new Array(length);
while(length--){results[length]=iterable[length]
}return results
}if(Prototype.Browser.WebKit){$A=function(iterable){if(!iterable){return[]
}if(!(typeof iterable==="function"&&typeof iterable.length==="number"&&typeof iterable.item==="function")&&iterable.toArray){return iterable.toArray()
}var length=iterable.length||0,results=new Array(length);
while(length--){results[length]=iterable[length]
}return results
}
}Array.from=$A;
Object.extend(Array.prototype,Enumerable);
if(!Array.prototype._reverse){Array.prototype._reverse=Array.prototype.reverse
}Object.extend(Array.prototype,{_each:function(iterator){for(var i=0,length=this.length;
i<length;
i++){iterator(this[i])
}},clear:function(){this.length=0;
return this
},first:function(){return this[0]
},last:function(){return this[this.length-1]
},compact:function(){return this.select(function(value){return value!=null
})
},flatten:function(){return this.inject([],function(array,value){return array.concat(Object.isArray(value)?value.flatten():[value])
})
},without:function(){var values=$A(arguments);
return this.select(function(value){return !values.include(value)
})
},reverse:function(inline){return(inline!==false?this:this.toArray())._reverse()
},reduce:function(){return this.length>1?this:this[0]
},uniq:function(sorted){return this.inject([],function(array,value,index){if(0==index||(sorted?array.last()!=value:!array.include(value))){array.push(value)
}return array
})
},intersect:function(array){return this.uniq().findAll(function(item){return array.detect(function(value){return item===value
})
})
},clone:function(){return[].concat(this)
},size:function(){return this.length
},inspect:function(){return"["+this.map(Object.inspect).join(", ")+"]"
},toJSON:function(){var results=[];
this.each(function(object){var value=Object.toJSON(object);
if(!Object.isUndefined(value)){results.push(value)
}});
return"["+results.join(", ")+"]"
}});
if(Object.isFunction(Array.prototype.forEach)){Array.prototype._each=Array.prototype.forEach
}if(!Array.prototype.indexOf){Array.prototype.indexOf=function(item,i){i||(i=0);
var length=this.length;
if(i<0){i=length+i
}for(;
i<length;
i++){if(this[i]===item){return i
}}return -1
}
}if(!Array.prototype.lastIndexOf){Array.prototype.lastIndexOf=function(item,i){i=isNaN(i)?this.length:(i<0?this.length+i:i)+1;
var n=this.slice(0,i).reverse().indexOf(item);
return(n<0)?n:i-n-1
}
}Array.prototype.toArray=Array.prototype.clone;
function $w(string){if(!Object.isString(string)){return[]
}string=string.strip();
return string?string.split(/\s+/):[]
}if(Prototype.Browser.Opera){Array.prototype.concat=function(){var array=[];
for(var i=0,length=this.length;
i<length;
i++){array.push(this[i])
}for(var i=0,length=arguments.length;
i<length;
i++){if(Object.isArray(arguments[i])){for(var j=0,arrayLength=arguments[i].length;
j<arrayLength;
j++){array.push(arguments[i][j])
}}else{array.push(arguments[i])
}}return array
}
}Object.extend(Number.prototype,{toColorPart:function(){return this.toPaddedString(2,16)
},succ:function(){return this+1
},times:function(iterator,context){$R(0,this,true).each(iterator,context);
return this
},toPaddedString:function(length,radix){var string=this.toString(radix||10);
return"0".times(length-string.length)+string
},toJSON:function(){return isFinite(this)?this.toString():"null"
}});
$w("abs round ceil floor").each(function(method){Number.prototype[method]=Math[method].methodize()
});
function $H(object){return new Hash(object)
}var Hash=Class.create(Enumerable,(function(){function toQueryPair(key,value){if(Object.isUndefined(value)){return key
}return key+"="+encodeURIComponent(String.interpret(value))
}return{initialize:function(object){this._object=Object.isHash(object)?object.toObject():Object.clone(object)
},_each:function(iterator){for(var key in this._object){var value=this._object[key],pair=[key,value];
pair.key=key;
pair.value=value;
iterator(pair)
}},set:function(key,value){return this._object[key]=value
},get:function(key){if(this._object[key]!==Object.prototype[key]){return this._object[key]
}},unset:function(key){var value=this._object[key];
delete this._object[key];
return value
},toObject:function(){return Object.clone(this._object)
},keys:function(){return this.pluck("key")
},values:function(){return this.pluck("value")
},index:function(value){var match=this.detect(function(pair){return pair.value===value
});
return match&&match.key
},merge:function(object){return this.clone().update(object)
},update:function(object){return new Hash(object).inject(this,function(result,pair){result.set(pair.key,pair.value);
return result
})
},toQueryString:function(){return this.inject([],function(results,pair){var key=encodeURIComponent(pair.key),values=pair.value;
if(values&&typeof values=="object"){if(Object.isArray(values)){return results.concat(values.map(toQueryPair.curry(key)))
}}else{results.push(toQueryPair(key,values))
}return results
}).join("&")
},inspect:function(){return"#<Hash:{"+this.map(function(pair){return pair.map(Object.inspect).join(": ")
}).join(", ")+"}>"
},toJSON:function(){return Object.toJSON(this.toObject())
},clone:function(){return new Hash(this)
}}
})());
Hash.prototype.toTemplateReplacements=Hash.prototype.toObject;
Hash.from=$H;
var ObjectRange=Class.create(Enumerable,{initialize:function(start,end,exclusive){this.start=start;
this.end=end;
this.exclusive=exclusive
},_each:function(iterator){var value=this.start;
while(this.include(value)){iterator(value);
value=value.succ()
}},include:function(value){if(value<this.start){return false
}if(this.exclusive){return value<this.end
}return value<=this.end
}});
var $R=function(start,end,exclusive){return new ObjectRange(start,end,exclusive)
};
var Ajax={getTransport:function(){return Try.these(function(){return new XMLHttpRequest()
},function(){return new ActiveXObject("Msxml2.XMLHTTP")
},function(){return new ActiveXObject("Microsoft.XMLHTTP")
})||false
},activeRequestCount:0};
Ajax.Responders={responders:[],_each:function(iterator){this.responders._each(iterator)
},register:function(responder){if(!this.include(responder)){this.responders.push(responder)
}},unregister:function(responder){this.responders=this.responders.without(responder)
},dispatch:function(callback,request,transport,json){this.each(function(responder){if(Object.isFunction(responder[callback])){try{responder[callback].apply(responder,[request,transport,json])
}catch(e){}}})
}};
Object.extend(Ajax.Responders,Enumerable);
Ajax.Responders.register({onCreate:function(){Ajax.activeRequestCount++
},onComplete:function(){Ajax.activeRequestCount--
}});
Ajax.Base=Class.create({initialize:function(options){this.options={method:"post",asynchronous:true,contentType:"application/x-www-form-urlencoded",encoding:"UTF-8",parameters:"",evalJSON:true,evalJS:true};
Object.extend(this.options,options||{});
this.options.method=this.options.method.toLowerCase();
if(Object.isString(this.options.parameters)){this.options.parameters=this.options.parameters.toQueryParams()
}else{if(Object.isHash(this.options.parameters)){this.options.parameters=this.options.parameters.toObject()
}}}});
Ajax.Request=Class.create(Ajax.Base,{_complete:false,initialize:function($super,url,options){$super(options);
this.transport=Ajax.getTransport();
this.request(url)
},request:function(url){this.url=url;
this.method=this.options.method;
var params=Object.clone(this.options.parameters);
if(!["get","post"].include(this.method)){params._method=this.method;
this.method="post"
}this.parameters=params;
if(params=Object.toQueryString(params)){if(this.method=="get"){this.url+=(this.url.include("?")?"&":"?")+params
}else{if(/Konqueror|Safari|KHTML/.test(navigator.userAgent)){params+="&_="
}}}try{var response=new Ajax.Response(this);
if(this.options.onCreate){this.options.onCreate(response)
}Ajax.Responders.dispatch("onCreate",this,response);
this.transport.open(this.method.toUpperCase(),this.url,this.options.asynchronous);
if(this.options.asynchronous){this.respondToReadyState.bind(this).defer(1)
}this.transport.onreadystatechange=this.onStateChange.bind(this);
this.setRequestHeaders();
this.body=this.method=="post"?(this.options.postBody||params):null;
this.transport.send(this.body);
if(!this.options.asynchronous&&this.transport.overrideMimeType){this.onStateChange()
}}catch(e){this.dispatchException(e)
}},onStateChange:function(){var readyState=this.transport.readyState;
if(readyState>1&&!((readyState==4)&&this._complete)){this.respondToReadyState(this.transport.readyState)
}},setRequestHeaders:function(){var headers={"X-Requested-With":"XMLHttpRequest","X-Prototype-Version":Prototype.Version,Accept:"text/javascript, text/html, application/xml, text/xml, */*"};
if(this.method=="post"){headers["Content-type"]=this.options.contentType+(this.options.encoding?"; charset="+this.options.encoding:"");
if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){headers.Connection="close"
}}if(typeof this.options.requestHeaders=="object"){var extras=this.options.requestHeaders;
if(Object.isFunction(extras.push)){for(var i=0,length=extras.length;
i<length;
i+=2){headers[extras[i]]=extras[i+1]
}}else{$H(extras).each(function(pair){headers[pair.key]=pair.value
})
}}for(var name in headers){this.transport.setRequestHeader(name,headers[name])
}},success:function(){var status=this.getStatus();
return !status||(status>=200&&status<300)
},getStatus:function(){try{return this.transport.status||0
}catch(e){return 0
}},respondToReadyState:function(readyState){var state=Ajax.Request.Events[readyState],response=new Ajax.Response(this);
if(state=="Complete"){try{this._complete=true;
(this.options["on"+response.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(response,response.headerJSON)
}catch(e){this.dispatchException(e)
}var contentType=response.getHeader("Content-type");
if(this.options.evalJS=="force"||(this.options.evalJS&&this.isSameOrigin()&&contentType&&contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))){this.evalResponse()
}}try{(this.options["on"+state]||Prototype.emptyFunction)(response,response.headerJSON);
Ajax.Responders.dispatch("on"+state,this,response,response.headerJSON)
}catch(e){this.dispatchException(e)
}if(state=="Complete"){this.transport.onreadystatechange=Prototype.emptyFunction
}},isSameOrigin:function(){var m=this.url.match(/^\s*https?:\/\/[^\/]*/);
return !m||(m[0]=="#{protocol}//#{domain}#{port}".interpolate({protocol:location.protocol,domain:document.domain,port:location.port?":"+location.port:""}))
},getHeader:function(name){try{return this.transport.getResponseHeader(name)||null
}catch(e){return null
}},evalResponse:function(){try{return eval((this.transport.responseText||"").unfilterJSON())
}catch(e){this.dispatchException(e)
}},dispatchException:function(exception){(this.options.onException||Prototype.emptyFunction)(this,exception);
Ajax.Responders.dispatch("onException",this,exception)
}});
Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];
Ajax.Response=Class.create({initialize:function(request){this.request=request;
var transport=this.transport=request.transport,readyState=this.readyState=transport.readyState;
if((readyState>2&&!Prototype.Browser.IE)||readyState==4){this.status=this.getStatus();
this.statusText=this.getStatusText();
this.responseText=String.interpret(transport.responseText);
this.headerJSON=this._getHeaderJSON()
}if(readyState==4){var xml=transport.responseXML;
this.responseXML=Object.isUndefined(xml)?null:xml;
this.responseJSON=this._getResponseJSON()
}},status:0,statusText:"",getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||""
}catch(e){return""
}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders()
}catch(e){return null
}},getResponseHeader:function(name){return this.transport.getResponseHeader(name)
},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders()
},_getHeaderJSON:function(){var json=this.getHeader("X-JSON");
if(!json){return null
}json=decodeURIComponent(escape(json));
try{return json.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin())
}catch(e){this.request.dispatchException(e)
}},_getResponseJSON:function(){var options=this.request.options;
if(!options.evalJSON||(options.evalJSON!="force"&&!(this.getHeader("Content-type")||"").include("application/json"))||this.responseText.blank()){return null
}try{return this.responseText.evalJSON(options.sanitizeJSON||!this.request.isSameOrigin())
}catch(e){this.request.dispatchException(e)
}}});
Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,container,url,options){this.container={success:(container.success||container),failure:(container.failure||(container.success?null:container))};
options=Object.clone(options);
var onComplete=options.onComplete;
options.onComplete=(function(response,json){this.updateContent(response.responseText);
if(Object.isFunction(onComplete)){onComplete(response,json)
}}).bind(this);
$super(url,options)
},updateContent:function(responseText){var receiver=this.container[this.success()?"success":"failure"],options=this.options;
if(!options.evalScripts){responseText=responseText.stripScripts()
}if(receiver=$(receiver)){if(options.insertion){if(Object.isString(options.insertion)){var insertion={};
insertion[options.insertion]=responseText;
receiver.insert(insertion)
}else{options.insertion(receiver,responseText)
}}else{receiver.update(responseText)
}}}});
Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,container,url,options){$super(options);
this.onComplete=this.options.onComplete;
this.frequency=(this.options.frequency||2);
this.decay=(this.options.decay||1);
this.updater={};
this.container=container;
this.url=url;
this.start()
},start:function(){this.options.onComplete=this.updateComplete.bind(this);
this.onTimerEvent()
},stop:function(){this.updater.options.onComplete=undefined;
clearTimeout(this.timer);
(this.onComplete||Prototype.emptyFunction).apply(this,arguments)
},updateComplete:function(response){if(this.options.decay){this.decay=(response.responseText==this.lastText?this.decay*this.options.decay:1);
this.lastText=response.responseText
}this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency)
},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options)
}});
function $(element){if(arguments.length>1){for(var i=0,elements=[],length=arguments.length;
i<length;
i++){elements.push($(arguments[i]))
}return elements
}if(Object.isString(element)){element=document.getElementById(element)
}return Element.extend(element)
}if(Prototype.BrowserFeatures.XPath){document._getElementsByXPath=function(expression,parentElement){var results=[];
var query=document.evaluate(expression,$(parentElement)||document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
for(var i=0,length=query.snapshotLength;
i<length;
i++){results.push(Element.extend(query.snapshotItem(i)))
}return results
}
}if(!window.Node){var Node={}
}if(!Node.ELEMENT_NODE){Object.extend(Node,{ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12})
}(function(){var element=this.Element;
this.Element=function(tagName,attributes){attributes=attributes||{};
tagName=tagName.toLowerCase();
var cache=Element.cache;
if(Prototype.Browser.IE&&attributes.name){tagName="<"+tagName+' name="'+attributes.name+'">';
delete attributes.name;
return Element.writeAttribute(document.createElement(tagName),attributes)
}if(!cache[tagName]){cache[tagName]=Element.extend(document.createElement(tagName))
}return Element.writeAttribute(cache[tagName].cloneNode(false),attributes)
};
Object.extend(this.Element,element||{});
if(element){this.Element.prototype=element.prototype
}}).call(window);
Element.cache={};
Element.Methods={visible:function(element){return $(element).style.display!="none"
},toggle:function(element){element=$(element);
Element[Element.visible(element)?"hide":"show"](element);
return element
},hide:function(element){element=$(element);
element.style.display="none";
return element
},show:function(element){element=$(element);
element.style.display="";
return element
},remove:function(element){element=$(element);
element.parentNode.removeChild(element);
return element
},update:function(element,content){element=$(element);
if(content&&content.toElement){content=content.toElement()
}if(Object.isElement(content)){return element.update().insert(content)
}content=Object.toHTML(content);
element.innerHTML=content.stripScripts();
content.evalScripts.bind(content).defer();
return element
},replace:function(element,content){element=$(element);
if(content&&content.toElement){content=content.toElement()
}else{if(!Object.isElement(content)){content=Object.toHTML(content);
var range=element.ownerDocument.createRange();
range.selectNode(element);
content.evalScripts.bind(content).defer();
content=range.createContextualFragment(content.stripScripts())
}}element.parentNode.replaceChild(content,element);
return element
},insert:function(element,insertions){element=$(element);
if(Object.isString(insertions)||Object.isNumber(insertions)||Object.isElement(insertions)||(insertions&&(insertions.toElement||insertions.toHTML))){insertions={bottom:insertions}
}var content,insert,tagName,childNodes;
for(var position in insertions){content=insertions[position];
position=position.toLowerCase();
insert=Element._insertionTranslations[position];
if(content&&content.toElement){content=content.toElement()
}if(Object.isElement(content)){insert(element,content);
continue
}content=Object.toHTML(content);
tagName=((position=="before"||position=="after")?element.parentNode:element).tagName.toUpperCase();
childNodes=Element._getContentFromAnonymousElement(tagName,content.stripScripts());
if(position=="top"||position=="after"){childNodes.reverse()
}childNodes.each(insert.curry(element));
content.evalScripts.bind(content).defer()
}return element
},wrap:function(element,wrapper,attributes){element=$(element);
if(Object.isElement(wrapper)){$(wrapper).writeAttribute(attributes||{})
}else{if(Object.isString(wrapper)){wrapper=new Element(wrapper,attributes)
}else{wrapper=new Element("div",wrapper)
}}if(element.parentNode){element.parentNode.replaceChild(wrapper,element)
}wrapper.appendChild(element);
return wrapper
},inspect:function(element){element=$(element);
var result="<"+element.tagName.toLowerCase();
$H({id:"id",className:"class"}).each(function(pair){var property=pair.first(),attribute=pair.last();
var value=(element[property]||"").toString();
if(value){result+=" "+attribute+"="+value.inspect(true)
}});
return result+">"
},recursivelyCollect:function(element,property){element=$(element);
var elements=[];
while(element=element[property]){if(element.nodeType==1){elements.push(Element.extend(element))
}}return elements
},ancestors:function(element){return $(element).recursivelyCollect("parentNode")
},descendants:function(element){return $(element).select("*")
},firstDescendant:function(element){element=$(element).firstChild;
while(element&&element.nodeType!=1){element=element.nextSibling
}return $(element)
},immediateDescendants:function(element){if(!(element=$(element).firstChild)){return[]
}while(element&&element.nodeType!=1){element=element.nextSibling
}if(element){return[element].concat($(element).nextSiblings())
}return[]
},previousSiblings:function(element){return $(element).recursivelyCollect("previousSibling")
},nextSiblings:function(element){return $(element).recursivelyCollect("nextSibling")
},siblings:function(element){element=$(element);
return element.previousSiblings().reverse().concat(element.nextSiblings())
},match:function(element,selector){if(Object.isString(selector)){selector=new Selector(selector)
}return selector.match($(element))
},up:function(element,expression,index){element=$(element);
if(arguments.length==1){return $(element.parentNode)
}var ancestors=element.ancestors();
return Object.isNumber(expression)?ancestors[expression]:Selector.findElement(ancestors,expression,index)
},down:function(element,expression,index){element=$(element);
if(arguments.length==1){return element.firstDescendant()
}return Object.isNumber(expression)?element.descendants()[expression]:Element.select(element,expression)[index||0]
},previous:function(element,expression,index){element=$(element);
if(arguments.length==1){return $(Selector.handlers.previousElementSibling(element))
}var previousSiblings=element.previousSiblings();
return Object.isNumber(expression)?previousSiblings[expression]:Selector.findElement(previousSiblings,expression,index)
},next:function(element,expression,index){element=$(element);
if(arguments.length==1){return $(Selector.handlers.nextElementSibling(element))
}var nextSiblings=element.nextSiblings();
return Object.isNumber(expression)?nextSiblings[expression]:Selector.findElement(nextSiblings,expression,index)
},select:function(){var args=$A(arguments),element=$(args.shift());
return Selector.findChildElements(element,args)
},adjacent:function(){var args=$A(arguments),element=$(args.shift());
return Selector.findChildElements(element.parentNode,args).without(element)
},identify:function(element){element=$(element);
var id=element.readAttribute("id"),self=arguments.callee;
if(id){return id
}do{id="anonymous_element_"+self.counter++
}while($(id));
element.writeAttribute("id",id);
return id
},readAttribute:function(element,name){element=$(element);
if(Prototype.Browser.IE){var t=Element._attributeTranslations.read;
if(t.values[name]){return t.values[name](element,name)
}if(t.names[name]){name=t.names[name]
}if(name.include(":")){return(!element.attributes||!element.attributes[name])?null:element.attributes[name].value
}}return element.getAttribute(name)
},writeAttribute:function(element,name,value){element=$(element);
var attributes={},t=Element._attributeTranslations.write;
if(typeof name=="object"){attributes=name
}else{attributes[name]=Object.isUndefined(value)?true:value
}for(var attr in attributes){name=t.names[attr]||attr;
value=attributes[attr];
if(t.values[attr]){name=t.values[attr](element,value)
}if(value===false||value===null){element.removeAttribute(name)
}else{if(value===true){element.setAttribute(name,name)
}else{element.setAttribute(name,value)
}}}return element
},getHeight:function(element){return $(element).getDimensions().height
},getWidth:function(element){return $(element).getDimensions().width
},classNames:function(element){return new Element.ClassNames(element)
},hasClassName:function(element,className){if(!(element=$(element))){return
}var elementClassName=element.className;
return(elementClassName.length>0&&(elementClassName==className||new RegExp("(^|\\s)"+className+"(\\s|$)").test(elementClassName)))
},addClassName:function(element,className){if(!(element=$(element))){return
}if(!element.hasClassName(className)){element.className+=(element.className?" ":"")+className
}return element
},removeClassName:function(element,className){if(!(element=$(element))){return
}element.className=element.className.replace(new RegExp("(^|\\s+)"+className+"(\\s+|$)")," ").strip();
return element
},toggleClassName:function(element,className){if(!(element=$(element))){return
}return element[element.hasClassName(className)?"removeClassName":"addClassName"](className)
},cleanWhitespace:function(element){element=$(element);
var node=element.firstChild;
while(node){var nextNode=node.nextSibling;
if(node.nodeType==3&&!/\S/.test(node.nodeValue)){element.removeChild(node)
}node=nextNode
}return element
},empty:function(element){return $(element).innerHTML.blank()
},descendantOf:function(element,ancestor){element=$(element),ancestor=$(ancestor);
if(element.compareDocumentPosition){return(element.compareDocumentPosition(ancestor)&8)===8
}if(ancestor.contains){return ancestor.contains(element)&&ancestor!==element
}while(element=element.parentNode){if(element==ancestor){return true
}}return false
},scrollTo:function(element){element=$(element);
var pos=element.cumulativeOffset();
window.scrollTo(pos[0],pos[1]);
return element
},getStyle:function(element,style){element=$(element);
style=style=="float"?"cssFloat":style.camelize();
var value=element.style[style];
if(!value||value=="auto"){var css=document.defaultView.getComputedStyle(element,null);
value=css?css[style]:null
}if(style=="opacity"){return value?parseFloat(value):1
}return value=="auto"?null:value
},getOpacity:function(element){return $(element).getStyle("opacity")
},setStyle:function(element,styles){element=$(element);
var elementStyle=element.style,match;
if(Object.isString(styles)){element.style.cssText+=";"+styles;
return styles.include("opacity")?element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]):element
}for(var property in styles){if(property=="opacity"){element.setOpacity(styles[property])
}else{elementStyle[(property=="float"||property=="cssFloat")?(Object.isUndefined(elementStyle.styleFloat)?"cssFloat":"styleFloat"):property]=styles[property]
}}return element
},setOpacity:function(element,value){element=$(element);
element.style.opacity=(value==1||value==="")?"":(value<0.00001)?0:value;
return element
},getDimensions:function(element){element=$(element);
var display=element.getStyle("display");
if(display!="none"&&display!=null){return{width:element.offsetWidth,height:element.offsetHeight}
}var els=element.style;
var originalVisibility=els.visibility;
var originalPosition=els.position;
var originalDisplay=els.display;
els.visibility="hidden";
els.position="absolute";
els.display="block";
var originalWidth=element.clientWidth;
var originalHeight=element.clientHeight;
els.display=originalDisplay;
els.position=originalPosition;
els.visibility=originalVisibility;
return{width:originalWidth,height:originalHeight}
},makePositioned:function(element){element=$(element);
var pos=Element.getStyle(element,"position");
if(pos=="static"||!pos){element._madePositioned=true;
element.style.position="relative";
if(Prototype.Browser.Opera){element.style.top=0;
element.style.left=0
}}return element
},undoPositioned:function(element){element=$(element);
if(element._madePositioned){element._madePositioned=undefined;
element.style.position=element.style.top=element.style.left=element.style.bottom=element.style.right=""
}return element
},makeClipping:function(element){element=$(element);
if(element._overflow){return element
}element._overflow=Element.getStyle(element,"overflow")||"auto";
if(element._overflow!=="hidden"){element.style.overflow="hidden"
}return element
},undoClipping:function(element){element=$(element);
if(!element._overflow){return element
}element.style.overflow=element._overflow=="auto"?"":element._overflow;
element._overflow=null;
return element
},cumulativeOffset:function(element){var valueT=0,valueL=0;
do{valueT+=element.offsetTop||0;
valueL+=element.offsetLeft||0;
element=element.offsetParent
}while(element);
return Element._returnOffset(valueL,valueT)
},positionedOffset:function(element){var valueT=0,valueL=0;
do{valueT+=element.offsetTop||0;
valueL+=element.offsetLeft||0;
element=element.offsetParent;
if(element){if(element.tagName.toUpperCase()=="BODY"){break
}var p=Element.getStyle(element,"position");
if(p!=="static"){break
}}}while(element);
return Element._returnOffset(valueL,valueT)
},absolutize:function(element){element=$(element);
if(element.getStyle("position")=="absolute"){return element
}var offsets=element.positionedOffset();
var top=offsets[1];
var left=offsets[0];
var width=element.clientWidth;
var height=element.clientHeight;
element._originalLeft=left-parseFloat(element.style.left||0);
element._originalTop=top-parseFloat(element.style.top||0);
element._originalWidth=element.style.width;
element._originalHeight=element.style.height;
element.style.position="absolute";
element.style.top=top+"px";
element.style.left=left+"px";
element.style.width=width+"px";
element.style.height=height+"px";
return element
},relativize:function(element){element=$(element);
if(element.getStyle("position")=="relative"){return element
}element.style.position="relative";
var top=parseFloat(element.style.top||0)-(element._originalTop||0);
var left=parseFloat(element.style.left||0)-(element._originalLeft||0);
element.style.top=top+"px";
element.style.left=left+"px";
element.style.height=element._originalHeight;
element.style.width=element._originalWidth;
return element
},cumulativeScrollOffset:function(element){var valueT=0,valueL=0;
do{valueT+=element.scrollTop||0;
valueL+=element.scrollLeft||0;
element=element.parentNode
}while(element);
return Element._returnOffset(valueL,valueT)
},getOffsetParent:function(element){if(element.offsetParent){return $(element.offsetParent)
}if(element==document.body){return $(element)
}while((element=element.parentNode)&&element!=document.body){if(Element.getStyle(element,"position")!="static"){return $(element)
}}return $(document.body)
},viewportOffset:function(forElement){var valueT=0,valueL=0;
var element=forElement;
do{valueT+=element.offsetTop||0;
valueL+=element.offsetLeft||0;
if(element.offsetParent==document.body&&Element.getStyle(element,"position")=="absolute"){break
}}while(element=element.offsetParent);
element=forElement;
do{if(!Prototype.Browser.Opera||(element.tagName&&(element.tagName.toUpperCase()=="BODY"))){valueT-=element.scrollTop||0;
valueL-=element.scrollLeft||0
}}while(element=element.parentNode);
return Element._returnOffset(valueL,valueT)
},clonePosition:function(element,source){var options=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},arguments[2]||{});
source=$(source);
var p=source.viewportOffset();
element=$(element);
var delta=[0,0];
var parent=null;
if(Element.getStyle(element,"position")=="absolute"){parent=element.getOffsetParent();
delta=parent.viewportOffset()
}if(parent==document.body){delta[0]-=document.body.offsetLeft;
delta[1]-=document.body.offsetTop
}if(options.setLeft){element.style.left=(p[0]-delta[0]+options.offsetLeft)+"px"
}if(options.setTop){element.style.top=(p[1]-delta[1]+options.offsetTop)+"px"
}if(options.setWidth){element.style.width=source.offsetWidth+"px"
}if(options.setHeight){element.style.height=source.offsetHeight+"px"
}return element
}};
Element.Methods.identify.counter=1;
Object.extend(Element.Methods,{getElementsBySelector:Element.Methods.select,childElements:Element.Methods.immediateDescendants});
Element._attributeTranslations={write:{names:{className:"class",htmlFor:"for"},values:{}}};
if(Prototype.Browser.Opera){Element.Methods.getStyle=Element.Methods.getStyle.wrap(function(proceed,element,style){switch(style){case"left":case"top":case"right":case"bottom":if(proceed(element,"position")==="static"){return null
}case"height":case"width":if(!Element.visible(element)){return null
}var dim=parseInt(proceed(element,style),10);
if(dim!==element["offset"+style.capitalize()]){return dim+"px"
}var properties;
if(style==="height"){properties=["border-top-width","padding-top","padding-bottom","border-bottom-width"]
}else{properties=["border-left-width","padding-left","padding-right","border-right-width"]
}return properties.inject(dim,function(memo,property){var val=proceed(element,property);
return val===null?memo:memo-parseInt(val,10)
})+"px";
default:return proceed(element,style)
}});
Element.Methods.readAttribute=Element.Methods.readAttribute.wrap(function(proceed,element,attribute){if(attribute==="title"){return element.title
}return proceed(element,attribute)
})
}else{if(Prototype.Browser.IE){Element.Methods.getOffsetParent=Element.Methods.getOffsetParent.wrap(function(proceed,element){element=$(element);
try{element.offsetParent
}catch(e){return $(document.body)
}var position=element.getStyle("position");
if(position!=="static"){return proceed(element)
}element.setStyle({position:"relative"});
var value=proceed(element);
element.setStyle({position:position});
return value
});
$w("positionedOffset viewportOffset").each(function(method){Element.Methods[method]=Element.Methods[method].wrap(function(proceed,element){element=$(element);
try{element.offsetParent
}catch(e){return Element._returnOffset(0,0)
}var position=element.getStyle("position");
if(position!=="static"){return proceed(element)
}var offsetParent=element.getOffsetParent();
if(offsetParent&&offsetParent.getStyle("position")==="fixed"){offsetParent.setStyle({zoom:1})
}element.setStyle({position:"relative"});
var value=proceed(element);
element.setStyle({position:position});
return value
})
});
Element.Methods.cumulativeOffset=Element.Methods.cumulativeOffset.wrap(function(proceed,element){try{element.offsetParent
}catch(e){return Element._returnOffset(0,0)
}return proceed(element)
});
Element.Methods.getStyle=function(element,style){element=$(element);
style=(style=="float"||style=="cssFloat")?"styleFloat":style.camelize();
var value=element.style[style];
if(!value&&element.currentStyle){value=element.currentStyle[style]
}if(style=="opacity"){if(value=(element.getStyle("filter")||"").match(/alpha\(opacity=(.*)\)/)){if(value[1]){return parseFloat(value[1])/100
}}return 1
}if(value=="auto"){if((style=="width"||style=="height")&&(element.getStyle("display")!="none")){return element["offset"+style.capitalize()]+"px"
}return null
}return value
};
Element.Methods.setOpacity=function(element,value){function stripAlpha(filter){return filter.replace(/alpha\([^\)]*\)/gi,"")
}element=$(element);
var currentStyle=element.currentStyle;
if((currentStyle&&!currentStyle.hasLayout)||(!currentStyle&&element.style.zoom=="normal")){element.style.zoom=1
}var filter=element.getStyle("filter"),style=element.style;
if(value==1||value===""){(filter=stripAlpha(filter))?style.filter=filter:style.removeAttribute("filter");
return element
}else{if(value<0.00001){value=0
}}style.filter=stripAlpha(filter)+"alpha(opacity="+(value*100)+")";
return element
};
Element._attributeTranslations={read:{names:{"class":"className","for":"htmlFor"},values:{_getAttr:function(element,attribute){return element.getAttribute(attribute,2)
},_getAttrNode:function(element,attribute){var node=element.getAttributeNode(attribute);
return node?node.value:""
},_getEv:function(element,attribute){attribute=element.getAttribute(attribute);
return attribute?attribute.toString().slice(23,-2):null
},_flag:function(element,attribute){return $(element).hasAttribute(attribute)?attribute:null
},style:function(element){return element.style.cssText.toLowerCase()
},title:function(element){return element.title
}}}};
Element._attributeTranslations.write={names:Object.extend({cellpadding:"cellPadding",cellspacing:"cellSpacing"},Element._attributeTranslations.read.names),values:{checked:function(element,value){element.checked=!!value
},style:function(element,value){element.style.cssText=value?value:""
}}};
Element._attributeTranslations.has={};
$w("colSpan rowSpan vAlign dateTime accessKey tabIndex encType maxLength readOnly longDesc frameBorder").each(function(attr){Element._attributeTranslations.write.names[attr.toLowerCase()]=attr;
Element._attributeTranslations.has[attr.toLowerCase()]=attr
});
(function(v){Object.extend(v,{href:v._getAttr,src:v._getAttr,type:v._getAttr,action:v._getAttrNode,disabled:v._flag,checked:v._flag,readonly:v._flag,multiple:v._flag,onload:v._getEv,onunload:v._getEv,onclick:v._getEv,ondblclick:v._getEv,onmousedown:v._getEv,onmouseup:v._getEv,onmouseover:v._getEv,onmousemove:v._getEv,onmouseout:v._getEv,onfocus:v._getEv,onblur:v._getEv,onkeypress:v._getEv,onkeydown:v._getEv,onkeyup:v._getEv,onsubmit:v._getEv,onreset:v._getEv,onselect:v._getEv,onchange:v._getEv})
})(Element._attributeTranslations.read.values)
}else{if(Prototype.Browser.Gecko&&/rv:1\.8\.0/.test(navigator.userAgent)){Element.Methods.setOpacity=function(element,value){element=$(element);
element.style.opacity=(value==1)?0.999999:(value==="")?"":(value<0.00001)?0:value;
return element
}
}else{if(Prototype.Browser.WebKit){Element.Methods.setOpacity=function(element,value){element=$(element);
element.style.opacity=(value==1||value==="")?"":(value<0.00001)?0:value;
if(value==1){if(element.tagName.toUpperCase()=="IMG"&&element.width){element.width++;
element.width--
}else{try{var n=document.createTextNode(" ");
element.appendChild(n);
element.removeChild(n)
}catch(e){}}}return element
};
Element.Methods.cumulativeOffset=function(element){var valueT=0,valueL=0;
do{valueT+=element.offsetTop||0;
valueL+=element.offsetLeft||0;
if(element.offsetParent==document.body){if(Element.getStyle(element,"position")=="absolute"){break
}}element=element.offsetParent
}while(element);
return Element._returnOffset(valueL,valueT)
}
}}}}if(Prototype.Browser.IE||Prototype.Browser.Opera){Element.Methods.update=function(element,content){element=$(element);
if(content&&content.toElement){content=content.toElement()
}if(Object.isElement(content)){return element.update().insert(content)
}content=Object.toHTML(content);
var tagName=element.tagName.toUpperCase();
if(tagName in Element._insertionTranslations.tags){$A(element.childNodes).each(function(node){element.removeChild(node)
});
Element._getContentFromAnonymousElement(tagName,content.stripScripts()).each(function(node){element.appendChild(node)
})
}else{element.innerHTML=content.stripScripts()
}content.evalScripts.bind(content).defer();
return element
}
}if("outerHTML" in document.createElement("div")){Element.Methods.replace=function(element,content){element=$(element);
if(content&&content.toElement){content=content.toElement()
}if(Object.isElement(content)){element.parentNode.replaceChild(content,element);
return element
}content=Object.toHTML(content);
var parent=element.parentNode,tagName=parent.tagName.toUpperCase();
if(Element._insertionTranslations.tags[tagName]){var nextSibling=element.next();
var fragments=Element._getContentFromAnonymousElement(tagName,content.stripScripts());
parent.removeChild(element);
if(nextSibling){fragments.each(function(node){parent.insertBefore(node,nextSibling)
})
}else{fragments.each(function(node){parent.appendChild(node)
})
}}else{element.outerHTML=content.stripScripts()
}content.evalScripts.bind(content).defer();
return element
}
}Element._returnOffset=function(l,t){var result=[l,t];
result.left=l;
result.top=t;
return result
};
Element._getContentFromAnonymousElement=function(tagName,html){var div=new Element("div"),t=Element._insertionTranslations.tags[tagName];
if(t){div.innerHTML=t[0]+html+t[1];
t[2].times(function(){div=div.firstChild
})
}else{div.innerHTML=html
}return $A(div.childNodes)
};
Element._insertionTranslations={before:function(element,node){element.parentNode.insertBefore(node,element)
},top:function(element,node){element.insertBefore(node,element.firstChild)
},bottom:function(element,node){element.appendChild(node)
},after:function(element,node){element.parentNode.insertBefore(node,element.nextSibling)
},tags:{TABLE:["<table>","</table>",1],TBODY:["<table><tbody>","</tbody></table>",2],TR:["<table><tbody><tr>","</tr></tbody></table>",3],TD:["<table><tbody><tr><td>","</td></tr></tbody></table>",4],SELECT:["<select>","</select>",1]}};
(function(){Object.extend(this.tags,{THEAD:this.tags.TBODY,TFOOT:this.tags.TBODY,TH:this.tags.TD})
}).call(Element._insertionTranslations);
Element.Methods.Simulated={hasAttribute:function(element,attribute){attribute=Element._attributeTranslations.has[attribute]||attribute;
var node=$(element).getAttributeNode(attribute);
return !!(node&&node.specified)
}};
Element.Methods.ByTag={};
Object.extend(Element,Element.Methods);
if(!Prototype.BrowserFeatures.ElementExtensions&&document.createElement("div")["__proto__"]){window.HTMLElement={};
window.HTMLElement.prototype=document.createElement("div")["__proto__"];
Prototype.BrowserFeatures.ElementExtensions=true
}Element.extend=(function(){if(Prototype.BrowserFeatures.SpecificElementExtensions){return Prototype.K
}var Methods={},ByTag=Element.Methods.ByTag;
var extend=Object.extend(function(element){if(!element||element._extendedByPrototype||element.nodeType!=1||element==window){return element
}var methods=Object.clone(Methods),tagName=element.tagName.toUpperCase(),property,value;
if(ByTag[tagName]){Object.extend(methods,ByTag[tagName])
}for(property in methods){value=methods[property];
if(Object.isFunction(value)&&!(property in element)){element[property]=value.methodize()
}}element._extendedByPrototype=Prototype.emptyFunction;
return element
},{refresh:function(){if(!Prototype.BrowserFeatures.ElementExtensions){Object.extend(Methods,Element.Methods);
Object.extend(Methods,Element.Methods.Simulated)
}}});
extend.refresh();
return extend
})();
Element.hasAttribute=function(element,attribute){if(element.hasAttribute){return element.hasAttribute(attribute)
}return Element.Methods.Simulated.hasAttribute(element,attribute)
};
Element.addMethods=function(methods){var F=Prototype.BrowserFeatures,T=Element.Methods.ByTag;
if(!methods){Object.extend(Form,Form.Methods);
Object.extend(Form.Element,Form.Element.Methods);
Object.extend(Element.Methods.ByTag,{FORM:Object.clone(Form.Methods),INPUT:Object.clone(Form.Element.Methods),SELECT:Object.clone(Form.Element.Methods),TEXTAREA:Object.clone(Form.Element.Methods)})
}if(arguments.length==2){var tagName=methods;
methods=arguments[1]
}if(!tagName){Object.extend(Element.Methods,methods||{})
}else{if(Object.isArray(tagName)){tagName.each(extend)
}else{extend(tagName)
}}function extend(tagName){tagName=tagName.toUpperCase();
if(!Element.Methods.ByTag[tagName]){Element.Methods.ByTag[tagName]={}
}Object.extend(Element.Methods.ByTag[tagName],methods)
}function copy(methods,destination,onlyIfAbsent){onlyIfAbsent=onlyIfAbsent||false;
for(var property in methods){var value=methods[property];
if(!Object.isFunction(value)){continue
}if(!onlyIfAbsent||!(property in destination)){destination[property]=value.methodize()
}}}function findDOMClass(tagName){var klass;
var trans={OPTGROUP:"OptGroup",TEXTAREA:"TextArea",P:"Paragraph",FIELDSET:"FieldSet",UL:"UList",OL:"OList",DL:"DList",DIR:"Directory",H1:"Heading",H2:"Heading",H3:"Heading",H4:"Heading",H5:"Heading",H6:"Heading",Q:"Quote",INS:"Mod",DEL:"Mod",A:"Anchor",IMG:"Image",CAPTION:"TableCaption",COL:"TableCol",COLGROUP:"TableCol",THEAD:"TableSection",TFOOT:"TableSection",TBODY:"TableSection",TR:"TableRow",TH:"TableCell",TD:"TableCell",FRAMESET:"FrameSet",IFRAME:"IFrame"};
if(trans[tagName]){klass="HTML"+trans[tagName]+"Element"
}if(window[klass]){return window[klass]
}klass="HTML"+tagName+"Element";
if(window[klass]){return window[klass]
}klass="HTML"+tagName.capitalize()+"Element";
if(window[klass]){return window[klass]
}window[klass]={};
window[klass].prototype=document.createElement(tagName)["__proto__"];
return window[klass]
}if(F.ElementExtensions){copy(Element.Methods,HTMLElement.prototype);
copy(Element.Methods.Simulated,HTMLElement.prototype,true)
}if(F.SpecificElementExtensions){for(var tag in Element.Methods.ByTag){var klass=findDOMClass(tag);
if(Object.isUndefined(klass)){continue
}copy(T[tag],klass.prototype)
}}Object.extend(Element,Element.Methods);
delete Element.ByTag;
if(Element.extend.refresh){Element.extend.refresh()
}Element.cache={}
};
document.viewport={getDimensions:function(){var dimensions={},B=Prototype.Browser;
$w("width height").each(function(d){var D=d.capitalize();
if(B.WebKit&&!document.evaluate){dimensions[d]=self["inner"+D]
}else{if(B.Opera&&parseFloat(window.opera.version())<9.5){dimensions[d]=document.body["client"+D]
}else{dimensions[d]=document.documentElement["client"+D]
}}});
return dimensions
},getWidth:function(){return this.getDimensions().width
},getHeight:function(){return this.getDimensions().height
},getScrollOffsets:function(){return Element._returnOffset(window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft,window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop)
}};
var Selector=Class.create({initialize:function(expression){this.expression=expression.strip();
if(this.shouldUseSelectorsAPI()){this.mode="selectorsAPI"
}else{if(this.shouldUseXPath()){this.mode="xpath";
this.compileXPathMatcher()
}else{this.mode="normal";
this.compileMatcher()
}}},shouldUseXPath:function(){if(!Prototype.BrowserFeatures.XPath){return false
}var e=this.expression;
if(Prototype.Browser.WebKit&&(e.include("-of-type")||e.include(":empty"))){return false
}if((/(\[[\w-]*?:|:checked)/).test(e)){return false
}return true
},shouldUseSelectorsAPI:function(){if(!Prototype.BrowserFeatures.SelectorsAPI){return false
}if(!Selector._div){Selector._div=new Element("div")
}try{Selector._div.querySelector(this.expression)
}catch(e){return false
}return true
},compileMatcher:function(){var e=this.expression,ps=Selector.patterns,h=Selector.handlers,c=Selector.criteria,le,p,m;
if(Selector._cache[e]){this.matcher=Selector._cache[e];
return
}this.matcher=["this.matcher = function(root) {","var r = root, h = Selector.handlers, c = false, n;"];
while(e&&le!=e&&(/\S/).test(e)){le=e;
for(var i in ps){p=ps[i];
if(m=e.match(p)){this.matcher.push(Object.isFunction(c[i])?c[i](m):new Template(c[i]).evaluate(m));
e=e.replace(m[0],"");
break
}}}this.matcher.push("return h.unique(n);\n}");
eval(this.matcher.join("\n"));
Selector._cache[this.expression]=this.matcher
},compileXPathMatcher:function(){var e=this.expression,ps=Selector.patterns,x=Selector.xpath,le,m;
if(Selector._cache[e]){this.xpath=Selector._cache[e];
return
}this.matcher=[".//*"];
while(e&&le!=e&&(/\S/).test(e)){le=e;
for(var i in ps){if(m=e.match(ps[i])){this.matcher.push(Object.isFunction(x[i])?x[i](m):new Template(x[i]).evaluate(m));
e=e.replace(m[0],"");
break
}}}this.xpath=this.matcher.join("");
Selector._cache[this.expression]=this.xpath
},findElements:function(root){root=root||document;
var e=this.expression,results;
switch(this.mode){case"selectorsAPI":if(root!==document){var oldId=root.id,id=$(root).identify();
e="#"+id+" "+e
}results=$A(root.querySelectorAll(e)).map(Element.extend);
root.id=oldId;
return results;
case"xpath":return document._getElementsByXPath(this.xpath,root);
default:return this.matcher(root)
}},match:function(element){this.tokens=[];
var e=this.expression,ps=Selector.patterns,as=Selector.assertions;
var le,p,m;
while(e&&le!==e&&(/\S/).test(e)){le=e;
for(var i in ps){p=ps[i];
if(m=e.match(p)){if(as[i]){this.tokens.push([i,Object.clone(m)]);
e=e.replace(m[0],"")
}else{return this.findElements(document).include(element)
}}}}var match=true,name,matches;
for(var i=0,token;
token=this.tokens[i];
i++){name=token[0],matches=token[1];
if(!Selector.assertions[name](element,matches)){match=false;
break
}}return match
},toString:function(){return this.expression
},inspect:function(){return"#<Selector:"+this.expression.inspect()+">"
}});
Object.extend(Selector,{_cache:{},xpath:{descendant:"//*",child:"/*",adjacent:"/following-sibling::*[1]",laterSibling:"/following-sibling::*",tagName:function(m){if(m[1]=="*"){return""
}return"[local-name()='"+m[1].toLowerCase()+"' or local-name()='"+m[1].toUpperCase()+"']"
},className:"[contains(concat(' ', @class, ' '), ' #{1} ')]",id:"[@id='#{1}']",attrPresence:function(m){m[1]=m[1].toLowerCase();
return new Template("[@#{1}]").evaluate(m)
},attr:function(m){m[1]=m[1].toLowerCase();
m[3]=m[5]||m[6];
return new Template(Selector.xpath.operators[m[2]]).evaluate(m)
},pseudo:function(m){var h=Selector.xpath.pseudos[m[1]];
if(!h){return""
}if(Object.isFunction(h)){return h(m)
}return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m)
},operators:{"=":"[@#{1}='#{3}']","!=":"[@#{1}!='#{3}']","^=":"[starts-with(@#{1}, '#{3}')]","$=":"[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']","*=":"[contains(@#{1}, '#{3}')]","~=":"[contains(concat(' ', @#{1}, ' '), ' #{3} ')]","|=":"[contains(concat('-', @#{1}, '-'), '-#{3}-')]"},pseudos:{"first-child":"[not(preceding-sibling::*)]","last-child":"[not(following-sibling::*)]","only-child":"[not(preceding-sibling::* or following-sibling::*)]",empty:"[count(*) = 0 and (count(text()) = 0)]",checked:"[@checked]",disabled:"[(@disabled) and (@type!='hidden')]",enabled:"[not(@disabled) and (@type!='hidden')]",not:function(m){var e=m[6],p=Selector.patterns,x=Selector.xpath,le,v;
var exclusion=[];
while(e&&le!=e&&(/\S/).test(e)){le=e;
for(var i in p){if(m=e.match(p[i])){v=Object.isFunction(x[i])?x[i](m):new Template(x[i]).evaluate(m);
exclusion.push("("+v.substring(1,v.length-1)+")");
e=e.replace(m[0],"");
break
}}}return"[not("+exclusion.join(" and ")+")]"
},"nth-child":function(m){return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ",m)
},"nth-last-child":function(m){return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ",m)
},"nth-of-type":function(m){return Selector.xpath.pseudos.nth("position() ",m)
},"nth-last-of-type":function(m){return Selector.xpath.pseudos.nth("(last() + 1 - position()) ",m)
},"first-of-type":function(m){m[6]="1";
return Selector.xpath.pseudos["nth-of-type"](m)
},"last-of-type":function(m){m[6]="1";
return Selector.xpath.pseudos["nth-last-of-type"](m)
},"only-of-type":function(m){var p=Selector.xpath.pseudos;
return p["first-of-type"](m)+p["last-of-type"](m)
},nth:function(fragment,m){var mm,formula=m[6],predicate;
if(formula=="even"){formula="2n+0"
}if(formula=="odd"){formula="2n+1"
}if(mm=formula.match(/^(\d+)$/)){return"["+fragment+"= "+mm[1]+"]"
}if(mm=formula.match(/^(-?\d*)?n(([+-])(\d+))?/)){if(mm[1]=="-"){mm[1]=-1
}var a=mm[1]?Number(mm[1]):1;
var b=mm[2]?Number(mm[2]):0;
predicate="[((#{fragment} - #{b}) mod #{a} = 0) and ((#{fragment} - #{b}) div #{a} >= 0)]";
return new Template(predicate).evaluate({fragment:fragment,a:a,b:b})
}}}},criteria:{tagName:'n = h.tagName(n, r, "#{1}", c);      c = false;',className:'n = h.className(n, r, "#{1}", c);    c = false;',id:'n = h.id(n, r, "#{1}", c);           c = false;',attrPresence:'n = h.attrPresence(n, r, "#{1}", c); c = false;',attr:function(m){m[3]=(m[5]||m[6]);
return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}", c); c = false;').evaluate(m)
},pseudo:function(m){if(m[6]){m[6]=m[6].replace(/"/g,'\\"')
}return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m)
},descendant:'c = "descendant";',child:'c = "child";',adjacent:'c = "adjacent";',laterSibling:'c = "laterSibling";'},patterns:{laterSibling:/^\s*~\s*/,child:/^\s*>\s*/,adjacent:/^\s*\+\s*/,descendant:/^\s/,tagName:/^\s*(\*|[\w\-]+)(\b|$)?/,id:/^#([\w\-\*]+)(\b|$)/,className:/^\.([\w\-\*]+)(\b|$)/,pseudo:/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s|[:+~>]))/,attrPresence:/^\[((?:[\w]+:)?[\w]+)\]/,attr:/\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/},assertions:{tagName:function(element,matches){return matches[1].toUpperCase()==element.tagName.toUpperCase()
},className:function(element,matches){return Element.hasClassName(element,matches[1])
},id:function(element,matches){return element.id===matches[1]
},attrPresence:function(element,matches){return Element.hasAttribute(element,matches[1])
},attr:function(element,matches){var nodeValue=Element.readAttribute(element,matches[1]);
return nodeValue&&Selector.operators[matches[2]](nodeValue,matches[5]||matches[6])
}},handlers:{concat:function(a,b){for(var i=0,node;
node=b[i];
i++){a.push(node)
}return a
},mark:function(nodes){var _true=Prototype.emptyFunction;
for(var i=0,node;
node=nodes[i];
i++){node._countedByPrototype=_true
}return nodes
},unmark:function(nodes){for(var i=0,node;
node=nodes[i];
i++){node._countedByPrototype=undefined
}return nodes
},index:function(parentNode,reverse,ofType){parentNode._countedByPrototype=Prototype.emptyFunction;
if(reverse){for(var nodes=parentNode.childNodes,i=nodes.length-1,j=1;
i>=0;
i--){var node=nodes[i];
if(node.nodeType==1&&(!ofType||node._countedByPrototype)){node.nodeIndex=j++
}}}else{for(var i=0,j=1,nodes=parentNode.childNodes;
node=nodes[i];
i++){if(node.nodeType==1&&(!ofType||node._countedByPrototype)){node.nodeIndex=j++
}}}},unique:function(nodes){if(nodes.length==0){return nodes
}var results=[],n;
for(var i=0,l=nodes.length;
i<l;
i++){if(!(n=nodes[i])._countedByPrototype){n._countedByPrototype=Prototype.emptyFunction;
results.push(Element.extend(n))
}}return Selector.handlers.unmark(results)
},descendant:function(nodes){var h=Selector.handlers;
for(var i=0,results=[],node;
node=nodes[i];
i++){h.concat(results,node.getElementsByTagName("*"))
}return results
},child:function(nodes){var h=Selector.handlers;
for(var i=0,results=[],node;
node=nodes[i];
i++){for(var j=0,child;
child=node.childNodes[j];
j++){if(child.nodeType==1&&child.tagName!="!"){results.push(child)
}}}return results
},adjacent:function(nodes){for(var i=0,results=[],node;
node=nodes[i];
i++){var next=this.nextElementSibling(node);
if(next){results.push(next)
}}return results
},laterSibling:function(nodes){var h=Selector.handlers;
for(var i=0,results=[],node;
node=nodes[i];
i++){h.concat(results,Element.nextSiblings(node))
}return results
},nextElementSibling:function(node){while(node=node.nextSibling){if(node.nodeType==1){return node
}}return null
},previousElementSibling:function(node){while(node=node.previousSibling){if(node.nodeType==1){return node
}}return null
},tagName:function(nodes,root,tagName,combinator){var uTagName=tagName.toUpperCase();
var results=[],h=Selector.handlers;
if(nodes){if(combinator){if(combinator=="descendant"){for(var i=0,node;
node=nodes[i];
i++){h.concat(results,node.getElementsByTagName(tagName))
}return results
}else{nodes=this[combinator](nodes)
}if(tagName=="*"){return nodes
}}for(var i=0,node;
node=nodes[i];
i++){if(node.tagName.toUpperCase()===uTagName){results.push(node)
}}return results
}else{return root.getElementsByTagName(tagName)
}},id:function(nodes,root,id,combinator){var targetNode=$(id),h=Selector.handlers;
if(!targetNode){return[]
}if(!nodes&&root==document){return[targetNode]
}if(nodes){if(combinator){if(combinator=="child"){for(var i=0,node;
node=nodes[i];
i++){if(targetNode.parentNode==node){return[targetNode]
}}}else{if(combinator=="descendant"){for(var i=0,node;
node=nodes[i];
i++){if(Element.descendantOf(targetNode,node)){return[targetNode]
}}}else{if(combinator=="adjacent"){for(var i=0,node;
node=nodes[i];
i++){if(Selector.handlers.previousElementSibling(targetNode)==node){return[targetNode]
}}}else{nodes=h[combinator](nodes)
}}}}for(var i=0,node;
node=nodes[i];
i++){if(node==targetNode){return[targetNode]
}}return[]
}return(targetNode&&Element.descendantOf(targetNode,root))?[targetNode]:[]
},className:function(nodes,root,className,combinator){if(nodes&&combinator){nodes=this[combinator](nodes)
}return Selector.handlers.byClassName(nodes,root,className)
},byClassName:function(nodes,root,className){if(!nodes){nodes=Selector.handlers.descendant([root])
}var needle=" "+className+" ";
for(var i=0,results=[],node,nodeClassName;
node=nodes[i];
i++){nodeClassName=node.className;
if(nodeClassName.length==0){continue
}if(nodeClassName==className||(" "+nodeClassName+" ").include(needle)){results.push(node)
}}return results
},attrPresence:function(nodes,root,attr,combinator){if(!nodes){nodes=root.getElementsByTagName("*")
}if(nodes&&combinator){nodes=this[combinator](nodes)
}var results=[];
for(var i=0,node;
node=nodes[i];
i++){if(Element.hasAttribute(node,attr)){results.push(node)
}}return results
},attr:function(nodes,root,attr,value,operator,combinator){if(!nodes){nodes=root.getElementsByTagName("*")
}if(nodes&&combinator){nodes=this[combinator](nodes)
}var handler=Selector.operators[operator],results=[];
for(var i=0,node;
node=nodes[i];
i++){var nodeValue=Element.readAttribute(node,attr);
if(nodeValue===null){continue
}if(handler(nodeValue,value)){results.push(node)
}}return results
},pseudo:function(nodes,name,value,root,combinator){if(nodes&&combinator){nodes=this[combinator](nodes)
}if(!nodes){nodes=root.getElementsByTagName("*")
}return Selector.pseudos[name](nodes,value,root)
}},pseudos:{"first-child":function(nodes,value,root){for(var i=0,results=[],node;
node=nodes[i];
i++){if(Selector.handlers.previousElementSibling(node)){continue
}results.push(node)
}return results
},"last-child":function(nodes,value,root){for(var i=0,results=[],node;
node=nodes[i];
i++){if(Selector.handlers.nextElementSibling(node)){continue
}results.push(node)
}return results
},"only-child":function(nodes,value,root){var h=Selector.handlers;
for(var i=0,results=[],node;
node=nodes[i];
i++){if(!h.previousElementSibling(node)&&!h.nextElementSibling(node)){results.push(node)
}}return results
},"nth-child":function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root)
},"nth-last-child":function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root,true)
},"nth-of-type":function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root,false,true)
},"nth-last-of-type":function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root,true,true)
},"first-of-type":function(nodes,formula,root){return Selector.pseudos.nth(nodes,"1",root,false,true)
},"last-of-type":function(nodes,formula,root){return Selector.pseudos.nth(nodes,"1",root,true,true)
},"only-of-type":function(nodes,formula,root){var p=Selector.pseudos;
return p["last-of-type"](p["first-of-type"](nodes,formula,root),formula,root)
},getIndices:function(a,b,total){if(a==0){return b>0?[b]:[]
}return $R(1,total).inject([],function(memo,i){if(0==(i-b)%a&&(i-b)/a>=0){memo.push(i)
}return memo
})
},nth:function(nodes,formula,root,reverse,ofType){if(nodes.length==0){return[]
}if(formula=="even"){formula="2n+0"
}if(formula=="odd"){formula="2n+1"
}var h=Selector.handlers,results=[],indexed=[],m;
h.mark(nodes);
for(var i=0,node;
node=nodes[i];
i++){if(!node.parentNode._countedByPrototype){h.index(node.parentNode,reverse,ofType);
indexed.push(node.parentNode)
}}if(formula.match(/^\d+$/)){formula=Number(formula);
for(var i=0,node;
node=nodes[i];
i++){if(node.nodeIndex==formula){results.push(node)
}}}else{if(m=formula.match(/^(-?\d*)?n(([+-])(\d+))?/)){if(m[1]=="-"){m[1]=-1
}var a=m[1]?Number(m[1]):1;
var b=m[2]?Number(m[2]):0;
var indices=Selector.pseudos.getIndices(a,b,nodes.length);
for(var i=0,node,l=indices.length;
node=nodes[i];
i++){for(var j=0;
j<l;
j++){if(node.nodeIndex==indices[j]){results.push(node)
}}}}}h.unmark(nodes);
h.unmark(indexed);
return results
},empty:function(nodes,value,root){for(var i=0,results=[],node;
node=nodes[i];
i++){if(node.tagName=="!"||node.firstChild){continue
}results.push(node)
}return results
},not:function(nodes,selector,root){var h=Selector.handlers,selectorType,m;
var exclusions=new Selector(selector).findElements(root);
h.mark(exclusions);
for(var i=0,results=[],node;
node=nodes[i];
i++){if(!node._countedByPrototype){results.push(node)
}}h.unmark(exclusions);
return results
},enabled:function(nodes,value,root){for(var i=0,results=[],node;
node=nodes[i];
i++){if(!node.disabled&&(!node.type||node.type!=="hidden")){results.push(node)
}}return results
},disabled:function(nodes,value,root){for(var i=0,results=[],node;
node=nodes[i];
i++){if(node.disabled){results.push(node)
}}return results
},checked:function(nodes,value,root){for(var i=0,results=[],node;
node=nodes[i];
i++){if(node.checked){results.push(node)
}}return results
}},operators:{"=":function(nv,v){return nv==v
},"!=":function(nv,v){return nv!=v
},"^=":function(nv,v){return nv==v||nv&&nv.startsWith(v)
},"$=":function(nv,v){return nv==v||nv&&nv.endsWith(v)
},"*=":function(nv,v){return nv==v||nv&&nv.include(v)
},"$=":function(nv,v){return nv.endsWith(v)
},"*=":function(nv,v){return nv.include(v)
},"~=":function(nv,v){return(" "+nv+" ").include(" "+v+" ")
},"|=":function(nv,v){return("-"+(nv||"").toUpperCase()+"-").include("-"+(v||"").toUpperCase()+"-")
}},split:function(expression){var expressions=[];
expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/,function(m){expressions.push(m[1].strip())
});
return expressions
},matchElements:function(elements,expression){var matches=$$(expression),h=Selector.handlers;
h.mark(matches);
for(var i=0,results=[],element;
element=elements[i];
i++){if(element._countedByPrototype){results.push(element)
}}h.unmark(matches);
return results
},findElement:function(elements,expression,index){if(Object.isNumber(expression)){index=expression;
expression=false
}return Selector.matchElements(elements,expression||"*")[index||0]
},findChildElements:function(element,expressions){expressions=Selector.split(expressions.join(","));
var results=[],h=Selector.handlers;
for(var i=0,l=expressions.length,selector;
i<l;
i++){selector=new Selector(expressions[i].strip());
h.concat(results,selector.findElements(element))
}return(l>1)?h.unique(results):results
}});
if(Prototype.Browser.IE){Object.extend(Selector.handlers,{concat:function(a,b){for(var i=0,node;
node=b[i];
i++){if(node.tagName!=="!"){a.push(node)
}}return a
},unmark:function(nodes){for(var i=0,node;
node=nodes[i];
i++){node.removeAttribute("_countedByPrototype")
}return nodes
}})
}function $$(){return Selector.findChildElements(document,$A(arguments))
}var Form={reset:function(form){$(form).reset();
return form
},serializeElements:function(elements,options){if(typeof options!="object"){options={hash:!!options}
}else{if(Object.isUndefined(options.hash)){options.hash=true
}}var key,value,submitted=false,submit=options.submit;
var data=elements.inject({},function(result,element){if(!element.disabled&&element.name){key=element.name;
value=$(element).getValue();
if(value!=null&&element.type!="file"&&(element.type!="submit"||(!submitted&&submit!==false&&(!submit||key==submit)&&(submitted=true)))){if(key in result){if(!Object.isArray(result[key])){result[key]=[result[key]]
}result[key].push(value)
}else{result[key]=value
}}}return result
});
return options.hash?data:Object.toQueryString(data)
}};
Form.Methods={serialize:function(form,options){return Form.serializeElements(Form.getElements(form),options)
},getElements:function(form){return $A($(form).getElementsByTagName("*")).inject([],function(elements,child){if(Form.Element.Serializers[child.tagName.toLowerCase()]){elements.push(Element.extend(child))
}return elements
})
},getInputs:function(form,typeName,name){form=$(form);
var inputs=form.getElementsByTagName("input");
if(!typeName&&!name){return $A(inputs).map(Element.extend)
}for(var i=0,matchingInputs=[],length=inputs.length;
i<length;
i++){var input=inputs[i];
if((typeName&&input.type!=typeName)||(name&&input.name!=name)){continue
}matchingInputs.push(Element.extend(input))
}return matchingInputs
},disable:function(form){form=$(form);
Form.getElements(form).invoke("disable");
return form
},enable:function(form){form=$(form);
Form.getElements(form).invoke("enable");
return form
},findFirstElement:function(form){var elements=$(form).getElements().findAll(function(element){return"hidden"!=element.type&&!element.disabled
});
var firstByIndex=elements.findAll(function(element){return element.hasAttribute("tabIndex")&&element.tabIndex>=0
}).sortBy(function(element){return element.tabIndex
}).first();
return firstByIndex?firstByIndex:elements.find(function(element){return["input","select","textarea"].include(element.tagName.toLowerCase())
})
},focusFirstElement:function(form){form=$(form);
form.findFirstElement().activate();
return form
},request:function(form,options){form=$(form),options=Object.clone(options||{});
var params=options.parameters,action=form.readAttribute("action")||"";
if(action.blank()){action=window.location.href
}options.parameters=form.serialize(true);
if(params){if(Object.isString(params)){params=params.toQueryParams()
}Object.extend(options.parameters,params)
}if(form.hasAttribute("method")&&!options.method){options.method=form.method
}return new Ajax.Request(action,options)
}};
Form.Element={focus:function(element){$(element).focus();
return element
},select:function(element){$(element).select();
return element
}};
Form.Element.Methods={serialize:function(element){element=$(element);
if(!element.disabled&&element.name){var value=element.getValue();
if(value!=undefined){var pair={};
pair[element.name]=value;
return Object.toQueryString(pair)
}}return""
},getValue:function(element){element=$(element);
var method=element.tagName.toLowerCase();
return Form.Element.Serializers[method](element)
},setValue:function(element,value){element=$(element);
var method=element.tagName.toLowerCase();
Form.Element.Serializers[method](element,value);
return element
},clear:function(element){$(element).value="";
return element
},present:function(element){return $(element).value!=""
},activate:function(element){element=$(element);
try{element.focus();
if(element.select&&(element.tagName.toLowerCase()!="input"||!["button","reset","submit"].include(element.type))){element.select()
}}catch(e){}return element
},disable:function(element){element=$(element);
element.disabled=true;
return element
},enable:function(element){element=$(element);
element.disabled=false;
return element
}};
var Field=Form.Element;
var $F=Form.Element.Methods.getValue;
Form.Element.Serializers={input:function(element,value){switch(element.type.toLowerCase()){case"checkbox":case"radio":return Form.Element.Serializers.inputSelector(element,value);
default:return Form.Element.Serializers.textarea(element,value)
}},inputSelector:function(element,value){if(Object.isUndefined(value)){return element.checked?element.value:null
}else{element.checked=!!value
}},textarea:function(element,value){if(Object.isUndefined(value)){return element.value
}else{element.value=value
}},select:function(element,value){if(Object.isUndefined(value)){return this[element.type=="select-one"?"selectOne":"selectMany"](element)
}else{var opt,currentValue,single=!Object.isArray(value);
for(var i=0,length=element.length;
i<length;
i++){opt=element.options[i];
currentValue=this.optionValue(opt);
if(single){if(currentValue==value){opt.selected=true;
return
}}else{opt.selected=value.include(currentValue)
}}}},selectOne:function(element){var index=element.selectedIndex;
return index>=0?this.optionValue(element.options[index]):null
},selectMany:function(element){var values,length=element.length;
if(!length){return null
}for(var i=0,values=[];
i<length;
i++){var opt=element.options[i];
if(opt.selected){values.push(this.optionValue(opt))
}}return values
},optionValue:function(opt){return Element.extend(opt).hasAttribute("value")?opt.value:opt.text
}};
Abstract.TimedObserver=Class.create(PeriodicalExecuter,{initialize:function($super,element,frequency,callback){$super(callback,frequency);
this.element=$(element);
this.lastValue=this.getValue()
},execute:function(){var value=this.getValue();
if(Object.isString(this.lastValue)&&Object.isString(value)?this.lastValue!=value:String(this.lastValue)!=String(value)){this.callback(this.element,value);
this.lastValue=value
}}});
Form.Element.Observer=Class.create(Abstract.TimedObserver,{getValue:function(){return Form.Element.getValue(this.element)
}});
Form.Observer=Class.create(Abstract.TimedObserver,{getValue:function(){return Form.serialize(this.element)
}});
Abstract.EventObserver=Class.create({initialize:function(element,callback){this.element=$(element);
this.callback=callback;
this.lastValue=this.getValue();
if(this.element.tagName.toLowerCase()=="form"){this.registerFormCallbacks()
}else{this.registerCallback(this.element)
}},onElementEvent:function(){var value=this.getValue();
if(this.lastValue!=value){this.callback(this.element,value);
this.lastValue=value
}},registerFormCallbacks:function(){Form.getElements(this.element).each(this.registerCallback,this)
},registerCallback:function(element){if(element.type){switch(element.type.toLowerCase()){case"checkbox":case"radio":Event.observe(element,"click",this.onElementEvent.bind(this));
break;
default:Event.observe(element,"change",this.onElementEvent.bind(this));
break
}}}});
Form.Element.EventObserver=Class.create(Abstract.EventObserver,{getValue:function(){return Form.Element.getValue(this.element)
}});
Form.EventObserver=Class.create(Abstract.EventObserver,{getValue:function(){return Form.serialize(this.element)
}});
if(!window.Event){var Event={}
}Object.extend(Event,{KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,KEY_HOME:36,KEY_END:35,KEY_PAGEUP:33,KEY_PAGEDOWN:34,KEY_INSERT:45,cache:{},relatedTarget:function(event){var element;
switch(event.type){case"mouseover":element=event.fromElement;
break;
case"mouseout":element=event.toElement;
break;
default:return null
}return Element.extend(element)
}});
Event.Methods=(function(){var isButton;
if(Prototype.Browser.IE){var buttonMap={0:1,1:4,2:2};
isButton=function(event,code){return event.button==buttonMap[code]
}
}else{if(Prototype.Browser.WebKit){isButton=function(event,code){switch(code){case 0:return event.which==1&&!event.metaKey;
case 1:return event.which==1&&event.metaKey;
default:return false
}}
}else{isButton=function(event,code){return event.which?(event.which===code+1):(event.button===code)
}
}}return{isLeftClick:function(event){return isButton(event,0)
},isMiddleClick:function(event){return isButton(event,1)
},isRightClick:function(event){return isButton(event,2)
},element:function(event){event=Event.extend(event);
var node=event.target,type=event.type,currentTarget=event.currentTarget;
if(currentTarget&&currentTarget.tagName){if(type==="load"||type==="error"||(type==="click"&&currentTarget.tagName.toLowerCase()==="input"&&currentTarget.type==="radio")){node=currentTarget
}}if(node.nodeType==Node.TEXT_NODE){node=node.parentNode
}return Element.extend(node)
},findElement:function(event,expression){var element=Event.element(event);
if(!expression){return element
}var elements=[element].concat(element.ancestors());
return Selector.findElement(elements,expression,0)
},pointer:function(event){var docElement=document.documentElement,body=document.body||{scrollLeft:0,scrollTop:0};
return{x:event.pageX||(event.clientX+(docElement.scrollLeft||body.scrollLeft)-(docElement.clientLeft||0)),y:event.pageY||(event.clientY+(docElement.scrollTop||body.scrollTop)-(docElement.clientTop||0))}
},pointerX:function(event){return Event.pointer(event).x
},pointerY:function(event){return Event.pointer(event).y
},stop:function(event){Event.extend(event);
event.preventDefault();
event.stopPropagation();
event.stopped=true
}}
})();
Event.extend=(function(){var methods=Object.keys(Event.Methods).inject({},function(m,name){m[name]=Event.Methods[name].methodize();
return m
});
if(Prototype.Browser.IE){Object.extend(methods,{stopPropagation:function(){this.cancelBubble=true
},preventDefault:function(){this.returnValue=false
},inspect:function(){return"[object Event]"
}});
return function(event){if(!event){return false
}if(event._extendedByPrototype){return event
}event._extendedByPrototype=Prototype.emptyFunction;
var pointer=Event.pointer(event);
Object.extend(event,{target:event.srcElement,relatedTarget:Event.relatedTarget(event),pageX:pointer.x,pageY:pointer.y});
return Object.extend(event,methods)
}
}else{Event.prototype=Event.prototype||document.createEvent("HTMLEvents")["__proto__"];
Object.extend(Event.prototype,methods);
return Prototype.K
}})();
Object.extend(Event,(function(){var cache=Event.cache;
function getEventID(element){if(element._prototypeEventID){return element._prototypeEventID[0]
}arguments.callee.id=arguments.callee.id||1;
return element._prototypeEventID=[++arguments.callee.id]
}function getDOMEventName(eventName){if(eventName&&eventName.include(":")){return"dataavailable"
}return eventName
}function getCacheForID(id){return cache[id]=cache[id]||{}
}function getWrappersForEventName(id,eventName){var c=getCacheForID(id);
return c[eventName]=c[eventName]||[]
}function createWrapper(element,eventName,handler){var id=getEventID(element);
var c=getWrappersForEventName(id,eventName);
if(c.pluck("handler").include(handler)){return false
}var wrapper=function(event){if(!Event||!Event.extend||(event.eventName&&event.eventName!=eventName)){return false
}Event.extend(event);
handler.call(element,event)
};
wrapper.handler=handler;
c.push(wrapper);
return wrapper
}function findWrapper(id,eventName,handler){var c=getWrappersForEventName(id,eventName);
return c.find(function(wrapper){return wrapper.handler==handler
})
}function destroyWrapper(id,eventName,handler){var c=getCacheForID(id);
if(!c[eventName]){return false
}c[eventName]=c[eventName].without(findWrapper(id,eventName,handler))
}function destroyCache(){for(var id in cache){for(var eventName in cache[id]){cache[id][eventName]=null
}}}if(window.attachEvent){window.attachEvent("onunload",destroyCache)
}if(Prototype.Browser.WebKit){window.addEventListener("unload",Prototype.emptyFunction,false)
}return{observe:function(element,eventName,handler){element=$(element);
var name=getDOMEventName(eventName);
var wrapper=createWrapper(element,eventName,handler);
if(!wrapper){return element
}if(element.addEventListener){element.addEventListener(name,wrapper,false)
}else{element.attachEvent("on"+name,wrapper)
}return element
},stopObserving:function(element,eventName,handler){element=$(element);
var id=getEventID(element),name=getDOMEventName(eventName);
if(!handler&&eventName){getWrappersForEventName(id,eventName).each(function(wrapper){element.stopObserving(eventName,wrapper.handler)
});
return element
}else{if(!eventName){Object.keys(getCacheForID(id)).each(function(eventName){element.stopObserving(eventName)
});
return element
}}var wrapper=findWrapper(id,eventName,handler);
if(!wrapper){return element
}if(element.removeEventListener){element.removeEventListener(name,wrapper,false)
}else{element.detachEvent("on"+name,wrapper)
}destroyWrapper(id,eventName,handler);
return element
},fire:function(element,eventName,memo){element=$(element);
if(element==document&&document.createEvent&&!element.dispatchEvent){element=document.documentElement
}var event;
if(document.createEvent){event=document.createEvent("HTMLEvents");
event.initEvent("dataavailable",true,true)
}else{event=document.createEventObject();
event.eventType="ondataavailable"
}event.eventName=eventName;
event.memo=memo||{};
if(document.createEvent){element.dispatchEvent(event)
}else{element.fireEvent(event.eventType,event)
}return Event.extend(event)
}}
})());
Object.extend(Event,Event.Methods);
Element.addMethods({fire:Event.fire,observe:Event.observe,stopObserving:Event.stopObserving});
Object.extend(document,{fire:Element.Methods.fire.methodize(),observe:Element.Methods.observe.methodize(),stopObserving:Element.Methods.stopObserving.methodize(),loaded:false});
(function(){var timer;
function fireContentLoadedEvent(){if(document.loaded){return
}if(timer){window.clearInterval(timer)
}document.fire("dom:loaded");
document.loaded=true
}if(document.addEventListener){if(Prototype.Browser.WebKit){timer=window.setInterval(function(){if(/loaded|complete/.test(document.readyState)){fireContentLoadedEvent()
}},0);
Event.observe(window,"load",fireContentLoadedEvent)
}else{document.addEventListener("DOMContentLoaded",fireContentLoadedEvent,false)
}}else{document.write("<script id=__onDOMContentLoaded defer src=//:><\/script>");
$("__onDOMContentLoaded").onreadystatechange=function(){if(this.readyState=="complete"){this.onreadystatechange=null;
fireContentLoadedEvent()
}}
}})();
Hash.toQueryString=Object.toQueryString;
var Toggle={display:Element.toggle};
Element.Methods.childOf=Element.Methods.descendantOf;
var Insertion={Before:function(element,content){return Element.insert(element,{before:content})
},Top:function(element,content){return Element.insert(element,{top:content})
},Bottom:function(element,content){return Element.insert(element,{bottom:content})
},After:function(element,content){return Element.insert(element,{after:content})
}};
var $continue=new Error('"throw $continue" is deprecated, use "return" instead');
var Position={includeScrollOffsets:false,prepare:function(){this.deltaX=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;
this.deltaY=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0
},within:function(element,x,y){if(this.includeScrollOffsets){return this.withinIncludingScrolloffsets(element,x,y)
}this.xcomp=x;
this.ycomp=y;
this.offset=Element.cumulativeOffset(element);
return(y>=this.offset[1]&&y<this.offset[1]+element.offsetHeight&&x>=this.offset[0]&&x<this.offset[0]+element.offsetWidth)
},withinIncludingScrolloffsets:function(element,x,y){var offsetcache=Element.cumulativeScrollOffset(element);
this.xcomp=x+offsetcache[0]-this.deltaX;
this.ycomp=y+offsetcache[1]-this.deltaY;
this.offset=Element.cumulativeOffset(element);
return(this.ycomp>=this.offset[1]&&this.ycomp<this.offset[1]+element.offsetHeight&&this.xcomp>=this.offset[0]&&this.xcomp<this.offset[0]+element.offsetWidth)
},overlap:function(mode,element){if(!mode){return 0
}if(mode=="vertical"){return((this.offset[1]+element.offsetHeight)-this.ycomp)/element.offsetHeight
}if(mode=="horizontal"){return((this.offset[0]+element.offsetWidth)-this.xcomp)/element.offsetWidth
}},cumulativeOffset:Element.Methods.cumulativeOffset,positionedOffset:Element.Methods.positionedOffset,absolutize:function(element){Position.prepare();
return Element.absolutize(element)
},relativize:function(element){Position.prepare();
return Element.relativize(element)
},realOffset:Element.Methods.cumulativeScrollOffset,offsetParent:Element.Methods.getOffsetParent,page:Element.Methods.viewportOffset,clone:function(source,target,options){options=options||{};
return Element.clonePosition(target,source,options)
}};
if(!document.getElementsByClassName){document.getElementsByClassName=function(instanceMethods){function iter(name){return name.blank()?null:"[contains(concat(' ', @class, ' '), ' "+name+" ')]"
}instanceMethods.getElementsByClassName=Prototype.BrowserFeatures.XPath?function(element,className){className=className.toString().strip();
var cond=/\s/.test(className)?$w(className).map(iter).join(""):iter(className);
return cond?document._getElementsByXPath(".//*"+cond,element):[]
}:function(element,className){className=className.toString().strip();
var elements=[],classNames=(/\s/.test(className)?$w(className):null);
if(!classNames&&!className){return elements
}var nodes=$(element).getElementsByTagName("*");
className=" "+className+" ";
for(var i=0,child,cn;
child=nodes[i];
i++){if(child.className&&(cn=" "+child.className+" ")&&(cn.include(className)||(classNames&&classNames.all(function(name){return !name.toString().blank()&&cn.include(" "+name+" ")
})))){elements.push(Element.extend(child))
}}return elements
};
return function(className,parentElement){return $(parentElement||document.body).getElementsByClassName(className)
}
}(Element.Methods)
}Element.ClassNames=Class.create();
Element.ClassNames.prototype={initialize:function(element){this.element=$(element)
},_each:function(iterator){this.element.className.split(/\s+/).select(function(name){return name.length>0
})._each(iterator)
},set:function(className){this.element.className=className
},add:function(classNameToAdd){if(this.include(classNameToAdd)){return
}this.set($A(this).concat(classNameToAdd).join(" "))
},remove:function(classNameToRemove){if(!this.include(classNameToRemove)){return
}this.set($A(this).without(classNameToRemove).join(" "))
},toString:function(){return $A(this).join(" ")
}};
Object.extend(Element.ClassNames.prototype,Enumerable);
Element.addMethods();
String.prototype.parseColor=function(){var color="#";
if(this.slice(0,4)=="rgb("){var cols=this.slice(4,this.length-1).split(",");
var i=0;
do{color+=parseInt(cols[i]).toColorPart()
}while(++i<3)
}else{if(this.slice(0,1)=="#"){if(this.length==4){for(var i=1;
i<4;
i++){color+=(this.charAt(i)+this.charAt(i)).toLowerCase()
}}if(this.length==7){color=this.toLowerCase()
}}}return(color.length==7?color:(arguments[0]||this))
};
Element.collectTextNodes=function(element){return $A($(element).childNodes).collect(function(node){return(node.nodeType==3?node.nodeValue:(node.hasChildNodes()?Element.collectTextNodes(node):""))
}).flatten().join("")
};
Element.collectTextNodesIgnoreClass=function(element,className){return $A($(element).childNodes).collect(function(node){return(node.nodeType==3?node.nodeValue:((node.hasChildNodes()&&!Element.hasClassName(node,className))?Element.collectTextNodesIgnoreClass(node,className):""))
}).flatten().join("")
};
Element.setContentZoom=function(element,percent){element=$(element);
element.setStyle({fontSize:(percent/100)+"em"});
if(Prototype.Browser.WebKit){window.scrollBy(0,0)
}return element
};
Element.getInlineOpacity=function(element){return $(element).style.opacity||""
};
Element.forceRerendering=function(element){try{element=$(element);
var n=document.createTextNode(" ");
element.appendChild(n);
element.removeChild(n)
}catch(e){}};
var Effect={_elementDoesNotExistError:{name:"ElementDoesNotExistError",message:"The specified DOM element does not exist, but is required for this effect to operate"},Transitions:{linear:Prototype.K,sinoidal:function(pos){return(-Math.cos(pos*Math.PI)/2)+0.5
},reverse:function(pos){return 1-pos
},flicker:function(pos){var pos=((-Math.cos(pos*Math.PI)/4)+0.75)+Math.random()/4;
return pos>1?1:pos
},wobble:function(pos){return(-Math.cos(pos*Math.PI*(9*pos))/2)+0.5
},pulse:function(pos,pulses){pulses=pulses||5;
return(((pos%(1/pulses))*pulses).round()==0?((pos*pulses*2)-(pos*pulses*2).floor()):1-((pos*pulses*2)-(pos*pulses*2).floor()))
},spring:function(pos){return 1-(Math.cos(pos*4.5*Math.PI)*Math.exp(-pos*6))
},none:function(pos){return 0
},full:function(pos){return 1
}},DefaultOptions:{duration:1,fps:100,sync:false,from:0,to:1,delay:0,queue:"parallel"},tagifyText:function(element){var tagifyStyle="position:relative";
if(Prototype.Browser.IE){tagifyStyle+=";zoom:1"
}element=$(element);
$A(element.childNodes).each(function(child){if(child.nodeType==3){child.nodeValue.toArray().each(function(character){element.insertBefore(new Element("span",{style:tagifyStyle}).update(character==" "?String.fromCharCode(160):character),child)
});
Element.remove(child)
}})
},multiple:function(element,effect){var elements;
if(((typeof element=="object")||Object.isFunction(element))&&(element.length)){elements=element
}else{elements=$(element).childNodes
}var options=Object.extend({speed:0.1,delay:0},arguments[2]||{});
var masterDelay=options.delay;
$A(elements).each(function(element,index){new effect(element,Object.extend(options,{delay:index*options.speed+masterDelay}))
})
},PAIRS:{slide:["SlideDown","SlideUp"],blind:["BlindDown","BlindUp"],appear:["Appear","Fade"]},toggle:function(element,effect){element=$(element);
effect=(effect||"appear").toLowerCase();
var options=Object.extend({queue:{position:"end",scope:(element.id||"global"),limit:1}},arguments[2]||{});
Effect[element.visible()?Effect.PAIRS[effect][1]:Effect.PAIRS[effect][0]](element,options)
}};
Effect.DefaultOptions.transition=Effect.Transitions.sinoidal;
Effect.ScopedQueue=Class.create(Enumerable,{initialize:function(){this.effects=[];
this.interval=null
},_each:function(iterator){this.effects._each(iterator)
},add:function(effect){var timestamp=new Date().getTime();
var position=Object.isString(effect.options.queue)?effect.options.queue:effect.options.queue.position;
switch(position){case"front":this.effects.findAll(function(e){return e.state=="idle"
}).each(function(e){e.startOn+=effect.finishOn;
e.finishOn+=effect.finishOn
});
break;
case"with-last":timestamp=this.effects.pluck("startOn").max()||timestamp;
break;
case"end":timestamp=this.effects.pluck("finishOn").max()||timestamp;
break
}effect.startOn+=timestamp;
effect.finishOn+=timestamp;
if(!effect.options.queue.limit||(this.effects.length<effect.options.queue.limit)){this.effects.push(effect)
}if(!this.interval){this.interval=setInterval(this.loop.bind(this),15)
}},remove:function(effect){this.effects=this.effects.reject(function(e){return e==effect
});
if(this.effects.length==0){clearInterval(this.interval);
this.interval=null
}},loop:function(){var timePos=new Date().getTime();
for(var i=0,len=this.effects.length;
i<len;
i++){this.effects[i]&&this.effects[i].loop(timePos)
}}});
Effect.Queues={instances:$H(),get:function(queueName){if(!Object.isString(queueName)){return queueName
}return this.instances.get(queueName)||this.instances.set(queueName,new Effect.ScopedQueue())
}};
Effect.Queue=Effect.Queues.get("global");
Effect.Base=Class.create({position:null,start:function(options){function codeForEvent(options,eventName){return((options[eventName+"Internal"]?"this.options."+eventName+"Internal(this);":"")+(options[eventName]?"this.options."+eventName+"(this);":""))
}if(options&&options.transition===false){options.transition=Effect.Transitions.linear
}this.options=Object.extend(Object.extend({},Effect.DefaultOptions),options||{});
this.currentFrame=0;
this.state="idle";
this.startOn=this.options.delay*1000;
this.finishOn=this.startOn+(this.options.duration*1000);
this.fromToDelta=this.options.to-this.options.from;
this.totalTime=this.finishOn-this.startOn;
this.totalFrames=this.options.fps*this.options.duration;
eval('this.render = function(pos){ if (this.state=="idle"){this.state="running";'+codeForEvent(this.options,"beforeSetup")+(this.setup?"this.setup();":"")+codeForEvent(this.options,"afterSetup")+'};if (this.state=="running"){pos=this.options.transition(pos)*'+this.fromToDelta+"+"+this.options.from+";this.position=pos;"+codeForEvent(this.options,"beforeUpdate")+(this.update?"this.update(pos);":"")+codeForEvent(this.options,"afterUpdate")+"}}");
this.event("beforeStart");
if(!this.options.sync){Effect.Queues.get(Object.isString(this.options.queue)?"global":this.options.queue.scope).add(this)
}},loop:function(timePos){if(timePos>=this.startOn){if(timePos>=this.finishOn){this.render(1);
this.cancel();
this.event("beforeFinish");
if(this.finish){this.finish()
}this.event("afterFinish");
return
}var pos=(timePos-this.startOn)/this.totalTime,frame=(pos*this.totalFrames).round();
if(frame>this.currentFrame){this.render(pos);
this.currentFrame=frame
}}},cancel:function(){if(!this.options.sync){Effect.Queues.get(Object.isString(this.options.queue)?"global":this.options.queue.scope).remove(this)
}this.state="finished"
},event:function(eventName){if(this.options[eventName+"Internal"]){this.options[eventName+"Internal"](this)
}if(this.options[eventName]){this.options[eventName](this)
}},inspect:function(){var data=$H();
for(property in this){if(!Object.isFunction(this[property])){data.set(property,this[property])
}}return"#<Effect:"+data.inspect()+",options:"+$H(this.options).inspect()+">"
}});
Effect.Parallel=Class.create(Effect.Base,{initialize:function(effects){this.effects=effects||[];
this.start(arguments[1])
},update:function(position){this.effects.invoke("render",position)
},finish:function(position){this.effects.each(function(effect){effect.render(1);
effect.cancel();
effect.event("beforeFinish");
if(effect.finish){effect.finish(position)
}effect.event("afterFinish")
})
}});
Effect.Tween=Class.create(Effect.Base,{initialize:function(object,from,to){object=Object.isString(object)?$(object):object;
var args=$A(arguments),method=args.last(),options=args.length==5?args[3]:null;
this.method=Object.isFunction(method)?method.bind(object):Object.isFunction(object[method])?object[method].bind(object):function(value){object[method]=value
};
this.start(Object.extend({from:from,to:to},options||{}))
},update:function(position){this.method(position)
}});
Effect.Event=Class.create(Effect.Base,{initialize:function(){this.start(Object.extend({duration:0},arguments[0]||{}))
},update:Prototype.emptyFunction});
Effect.Opacity=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);
if(!this.element){throw (Effect._elementDoesNotExistError)
}if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout)){this.element.setStyle({zoom:1})
}var options=Object.extend({from:this.element.getOpacity()||0,to:1},arguments[1]||{});
this.start(options)
},update:function(position){this.element.setOpacity(position)
}});
Effect.Move=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);
if(!this.element){throw (Effect._elementDoesNotExistError)
}var options=Object.extend({x:0,y:0,mode:"relative"},arguments[1]||{});
this.start(options)
},setup:function(){this.element.makePositioned();
this.originalLeft=parseFloat(this.element.getStyle("left")||"0");
this.originalTop=parseFloat(this.element.getStyle("top")||"0");
if(this.options.mode=="absolute"){this.options.x=this.options.x-this.originalLeft;
this.options.y=this.options.y-this.originalTop
}},update:function(position){this.element.setStyle({left:(this.options.x*position+this.originalLeft).round()+"px",top:(this.options.y*position+this.originalTop).round()+"px"})
}});
Effect.MoveBy=function(element,toTop,toLeft){return new Effect.Move(element,Object.extend({x:toLeft,y:toTop},arguments[3]||{}))
};
Effect.Scale=Class.create(Effect.Base,{initialize:function(element,percent){this.element=$(element);
if(!this.element){throw (Effect._elementDoesNotExistError)
}var options=Object.extend({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:"box",scaleFrom:100,scaleTo:percent},arguments[2]||{});
this.start(options)
},setup:function(){this.restoreAfterFinish=this.options.restoreAfterFinish||false;
this.elementPositioning=this.element.getStyle("position");
this.originalStyle={};
["top","left","width","height","fontSize"].each(function(k){this.originalStyle[k]=this.element.style[k]
}.bind(this));
this.originalTop=this.element.offsetTop;
this.originalLeft=this.element.offsetLeft;
var fontSize=this.element.getStyle("font-size")||"100%";
["em","px","%","pt"].each(function(fontSizeType){if(fontSize.indexOf(fontSizeType)>0){this.fontSize=parseFloat(fontSize);
this.fontSizeType=fontSizeType
}}.bind(this));
this.factor=(this.options.scaleTo-this.options.scaleFrom)/100;
this.dims=null;
if(this.options.scaleMode=="box"){this.dims=[this.element.offsetHeight,this.element.offsetWidth]
}if(/^content/.test(this.options.scaleMode)){this.dims=[this.element.scrollHeight,this.element.scrollWidth]
}if(!this.dims){this.dims=[this.options.scaleMode.originalHeight,this.options.scaleMode.originalWidth]
}},update:function(position){var currentScale=(this.options.scaleFrom/100)+(this.factor*position);
if(this.options.scaleContent&&this.fontSize){this.element.setStyle({fontSize:this.fontSize*currentScale+this.fontSizeType})
}this.setDimensions(this.dims[0]*currentScale,this.dims[1]*currentScale)
},finish:function(position){if(this.restoreAfterFinish){this.element.setStyle(this.originalStyle)
}},setDimensions:function(height,width){var d={};
if(this.options.scaleX){d.width=width.round()+"px"
}if(this.options.scaleY){d.height=height.round()+"px"
}if(this.options.scaleFromCenter){var topd=(height-this.dims[0])/2;
var leftd=(width-this.dims[1])/2;
if(this.elementPositioning=="absolute"){if(this.options.scaleY){d.top=this.originalTop-topd+"px"
}if(this.options.scaleX){d.left=this.originalLeft-leftd+"px"
}}else{if(this.options.scaleY){d.top=-topd+"px"
}if(this.options.scaleX){d.left=-leftd+"px"
}}}this.element.setStyle(d)
}});
Effect.Highlight=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);
if(!this.element){throw (Effect._elementDoesNotExistError)
}var options=Object.extend({startcolor:"#ffff99"},arguments[1]||{});
this.start(options)
},setup:function(){if(this.element.getStyle("display")=="none"){this.cancel();
return
}this.oldStyle={};
if(!this.options.keepBackgroundImage){this.oldStyle.backgroundImage=this.element.getStyle("background-image");
this.element.setStyle({backgroundImage:"none"})
}if(!this.options.endcolor){this.options.endcolor=this.element.getStyle("background-color").parseColor("#ffffff")
}if(!this.options.restorecolor){this.options.restorecolor=this.element.getStyle("background-color")
}this._base=$R(0,2).map(function(i){return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16)
}.bind(this));
this._delta=$R(0,2).map(function(i){return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i]
}.bind(this))
},update:function(position){this.element.setStyle({backgroundColor:$R(0,2).inject("#",function(m,v,i){return m+((this._base[i]+(this._delta[i]*position)).round().toColorPart())
}.bind(this))})
},finish:function(){this.element.setStyle(Object.extend(this.oldStyle,{backgroundColor:this.options.restorecolor}))
}});
Effect.ScrollTo=function(element){var options=arguments[1]||{},scrollOffsets=document.viewport.getScrollOffsets(),elementOffsets=$(element).cumulativeOffset(),max=(window.height||document.body.scrollHeight)-document.viewport.getHeight();
if(options.offset){elementOffsets[1]+=options.offset
}return new Effect.Tween(null,scrollOffsets.top,elementOffsets[1]>max?max:elementOffsets[1],options,function(p){scrollTo(scrollOffsets.left,p.round())
})
};
Effect.Fade=function(element){element=$(element);
var oldOpacity=element.getInlineOpacity();
var options=Object.extend({from:element.getOpacity()||1,to:0,afterFinishInternal:function(effect){if(effect.options.to!=0){return
}effect.element.hide().setStyle({opacity:oldOpacity})
}},arguments[1]||{});
return new Effect.Opacity(element,options)
};
Effect.Appear=function(element){element=$(element);
var options=Object.extend({from:(element.getStyle("display")=="none"?0:element.getOpacity()||0),to:1,afterFinishInternal:function(effect){effect.element.forceRerendering()
},beforeSetup:function(effect){effect.element.setOpacity(effect.options.from).show()
}},arguments[1]||{});
return new Effect.Opacity(element,options)
};
Effect.Puff=function(element){element=$(element);
var oldStyle={opacity:element.getInlineOpacity(),position:element.getStyle("position"),top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};
return new Effect.Parallel([new Effect.Scale(element,200,{sync:true,scaleFromCenter:true,scaleContent:true,restoreAfterFinish:true}),new Effect.Opacity(element,{sync:true,to:0})],Object.extend({duration:1,beforeSetupInternal:function(effect){Position.absolutize(effect.effects[0].element)
},afterFinishInternal:function(effect){effect.effects[0].element.hide().setStyle(oldStyle)
}},arguments[1]||{}))
};
Effect.BlindUp=function(element){element=$(element);
element.makeClipping();
return new Effect.Scale(element,0,Object.extend({scaleContent:false,scaleX:false,restoreAfterFinish:true,afterFinishInternal:function(effect){effect.element.hide().undoClipping()
}},arguments[1]||{}))
};
Effect.BlindDown=function(element){element=$(element);
var elementDimensions=element.getDimensions();
return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makeClipping().setStyle({height:"0px"}).show()
},afterFinishInternal:function(effect){effect.element.undoClipping()
}},arguments[1]||{}))
};
Effect.SwitchOff=function(element){element=$(element);
var oldOpacity=element.getInlineOpacity();
return new Effect.Appear(element,Object.extend({duration:0.4,from:0,transition:Effect.Transitions.flicker,afterFinishInternal:function(effect){new Effect.Scale(effect.element,1,{duration:0.3,scaleFromCenter:true,scaleX:false,scaleContent:false,restoreAfterFinish:true,beforeSetup:function(effect){effect.element.makePositioned().makeClipping()
},afterFinishInternal:function(effect){effect.element.hide().undoClipping().undoPositioned().setStyle({opacity:oldOpacity})
}})
}},arguments[1]||{}))
};
Effect.DropOut=function(element){element=$(element);
var oldStyle={top:element.getStyle("top"),left:element.getStyle("left"),opacity:element.getInlineOpacity()};
return new Effect.Parallel([new Effect.Move(element,{x:0,y:100,sync:true}),new Effect.Opacity(element,{sync:true,to:0})],Object.extend({duration:0.5,beforeSetup:function(effect){effect.effects[0].element.makePositioned()
},afterFinishInternal:function(effect){effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle)
}},arguments[1]||{}))
};
Effect.Shake=function(element){element=$(element);
var options=Object.extend({distance:20,duration:0.5},arguments[1]||{});
var distance=parseFloat(options.distance);
var split=parseFloat(options.duration)/10;
var oldStyle={top:element.getStyle("top"),left:element.getStyle("left")};
return new Effect.Move(element,{x:distance,y:0,duration:split,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance,y:0,duration:split,afterFinishInternal:function(effect){effect.element.undoPositioned().setStyle(oldStyle)
}})
}})
}})
}})
}})
}})
};
Effect.SlideDown=function(element){element=$(element).cleanWhitespace();
var oldInnerBottom=element.down().getStyle("bottom");
var elementDimensions=element.getDimensions();
return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:window.opera?0:1,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makePositioned();
effect.element.down().makePositioned();
if(window.opera){effect.element.setStyle({top:""})
}effect.element.makeClipping().setStyle({height:"0px"}).show()
},afterUpdateInternal:function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+"px"})
},afterFinishInternal:function(effect){effect.element.undoClipping().undoPositioned();
effect.element.down().undoPositioned().setStyle({bottom:oldInnerBottom})
}},arguments[1]||{}))
};
Effect.SlideUp=function(element){element=$(element).cleanWhitespace();
var oldInnerBottom=element.down().getStyle("bottom");
var elementDimensions=element.getDimensions();
return new Effect.Scale(element,window.opera?0:1,Object.extend({scaleContent:false,scaleX:false,scaleMode:"box",scaleFrom:100,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makePositioned();
effect.element.down().makePositioned();
if(window.opera){effect.element.setStyle({top:""})
}effect.element.makeClipping().show()
},afterUpdateInternal:function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+"px"})
},afterFinishInternal:function(effect){effect.element.hide().undoClipping().undoPositioned();
effect.element.down().undoPositioned().setStyle({bottom:oldInnerBottom})
}},arguments[1]||{}))
};
Effect.Squish=function(element){return new Effect.Scale(element,window.opera?1:0,{restoreAfterFinish:true,beforeSetup:function(effect){effect.element.makeClipping()
},afterFinishInternal:function(effect){effect.element.hide().undoClipping()
}})
};
Effect.Grow=function(element){element=$(element);
var options=Object.extend({direction:"center",moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.full},arguments[1]||{});
var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};
var dims=element.getDimensions();
var initialMoveX,initialMoveY;
var moveX,moveY;
switch(options.direction){case"top-left":initialMoveX=initialMoveY=moveX=moveY=0;
break;
case"top-right":initialMoveX=dims.width;
initialMoveY=moveY=0;
moveX=-dims.width;
break;
case"bottom-left":initialMoveX=moveX=0;
initialMoveY=dims.height;
moveY=-dims.height;
break;
case"bottom-right":initialMoveX=dims.width;
initialMoveY=dims.height;
moveX=-dims.width;
moveY=-dims.height;
break;
case"center":initialMoveX=dims.width/2;
initialMoveY=dims.height/2;
moveX=-dims.width/2;
moveY=-dims.height/2;
break
}return new Effect.Move(element,{x:initialMoveX,y:initialMoveY,duration:0.01,beforeSetup:function(effect){effect.element.hide().makeClipping().makePositioned()
},afterFinishInternal:function(effect){new Effect.Parallel([new Effect.Opacity(effect.element,{sync:true,to:1,from:0,transition:options.opacityTransition}),new Effect.Move(effect.element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition}),new Effect.Scale(effect.element,100,{scaleMode:{originalHeight:dims.height,originalWidth:dims.width},sync:true,scaleFrom:window.opera?1:0,transition:options.scaleTransition,restoreAfterFinish:true})],Object.extend({beforeSetup:function(effect){effect.effects[0].element.setStyle({height:"0px"}).show()
},afterFinishInternal:function(effect){effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle)
}},options))
}})
};
Effect.Shrink=function(element){element=$(element);
var options=Object.extend({direction:"center",moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.none},arguments[1]||{});
var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};
var dims=element.getDimensions();
var moveX,moveY;
switch(options.direction){case"top-left":moveX=moveY=0;
break;
case"top-right":moveX=dims.width;
moveY=0;
break;
case"bottom-left":moveX=0;
moveY=dims.height;
break;
case"bottom-right":moveX=dims.width;
moveY=dims.height;
break;
case"center":moveX=dims.width/2;
moveY=dims.height/2;
break
}return new Effect.Parallel([new Effect.Opacity(element,{sync:true,to:0,from:1,transition:options.opacityTransition}),new Effect.Scale(element,window.opera?1:0,{sync:true,transition:options.scaleTransition,restoreAfterFinish:true}),new Effect.Move(element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition})],Object.extend({beforeStartInternal:function(effect){effect.effects[0].element.makePositioned().makeClipping()
},afterFinishInternal:function(effect){effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle)
}},options))
};
Effect.Pulsate=function(element){element=$(element);
var options=arguments[1]||{};
var oldOpacity=element.getInlineOpacity();
var transition=options.transition||Effect.Transitions.sinoidal;
var reverser=function(pos){return transition(1-Effect.Transitions.pulse(pos,options.pulses))
};
reverser.bind(transition);
return new Effect.Opacity(element,Object.extend(Object.extend({duration:2,from:0,afterFinishInternal:function(effect){effect.element.setStyle({opacity:oldOpacity})
}},options),{transition:reverser}))
};
Effect.Fold=function(element){element=$(element);
var oldStyle={top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};
element.makeClipping();
return new Effect.Scale(element,5,Object.extend({scaleContent:false,scaleX:false,afterFinishInternal:function(effect){new Effect.Scale(element,1,{scaleContent:false,scaleY:false,afterFinishInternal:function(effect){effect.element.hide().undoClipping().setStyle(oldStyle)
}})
}},arguments[1]||{}))
};
Effect.Morph=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);
if(!this.element){throw (Effect._elementDoesNotExistError)
}var options=Object.extend({style:{}},arguments[1]||{});
if(!Object.isString(options.style)){this.style=$H(options.style)
}else{if(options.style.include(":")){this.style=options.style.parseStyle()
}else{this.element.addClassName(options.style);
this.style=$H(this.element.getStyles());
this.element.removeClassName(options.style);
var css=this.element.getStyles();
this.style=this.style.reject(function(style){return style.value==css[style.key]
});
options.afterFinishInternal=function(effect){effect.element.addClassName(effect.options.style);
effect.transforms.each(function(transform){effect.element.style[transform.style]=""
})
}
}}this.start(options)
},setup:function(){function parseColor(color){if(!color||["rgba(0, 0, 0, 0)","transparent"].include(color)){color="#ffffff"
}color=color.parseColor();
return $R(0,2).map(function(i){return parseInt(color.slice(i*2+1,i*2+3),16)
})
}this.transforms=this.style.map(function(pair){var property=pair[0],value=pair[1],unit=null;
if(value.parseColor("#zzzzzz")!="#zzzzzz"){value=value.parseColor();
unit="color"
}else{if(property=="opacity"){value=parseFloat(value);
if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout)){this.element.setStyle({zoom:1})
}}else{if(Element.CSS_LENGTH.test(value)){var components=value.match(/^([\+\-]?[0-9\.]+)(.*)$/);
value=parseFloat(components[1]);
unit=(components.length==3)?components[2]:null
}}}var originalValue=this.element.getStyle(property);
return{style:property.camelize(),originalValue:unit=="color"?parseColor(originalValue):parseFloat(originalValue||0),targetValue:unit=="color"?parseColor(value):value,unit:unit}
}.bind(this)).reject(function(transform){return((transform.originalValue==transform.targetValue)||(transform.unit!="color"&&(isNaN(transform.originalValue)||isNaN(transform.targetValue))))
})
},update:function(position){var style={},transform,i=this.transforms.length;
while(i--){style[(transform=this.transforms[i]).style]=transform.unit=="color"?"#"+(Math.round(transform.originalValue[0]+(transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart()+(Math.round(transform.originalValue[1]+(transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart()+(Math.round(transform.originalValue[2]+(transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart():(transform.originalValue+(transform.targetValue-transform.originalValue)*position).toFixed(3)+(transform.unit===null?"":transform.unit)
}this.element.setStyle(style,true)
}});
Effect.Transform=Class.create({initialize:function(tracks){this.tracks=[];
this.options=arguments[1]||{};
this.addTracks(tracks)
},addTracks:function(tracks){tracks.each(function(track){track=$H(track);
var data=track.values().first();
this.tracks.push($H({ids:track.keys().first(),effect:Effect.Morph,options:{style:data}}))
}.bind(this));
return this
},play:function(){return new Effect.Parallel(this.tracks.map(function(track){var ids=track.get("ids"),effect=track.get("effect"),options=track.get("options");
var elements=[$(ids)||$$(ids)].flatten();
return elements.map(function(e){return new effect(e,Object.extend({sync:true},options))
})
}).flatten(),this.options)
}});
Element.CSS_PROPERTIES=$w("backgroundColor backgroundPosition borderBottomColor borderBottomStyle borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth borderRightColor borderRightStyle borderRightWidth borderSpacing borderTopColor borderTopStyle borderTopWidth bottom clip color fontSize fontWeight height left letterSpacing lineHeight marginBottom marginLeft marginRight marginTop markerOffset maxHeight maxWidth minHeight minWidth opacity outlineColor outlineOffset outlineWidth paddingBottom paddingLeft paddingRight paddingTop right textIndent top width wordSpacing zIndex");
Element.CSS_LENGTH=/^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;
String.__parseStyleElement=document.createElement("div");
String.prototype.parseStyle=function(){var style,styleRules=$H();
if(Prototype.Browser.WebKit){style=new Element("div",{style:this}).style
}else{String.__parseStyleElement.innerHTML='<div style="'+this+'"></div>';
style=String.__parseStyleElement.childNodes[0].style
}Element.CSS_PROPERTIES.each(function(property){if(style[property]){styleRules.set(property,style[property])
}});
if(Prototype.Browser.IE&&this.include("opacity")){styleRules.set("opacity",this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1])
}return styleRules
};
if(document.defaultView&&document.defaultView.getComputedStyle){Element.getStyles=function(element){var css=document.defaultView.getComputedStyle($(element),null);
return Element.CSS_PROPERTIES.inject({},function(styles,property){styles[property]=css[property];
return styles
})
}
}else{Element.getStyles=function(element){element=$(element);
var css=element.currentStyle,styles;
styles=Element.CSS_PROPERTIES.inject({},function(results,property){results[property]=css[property];
return results
});
if(!styles.opacity){styles.opacity=element.getOpacity()
}return styles
}
}Effect.Methods={morph:function(element,style){element=$(element);
new Effect.Morph(element,Object.extend({style:style},arguments[2]||{}));
return element
},visualEffect:function(element,effect,options){element=$(element);
var s=effect.dasherize().camelize(),klass=s.charAt(0).toUpperCase()+s.substring(1);
new Effect[klass](element,options);
return element
},highlight:function(element,options){element=$(element);
new Effect.Highlight(element,options);
return element
}};
$w("fade appear grow shrink fold blindUp blindDown slideUp slideDown pulsate shake puff squish switchOff dropOut").each(function(effect){Effect.Methods[effect]=function(element,options){element=$(element);
Effect[effect.charAt(0).toUpperCase()+effect.substring(1)](element,options);
return element
}
});
$w("getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles").each(function(f){Effect.Methods[f]=Element[f]
});
Element.addMethods(Effect.Methods);
var Window=Class.create();
Window.keepMultiModalWindow=false;
Window.hasEffectLib=(typeof Effect!="undefined");
Window.resizeEffectDuration=0.4;
Window.prototype={initialize:function(){var id;
var optionIndex=0;
if(arguments.length>0){if(typeof arguments[0]=="string"){id=arguments[0];
optionIndex=1
}else{id=arguments[0]?arguments[0].id:null
}}if(!id){id="window_"+new Date().getTime()
}if($(id)){alert("Window "+id+" is already registered in the DOM! Make sure you use setDestroyOnClose() or destroyOnClose: true in the constructor")
}this.options=Object.extend({className:"dialog",blurClassName:null,minWidth:100,minHeight:20,resizable:true,closable:true,minimizable:true,maximizable:true,draggable:true,userData:null,showEffect:(Window.hasEffectLib?Effect.Appear:Element.show),hideEffect:(Window.hasEffectLib?Effect.Fade:Element.hide),showEffectOptions:{},hideEffectOptions:{},effectOptions:null,parent:document.body,title:"&nbsp;",url:null,onload:Prototype.emptyFunction,width:200,height:300,opacity:1,recenterAuto:true,wiredDrag:false,closeCallback:null,destroyOnClose:true,gridX:1,gridY:1},arguments[optionIndex]||{});
if(Window.hasEffectLib){if(this.options.showEffect==Effect.Appear){this.options.showEffectOptions.to=this.options.opacity
}if(this.options.hideEffect==Effect.Fade){this.options.hideEffectOptions.from=this.options.opacity
}}if(this.options.hideEffect==Element.hide){this.options.hideEffect=function(){Element.hide(this.element);
if(this.options.destroyOnClose){this.destroy()
}}.bind(this)
}if(this.options.parent!=document.body){this.options.parent=$(this.options.parent)
}this.element=this._createWindow(id);
this.element.win=this;
this.eventOnLoad=this._getWindowBorderSize.bindAsEventListener(this);
this.topbar=$(this.element.id+"_top");
this.bottombar=$(this.element.id+"_bottom");
this.content=$(this.element.id+"_content");
Event.observe(window,"load",this.eventOnLoad);
this.storedLocation=null;
this.setOpacity(this.options.opacity);
if(this.options.zIndex){this.setZIndex(this.options.zIndex)
}if(this.options.destroyOnClose){this.setDestroyOnClose(true)
}this._getWindowBorderSize();
this.width=this.options.width;
this.height=this.options.height;
this.visible=false;
this.constraint=false;
this.constraintPad={top:0,left:0,bottom:0,right:0};
if(this.width&&this.height){this.setSize(this.options.width,this.options.height)
}Windows.register(this)
},destroy:function(){this._notify("onDestroy");
Event.stopObserving(window,"load",this.eventOnLoad);
Event.stopObserving(this.content,"load",this.options.onload);
if(this._oldParent){var content=this.getContent();
var originalContent=null;
for(var i=0;
i<content.childNodes.length;
i++){originalContent=content.childNodes[i];
if(originalContent.nodeType==1){break
}originalContent=null
}if(originalContent){this._oldParent.appendChild(originalContent)
}this._oldParent=null
}if(this.options.url){this.content.src=null
}if(this.iefix){Element.remove(this.iefix)
}Element.remove(this.element);
Windows.unregister(this)
},getContent:function(){return this.content
},getId:function(){return this.element.id
},setDestroyOnClose:function(){this.options.destroyOnClose=true
},_round:function(val,round){return round==1?val:val=Math.floor(val/round)*round
},_updateLeftConstraint:function(left){if(this.constraint&&this.useLeft&&this.useTop){var width=this.options.parent==document.body?WindowUtilities.getPageSize().windowWidth:this.options.parent.getDimensions().width;
if(left<this.constraintPad.left){left=this.constraintPad.left
}if(left+this.width+this.widthE+this.widthW>width-this.constraintPad.right){left=width-this.constraintPad.right-this.width-this.widthE-this.widthW
}}return left
},_updateTopConstraint:function(top){if(this.constraint&&this.useLeft&&this.useTop){var height=this.options.parent==document.body?WindowUtilities.getPageSize().windowHeight:this.options.parent.getDimensions().height;
var h=this.height+this.heightN+this.heightS;
if(top<this.constraintPad.top){top=this.constraintPad.top
}if(top+h>height-this.constraintPad.bottom){top=height-this.constraintPad.bottom-h
}}return top
},_createWindow:function(id){var className=this.options.className;
var win=document.createElement("div");
win.setAttribute("id",id);
win.className="dialog";
var content;
if(this.options.url){content='<iframe frameborder="0" name="'+id+'_content"  id="'+id+'_content" src="'+this.options.url+'"> </iframe>'
}else{content='<div id="'+id+'_content" class="'+className+'_content"> </div>'
}var closeDiv=this.options.closable?"<div class='"+className+"_close' id='"+id+"_close' onclick='Windows.close(\""+id+"\", event)'> </div>":"";
var blank="../themes/default/blank.gif";
win.innerHTML=closeDiv+"      <table id='"+id+"_row1' class=\"top table_window\">        <tr>          <td class='"+className+"_nw'></td>          <td class='"+className+"_n'><div id='"+id+"_top' class='"+className+"_title title_window'>"+this.options.title+"</div></td>          <td class='"+className+"_ne'></td>        </tr>      </table>      <table id='"+id+"_row2' class=\"mid table_window\">        <tr>          <td class='"+className+"_w'></td>            <td id='"+id+"_table_content' class='"+className+"_content' valign='top'>"+content+"</td>          <td class='"+className+"_e'></td>        </tr>      </table>        <table id='"+id+"_row3' class=\"bot table_window\">        <tr>          <td class='"+className+"_sw'></td>            <td class='"+className+"_s'><div id='"+id+"_bottom' class='status_bar'><span style='float:left; width:1px; height:1px'></span></div></td>             <td class='"+className+"_se'></td>        </tr>      </table>			<div class='"+className+"_popBkd'> </div>    ";
Element.hide(win);
this.options.parent.insertBefore(win,this.options.parent.firstChild);
Event.observe($(id+"_content"),"load",this.options.onload);
return win
},setLocation:function(top,left){top=this._updateTopConstraint(top);
left=this._updateLeftConstraint(left);
var e=this.currentDrag||this.element;
e.setStyle({top:top+"px"});
e.setStyle({left:left+"px"});
this.useLeft=true;
this.useTop=true
},setSize:function(width,height,useEffect){width=parseFloat(width);
height=parseFloat(height);
if(!this.minimized&&width<this.options.minWidth){width=this.options.minWidth
}if(!this.minimized&&height<this.options.minHeight){height=this.options.minHeight
}if(this.options.maxHeight&&height>this.options.maxHeight){height=this.options.maxHeight
}if(this.options.maxWidth&&width>this.options.maxWidth){width=this.options.maxWidth
}this.width=width;
this.height=height;
var e=this.currentDrag?this.currentDrag:this.element;
e.setStyle({width:width+this.widthW+this.widthE+"px"});
e.setStyle({height:height+this.heightN+this.heightS+"px"});
if(!this.currentDrag||this.currentDrag==this.element){var content=$(this.element.id+"_content");
content.setStyle({height:height+"px"});
content.setStyle({width:width+"px"})
}},toFront:function(){if(this.element.style.zIndex<Windows.maxZIndex){this.setZIndex(Windows.maxZIndex+1)
}if(this.iefix){this._fixIEOverlapping()
}},computeBounds:function(){if(!this.width||!this.height){var size=WindowUtilities._computeSize(this.content.innerHTML,this.content.id,this.width,this.height,0,this.options.className);
if(this.height){this.width=size+5
}else{this.height=size+5
}}this.setSize(this.width,this.height);
if(this.centered){this._center(this.centerTop,this.centerLeft)
}},show:function(modal){this.visible=true;
if(modal){if(typeof this.overlayOpacity=="undefined"){var that=this;
setTimeout(function(){that.show(modal)
},10);
return
}Windows.addModalWindow(this);
this.modal=true;
this.setZIndex(Windows.maxZIndex+1);
Windows.unsetOverflow(this)
}else{if(!this.element.style.zIndex){this.setZIndex(Windows.maxZIndex+1)
}}if(this.oldStyle){this.getContent().setStyle({overflow:this.oldStyle})
}this.computeBounds();
this._notify("onBeforeShow");
if(this.options.showEffect!=Element.show&&this.options.showEffectOptions){this.options.showEffect(this.element,this.options.showEffectOptions)
}else{this.options.showEffect(this.element)
}this._checkIEOverlapping();
WindowUtilities.focusedWindow=this;
this._notify("onShow")
},showCenter:function(modal,top,left){this.centered=true;
this.centerTop=top;
this.centerLeft=left;
this.show(modal)
},_center:function(top,left){var windowScroll=WindowUtilities.getWindowScroll(this.options.parent);
var pageSize=WindowUtilities.getPageSize(this.options.parent);
if(typeof top=="undefined"){top=(pageSize.windowHeight-(this.height+this.heightN+this.heightS))/2
}top+=windowScroll.top;
if(typeof left=="undefined"){left=(pageSize.windowWidth-(this.width+this.widthW+this.widthE))/2
}left+=windowScroll.left;
this.setLocation(top,left);
this.toFront()
},hide:function(){this.visible=false;
if(this.modal){Windows.removeModalWindow(this);
Windows.resetOverflow()
}this.oldStyle=this.getContent().getStyle("overflow")||"auto";
this.getContent().setStyle({overflow:"hidden"});
this.options.hideEffect(this.element,this.options.hideEffectOptions);
if(this.iefix){this.iefix.hide()
}if(!this.doNotNotifyHide){this._notify("onHide")
}},close:function(){if(this.visible){if(this.options.closeCallback&&!this.options.closeCallback(this)){return
}if(this.options.destroyOnClose){var destroyFunc=this.destroy.bind(this);
if(this.options.hideEffectOptions.afterFinish){var func=this.options.hideEffectOptions.afterFinish;
this.options.hideEffectOptions.afterFinish=function(){func();
destroyFunc()
}
}else{this.options.hideEffectOptions.afterFinish=function(){destroyFunc()
}
}}Windows.updateFocusedWindow();
this.doNotNotifyHide=true;
this.hide();
this.doNotNotifyHide=false;
this._notify("onClose")
}},setOpacity:function(opacity){if(Element.setOpacity){Element.setOpacity(this.element,opacity)
}},setZIndex:function(zindex){this.element.setStyle({zIndex:zindex});
Windows.updateZindex(zindex,this)
},_checkIEOverlapping:function(){if(!this.iefix&&(navigator.appVersion.indexOf("MSIE")>0)&&(navigator.userAgent.indexOf("Opera")<0)&&(this.element.getStyle("position")=="absolute")){new Insertion.After(this.element.id,'<iframe id="'+this.element.id+'_iefix" style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" src="javascript:false;" frameborder="0" scrolling="no"></iframe>');
this.iefix=$(this.element.id+"_iefix")
}if(this.iefix){setTimeout(this._fixIEOverlapping.bind(this),50)
}},_fixIEOverlapping:function(){},_getWindowBorderSize:function(event){var div=this._createHiddenDiv(this.options.className+"_n");
this.heightN=Element.getDimensions(div).height;
div.parentNode.removeChild(div);
var div=this._createHiddenDiv(this.options.className+"_s");
this.heightS=Element.getDimensions(div).height;
div.parentNode.removeChild(div);
var div=this._createHiddenDiv(this.options.className+"_e");
this.widthE=Element.getDimensions(div).width;
div.parentNode.removeChild(div);
var div=this._createHiddenDiv(this.options.className+"_w");
this.widthW=Element.getDimensions(div).width;
div.parentNode.removeChild(div);
var div=document.createElement("div");
div.className="overlay_"+this.options.className;
document.body.appendChild(div);
var that=this;
setTimeout(function(){that.overlayOpacity=($(div).getStyle("opacity"));
div.parentNode.removeChild(div)
},10);
if(Prototype.Browser.IE){this.heightS=$(this.getId()+"_row3").getDimensions().height;
this.heightN=$(this.getId()+"_row1").getDimensions().height
}if(Prototype.Browser.WebKit&&Prototype.Browser.WebKitVersion<420){this.setSize(this.width,this.height)
}if(this.doMaximize){this.maximize()
}if(this.doMinimize){this.minimize()
}},_createHiddenDiv:function(className){var objBody=document.body;
var win=document.createElement("div");
win.setAttribute("id",this.element.id+"_tmp");
win.className=className;
win.style.display="none";
win.innerHTML="";
objBody.insertBefore(win,objBody.firstChild);
return win
},_notify:function(eventName){if(this.options[eventName]){this.options[eventName](this)
}else{Windows.notify(eventName,this)
}}};
var Windows={windows:[],modalWindows:[],observers:[],focusedWindow:null,maxZIndex:10,overlayShowEffectOptions:{duration:0.5},overlayHideEffectOptions:{duration:0.5},notify:function(eventName,win){this.observers.each(function(o){if(o[eventName]){o[eventName](eventName,win)
}})
},getWindow:function(id){return this.windows.detect(function(d){return d.getId()==id
})
},updateFocusedWindow:function(){this.focusedWindow=this.windows.length>=2?this.windows[this.windows.length-2]:null
},register:function(win){this.windows.push(win)
},addModalWindow:function(win){if(this.modalWindows.length==0){WindowUtilities.disableScreen(win.options.className,"overlay_modal",win.overlayOpacity,win.getId(),win.options.parent)
}else{if(Window.keepMultiModalWindow){$("overlay_modal").style.zIndex=Windows.maxZIndex+1;
Windows.maxZIndex+=1;
WindowUtilities._hideSelect(this.modalWindows.last().getId())
}else{this.modalWindows.last().element.hide()
}WindowUtilities._showSelect(win.getId())
}this.modalWindows.push(win)
},removeModalWindow:function(win){this.modalWindows.pop();
if(this.modalWindows.length==0){WindowUtilities.enableScreen()
}else{if(Window.keepMultiModalWindow){this.modalWindows.last().toFront();
WindowUtilities._showSelect(this.modalWindows.last().getId())
}else{this.modalWindows.last().element.show()
}}},unregister:function(win){this.windows=this.windows.reject(function(d){return d==win
})
},close:function(id,event){var win=this.getWindow(id);
if(win){win.close()
}if(event){Event.stop(event)
}},blur:function(id){var win=this.getWindow(id);
if(!win){return
}if(win.options.blurClassName){win.changeClassName(win.options.blurClassName)
}if(this.focusedWindow==win){this.focusedWindow=null
}win._notify("onBlur")
},focus:function(id){var win=this.getWindow(id);
if(!win){return
}if(this.focusedWindow){this.blur(this.focusedWindow.getId())
}if(win.options.focusClassName){win.changeClassName(win.options.focusClassName)
}this.focusedWindow=win;
win._notify("onFocus")
},unsetOverflow:function(except){this.windows.each(function(d){d.oldOverflow=d.getContent().getStyle("overflow")||"auto";
d.getContent().setStyle({overflow:"hidden"})
});
if(except&&except.oldOverflow){except.getContent().setStyle({overflow:except.oldOverflow})
}},resetOverflow:function(){this.windows.each(function(d){if(d.oldOverflow){d.getContent().setStyle({overflow:d.oldOverflow})
}})
},updateZindex:function(zindex,win){if(zindex>this.maxZIndex){this.maxZIndex=zindex;
if(this.focusedWindow){this.blur(this.focusedWindow.getId())
}}this.focusedWindow=win;
if(this.focusedWindow){this.focus(this.focusedWindow.getId())
}}};
var Dialog={dialogId:null,onCompleteFunc:null,callFunc:null,parameters:null,info:function(content,parameters){if(content&&typeof content!="string"){Dialog._runAjaxRequest(content,parameters,Dialog.info);
return
}content=content||"";
parameters=parameters||{};
parameters=Object.extend(parameters,parameters.windowParameters||{});
parameters.windowParameters=parameters.windowParameters||{};
parameters.className=parameters.className||"alert";
var content="<div id='modal_dialog_message' class='"+parameters.className+"_message'>"+content+"</div>";
if(parameters.showProgress){content+="<div id='modal_dialog_progress' class='"+parameters.className+"_progress'>  </div>"
}parameters.ok=null;
parameters.cancel=null;
return this._openDialog(content,parameters)
},_openDialog:function(content,parameters){var className=parameters.className;
if(!parameters.height&&!parameters.width){parameters.width=WindowUtilities.getPageSize(parameters.options.parent||document.body).pageWidth/2
}if(parameters.id){this.dialogId=parameters.id
}else{var t=new Date();
this.dialogId="modal_dialog_"+t.getTime();
parameters.id=this.dialogId
}if(!parameters.height||!parameters.width){var size=WindowUtilities._computeSize(content,this.dialogId,parameters.width,parameters.height,5,className);
if(parameters.height){parameters.width=size+5
}else{parameters.height=size+5
}}parameters.effectOptions=parameters.effectOptions;
parameters.closable=parameters.closable||false;
var win=new Window(parameters);
win.getContent().innerHTML=content;
win.showCenter(true,parameters.top,parameters.left);
win.setDestroyOnClose();
win.cancelCallback=parameters.onCancel||parameters.cancel;
win.okCallback=parameters.onOk||parameters.ok;
return win
},_getAjaxContent:function(originalRequest){Dialog.callFunc(originalRequest.responseText,Dialog.parameters)
},_runAjaxRequest:function(message,parameters,callFunc){if(message.options==null){message.options={}
}Dialog.onCompleteFunc=message.options.onComplete;
Dialog.parameters=parameters;
Dialog.callFunc=callFunc;
message.options.onComplete=Dialog._getAjaxContent;
new Ajax.Request(message.url,message.options)
}};
var WindowUtilities={getWindowScroll:function(parent){var T,L,W,H;
parent=parent||document.body;
if(parent!=document.body){T=parent.scrollTop;
L=parent.scrollLeft;
W=parent.scrollWidth;
H=parent.scrollHeight
}else{var w=window;
with(w.document){if(w.document.documentElement&&documentElement.scrollTop){T=documentElement.scrollTop;
L=documentElement.scrollLeft
}else{if(w.document.body){T=body.scrollTop;
L=body.scrollLeft
}}if(w.innerWidth){W=w.innerWidth;
H=w.innerHeight
}else{if(w.document.documentElement&&documentElement.clientWidth){W=documentElement.clientWidth;
H=documentElement.clientHeight
}else{W=body.offsetWidth;
H=body.offsetHeight
}}}}return{top:T,left:L,width:W,height:H}
},getPageSize:function(parent){parent=parent||document.body;
var windowWidth,windowHeight;
var pageHeight,pageWidth;
if(parent!=document.body){windowWidth=parent.getWidth();
windowHeight=parent.getHeight();
pageWidth=parent.scrollWidth;
pageHeight=parent.scrollHeight
}else{var xScroll,yScroll;
if(window.innerHeight&&window.scrollMaxY){xScroll=document.body.scrollWidth;
yScroll=window.innerHeight+window.scrollMaxY
}else{if(document.body.scrollHeight>document.body.offsetHeight){xScroll=document.body.scrollWidth;
yScroll=document.body.scrollHeight
}else{xScroll=document.body.offsetWidth;
yScroll=document.body.offsetHeight
}}if(self.innerHeight){windowWidth=self.innerWidth;
windowHeight=self.innerHeight
}else{if(document.documentElement&&document.documentElement.clientHeight){windowWidth=document.documentElement.clientWidth;
windowHeight=document.documentElement.clientHeight
}else{if(document.body){windowWidth=document.body.clientWidth;
windowHeight=document.body.clientHeight
}}}if(yScroll<windowHeight){pageHeight=windowHeight
}else{pageHeight=yScroll
}if(xScroll<windowWidth){pageWidth=windowWidth
}else{pageWidth=xScroll
}}return{pageWidth:pageWidth,pageHeight:pageHeight,windowWidth:windowWidth,windowHeight:windowHeight}
},disableScreen:function(className,overlayId,overlayOpacity,contentId,parent){WindowUtilities.initLightbox(overlayId,className,function(){this._disableScreen(className,overlayId,overlayOpacity,contentId)
}.bind(this),parent||document.body)
},_disableScreen:function(className,overlayId,overlayOpacity,contentId){var objOverlay=$(overlayId);
var pageSize=WindowUtilities.getPageSize(objOverlay.parentNode);
if(contentId&&Prototype.Browser.IE){WindowUtilities._hideSelect();
WindowUtilities._showSelect(contentId)
}objOverlay.style.height=(pageSize.pageHeight+"px");
objOverlay.style.display="none";
if(overlayId=="overlay_modal"&&Window.hasEffectLib&&Windows.overlayShowEffectOptions){objOverlay.overlayOpacity=overlayOpacity;
new Effect.Appear(objOverlay,Object.extend({from:0,to:overlayOpacity},Windows.overlayShowEffectOptions))
}else{objOverlay.style.display="block"
}},enableScreen:function(id){id=id||"overlay_modal";
var objOverlay=$(id);
if(objOverlay){if(id=="overlay_modal"&&Window.hasEffectLib&&Windows.overlayHideEffectOptions){new Effect.Fade(objOverlay,Object.extend({from:objOverlay.overlayOpacity,to:0},Windows.overlayHideEffectOptions))
}else{objOverlay.style.display="none";
objOverlay.parentNode.removeChild(objOverlay)
}if(id!="__invisible__"){WindowUtilities._showSelect()
}}},_hideSelect:function(id){if(Prototype.Browser.IE){id=id==null?"":"#"+id+" ";
$$(id+"select").each(function(element){if(!WindowUtilities.isDefined(element.oldVisibility)){element.oldVisibility=element.style.visibility?element.style.visibility:"visible";
element.style.visibility="hidden"
}})
}},_showSelect:function(id){if(Prototype.Browser.IE){id=id==null?"":"#"+id+" ";
$$(id+"select").each(function(element){if(WindowUtilities.isDefined(element.oldVisibility)){try{element.style.visibility=element.oldVisibility
}catch(e){element.style.visibility="visible"
}element.oldVisibility=null
}else{if(element.style.visibility){element.style.visibility="visible"
}}})
}},isDefined:function(object){return typeof(object)!="undefined"&&object!=null
},initLightbox:function(id,className,doneHandler,parent){if($(id)){Element.setStyle(id,{zIndex:Windows.maxZIndex+1});
Windows.maxZIndex++;
doneHandler()
}else{var objOverlay=document.createElement("div");
objOverlay.setAttribute("id",id);
objOverlay.className="overlay_"+className;
objOverlay.style.display="none";
objOverlay.style.position="absolute";
objOverlay.style.top="0";
objOverlay.style.left="0";
objOverlay.style.zIndex=Windows.maxZIndex+1;
Windows.maxZIndex++;
objOverlay.style.width="100%";
parent.insertBefore(objOverlay,parent.firstChild);
if(Prototype.Browser.WebKit&&id=="overlay_modal"){setTimeout(function(){doneHandler()
},10)
}else{doneHandler()
}}}};
var Validator=Class.create();
Validator.prototype={initialize:function(className,error,test,options){if(typeof test=="function"){this.options=$H(options);
this._test=test
}else{this.options=$H(test);
this._test=function(){return true
}
}this.error=error||"Validation failed.";
this.className=className
},test:function(v,elm){return(this._test(v,elm)&&this.options.all(function(p){return Validator.methods[p.key]?Validator.methods[p.key](v,elm,p.value):true
}))
}};
Validator.methods={pattern:function(v,elm,opt){return Validation.get("IsEmpty").test(v)||opt.test(v)
},minLength:function(v,elm,opt){return v.length>=opt
},maxLength:function(v,elm,opt){return v.length<=opt
},min:function(v,elm,opt){return v>=parseFloat(opt)
},max:function(v,elm,opt){return v<=parseFloat(opt)
},notOneOf:function(v,elm,opt){return $A(opt).all(function(value){return v!=value
})
},oneOf:function(v,elm,opt){return $A(opt).any(function(value){return v==value
})
},is:function(v,elm,opt){return v==opt
},isNot:function(v,elm,opt){return v!=opt
},equalToField:function(v,elm,opt){return v==$F(opt)
},notEqualToField:function(v,elm,opt){return v!=$F(opt)
},include:function(v,elm,opt){return $A(opt).all(function(value){return Validation.get(value).test(v,elm)
})
}};
var Validation=Class.create();
Validation.prototype={initialize:function(form,options){this.options=Object.extend({onSubmit:true,stopOnFirst:false,immediate:true,focusOnError:true,useTitles:false,onFormValidate:function(result,form){return result
},onElementValidate:function(result,elm){return result
}},options||{});
this.form=$(form);
if(this.options.onSubmit){Event.observe(this.form,"submit",this.onSubmit.bind(this),false)
}if(this.options.immediate){var useTitles=this.options.useTitles;
var callback=this.options.onElementValidate;
Form.getElements(this.form).each(function(input){Event.observe(input,"blur",function(ev){Validation.validate(Event.element(ev),{useTitle:useTitles,onElementValidate:callback})
})
})
}},onSubmit:function(ev){if(!this.validate()){Event.stop(ev)
}},validate:function(){var result=false;
var useTitles=this.options.useTitles;
var callback=this.options.onElementValidate;
if(this.options.stopOnFirst){result=Form.getElements(this.form).all(function(elm){return Validation.validate(elm,{useTitle:useTitles,onElementValidate:callback})
})
}else{result=Form.getElements(this.form).collect(function(elm){return Validation.validate(elm,{useTitle:useTitles,onElementValidate:callback})
}).all()
}result=this.options.onFormValidate(result,this.form);
return result
},reset:function(){Form.getElements(this.form).each(Validation.reset)
}};
Object.extend(Validation,{validate:function(elm,options){options=Object.extend({useTitle:false,onElementValidate:function(result,elm){}},options||{});
elm=$(elm);
var cn=elm.classNames();
return result=cn.all(function(value){var test=Validation.test(value,elm,options.useTitle);
options.onElementValidate(test,elm);
return test
})
},test:function(name,elm,useTitle){var v=Validation.get(name);
var prop="__advice"+name.camelize();
try{if(Validation.isVisible(elm)&&!v.test($F(elm),elm)){if(!elm[prop]){var advice=Validation.getAdvice(name,elm);
if(advice==null){var errorMsg=useTitle?((elm&&elm.title)?elm.title:v.error):v.error;
advice='<div class="validation-advice" id="advice-'+name+"-"+Validation.getElmID(elm)+'" style="display:none">'+errorMsg+"</div>";
switch(elm.type.toLowerCase()){case"checkbox":case"radio":var p=elm.parentNode;
if(p){new Insertion.Bottom(p,advice)
}else{new Insertion.After(elm,advice)
}break;
default:new Insertion.After(elm,advice)
}advice=Validation.getAdvice(name,elm)
}if(typeof Effect=="undefined"){advice.style.display="block"
}else{new Effect.Appear(advice,{duration:0.5})
}}elm[prop]=true;
elm.removeClassName("validation-passed");
elm.parentNode.removeClassName("validation-passed");
elm.addClassName("validation-failed");
elm.parentNode.addClassName("validation-failed");
return false
}else{var advice=Validation.getAdvice(name,elm);
if(advice!=null){advice.hide()
}elm[prop]="";
elm.removeClassName("validation-failed");
elm.parentNode.removeClassName("validation-failed");
elm.addClassName("validation-passed");
elm.parentNode.addClassName("validation-passed");
return true
}}catch(e){throw (e)
}},isVisible:function(elm){while(elm.tagName!="BODY"){if(!$(elm).visible()){return false
}elm=elm.parentNode
}return true
},getAdvice:function(name,elm){return $("advice-"+name+"-"+Validation.getElmID(elm))||$("advice-"+Validation.getElmID(elm))
},getElmID:function(elm){return elm.id?elm.id:elm.name
},reset:function(elm){elm=$(elm);
var cn=elm.classNames();
cn.each(function(value){var prop="__advice"+value.camelize();
if(elm[prop]){var advice=Validation.getAdvice(value,elm);
advice.hide();
elm[prop]=""
}elm.removeClassName("validation-failed");
elm.parentNode.removeClassName("validation-failed");
elm.removeClassName("validation-passed");
elm.parentNode.removeClassName("validation-passed")
})
},add:function(className,error,test,options){var nv={};
nv[className]=new Validator(className,error,test,options);
Object.extend(Validation.methods,nv)
},addAllThese:function(validators){var nv={};
$A(validators).each(function(value){nv[value[0]]=new Validator(value[0],value[1],value[2],(value.length>3?value[3]:{}))
});
Object.extend(Validation.methods,nv)
},get:function(name){return Validation.methods[name]?Validation.methods[name]:Validation.methods._LikeNoIDIEverSaw_
},methods:{_LikeNoIDIEverSaw_:new Validator("_LikeNoIDIEverSaw_","",{})}});
Validation.add("IsEmpty","",function(v){return((v==null)||(v.length==0))
});
function checkError(){if(window.document.forms[0].creditcard.value.length!=16){s.sendFormEvent("e","Contact Us","ContactForm","Credit Card: Invalid Length");
return false
}s.sendFormEvent("s","Contact Us","ContactForm");
return true
}Validation.addAllThese([["required","Required",function(v,elm){var error=elm.id+": "+this.error;
return !Validation.get("IsEmpty").test(v)
}],["validate-number","Numeric value required",function(v,elm){var error=elm.id+": "+this.error;
return Validation.get("IsEmpty").test(v)||(!isNaN(v)&&!/^\s+$/.test(v))
}],["validate-digits","Please use numbers only in this field. please avoid spaces or other characters such as dots or commas.",function(v,elm){var error=elm.id+": "+this.error;
return Validation.get("IsEmpty").test(v)||!/[^\d]/.test(v)
}],["validate-alpha","Please use letters only (a-z) in this field.",function(v,elm){var error=elm.id+": "+this.error;
return Validation.get("IsEmpty").test(v)||/^[a-zA-Z]+$/.test(v)
}],["validate-alphanum","Alpha-numeric value required",function(v,elm){var error=elm.id+": "+this.error;
return Validation.get("IsEmpty").test(v)||!/\W/.test(v)
}],["validate-date","Please enter a valid date.",function(v,elm){var error=elm.id+": "+this.error;
var test=new Date(v);
return Validation.get("IsEmpty").test(v)||!isNaN(test)
}],["validate-email","Please enter a valid email address",function(v,elm){var error=elm.id+": "+this.error;
var regex=/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,6}$/;
return Validation.get("IsEmpty").test(v)||regex.test(v)
}],["validate-url","Please enter a valid URL.",function(v,elm){var error=elm.id+": "+this.error;
return Validation.get("IsEmpty").test(v)||/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i.test(v)
}],["validate-date-au","Please use this date format: dd/mm/yyyy. For example 17/03/2006 for the 17th of March, 2006.",function(v,elm){var error=elm.id+": "+this.error;
if(Validation.get("IsEmpty").test(v)){return true
}var regex=/^(\d{2})\/(\d{2})\/(\d{4})$/;
if(!regex.test(v)){return false
}var d=new Date(v.replace(regex,"$2/$1/$3"));
return(parseInt(RegExp.$2,10)==(1+d.getMonth()))&&(parseInt(RegExp.$1,10)==d.getDate())&&(parseInt(RegExp.$3,10)==d.getFullYear())
}],["validate-currency-dollar","Please enter a valid $ amount. For example $100.00 .",function(v){return Validation.get("IsEmpty").test(v)||/^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/.test(v)
}],["validate-selection","Required",function(v,elm){var error=elm.id+": "+this.error;
return elm.options?elm.selectedIndex>0:!Validation.get("IsEmpty").test(v)
}],["validate-one-required","Please select an option",function(v,elm){var error=elm.id+": "+this.error;
var p=elm.parentNode;
var options=p.getElementsByTagName("INPUT");
return $A(options).any(function(elm){return $F(elm)
})
}],["retypepassword","New passwords must match",{equalToField:"newpass"}],["retypeEmail","Email addresses must match",{equalToField:"emailaddress"}],["validate-all-required","Required",function(v,elm){var p=elm.parentNode;
var options=p.getElementsByTagName("INPUT");
return $A(options).all(function(elm){return $F(elm)
})
}],["validate-age","Required",function(v,elm){var regex=/^(\d+)$/;
var error=elm.id+": "+this.error;
return regex.test(v)
}],["validate-digits-required","Required",function(v,elm){var error=elm.id+": "+this.error;
var regex=/^(\d+)$/;
return regex.test(v)
}],["validate-email-required","A valid email is required",function(v,elm){var error=elm.id+": "+this.error;
var regex=/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,6}$/;
return regex.test(v)
}],["validate-accountNum-required","Invalid Account Number",function(v,elm){var error=elm.id+": "+this.error;
var regex=/^(\d{9})$/;
return regex.test(v)
}],["one-for-all","Please fill out all of the above fields",function(v,elm){var p=elm.parentNode;
var options=p.getElementsByTagName("INPUT");
return !$A(options).any(function(elm){return $F(elm)
})||$A(options).all(function(elm){return $F(elm)
})
}],["validate-phone","Invalid phone number",function(v,elm){var error=elm.id+": "+this.error;
var regex=/^(\()?(\d{3})([\)-\. ])?(\d{3})([-\. ])?(\d{4})$/;
return Validation.get("IsEmpty").test(v)||regex.test(v)
}],["validate-phone-required","Invalid phone number",function(v,elm){var error=elm.id+": "+this.error;
var regex=/^(\()?(\d{3})([\)-\. ])?(\d{3})([-\. ])?(\d{4})$/;
return regex.test(v)
}],["validate-zip","Invalid zip code",function(v,elm){var error=elm.id+": "+this.error;
v=v.toUpperCase();
var regex=/^(\d{5})(([-\. ])?(\d{4}))?$/;
return Validation.get("IsEmpty").test(v)||regex.test(v)
}],["validate-zip-required","Invalid zip code",function(v,elm){var error=elm.id+": "+this.error;
v=v.toUpperCase();
var regex=/^(\d{5})(([-\. ])?(\d{4}))?$/;
return regex.test(v)
}],["validate-ccard-required","Invalid credit card number",function(v,elm){var error=elm.id+": "+this.error;
v=v.toUpperCase();
var regex=/^(\d{13,16})$/;
return Mod10(v)
}],["validate-expDate-selection","Valid card required.",function(v,elm){var p=elm.parentNode;
var selects=p.getElementsByTagName("select");
var now=new Date();
var month=now.getMonth()+1;
var year=now.getFullYear();
var monthSelect=$A(selects)[0];
var yearSelect=$A(selects)[1];
return $A(selects).all(function(elm){if(elm.selectedIndex==0){return false
}if(elm.options[0].value=="Month"||elm.options[0].value=="00"){if(monthSelect.value<month&&yearSelect.value==year){return false
}}if(elm.options[0].value=="Year"||elm.options[0].value=="1900"){if(yearSelect.value>year){return true
}}return $F(elm)
})
}]]);
Mod10=function(){var number=this.replace(/\s+/g,"");
if(number.match(/\D/)){return false
}number=number.split("").reverse().join("");
var digits="";
for(var i=0;
i<number.length;
i++){digits+=""+((i%2)?number.charAt(i)*2:number.charAt(i))
}var sum=0;
for(var i=0;
i<digits.length;
i++){sum+=(digits.charAt(i)*1)
}return(sum%10)?false:true
};
if(typeof deconcept=="undefined"){var deconcept={}
}if(typeof deconcept.util=="undefined"){deconcept.util={}
}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil={}
}deconcept.SWFObject=function(swf,id,w,h,ver,c,quality,xiRedirectUrl,redirectUrl,detectKey){if(!document.getElementById){return
}this.DETECT_KEY=detectKey?detectKey:"detectflash";
this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);
this.params={};
this.variables={};
this.attributes=[];
if(swf){this.setAttribute("swf",swf)
}if(id){this.setAttribute("id",id)
}if(w){this.setAttribute("width",w)
}if(h){this.setAttribute("height",h)
}if(ver){this.setAttribute("version",new deconcept.PlayerVersion(ver.toString().split(".")))
}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();
if(!window.opera&&document.all&&this.installedVer.major>7){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};
__flash_savedUnloadHandler=function(){};
window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs)
};
window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);
deconcept.unloadSet=true
}}if(c){this.addParam("bgcolor",c)
}var q=quality?quality:"high";
this.addParam("quality",q);
this.setAttribute("useExpressInstall",false);
this.setAttribute("doExpressInstall",false);
var xir=(xiRedirectUrl)?xiRedirectUrl:window.location;
this.setAttribute("xiRedirectUrl",xir);
this.setAttribute("redirectUrl","");
if(redirectUrl){this.setAttribute("redirectUrl",redirectUrl)
}};
deconcept.SWFObject.prototype={useExpressInstall:function(path){this.xiSWFPath=!path?"expressinstall.swf":path;
this.setAttribute("useExpressInstall",true)
},setAttribute:function(name,value){this.attributes[name]=value
},getAttribute:function(name){return this.attributes[name]||""
},addParam:function(name,value){this.params[name]=value
},getParams:function(){return this.params
},addVariable:function(name,value){this.variables[name]=value
},getVariable:function(name){return this.variables[name]||""
},getVariables:function(){return this.variables
},getVariablePairs:function(){var variablePairs=[];
var key;
var variables=this.getVariables();
for(key in variables){variablePairs[variablePairs.length]=key+"="+variables[key]
}return variablePairs
},getSWFHTML:function(){var swfNode="";
if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");
this.setAttribute("swf",this.xiSWFPath)
}swfNode='<embed type="application/x-shockwave-flash" src="'+this.getAttribute("swf")+'" width="'+this.getAttribute("width")+'" height="'+this.getAttribute("height")+'" style="'+(this.getAttribute("style")||"")+'"';
swfNode+=' id="'+this.getAttribute("id")+'" name="'+this.getAttribute("id")+'" ';
var params=this.getParams();
for(var key in params){swfNode+=[key]+'="'+params[key]+'" '
}var pairs=this.getVariablePairs().join("&");
if(pairs.length>0){swfNode+='flashvars="'+pairs+'"'
}swfNode+="/>"
}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");
this.setAttribute("swf",this.xiSWFPath)
}swfNode='<object id="'+this.getAttribute("id")+'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+this.getAttribute("width")+'" height="'+this.getAttribute("height")+'" style="'+(this.getAttribute("style")||"")+'">';
swfNode+='<param name="movie" value="'+this.getAttribute("swf")+'" />';
var params=this.getParams();
for(var key in params){swfNode+='<param name="'+key+'" value="'+params[key]+'" />'
}var pairs=this.getVariablePairs().join("&");
if(pairs.length>0){swfNode+='<param name="flashvars" value="'+pairs+'" />'
}swfNode+="</object>"
}return swfNode
},write:function(elementId){if(this.getAttribute("useExpressInstall")){var expressInstallReqVer=new deconcept.PlayerVersion([6,0,65]);
if(this.installedVer.versionIsValid(expressInstallReqVer)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);
this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));
document.title=document.title.slice(0,47)+" - Flash Player Installation";
this.addVariable("MMdoctitle",document.title)
}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof elementId=="string")?document.getElementById(elementId):elementId;
n.innerHTML=this.getSWFHTML();
return true
}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"))
}}return false
}};
deconcept.SWFObjectUtil.getPlayerVersion=function(){var PlayerVersion=new deconcept.PlayerVersion([0,0,0]);
if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];
if(x&&x.description){PlayerVersion=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."))
}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;
var counter=3;
while(axo){try{counter++;
axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+counter);
PlayerVersion=new deconcept.PlayerVersion([counter,0,0])
}catch(e){axo=null
}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7")
}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
PlayerVersion=new deconcept.PlayerVersion([6,0,21]);
axo.AllowScriptAccess="always"
}catch(e){if(PlayerVersion.major==6){return PlayerVersion
}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash")
}catch(e){}}if(axo!=null){PlayerVersion=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","))
}}}return PlayerVersion
};
deconcept.PlayerVersion=function(arrVersion){this.major=arrVersion[0]!=null?parseInt(arrVersion[0]):0;
this.minor=arrVersion[1]!=null?parseInt(arrVersion[1]):0;
this.rev=arrVersion[2]!=null?parseInt(arrVersion[2]):0
};
deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false
}if(this.major>fv.major){return true
}if(this.minor<fv.minor){return false
}if(this.minor>fv.minor){return true
}if(this.rev<fv.rev){return false
}return true
};
deconcept.util={getRequestParameter:function(param){var q=document.location.search||document.location.hash;
if(param==null){return q
}if(q){var pairs=q.substring(1).split("&");
for(var i=0;
i<pairs.length;
i++){if(pairs[i].substring(0,pairs[i].indexOf("="))==param){return pairs[i].substring((pairs[i].indexOf("=")+1))
}}}return""
}};
deconcept.SWFObjectUtil.cleanupSWFs=function(){var objects=document.getElementsByTagName("OBJECT");
for(var i=objects.length-1;
i>=0;
i--){objects[i].style.display="none";
for(var x in objects[i]){if(typeof objects[i][x]=="function"){objects[i][x]=function(){}
}}}};
if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id]
}
}var getQueryParamValue=deconcept.util.getRequestParameter;
var FlashObject=deconcept.SWFObject;
var SWFObject=deconcept.SWFObject;
var rsh={};
rsh.dhtmlHistory={_currentLocation:null,_listener:null,_iframe:null,_ignoreChange:null,_WAIT_TIME:200,_currentWaitTime:0,_fireOnNewListener:null,_firstLoad:true,_ieAtomicChange:null,_isIE:((document.all&&navigator.userAgent.toLowerCase().indexOf("msie")!=-1)?true:false),init:function(){if(this._isIE==false){return
}if(this._firstLoad){this._fireOnNewListener=false;
this._firstLoad=false
}else{this._fireOnNewListener=true
}},addListener:function(callback){this._listener=callback;
if(this._fireOnNewListener==true){this._fireHistoryEvent(this._currentLocation);
this._fireOnNewListener=false
}},add:function(newLocation,historyData){var self=this;
var addImpl=function(){if(self._currentWaitTime>0){self._currentWaitTime=self._currentWaitTime-self._WAIT_TIME
}newLocation=self._removeHash(newLocation);
if(document.getElementById(newLocation)){throw ("Exception: history path conflicts with page element #"+newLocation)
}self._ignoreChange=true;
this._ieAtomicChange=true;
self._currentLocation=newLocation;
window.location.hash=newLocation;
if(self._isIE){this._iframe.src="/js/rsh/blank.html?"+newLocation
}this._ieAtomicChange=false
};
window.setTimeout(addImpl,this._currentWaitTime);
this._currentWaitTime=this._currentWaitTime+this._WAIT_TIME
},create:function(){var initialHash=this._getCurrentLocation();
this._currentLocation=initialHash;
var self=this;
window.onunload=function(){self._firstLoad=null
};
if(this._isIE){document.write("<iframe style='border: 0px; width: 1px; height: 1px; position: absolute; bottom: 0px; right: 0px; visibility: visible;' name='DhtmlHistoryFrame' id='DhtmlHistoryFrame' src='/js/rsh/blank.html?"+initialHash+"'></iframe>");
this._WAIT_TIME=400;
this._ignoreChange=true;
this._iframe=document.getElementById("DhtmlHistoryFrame")
}else{if(this._firstLoad){this._ignoreChange=true;
this._firstLoad=false
}else{this._ignoreChange=false;
this._fireOnNewListener=true
}}var self=this;
var locationHandler=function(){self._checkLocation()
};
setInterval(locationHandler,100)
},_getCurrentLocation:function(){return this._removeHash(window.location.hash)
},_fireHistoryEvent:function(newHash){},_checkLocation:function(){if(!this._isIE){if(this._ignoreChange){this._ignoreChange=false;
return
}if(this._ieAtomicChange){return
}}if(document.title.indexOf("#")>0){document.title=document.title.substring(0,document.title.indexOf("#"))
}var hash=this._getCurrentLocation();
if(hash==this._currentLocation){return
}this._ieAtomicChange=true;
if(this._isIE){this._iframe.src="/js/rsh/blank.html?"+hash
}this._currentLocation=hash;
this._ieAtomicChange=false;
this._fireHistoryEvent(hash)
},_getIFrameHash:function(){var historyFrame=document.getElementById("DhtmlHistoryFrame");
var doc=historyFrame.contentWindow.document;
var hash=new String(doc.location.search);
if(hash.length>0&&hash.charAt(0)=="?"){hash=hash.substring(1)
}return hash
},_removeHash:function(hashValue){if(!hashValue){return null
}else{if(hashValue.length>0&&hashValue.charAt(0)=="#"){return hashValue.substring(1)
}else{return hashValue
}}},_iframeLoaded:function(newLocation){if(this._ignoreChange==true){this._ignoreChange=false;
return
}var hash=new String(newLocation.search);
if(hash.length>0&&hash.charAt(0)=="?"){hash=hash.substring(1)
}if(this.pageLoadEvent!=true){window.location.hash=hash
}this._fireHistoryEvent(hash)
}};
rsh.dhtmlHistory.create();
dojo.provide("proactiv.behavior.beforeAfterGallery.HandlePrevNextLinkBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.beforeAfterGallery.HandlePrevNextLinkBehavior",mojo.command.Behavior,{execute:function(requestObj){requestObj.eventObj.preventDefault();
var listWidth=760;
var clickedClassName=requestObj.callerObj.className;
if(clickedClassName=="previous"||clickedClassName=="next"){var fullLength=document.getElementById("galleryHolder").getElementsByTagName("ul").length;
var offsetLength=fullLength-1;
grabClasses=document.getElementById("primaryContent").className;
var extractSetClass=grabClasses.match("s[0-9]+");
var trimSet=extractSetClass[0].sub("s","");
var setNum=parseInt(trimSet);
if(clickedClassName=="previous"){setNum-=1;
if(setNum<0){setNum=offsetLength
}}if(clickedClassName=="next"){setNum+=1;
if(setNum>offsetLength){setNum=0
}}this.currentPage=setNum;
var xDist=0-(listWidth*setNum);
new Effect.Move("galleryHolder",{x:xDist,y:0,mode:"absolute",afterUpdate:function(effect){mojo.Messaging.publish("/beforeAfterGallery/safariHack",effect)
}});
var grabBlockID=$("primaryContent");
grabBlockID.removeClassName("s[0-9]+");
var newClassName="s"+setNum;
grabBlockID.addClassName(newClassName)
}}});
dojo.provide("proactiv.behavior.beforeAfterGallery.SafariHackBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.beforeAfterGallery.SafariHackBehavior",mojo.command.Behavior,{execute:function(requestObj){var caller=requestObj.getCaller();
var effect=caller.getMessage();
effect.element.up().setStyle({opacity:0.99});
setTimeout(function(){effect.element.up().setStyle({opacity:1})
},1)
}});
dojo.provide("proactiv.behavior.beforeAfterGallery.HandlePageLinkBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.beforeAfterGallery.HandlePageLinkBehavior",mojo.command.Behavior,{execute:function(requestObj){requestObj.eventObj.preventDefault();
var listWidth=760;
var parentID=requestObj.callerObj.parentNode.id;
if(parentID==parentID.match("set[0-9]+")){var trimID=parentID.slice(3);
var toNum=parseInt(trimID);
var xDist=0-(listWidth*toNum);
new Effect.Move("galleryHolder",{x:xDist,y:0,mode:"absolute",afterUpdate:function(effect){mojo.Messaging.publish("/beforeAfterGallery/safariHack",effect)
}});
this.currentPage=toNum;
var grabBlockID=$("primaryContent");
grabBlockID.removeClassName("s[0-9]+");
var newClassName="s"+trimID;
grabBlockID.addClassName(newClassName)
}}});
dojo.provide("proactiv.behavior.delivery.freqCalc");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.delivery.freqCalc",mojo.command.Behavior,{execute:function(requestObj){var frequency=parseInt(requestObj.callerObj.value);
switch(frequency){case 1:$$("#freqCalcEntry a.calculate")[0].style.visibility="visible";
var freqMsg="16+ weeks";
break;
case 2:$$("#freqCalcEntry a.calculate")[0].style.visibility="visible";
var freqMsg="every 12 weeks";
break;
case 3:$$("#freqCalcEntry a.calculate")[0].style.visibility="visible";
var freqMsg="every 8 weeks";
break;
case 0:default:$$("#freqCalcEntry a.calculate")[0].style.visibility="hidden";
var freqMsg=""
}$("freqCalcTarget").innerHTML=freqMsg
}});
dojo.provide("proactiv.behavior.delivery.swapPane");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.delivery.swapPane",mojo.command.Behavior,{execute:function(requestObj){console.log(requestObj);
var panes=$$("#freqCalc .pane");
panes.each(function(pane){if(pane.hasClassName("hide")){pane.removeClassName("hide")
}else{pane.addClassName("hide")
}})
}});
dojo.provide("proactiv.behavior.PreventDefaultEventBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.PreventDefaultEventBehavior",mojo.command.Behavior,{execute:function(requestObj){var theEvent=requestObj.getEvent();
try{(new Event(theEvent)).preventDefault()
}catch(e){}}});
dojo.provide("proactiv.behavior.browserWarn.addBackButtonBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.browserWarn.addBackButtonBehavior",mojo.command.Behavior,{execute:function(requestObj){function readCookie(name){var nameEQ=name+"=";
var ca=document.cookie.split(";");
for(var i=0;
i<ca.length;
i++){var c=ca[i];
while(c.charAt(0)==" "){c=c.substring(1,c.length)
}if(c.indexOf(nameEQ)==0){return c.substring(nameEQ.length,c.length)
}}return null
}var prevUrl=readCookie("previousPage");
var continueLink=$$("p.instruct a").first();
if(continueLink&&prevUrl){continueLink.href=prevUrl
}}});
dojo.provide("proactiv.behavior.MonitorBillingFieldsBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.MonitorBillingFieldsBehavior",mojo.command.Behavior,{execute:function(requestObj){var fieldset=$A(requestObj.paramsObj.fieldset).flatten();
var control=requestObj.callerObj;
var billingAddressFields=$$(".billingAddress input");
var shippingAddressFields=$$(".shippingAddress input");
if(control.checked){billingAddressFields.each(function(field){swapEnd=field.id.replace("bill","ship");
$$("input[id="+swapEnd+"]")[0].value=field.value;
field.onchange=function(){swapEnd=field.id.replace("bill","ship");
$$("input[id="+swapEnd+"]")[0].value=field.value
}
});
shippingAddressFields.each(function(field){field.onchange=function(){swapEnd=field.id.replace("ship","bill");
$$("input[id="+swapEnd+"]")[0].value=field.value
}
})
}else{billingAddressFields.each(function(field){field.onchange="";
swapEnd=field.id.replace("bill","ship");
$$("input[id="+swapEnd+"]")[0].value=""
});
shippingAddressFields.each(function(field){field.onchange=""
})
}}});
dojo.provide("proactiv.behavior.ValidateMaxItemsBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.ValidateMaxItemsBehavior",mojo.command.Command,{execute:function(requestObj){var theForm=$(requestObj.getContextElement());
var checkboxes=theForm.select("input[type=checkbox]");
var numChecked=0;
checkboxes.each(function(box){if(box.checked){numChecked++
}});
if(numChecked>10){try{var caller=requestObj.getCaller();
caller.checked=false
}catch(e){}alert("You currently have 10 items in your cart. Since we can only ship 10 items at a time, please complete the purchase of this order before adding more items to your cart.");
Event.stop(requestObj.getEvent())
}}});
dojo.provide("proactiv.behavior.FixInputLoadBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.FixInputLoadBehavior",mojo.command.Behavior,{execute:function(requestObj){var elements=$$("#formHeadLogin input");
elements.each(function(field){if(field.type=="text"||field.type=="password"){if(field.value==""){field.parentNode.parentNode.className="notFocussed"
}else{field.parentNode.parentNode.className="focussed"
}}})
}});
dojo.provide("proactiv.behavior.progressEvaluationSystem.EvaluateBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.progressEvaluationSystem.EvaluateBehavior",mojo.command.Behavior,{execute:function(requestObj){var theForm=$(requestObj.callerObj);
var questions=theForm.select(".quizQuestion");
var answers=theForm.serialize(true);
var matchRules=[{system:"k",rules:[{property:"q1",value:"a"}]},{system:"k",rules:[{property:"q1",value:"b"}]},{system:"l",rules:[{property:"q2",value:"a"}]},{system:"l",rules:[{property:"q3",value:"a"}]},{system:"l",rules:[{property:"q4",value:"a"}]},{system:"l",rules:[{property:"q5",value:"a"}]},{system:"l",rules:[{property:"q5",value:"c"}]},{system:"m",rules:[{property:"q2",value:"a"}]},{system:"n",rules:[{property:"q3",value:"a"}]},{system:"o",rules:[{property:"q4",value:"a"}]},{system:"p",rules:[{property:"q5",value:"a"}]},{system:"p",rules:[{property:"q5",value:"c"}]},{system:"r",rules:[{property:"q5",value:"b"}]},{system:"s",rules:[{property:"q6",value:"a"}]},{system:"t",rules:[{property:"q6",value:"b"}]},{system:"t",rules:[{property:"q6",value:"c"}]},{system:"t",rules:[{property:"q6",value:"d"}]},{system:"z",rules:[{property:"q1",value:"a"}]},{system:"z",rules:[{property:"q1",value:"b"}]},{system:"z",rules:[{property:"q2",value:"a"}]},{system:"z",rules:[{property:"q3",value:"a"}]},{system:"z",rules:[{property:"q4",value:"a"}]},{system:"z",rules:[{property:"q5",value:"a"}]},{system:"z",rules:[{property:"q5",value:"b"}]},{system:"z",rules:[{property:"q5",value:"c"}]},{system:"z",rules:[{property:"q6",value:"a"}]},{system:"z",rules:[{property:"q6",value:"b"}]},{system:"z",rules:[{property:"q6",value:"c"}]},{system:"z",rules:[{property:"q6",value:"d"}]}];
var specialTrumpCases=[{system:["l","k","n","z"],rules:[{property:"q1",value:"a"},{property:"q3",value:"a"}]},{system:["l","k","n","z"],rules:[{property:"q1",value:"b"},{property:"q3",value:"a"}]},{system:["k","z"],rules:[{property:"q1",value:"a"}]},{system:["k","z"],rules:[{property:"q1",value:"b"}]},{system:"r",rules:[{property:"q1",value:"c"},{property:"q2",value:"b"},{property:"q3",value:"b"},{property:"q4",value:"b"},{property:"q5",value:"b"},{property:"q6",value:"a"}]},{system:"r",rules:[{property:"q1",value:"d"},{property:"q2",value:"b"},{property:"q3",value:"b"},{property:"q4",value:"b"},{property:"q5",value:"b"},{property:"q6",value:"a"}]}];
var systemMatches=new Array();
specialTrumpCases.each(function(matchRule){if(systemMatches.length>0){return
}var match=true;
matchRule.rules.each(function(rule){if(answers[rule.property]!=rule.value){match=false
}});
if(match){systemMatches.push(matchRule.system)
}});
systemMatches=systemMatches.flatten().uniq().sort();
if(systemMatches.length==0){matchRules.each(function(matchRule){var match=true;
matchRule.rules.each(function(rule){if(answers[rule.property]!=rule.value){match=false
}});
if(match){systemMatches.push(matchRule.system)
}});
systemMatches=systemMatches.flatten().uniq().sort()
}var theURL="/howareyoudoing/results/"+systemMatches.join("")+".php";
Event.stop(requestObj.eventObj);
window.location.href=theURL
}});
dojo.provide("proactiv.behavior.paymentOption.disableFormFieldsBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.paymentOption.disableFormFieldsBehavior",mojo.command.Behavior,{execute:function(requestObj){var caller=requestObj.getCaller();
if(caller instanceof mojo.MessagingTopic){var formFields=requestObj.getCaller().getMessage().fields;
var nonLoggedCart;
if(formFields.length>3){nonLoggedCart=true
}else{nonLoggedCart=false
}formFields.each(function(field){var fieldContain=$$("div."+field).first();
$(fieldContain).addClassName("disableChildren");
var advice=$A($(fieldContain).select("div.validation-advice"));
if(advice.length){advice.each(function(advice){$(advice).hide()
})
}var inputs=$A($(fieldContain).getElementsByTagName("input"));
var selects=$A($(fieldContain).getElementsByTagName("select"));
var formElements=$A(inputs.concat(selects));
formElements.each(function(formElement){$(formElement).disabled=true;
var formElementParent=$(formElement).parentNode;
if($(formElement).className!=""){$(formElement).removeClassName("validation-failed");
$(formElement).removeClassName("validation-passed");
$(formElement).className=$(formElement).className+"-disabled"
}if($(formElementParent).className!=""){$(formElement).parentNode.removeClassName("validation-failed");
$(formElement).parentNode.removeClassName("validation-passed")
}})
});
var test=$$("button.btnContinuePaypal");
if(nonLoggedCart==true){var linkProperties="'https://www.paypal-promo.com/backtoschool/terms/guthyrenker.html','olcwhatispaypal','toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=800, height=360'";
var button='<button type="submit" class="btnContinuePaypal">Continue</button>';
new Element.insert("paymentOption",{bottom:button})
}}mojo.controller.Controller.updateObservers("proactiv.controller.GlobalController")
}});
dojo.provide("proactiv.behavior.paymentOption.checkForPaypalBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.paymentOption.checkForPaypalBehavior",mojo.command.Behavior,{execute:function(requestObj){var select=requestObj.getCaller();
var fieldContain;
if(select.id!="myAccountPayment"){fieldContain=new Array("cardNumber","expirationDate","securityId","billingAddress","phoneGroup","shippingAddress");
if(select.value=="PAYPAL"){mojo.Messaging.publish("/paymentOption/formfields/hide",{fields:"off"})
}else{mojo.Messaging.publish("/paymentOption/formfields/hide",{fields:"on"})
}}if(select.id=="myAccountPayment"){if(select.value=="PAYPAL"){mojo.Messaging.publish("/paymentOption/formfields/hide",{fields:"off"})
}else{mojo.Messaging.publish("/paymentOption/formfields/hide",{fields:"on"})
}}else{if(select.value=="PAYPAL"&&select.id!="myAccountPayment"){mojo.Messaging.publish("/paymentOption/formfields/disable",{fields:fieldContain})
}else{mojo.Messaging.publish("/paymentOption/formfields/enable",{fields:fieldContain})
}}}});
dojo.provide("proactiv.behavior.paymentOption.enableFormFieldsBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.paymentOption.enableFormFieldsBehavior",mojo.command.Behavior,{execute:function(requestObj){var caller=requestObj.getCaller();
if(caller instanceof mojo.MessagingTopic){var formFields=requestObj.getCaller().getMessage().fields;
formFields.each(function(field){var fieldContain=$$("div."+field).first();
if($(fieldContain).className){$(fieldContain).removeClassName("disableChildren")
}var advice=$A($(fieldContain).select("div.validation-advice"));
advice.each(function(advice){$(advice).show()
});
var inputs=$A($(fieldContain).getElementsByTagName("input"));
var selects=$A($(fieldContain).getElementsByTagName("select"));
var formElements=inputs.concat(selects);
var i=0;
for(i=0;
i<formElements.length;
i++){if(formElements[i]!=""){var classes=$(formElements[i]).className;
formElements[i].className=classes.replace("-disabled","");
formElements[i].disabled=false
}}});
var button=$$("button.btnContinuePaypal").first();
var cashBack=$$("p.cashBack").first();
if(button){$(button).remove()
}if(cashBack){$(cashBack).remove()
}}mojo.controller.Controller.updateObservers("proactiv.controller.GlobalController")
}});
dojo.provide("proactiv.behavior.paymentOption.hideFormFieldsBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.paymentOption.hideFormFieldsBehavior",mojo.command.Behavior,{execute:function(requestObj){var caller=requestObj.getCaller();
var divTest=$$("div.cardType").first();
var formFieldContain=new Array("cardNumber","expirationDate","securityId");
var formState="off";
if(caller instanceof mojo.MessagingTopic){formState=requestObj.getCaller().getMessage().fields
}formFieldContain.each(function(fieldContain){var container=$$("div."+fieldContain).first();
if($(container)&&$(divTest).id){(formState=="off")?$(container).hide():$(container).show()
}});
mojo.controller.Controller.updateObservers("proactiv.controller.GlobalController")
}});
dojo.provide("proactiv.behavior.ReferAFriend.PrepareShareMultipleWizard");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.ReferAFriend.PrepareShareMultipleWizard",mojo.command.Command,{execute:function(requestObj){var el=requestObj.callerObj;
var options=requestObj.paramsObj;
$(options.nodes[0].id).setOpacity(1);
$(options.nodes[0].id).setStyle({display:"block"});
if($(options.targets.container)){$(options.targets.container).morph("height:100px")
}$("close_panel").style.display="none";
$("close_panel").innerHTML="Cancel";
$$(options.targets.empty_error)[0].style.display="none";
$$(options.targets.max_error)[0].style.display="none";
$(options.targets.referrer_email).value="";
$(options.targets.referrer_pass).value="";
if($$(".RAFmessageSent").length>0){$$(".RAFmessageSent")[0].innerHTML="";
$$(".RAFmessageSent")[0].className="contactScroll"
}$$(options.targets.import_referrals_list)[0].removeClassName("inactive");
$$(options.targets.choose_provider).each(function(el){try{el.setStyle({opacity:1})
}catch(e){}});
options.nodes.each(function(node){if($(node.id)&&node.hide){$(node.id).setStyle({height:"0px",display:"none"});
$(node.id).setOpacity(0)
}})
}});
dojo.provide("proactiv.behavior.ReferAFriend.HideTabBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.ReferAFriend.HideTabBehavior",mojo.command.Command,{execute:function(requestObj){var caller=requestObj.getContextElement();
var tabContent=$(caller).select("div.tabContent").first();
var tabs=tabContent.childElements();
tabs.each(function(tab){if(tab.id!="tab1wideContent"){$(tab).hide()
}});
var hidden=$$("div.hidden").first();
$(hidden).removeClassName("hidden")
}});
dojo.provide("proactiv.behavior.ReferAFriend.SendShareMultipleInvite");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.ReferAFriend.SendShareMultipleInvite",mojo.command.Command,{execute:function(requestObj){var evt=requestObj.eventObj;
Event.stop(evt);
var el=requestObj.callerObj;
var options=requestObj.paramsObj;
var referrees=mojo.query("#RAFreferrees span.contactEmail");
var str="";
if(referrees.length>0){referrees.each(function(el,i){str+=(i!=referrees.length-1)?el.innerHTML+",":el.innerHTML
});
if(document.location.href.indexOf("pactvid")>-1){var href=document.location.href.split("pactvid=");
var session="&pactvid="+href[1]
}else{var session=""
}new Ajax.Request(options.services.url,{method:"post",evalJSON:true,postBody:"action=invite"+session+"&emails="+str,onSuccess:function(data){$$(options.targets.max_error)[0].style.display="none";
$$(options.targets.send_referrals_succes_target)[0].innerHTML=options.messages.sent;
$$(options.targets.send_referrals_succes_target)[0].className="RAFmessageSent";
$$(options.targets.import_referrals_list)[0].addClassName("inactive");
$("select_all").style.display="none";
$("close_panel").innerHTML="Close";
data=data.responseText.evalJSON();
if(data.length>0){var tr=[];
var td=[];
data.each(function(node,i){tr[i]=new Element("tr",{});
td[i]=[];
td[i][0]=new Element("td",{});
td[i][1]=new Element("td",{"class":"blueTxt"});
td[i][2]=new Element("td",{});
td[i][3]=new Element("td",{});
td[i][4]=new Element("td",{});
td[i][5]=new Element("td",{});
$(tr[i]).appendChild(td[i][0]);
$(tr[i]).appendChild(td[i][1]);
$(tr[i]).appendChild(td[i][2]);
$(tr[i]).appendChild(td[i][3]);
$(tr[i]).appendChild(td[i][4]);
$(tr[i]).appendChild(td[i][5]);
var target=mojo.query("#referal tbody").first();
target.appendChild(tr[i]);
$(td[i][0]).innerHTML=node.email;
$(td[i][1]).innerHTML="No";
$(td[i][2]).innerHTML=node.sent_at;
$(td[i][3]).innerHTML=node.created_at;
$(td[i][4]).innerHTML="";
$(td[i][5]).innerHTML='<input type="checkbox" class="chkbox" value="'+node.referrer_id+'" name="delete"/>'
})
}}})
}}});
dojo.provide("proactiv.behavior.ReferAFriend.ValidateShareMultipleImport");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.ReferAFriend.ValidateShareMultipleImport",mojo.command.Command,{execute:function(requestObj){var invocation=requestObj.getInvocation().calleeObj.declaredClass;
var evt=requestObj.eventObj;
var el=requestObj.callerObj;
var options=requestObj.paramsObj;
try{if(evt.type=="click"){Event.stop(evt)
}}catch(e){}switch(invocation){case"proactiv.behavior.ReferAFriend.SendShareMultipleImport":var result=(evt.type=="click"||evt.keyCode=="13")?new Validation(options.targets.send_provider_form).validate():false;
break;
case"proactiv.behavior.ReferAFriend.SendShareMultipleInvite":var result=(($$("#RAFreferrees a").length+$$("#referal tbody tr").length)<76)?true:false;
if(result!=true){new Effect.Morph(options.targets.container,{style:"height:335px",duration:1});
(function(){$$(options.targets.max_error)[0].setStyle({opacity:"0",display:"block"});
new Effect.Morph($$(options.targets.max_error)[0],{style:"opacity:1",duration:1})
}).delay(1)
}break
}if(result==true){requestObj.invocation.proceed()
}}});
dojo.provide("proactiv.behavior.ReferAFriend.SendShareMultipleImport");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.ReferAFriend.SendShareMultipleImport",mojo.command.Command,{execute:function(requestObj){var evt=requestObj.eventObj;
Event.stop(evt);
var el=requestObj.callerObj;
var options=requestObj.paramsObj;
switch($(options.targets.selected_provider).className){case"gmail":var provider=options.services.providers.gmail;
break;
case"aol":var provider=options.services.providers.aol;
break;
case"yahoo":var provider=options.services.providers.yahoo;
break;
case"hotmail":var provider=options.services.providers.hotmail;
break
}if(document.location.href.indexOf("pactvid")>-1){var href=document.location.href.split("pactvid=");
var session="&pactvid="+href[1]
}else{var session=""
}new Ajax.Request(options.services.url,{method:"post",evalJSON:true,postBody:"action=import&contact_provider_id="+provider+"&method="+options.services.data.method+"&user_email_address="+$(options.targets.referrer_email).value+"&user_email_password="+$(options.targets.referrer_pass).value+"&version="+options.services.data.version+"&web_service_api_key="+options.services.data.web_service_api_key+session,onLoading:function(){$$(options.targets.provider_error)[0].style.display="none";
var loading=new Element("img",{src:"/images/proactiv/ajax-loader.gif",id:"ajax-loader"});
$(loading).setStyle({"float":"left"});
new Insertion.After(el,loading)
},onSuccess:function(data){data=data.responseText.evalJSON();
switch(data.stat){case"ok":$("close_panel").innerHTML="Close";
$$(options.targets.import_referrals_list)[0].innerHTML="";
$$(options.targets.send_referrals_succes_target)[0].innerHTML="";
var item=[];
var a=[];
var name=[];
var email=[];
var strong=[];
var click=[];
for(var index=0,len=data.contacts.contact.length;
index<len;
index++){item=data.contacts.contact[index];
a[index]=new Element("a",{href:"javascript:void(0)"});
strong[index]=new Element("strong",{}).update(item.name);
email[index]=new Element("span",{"class":"contactEmail"}).update(item.email);
click[index]=new Element("span",{"class":"removeContact"}).update("Add");
click[index].onclick=function(){switch(this.innerHTML){case"Add":if(($$("#referal tbody tr").length+$$("#RAFreferrees div.contactScroll a").length)<75){this.update("Remove");
new Insertion.Top($$(options.targets.send_referrals_succes_target)[0],this.parentNode);
this.highlight({restorecolor:"#fff"});
this.parentNode.highlight({restorecolor:"#fff"});
$$(options.targets.max_error)[0].style.display="none";
$$(options.targets.import_referrals_list)[0].removeClassName("inactive");
new Effect.Morph(options.targets.container,{style:"height:275px",duration:1})
}else{$$(options.targets.import_referrals_list)[0].addClassName("inactive");
new Effect.Morph(options.targets.container,{style:"height:335px",duration:1});
$$(options.targets.max_error)[0].style.display="block"
}break;
case"Remove":if(($$("#referal tbody tr").length+$$("#RAFreferrees div.contactScroll a").length)<76){$$(options.targets.import_referrals_list)[0].removeClassName("inactive");
$$(options.targets.max_error)[0].style.display="none";
new Effect.Morph(options.targets.container,{style:"height:275px",duration:1})
}this.update("Add");
new Insertion.Top($$(options.targets.import_referrals_list)[0],this.parentNode);
this.highlight({restorecolor:"#fff"});
this.parentNode.highlight({restorecolor:"#fff"});
break
}};
new Insertion.Bottom(a[index],strong[index]);
new Insertion.Bottom(a[index],email[index]);
new Insertion.Bottom(a[index],click[index]);
new Insertion.Bottom($$(options.targets.import_referrals_list)[0],a[index])
}$(options.nodes[0].id).morph("opacity:0");
$(options.nodes[0].id).setStyle({display:"none"});
$(options.nodes[1].id).morph("opacity:0");
$(options.nodes[1].id).setStyle({display:"none"});
$(options.nodes[2].id).setStyle({opacity:0,display:"block"});
$(options.nodes[2].id).morph("opacity:1");
$("select_all").style.display="block";
$("close_panel").style.display="block";
$("ajax-loader").remove();
break;
default:case"fail":$$(options.targets.empty_error)[0].style.display="none";
$$(options.targets.provider_error)[0].style.display="block";
$("ajax-loader").remove();
break;
case"empty":$$(options.targets.provider_error)[0].style.display="none";
$$(options.targets.empty_error)[0].style.display="block";
$("ajax-loader").remove();
break
}}})
}});
dojo.provide("proactiv.behavior.ReferAFriend.SelectAllShareMultiple");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.ReferAFriend.SelectAllShareMultiple",mojo.command.Command,{execute:function(requestObj){var evt=requestObj.eventObj;
Event.stop(evt);
var el=requestObj.callerObj;
var options=requestObj.paramsObj;
if($$(".contactScroll a").length>1){$$(".contactScroll a span.removeContact").each(function(el){var result=(($$("#RAFreferrees a").length+$$("#referal tbody tr").length)==75)?false:true;
if(result!=true){$$(options.targets.import_referrals_list)[0].addClassName("inactive");
new Effect.Morph(options.targets.container,{style:"height:335px",duration:1});
(function(){$$(options.targets.max_error)[0].setStyle({opacity:"0",display:"block"});
new Effect.Morph($$(options.targets.max_error)[0],{style:"opacity:1",duration:1})
}).delay(1)
}else{el.update("Remove");
new Insertion.Top($$(options.targets.send_referrals_succes_target)[0],el.parentNode);
el.highlight("#eee");
el.parentNode.highlight("#eee")
}})
}}});
dojo.provide("proactiv.behavior.ReferAFriend.ChooseShareMultipleProvider");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.ReferAFriend.ChooseShareMultipleProvider",mojo.command.Command,{execute:function(requestObj){var evt=requestObj.eventObj;
Event.stop(evt);
var el=requestObj.callerObj;
var options=requestObj.paramsObj;
$$(options.targets.choose_provider).each(function(node){if($(node)!=$(el)){$(node).setOpacity(0.4)
}else{$(node).setOpacity(1)
}});
$(options.nodes[1].id).setStyle({display:"block"});
$(options.targets.container).morph("height:275px");
$(options.nodes[1].id).morph("opacity:1");
$(options.targets.selected_provider).className=el.className;
$("close_panel").style.display="block"
}});
dojo.provide("proactiv.behavior.ReferAFriend.TabBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.ReferAFriend.TabBehavior",mojo.command.Command,{execute:function(requestObj){var grandParent=requestObj.callerObj.parentNode.parentNode;
var allLinks=grandParent.getElementsByTagName("a");
var link=$A(allLinks);
var grabID=requestObj.callerObj.id;
var onContent=grabID+"Content";
var offContent=$(onContent).siblings();
var offContent=offContent.first();
link.each(function(link){new Element.removeClassName(link,"selected")
});
new Element.addClassName(grabID,"selected");
$(offContent).hide();
if(offContent.id=="tab1wideContent"){$("shareMultiple").hide()
}$(onContent).show();
if(onContent=="tab1wideContent"){$("shareMultiple").show()
}}});
dojo.provide("proactiv.behavior.FixIllegalFramingBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.FixIllegalFramingBehavior",mojo.command.Behavior,{execute:function(requestObj){if(window!=top){top.location.href=location.href
}}});
dojo.provide("proactiv.behavior.InqImageSwapBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.InqImageSwapBehavior",mojo.command.Behavior,{execute:function(requestObj){var hoverAction=requestObj.getEvent();
var img=requestObj.getCaller();
var src=$(img).src;
if(hoverAction.type=="mouseover"){var fileExt=/\.png|\.jpg|\.gif/;
var matchup="-over"+src.match(fileExt);
$(img).src=src.replace(fileExt,matchup)
}else{if(hoverAction.type=="mouseout"){$(img).src=src.replace("-over","")
}}}});
dojo.provide("proactiv.behavior.aboutAcne.aboutAcneQuiz");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.aboutAcne.aboutAcneQuiz",mojo.command.Behavior,{execute:function(requestObj){var question=requestObj.callerObj.name;
var contain=requestObj.callerObj.parentNode.parentNode.className;
var answer=requestObj.callerObj.value;
var activeAnswer=question+"quizAnswer";
if(((question=="q1"||question=="q2"||question=="q3"||question=="q4"||question=="q5"||question=="q6"||question=="q7"||question=="q8"||question=="q10")&&answer=="a")||((question=="q9")&&answer=="b")){new Element.addClassName(activeAnswer,"error")
}else{new Element.removeClassName(activeAnswer,"error")
}new Effect.Appear(question+"AnswerDetail")
}});
dojo.provide("proactiv.behavior.DisableFieldsetBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.DisableFieldsetBehavior",mojo.command.Behavior,{execute:function(requestObj){var fieldset=$A(requestObj.paramsObj.fieldset).flatten();
var control=requestObj.callerObj;
if(control.checked){var action="disable"
}else{var action="enable"
}fieldset.each(function(field){if(field!=control){$(field)[action]()
}})
}});
dojo.provide("proactiv.behavior.RealStoriesNavAdjust");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.RealStoriesNavAdjust",mojo.command.Behavior,{execute:function(requestObj){if(!$("page_stories")){var controllers=$$(".positionSet");
var parentWidth=675;
var prevNext=100
}else{var controllers=$$(".setController");
var parentWidth=638;
var prevNext=0
}var navcontroller=$A(controllers);
navcontroller.each(function(navcontroller){var pageNum=navcontroller.getElementsByTagName("li");
var conWidth=prevNext+(pageNum.length*15);
conPosition=Math.round((parentWidth-conWidth)/2);
navcontroller.style.marginLeft=conPosition+"px";
navcontroller.style.display="block"
})
}});
dojo.provide("proactiv.behavior.reactivateRadioBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.reactivateRadioBehavior",mojo.command.Behavior,{execute:function(requestObj){var radio=$A($$("#formPayment h4 input"));
var disableInput=$A($$(".newCard div input"));
var disableSelect=$A($$(".newCard div select"));
var disable=disableInput.concat(disableSelect);
var Input={initialize:function(){radio.each(function(radio){new Element.addClassName(radio,"radio");
if(radio.checked==true){radio.parentNode.id="active"
}radio.parentNode.onmouseup=Input.change
})
},change:function(){radio.each(function(radio){if(radio.parentNode.id!="active"&&radio.parentNode.parentNode.className=="newCard"){radio.parentNode.id="active";
radio.checked=true;
Disable.undo()
}else{if(radio.parentNode.id!="active"&&radio.parentNode.parentNode.className!="newCard"){radio.parentNode.id="active";
radio.checked=true;
Disable.initialize()
}else{if(radio.parentNode.id=="active"){radio.parentNode.id="";
radio.checked=false
}}}})
}};
var Disable={initialize:function(){var advice=$A($$("#formPayment div.validation-advice"));
advice.each(function(advice){new Element.remove(advice)
});
disable.each(function(disable){disable.disabled=true;
disable.className="";
if(disable.parentNode.className=="validation-failed"){disable.parentNode.removeClassName("validation-failed")
}if(disable.parentNode.className=="validation-passed"){disable.parentNode.removeClassName("validation-passed")
}if(disable.parentNode.parentNode.className=="validation-failed"){disable.parentNode.parentNode.removeClassName("validation-failed")
}if(disable.parentNode.parentNode.className=="validation-passed"){disable.parentNode.parentNode.removeClassName("validation-passed")
}})
},undo:function(){var advice=$A($$("#formPayment div.validation-advice"));
disable.each(function(disable){disable.disabled=false;
disable.className="validate-selection";
if(disable.type=="text"){disable.className="validate-ccard-required"
}})
}};
if($("formPayment")){Input.initialize();
radio.each(function(radio){if(radio.parentNode.parentNode.className=="newCard"&&radio.checked!=true){Disable.initialize()
}})
}}});
dojo.provide("proactiv.behavior.promoCode.CloseBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.promoCode.CloseBehavior",mojo.command.Behavior,{execute:function(requestObj){var dialog=$$("div.dialog").first();
Windows.close(dialog.id,this.event)
}});
dojo.provide("proactiv.behavior.promoCode.ResizeBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.promoCode.ResizeBehavior",mojo.command.Behavior,{execute:function(requestObj){var dimensions=requestObj.getCaller().getMessage();
var newContentHeight=dimensions.newHeight;
var newContentWidth=dimensions.newWidth;
var contain=dimensions.container;
var thisContent=dimensions.newContent;
var newDialogHeight=newContentHeight+19;
var newDialogWidth=newContentWidth+12;
var newBackHeight=newDialogHeight+6;
var newBackWidth=newDialogWidth+6;
var dialog=$$("div.dialog").first();
var currentDimensions=$(dialog).getDimensions();
var dialogContent=$$("div.promocode_content").first();
var dialogBack=$$("div.promocode_popBkd").first();
var dialogLoading=$$("div.dialogLoading").first();
var moveUp=(newDialogHeight-currentDimensions.height)/2*-1;
var moveLeft=(newDialogWidth-currentDimensions.width)/2*-1;
var moveLoader=(moveUp)*-1;
new Effect.Parallel([new Effect.Morph($(dialog),{style:"height: "+newDialogHeight+"px; width: "+newDialogWidth+"px;",sync:true}),new Effect.Morph($(dialogContent),{style:"height: "+newContentHeight+"px; width: "+newContentWidth+"px;",sync:true}),new Effect.Morph($(dialogBack),{style:"height: "+newBackHeight+"px; width: "+newBackWidth+"px;",sync:true}),new Effect.Move($(dialog),{x:moveLeft,y:moveUp,mode:"relative",sync:true}),new Effect.Move($(dialogLoading),{y:moveLoader,mode:"relative",sync:true})],{duration:0.5,afterFinish:function(){mojo.Messaging.publish("/promoCode/overlay/updateContent",{container:contain,newContent:thisContent})
}})
}});
dojo.provide("proactiv.behavior.promoCode.InitialOverlayBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.promoCode.InitialOverlayBehavior",mojo.command.Behavior,{execute:function(requestObj){mojo.Model.set("promoOpen",true);
Event.stop(requestObj.eventObj);
var infoWidth=271;
var loginHeight=181;
var overHeight=102;
var errorHeight=112;
var promoHeight=212;
var promoSmWidth=272;
var promoLgWidth=422;
var theForm=requestObj.getContextElement();
var method=theForm.method;
var initialHeight=promoHeight;
var initialWidth=infoWidth;
var backHeight;
var backWidth;
var url=theForm.action;
new Ajax.Request(url,{method:method,onSuccess:function(response){var thisContent=response.responseText;
var thisUrl=response.request.url;
var findover=thisContent.search('id="promo-over"');
var finderror=thisContent.search('id="promo-enterPromo"');
var findpromosm=thisContent.search('id="promo-small"');
var findpromolg=thisContent.search('id="promo-large"');
if(findpromosm!=-1||findpromolg!=-1){if(findpromosm!=-1){initialWidth=promoSmWidth
}else{initialWidth=promoLgWidth
}}else{if(findover!=-1){initialHeight=overHeight
}else{if(finderror!=-1){initialHeight=errorHeight
}else{initialHeight=loginHeight
}}}backHeight=initialHeight+26;
backWidth=initialWidth+19;
Dialog.info(thisContent,{className:"promocode",width:initialWidth,height:initialHeight,closable:true,recenterAuto:false,destroyOnClose:true,onBeforeShow:function(){var popBkd=$$("div.promocode_popBkd").first();
$(popBkd).setStyle({height:backHeight+"px",width:backWidth+"px"})
},onShow:function(){mojo.Messaging.publish("/mojo/update/observers")
},onClose:function(){mojo.Model.set("promoOpen",false)
}})
},onFailure:function(response){initialHeight=overHeight;
initialWidth=infoWidth;
backHeight=overHeight+26;
backWidth=infoWidth+19;
var thisContent='<div class="promo-type" id="promo-over"><h2 class="errorHeader">Error</h2><p>We\'re sorry. The system has encountered an error. Please try again later.</p><a class="btnClose" href="#">Close</a></div>';
Dialog.info(thisContent,{className:"promocode",width:initialWidth,height:initialHeight,closable:true,recenterAuto:false,destroyOnClose:true,onBeforeShow:function(){var popBkd=$$("div.promocode_popBkd").first();
$(popBkd).setStyle({height:backHeight+"px",width:backWidth+"px"})
},onShow:function(){mojo.Messaging.publish("/mojo/update/observers")
},onClose:function(){mojo.Model.set("promoOpen",false)
}})
}})
}});
dojo.provide("proactiv.behavior.promoCode.ValidationBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.promoCode.ValidationBehavior",mojo.command.Command,{execute:function(requestObj){Event.stop(requestObj.eventObj);
var invocation=requestObj.getInvocation().calleeObj.declaredClass;
if(invocation=="proactiv.behavior.promoCode.ReloadBehavior"){var theForm=$$("div.dialog form").first();
var valid=new Validation(theForm);
var result=valid.validate()
}else{if(invocation=="proactiv.behavior.promoCode.InitialOverlayBehavior"){var valid=new Validation("promoCodeContain");
var result=valid.validate()
}}if(result==true){requestObj.invocation.proceed()
}}});
dojo.provide("proactiv.behavior.promoCode.RemovePromoBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.promoCode.RemovePromoBehavior",mojo.command.Command,{execute:function(requestObj){Event.stop(requestObj.eventObj);
var button=requestObj.getCaller();
var buttonContain=button.parentNode;
var promoContain=button.parentNode.parentNode;
Effect.BlindUp(promoContain,{duration:0.2});
var redeemPromo=$$("div.redeemPromoContain").first();
$(redeemPromo).morph("color:#eee");
$(redeemPromo).morph("color: #999")
}});
dojo.provide("proactiv.behavior.promoCode.ReloadBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.promoCode.ReloadBehavior",mojo.command.Behavior,{execute:function(requestObj){requestObj.eventObj.preventDefault();
var dialogContent=$$("div.promocode_content").first();
var contain=$("modal_dialog_message");
var dialogContentHeight=$(dialogContent).getHeight();
var infoWidth=271;
var loginHeight=181;
var overHeight=102;
var errorHeight=112;
var promoHeight=212;
var promoSmWidth=272;
var promoLgWidth=422;
var loaderTop=(dialogContentHeight/2)-22;
var theForm=$A($$("div.promo-type form")).first();
var url=theForm.action;
var method=theForm.method;
new Ajax.Request(url,{method:method,onSuccess:function(response){var thisContent=response.responseText;
var newHeight=promoHeight;
var newWidth=infoWidth;
var findover=thisContent.search('id="promo-over"');
var finderror=thisContent.search('id="promo-enterPromo"');
var findpromosm=thisContent.search('id="promo-small"');
var findpromolg=thisContent.search('id="promo-large"');
if(findpromosm!=-1||findpromolg!=-1){if(findpromosm!=-1){newWidth=promoSmWidth
}else{newWidth=promoLgWidth
}}else{if(findover!=-1){newHeight=overHeight
}else{if(finderror!=-1){newHeight=errorHeight
}else{newHeight=loginHeight
}}}contain.innerHTML='<div class="dialogLoading"><img src="/img/ajax-loader.gif" style="margin-top: '+loaderTop+'px"/></div>';
mojo.Messaging.publish("/promoCode/overlay/resize",{newHeight:newHeight,newWidth:newWidth,container:contain,newContent:thisContent})
},onFailure:function(response){initialHeight=overHeight;
initialWidth=infoWidth;
backHeight=overHeight+26;
backWidth=infoWidth+19;
var thisContent='<div class="promo-type" id="promo-over"><h2 class="errorHeader">Error</h2><p>We\'re sorry. The system has encountered an error. Please try again later.</p><a class="btnClose" href="#">Close</a></div>';
contain.innerHTML=thisContent;
mojo.Messaging.publish("/promoCode/overlay/resize",{newHeight:newHeight,newWidth:newWidth,container:contain})
}})
}});
dojo.provide("proactiv.behavior.promoCode.CheckOverlaysBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.promoCode.CheckOverlaysBehavior",mojo.command.Behavior,{execute:function(requestObj){var invocation=requestObj.getInvocation();
if(mojo.Model.get("promoOpen")!=true){invocation.proceed()
}else{Event.stop(requestObj.eventObj)
}}});
dojo.provide("proactiv.behavior.promoCode.input.InputFocusBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.promoCode.input.InputFocusBehavior",mojo.command.Command,{execute:function(requestObj){var input=requestObj.getCaller();
var value=input.value;
var e=requestObj.eventObj.type;
if(e=="focus"){$(input).setStyle({zIndex:10})
}if(e=="blur"&&value==""){$(input).setStyle({zIndex:1})
}}});
dojo.provide("proactiv.behavior.promoCode.input.InputOnLoadBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.promoCode.input.InputOnLoadBehavior",mojo.command.Command,{execute:function(requestObj){var theContainer=requestObj.getContextElement();
var theContainerTag=theContainer.tagName;
var theContainerTag=theContainerTag.toLowerCase();
if(theContainerTag=="form"){var input=$$("input.showHideLabel").first();
$(theContainer).reset();
$(input).setStyle({zIndex:1})
}}});
dojo.provide("proactiv.behavior.promoCode.UpdateContentBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.promoCode.UpdateContentBehavior",mojo.command.Behavior,{execute:function(requestObj){var message=requestObj.getCaller().getMessage();
var newContent=message.newContent;
var container=message.container;
function updateIt(){container.innerHTML=newContent;
mojo.Messaging.publish("/mojo/update/observers")
}updateIt.defer()
}});
dojo.provide("proactiv.behavior.promoCode.InitialOverlayLinkBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.promoCode.InitialOverlayLinkBehavior",mojo.command.Behavior,{execute:function(requestObj){mojo.Model.set("promoOpen",true);
Event.stop(requestObj.eventObj);
var linkClicked=$(requestObj.callerObj);
var linkClicked=linkClicked.href;
var url=linkClicked.replace(/\/promocode\/*[a-zA-Z0-9]*/,"/promocode/popup_redeem");
var initialHeight=112;
var initialWidth=271;
var backHeight=initialHeight+26;
var backWidth=initialWidth+19;
new Dialog.info({url:url,options:{method:"get"}},{className:"promocode",width:initialWidth,height:initialHeight,recenterAuto:false,closable:true,onBeforeShow:function(){var popBkd=$$("div.promocode_popBkd").first();
$(popBkd).setStyle({height:backHeight+"px",width:backWidth+"px"})
},onShow:function(){mojo.Messaging.publish("/mojo/update/observers")
},onClose:function(){mojo.Model.set("promoOpen",false)
}})
}});
dojo.provide("proactiv.behavior.PreviousNextSlider");
dojo.require("mojo.command.Behavior");
var scrollPosition=0;
dojo.declare("proactiv.behavior.PreviousNextSlider",mojo.command.Behavior,{constructor:function(){this.currentPage=0
},execute:function(requestObj){var clickEvent=requestObj.eventObj;
Event.stop(clickEvent);
var theElement=requestObj.callerObj;
var className=requestObj.callerObj.className;
var viewPort=$("scrollerContain");
var scrollContainer=$("scrollerContent");
var itemsToScroll=scrollContainer.select("div.scrollerItem");
var pageWidth=viewPort.getWidth();
var contentWidth=itemsToScroll.inject(0,function(total,item){return total+item.getWidth()
});
this.numPages=Math.ceil(contentWidth/pageWidth);
var doMove=function(scrollPosition){return new Effect.Move("scrollerContent",{x:scrollPosition,mode:"absolute",duration:0.25})
};
switch(className){case"next":if((this.currentPage+1)<this.numPages){this.currentPage++;
this.effect=doMove(this.currentPage*-pageWidth)
}break;
case"previous":if(this.currentPage!=0){this.currentPage--;
this.effect=doMove(this.currentPage*-pageWidth)
}break
}this.refreshPaginationControls(requestObj)
},refreshPaginationControls:function(requestObj){var context=$(requestObj.callerObj).up();
var controls={back:context.select("a.previous")[0],next:context.select("a.next")[0]};
controls.back.setStyle({visibility:"visible"});
controls.next.setStyle({visibility:"visible"});
if(this.currentPage==0){controls.back.setStyle({visibility:"hidden"})
}else{if(this.numPages==(this.currentPage+1)){controls.next.setStyle({visibility:"hidden"})
}}}});
dojo.provide("proactiv.behavior.flashLoader.swfObjectBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.flashLoader.swfObjectBehavior",mojo.command.Behavior,{execute:function(requestObj){var flashParams=requestObj.getEvent();
var so=new deconcept.SWFObject(flashParams._player,flashParams._name,flashParams._width,flashParams._height,"9","#FFFFFF");
if(flashParams._imageSrc){so.addVariable("imageSrc",flashParams._imageSrc)
}if(flashParams._videoSrc){so.addVariable("videoSrc",flashParams._videoSrc)
}if(flashParams._base){so.addParam("base",flashParams._base)
}so.addParam("wmode","transparent");
so.addParam("scaleMode","noScale");
so.addParam("menu","false");
so.addVariable("omnitureVidName",flashParams._omniName);
so.addParam("allowScriptAccess","always");
so.write(flashParams._writeTo);
if(flashParams._mouseOver){mojo.Messaging.publish("/flash/swfObj/mouseOver")
}var vidName=flashParams._omniName;
mojo.Messaging.publish("/flash/tracking/videoName",{videoName:vidName})
}});
dojo.provide("proactiv.behavior.flashLoader.flashSwapBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.flashLoader.flashSwapBehavior",mojo.command.Behavior,{execute:function(requestObj){var caller=requestObj.getCaller();
if(caller instanceof mojo.MessagingTopic){var theContainer=requestObj.getCaller().getMessage().flashContainID;
if(theContainer=="flashCarousel"){var links=$(theContainer).getElementsByTagName("a");
var player=links[0].href;
var width="665";
var height="410";
var identifier="ProactivCarousel";
var url=window.location.protocol+"//"+window.location.host+"/swf/";
mojo.Messaging.publish("/flash/swfObj/params",{_player:player,_name:name,_width:width,_height:height,_id:identifier,_name:identifier,_writeTo:theContainer,_base:url})
}}else{var theVideoContain=$(requestObj.callerObj.parentNode);
var theVideo=theVideoContain.id;
new Element.removeClassName($(theVideo),"addVideo");
var width="177";
var height="132";
var imgs=$(theVideo).getElementsByTagName("img");
var divs=$(theVideo).getElementsByTagName("div");
var videoLinks=$(theVideo).getElementsByTagName("a");
var player=videoLinks[0].href;
var videoSrc=videoLinks[1].href;
var imageSrc=imgs[0].src;
var omniName=(videoLinks[1].title)?videoLinks[1].title:"";
var name=theVideo+"name";
if(theVideo=="largePlayer"||theVideo=="homeVideo"){var width="240";
var height="160"
}new Effect.Parallel([new Effect.Fade(imgs[0],"duration: 0.1"),new Effect.Fade(divs[0],"duration: 0.1")],{afterFinish:function(){mojo.Messaging.publish("/flash/swfObj/params",{_omniName:omniName,_player:player,_name:name,_width:width,_height:height,_videoSrc:videoSrc,_imageSrc:imageSrc,_writeTo:theVideo,_mouseOver:true})
}})
}}});
dojo.provide("proactiv.behavior.flashLoader.AnimationRestartBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.flashLoader.AnimationRestartBehavior",mojo.command.Behavior,{execute:function(requestObj){if($("ProactivCarousel")){}}});
dojo.provide("proactiv.behavior.flashLoader.updateObserversBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.flashLoader.updateObserversBehavior",mojo.command.Behavior,{execute:function(requestObj){function bob(){mojo.controller.Controller.updateObservers("proactiv.controller.FlashController")
}bob.defer()
}});
dojo.provide("proactiv.behavior.flashLoader.mouseOverFlashBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.flashLoader.mouseOverFlashBehavior",mojo.command.Behavior,{execute:function(requestObj){var MouseOverFlash=Class.create();
MouseOverFlash.prototype={initialize:function(){$$("embed","object").each(function(el){Event.observe(el,"mouseover",this.overHandler.bindAsEventListener(this));
Event.observe(el,"mouseout",this.outHandler.bindAsEventListener(this))
}.bind(this))
},thisMovie:function(movieName){var isIE=navigator.appName.indexOf("Microsoft")!=-1;
return(isIE)?window[movieName]:document[movieName]
},overHandler:function(e){try{var flashMovie=this.thisMovie(Event.element(e).id);
flashMovie.showNavFlash()
}catch(err){}},outHandler:function(e){try{var flashMovie=this.thisMovie(Event.element(e).id);
flashMovie.hideNavFlash()
}catch(err){}}};
new MouseOverFlash
}});
dojo.provide("proactiv.behavior.flashLoader.videoChangeBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.flashLoader.videoChangeBehavior",mojo.command.Behavior,{execute:function(requestObj){var MouseOverFlash=Class.create();
MouseOverFlash.prototype={initialize:function(){$$("div.video embed","div.video object").each(function(el){Event.observe(el,"mouseover",this.overHandler.bindAsEventListener(this));
Event.observe(el,"mouseout",this.outHandler.bindAsEventListener(this))
}.bind(this))
},thisMovie:function(movieName){var isIE=navigator.appName.indexOf("Microsoft")!=-1;
return(isIE)?window[movieName]:document[movieName]
},overHandler:function(e){try{var flashMovie=this.thisMovie(Event.element(e).id);
flashMovie.showNavFlash()
}catch(err){}},outHandler:function(e){try{var flashMovie=this.thisMovie(Event.element(e).id);
flashMovie.hideNavFlash()
}catch(err){}}};
mojo.Messaging.publish("/flash/swfObj/params",{_player:"/swf/interface/video240x160.swf",_name:"videoMovie3",_width:"240",_height:"160",_videoSrc:"/swf/flv/vid/240x160/1713152_panic_pimple_qt-300.flv",_imageSrc:"/swf/flv/img/240x160/pimplepanic.jpg",_omniName:"pimple_panic_flv_240x160",_writeTo:"homeVideo"});
new MouseOverFlash
}});
dojo.provide("proactiv.behavior.flashLoader.flashDetectBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.flashLoader.flashDetectBehavior",mojo.command.Behavior,{execute:function(requestObj){var noJSContainers=$A($$("div.noJSMessage"));
var noJSText=$A($$("div.noJS"));
var noJSMessages=$A(noJSContainers.concat(noJSText));
noJSMessages.each(function(message){$(message).remove()
});
var inq=$("inqC2CImgContainer");
var flashInstance=$A($$("div.addVideo"));
var player=new SWFObject;
var majorVer=player.installedVer.major;
var message="<p>Please upgrade your browser's Flash Player.</p>";
var link="<a class='btnFlash' target='_blank' href='http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash'>Download Flash</a>";
if(majorVer<9){if(inq){$(inq).remove()
}if(flashInstance){flashInstance.each(function(flashInstance){new Element.removeClassName($(flashInstance.id),"addVideo");
if($("changeVideo")){new Element.remove($("changeVideo").parentNode)
}flashInstance.innerHTML="<div class='noFlashOverlay'></div><div class='noFlash'>"+message+link+"</div>"+flashInstance.innerHTML
})
}}else{if(flashInstance){flashInstance.each(function(flashInstance){var instanceID=flashInstance.id;
mojo.Messaging.publish("/flash/container/id",{flashContainID:instanceID})
})
}}}});
dojo.provide("proactiv.behavior.SetClassBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.SetClassBehavior",mojo.command.Command,{execute:function(requestObj){var params=requestObj.getParams();
var elements=$$(params.elements);
elements.each(function(element){if(params.add){element.addClassName(params.add)
}if(params.remove){element.removeClassName(params.remove)
}})
}});
dojo.provide("proactiv.behavior.CustomDropDownBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.CustomDropDownBehavior",mojo.command.Behavior,{execute:function(requestObj){if($("countryselector")){var localeList=$("locale_selector");
localeList.writeAttribute("id","countryList");
localeList.setStyle("display","block")
}mojo.controller.Controller.updateObservers.defer(requestObj.getControllerName())
}});
dojo.provide("proactiv.behavior.ValidateQuestionnaireBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.ValidateQuestionnaireBehavior",mojo.command.Command,{execute:function(requestObj){var theForm=$(requestObj.callerObj);
var questions=theForm.select(".quizQuestion");
var answers=theForm.serialize(true);
if(this.errors){questions.each(function(question){question.removeClassName("error")
})
}this.errors=new Array();
questions.each(function(question){var questionName=question.select("input[type=radio]").first().getAttribute("name");
if(!answers[questionName]){this.errors.push(question)
}}.bind(this));
if(this.errors.length>0){}else{this.onResponse();
requestObj.invocation.proceed()
}},onResponse:function(){}});
dojo.provide("proactiv.behavior.Overlay");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.Overlay",mojo.command.Behavior,{execute:function(requestObj){var linkClicked=$(requestObj.callerObj);
Event.stop(requestObj.eventObj);
var overlayId=linkClicked.id;
var url=linkClicked.href;
url=url.replace("_nojs","");
correctPaths=function(transport){var theHTML=transport.responseText;
var anchors=/<a[^>]+href="([^"]*)/gi;
var forms=/<form[^>]+action="([^"]*)/gi;
var images=/<img[^>]+src="([^"]*)/gi;
var patterns=[anchors,forms,images];
var firstScriptTag=$$("script",document).first();
var scriptSourcePath=firstScriptTag.getAttribute("src",2);
var pathPrefix=scriptSourcePath.split("js")[0];
var contextRoot=window.location.pathname.replace(/\/[^\/]*$/,"");
if(pathPrefix!="/"){var levelsDownFromApproot=0;
pathPrefix.scan(/\.\.\//,function(match){levelsDownFromApproot++
})
}var approot="";
if(levelsDownFromApproot){var originalPathParts=contextRoot.split("/").without("");
var approotPathParts=new Array();
(originalPathParts.length-levelsDownFromApproot).times(function(index){approotPathParts.push(originalPathParts[index])
});
approot=approotPathParts.join("/")
}var preamble=window.location.protocol+"//"+window.location.host;
patterns.each(function(pattern){transport.responseText=transport.responseText.replace(pattern,function(match,href){var originalHref=href.replace(/^(\.\.\/)*/g,"").replace(/^\//,"");
if(/^[^\/]*#[^\/]*$/.test(originalHref)==false){var newHref=preamble+"/"+approot+(approot==""?"":"/")+originalHref;
return match.replace(href,newHref)
}else{return match
}})
})
};
if(overlayId=="overlayInvoice"){new Dialog.info({url:url,options:{method:"get"}},{className:"invoice",width:360,height:294,recenterAuto:false,closable:true})
}else{if(overlayId=="overlaySecurity"){new Dialog.info({url:url,options:{method:"get"}},{className:"security",width:360,height:304,recenterAuto:false,closable:true})
}else{if(overlayId=="overlayRemember"||overlayId=="overlayRemember2"){new Dialog.info({url:url,options:{method:"get"}},{className:"remember",width:320,height:200,recenterAuto:false,closable:true})
}else{if(overlayId=="overlayShipping"){new Dialog.info({url:url,options:{method:"get"}},{className:"shipping",width:560,height:330,recenterAuto:false,closable:true})
}else{if(overlayId=="overlayHowTo"){new Dialog.info({url:url,options:{method:"get"}},{className:"howto",width:427,height:486,recenterAuto:false,closable:true})
}else{new Dialog.info({url:url,options:{method:"get",onSuccess:correctPaths}},{className:"proactiv",width:358,height:448,recenterAuto:false,closable:true,onShow:function(dialog){mojo.controller.Controller.updateObservers.defer()
}})
}}}}}}});
dojo.provide("proactiv.behavior.radioButtonReplace");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.radioButtonReplace",mojo.command.Behavior,{execute:function(requestObj){var Input={initialize:function(){var theRadios=$$(".bonusBox div div");
var radio=$A(theRadios);
radio.each(function(radio){new Element.addClassName(radio,"radio");
selector=radio.getElementsByTagName("input")[0];
if(selector.checked==true){radio.className="radio selected";
radio.style.backgroundPosition="-600px -200px"
}radio.onmousedown=Input.effect;
radio.onmouseup=Input.handle;
window.onmouseup=Input.clear
})
},effect:function(){if(this.className=="radio"||this.className=="radio selected"){this.style.backgroundPosition="-300px -200px"
}},handle:function(){selector=this.getElementsByTagName("input")[0];
selector.checked=true;
this.className="radio selected";
this.style.backgroundPosition="-600px -200px";
var theInputs=document.getElementsByTagName("input");
var input=$A(theInputs);
input.each(function(input){if(input.getAttribute("name")==selector.getAttribute("name")){if(input!=selector){input.parentNode.className="radio";
input.parentNode.style.backgroundPosition="-0 -200px"
}}})
},clear:function(){var theRadios=$$(".formBonus div div");
var radio=$A(theRadios);
radio.each(function(radio){if(radio.className=="radio selected"){radio.style.backgroundPosition="-600px -200px"
}})
}};
if($("freeGift")){Input.initialize()
}}});
dojo.provide("proactiv.behavior.KitCustomize.LightBoxes");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.KitCustomize.LightBoxes",mojo.command.Command,{execute:function(requestObj){var LightBox={saving:"saving_prompt",adding:"adding_prompt",removing:"removing_prompt","items-missing":"prompt_6","kit-full":"prompt_7","kit-full-multi":"prompt_7a","kit-empty":"prompt_5",shipping:"prompt_8a","006536":"prompt_006536","800359":"prompt_800359","006585":"prompt_006585","006494":"prompt_006494","006619":"prompt_006619","006668":"prompt_006668","802124":"prompt_802124","802165":"prompt_802165","801993":"prompt_801993"};
var clickEvent=(requestObj.eventObj)?requestObj.eventObj:false;
if(clickEvent){Event.stop(clickEvent)
}$("lightboxes").style.display="block";
var params=(mojo.Model.get("kitLightbox")==undefined)?{prompt:"saving",msg:"saving"}:mojo.Model.get("kitLightbox");
var index=params.prompt;
if(params.msg=="variants"){var variant_btns=$(LightBox[index]).select("div.shadeType li a");
if(variant_btns.length>0){$A(variant_btns).each(function(node){$(node).onclick=function(e){if(e){Event.stop(e)
}new Ajax.Request("/kitcustomize/request/kit/update/"+params.item.ffillitem+"/"+node.getAttribute("rel"),{method:"get",evalJSON:true,onSuccess:function(data){var json=eval(data.responseText.evalJSON(true));
if(json.stat=="pass"){$(LightBox[index]).fade({duration:0.5,from:1,to:0});
if(json.variants[0]&&$(params.el)){$("tipContent").innerHTML=params.item.name+" "+json.variants[0].variant_name;
$(params.el).innerHTML=params.item.name+" "+json.variants[0].variant_name;
$(params.el).nextSibling.setAttribute("rel",node.getAttribute("rel"))
}(function(){(function(){$(LightBox[index]).style.display="none";
$("lightboxes").style.display="none"
}).delay(1)
}).delay(2)
}}})
}
})
}}$(LightBox[index]).appear({duration:0.5,from:0,to:1});
var boxButtons=$(LightBox[index]).select("div.popBtns a");
if($A(boxButtons).length>0&&index!="saving"&&index!="adding"&&index!="removing"){$A(boxButtons).each(function(boxButtons){$(boxButtons).onclick=function(e){if(e){Event.stop(e)
}$(LightBox[index]).fade({duration:0.5,from:1,to:0});
(function(){$(LightBox[index]).style.display="none";
$("lightboxes").style.display="none"
}).delay(1)
}
})
}else{(function(){$(LightBox[index]).fade({duration:0.5,from:1,to:0});
(function(){$(LightBox[index]).style.display="none";
$("lightboxes").style.display="none"
}).delay(1)
}).delay(2)
}}});
dojo.provide("proactiv.behavior.KitCustomize.ProductDrop");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.KitCustomize.ProductDrop",mojo.command.Command,{execute:function(requestObj){var clickEvent=requestObj.eventObj;
Event.stop(clickEvent);
var prodDropLI=$("productDrop").getElementsByTagName("li");
var prodDropUL=$("productDrop").getElementsByTagName("ul");
if(prodDropLI.length<=9){new Ajax.Request("/kitcustomize/request/kit/save/"+$(clickEvent.target).getAttribute("rel"),{method:"get",evalJSON:true,onSuccess:function(data){var json=eval(data.responseText.evalJSON(true));
if(json.stat=="pass"){$$("div#kitSummary")[0].innerHTML=json.price;
var newProdDropItem=document.createElement("li");
$(newProdDropItem).setOpacity(0);
var newProdImg=document.createElement("img");
$(newProdImg).setAttribute("src","http://www.proactiv.com"+json.item.image+"kits_small_image.jpg");
$(newProdImg).setAttribute("rel",json.item.name);
var placeHolder=$(prodDropLI[prodDropLI.length-1]);
$(placeHolder).style.display="none";
if((prodDropLI.length+1)<=9){$(placeHolder).style.display="block"
}var placeHolderImg=$(placeHolder).getElementsByTagName("img");
$(placeHolderImg[0]).setAttribute("src","/kitcustomize/templates/kitphase1/img/bg_num"+($("productDrop").getElementsByTagName("li").length+1)+".gif");
var nameHolder=document.createElement("div");
$(nameHolder).innerHTML=json.item.name;
$(nameHolder).style.display="none";
var newProdRemove=document.createElement("a");
$(newProdRemove).className="remove";
$(newProdRemove).innerHTML="close";
$(newProdRemove).setAttribute("href","#");
$(newProdRemove).setAttribute("rel",json.item.ffillitem);
$(newProdDropItem).appendChild(newProdImg);
$(newProdDropItem).appendChild(nameHolder);
$(newProdDropItem).appendChild(newProdRemove);
$(prodDropUL[0]).appendChild(newProdDropItem);
if(prodDropLI.length>9){$(prodDropUL[0]).removeChild(placeHolder);
$(prodDropUL[0]).appendChild(newProdDropItem);
$(prodDropUL[0]).appendChild(placeHolder)
}else{$(prodDropUL[0]).appendChild(placeHolder)
}mojo.Model.set("kitLightbox",{prompt:json.prompt,item:json.item,msg:json.msg,el:$(nameHolder)});
$(newProdDropItem).appear({duration:1,from:0,to:1});
mojo.Model.set("EventsBound",{value:true});
mojo.Model.set("updateTips",{el:$(newProdDropItem)});
mojo.Model.set("updateRTips",{el:$(newProdRemove)});
mojo.controller.Controller.updateObservers("proactiv.controller.KitCustomizeController")
}else{mojo.Model.set("kitLightbox",json)
}}});
mojo.Model.set("kitSummary",{itemCount:prodDropLI.length})
}else{mojo.Model.set("kitLightbox",{prompt:"kit-full"})
}}});
dojo.provide("proactiv.behavior.KitCustomize.HideTabBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.KitCustomize.HideTabBehavior",mojo.command.Command,{execute:function(requestObj){var caller=requestObj.getContextElement();
var tabContent="";
if(caller.id=="primaryKitTabs"){tabContent=$(caller).select("li.tab1").first()
}else{tabContent=$(caller).select("li.subtab1").first()
}if($(tabContent)){tabContent.addClassName("tabOn")
}}});
dojo.provide("proactiv.behavior.KitCustomize.HelpIntro");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.KitCustomize.HelpIntro",mojo.command.Command,{execute:function(requestObj){var mouseEvent=requestObj.eventObj;
var relTarg=mouseEvent.relatedTarget||mouseEvent.fromElement;
if(relTarg.nodeName=="DIV"&&relTarg.nodeName!=undefined){$("helpIntro").style.display="none"
}}});
dojo.provide("proactiv.behavior.KitCustomize.UpdateSH");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.KitCustomize.UpdateSH",mojo.command.Command,{execute:function(requestObj){var params=requestObj.getParams();
var itemCount=params.itemCount;
Event.observe($("shipping_and_handling"),"click",function(e){Event.stop(e);
mojo.Model.set("kitLightbox",{prompt:"shipping",item:"false",msg:"shipping"})
},false);
switch(itemCount){case 3:var shPrice="$ 5.99";
break;
case 4:case 5:var shPrice="$ 7.99";
break;
case 6:case 7:var shPrice="$ 9.99";
break;
case 8:case 9:case 10:var shPrice="$ 10.99";
break;
default:var shPrice="$x.xx"
}$("print_shipping_price").innerHTML=shPrice
}});
dojo.provide("proactiv.behavior.KitCustomize.PreviousNextSlider");
dojo.require("mojo.command.Behavior");
var scrollPosition=0;
var currentItemPages=0;
dojo.declare("proactiv.behavior.KitCustomize.PreviousNextSlider",mojo.command.Behavior,{constructor:function(){this.currentPage=0;
currentItemPages=0;
if($("itemSelected")!=undefined){var prodViewItems=document.getElementsByClassName("scrollProducts");
var i=0;
if(typeof(prodViewItems)!=undefined){$A(prodViewItems).each(function(prodViewItems){if(prodViewItems.id=="itemSelected"){currentItemPages=i
}i++
});
if(currentItemPages>1){var sLeft=document.getElementsByClassName("scrollLeft");
sLeft[0].style.visibility="visible";
if(currentItemPages+1==i){var sRight=document.getElementsByClassName("scrollRight");
sRight[0].style.visibility="hidden"
}}}}if($("currentPage")!=undefined){var totalProducts=document.getElementsByClassName("products").length;
this.totalPages=Math.ceil(totalProducts/5);
$("currentPage").innerHTML=this.currentPage+1;
$("totalPages").innerHTML=this.totalPages;
if(this.totalPages<=1){var sRight=document.getElementsByClassName("scrollRight");
sRight[0].style.visibility="hidden"
}}},execute:function(requestObj){var clickEvent=requestObj.eventObj;
Event.stop(clickEvent);
this.currentPage=currentItemPages;
var theElement=requestObj.callerObj;
var className=requestObj.callerObj.className;
var viewPort=$("productScroll");
var scrollContainer=$("scrollProducts");
if(theElement.id==""){var itemsToScroll=scrollContainer.select("div.products");
var pageWidth=viewPort.getWidth()+8
}else{var itemsToScroll=scrollContainer.select("div.scrollProducts");
var pageWidth=viewPort.getWidth()+8
}var contentWidth=itemsToScroll.inject(0,function(total,item){return total+item.getWidth()
});
this.numPages=Math.ceil(contentWidth/pageWidth);
var doMove=function(scrollPosition){return new Effect.Move("scrollProducts",{x:scrollPosition,mode:"absolute",duration:1})
};
switch(className){case"scrollRight":if((this.currentPage+1)<this.numPages){this.currentPage++;
currentItemPages++;
if($("currentPage")!=undefined){$("currentPage").innerHTML=this.currentPage+1;
this.effect=doMove(this.currentPage*-pageWidth)
}else{this.effect=doMove(currentItemPages*-pageWidth)
}}break;
case"scrollLeft":if(this.currentPage!=0){this.currentPage--;
currentItemPages--;
if($("currentPage")!=undefined){$("currentPage").innerHTML=this.currentPage+1;
this.effect=doMove(this.currentPage*-pageWidth)
}else{this.effect=doMove(currentItemPages*-pageWidth)
}}break
}this.refreshPaginationControls(requestObj)
},refreshPaginationControls:function(requestObj){var scrollLeft=document.getElementsByClassName("scrollLeft");
var scrollRight=document.getElementsByClassName("scrollRight");
scrollLeft[0].style.visibility="visible";
scrollRight[0].style.visibility="visible";
if(this.currentPage==0){scrollLeft[0].style.visibility="hidden"
}else{if(this.numPages==(this.currentPage+1)){scrollRight[0].style.visibility="hidden"
}}}});
dojo.provide("proactiv.behavior.KitCustomize.RemoveToolTip");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.KitCustomize.RemoveToolTip",mojo.command.Command,{execute:function(requestObj){var mouseEvent=requestObj.eventObj||false;
var caller=(mouseEvent)?requestObj.callerObj.parentNode:mojo.Model.get("updateRTips").el;
var rtt=$("removeToolTip");
var offParent=$("kitBottom").viewportOffset();
var callerPos=$(caller).viewportOffset();
var x=callerPos[0]-offParent[0]+2;
$(caller).onmouseout=function(){rtt.style.display="none"
};
if(Prototype.Browser.IE&&window.XMLHttpRequest){x=$(caller).offsetLeft+2
}rtt.style.left=x+"px";
rtt.setOpacity(0);
rtt.appear({duration:0.5,from:0,to:1})
}});
dojo.provide("proactiv.behavior.KitCustomize.ProdToolTip");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.KitCustomize.ProdToolTip",mojo.command.Command,{execute:function(requestObj){var mouseEvent=requestObj.eventObj||false;
var caller=(mouseEvent)?requestObj.callerObj.parentNode:mojo.Model.get("updateTips").el;
var tt=$("toolTip");
var offParent=$("kitBottom").viewportOffset();
var callerPos=$(caller).viewportOffset();
var x=callerPos[0]-offParent[0]+20;
$(caller).onmouseout=function(){tt.style.display="none"
};
var children=caller.childElements();
if(children[0]!=undefined&&children[0].tagName.toLowerCase()=="img"){$("tipContent").innerHTML=children[1].innerHTML;
if(Prototype.Browser.IE&&window.XMLHttpRequest){x=$(caller).offsetLeft+20
}tt.style.left=x+"px";
tt.setOpacity(0);
tt.appear({duration:0.5,from:0,to:1})
}}});
dojo.provide("proactiv.behavior.KitCustomize.StartQuiz");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.KitCustomize.StartQuiz",mojo.command.Command,{execute:function(requestObj){var clickEvent=requestObj.eventObj||false;
Event.stop(clickEvent);
var qI=$("quizIntro");
qI.fade({duration:2.5,from:1,to:0});
var stepHiLite=$("steps").getElementsByClassName("step1");
var stepAnchor=stepHiLite[0].getElementsByTagName("a");
var stepSpans=$("steps").getElementsByTagName("span");
stepAnchor[0].className="stepSelect";
for(var i=0;
i<2;
i++){stepSpans[i].className="removeSpan"
}}});
dojo.provide("proactiv.behavior.KitCustomize.ValidateQuiz");
dojo.require("mojo.command.Behavior");
var validateQuestions=0;
dojo.declare("proactiv.behavior.KitCustomize.ValidateQuiz",mojo.command.Command,{execute:function(requestObj){validateQuestions=0;
var clickEvent=requestObj.eventObj||false;
Event.stop(clickEvent);
if(requestObj.eventObj&&requestObj.eventObj.target.className.indexOf("quizPrevious")>-1){requestObj.invocation.proceed()
}else{var quizQuestions=$("quizContent").getElementsByTagName("input");
var stepQs=$("quizScroll").getElementsByClassName("stepQuestions");
var qBlocks=stepQs[currentPage-1].getElementsByClassName("questionBlock");
var qQ=stepQs[currentPage-1].getElementsByTagName("input");
var length=qBlocks.length;
$A(qBlocks).each(function(el){if(el.className.indexOf("instructions")>-1){length=length-1
}});
$A(qQ).each(function(sQs,qQ){if(sQs.checked==true){validateQuestions++
}});
if(validateQuestions==length||length==0){$("quizError").style.display="none";
requestObj.invocation.proceed()
}else{$("quizError").style.display="block"
}}}});
dojo.provide("proactiv.behavior.KitCustomize.HelpTool");
dojo.require("mojo.command.Behavior");
var helpContent={helpTabs:"Use My Kit Customizer to easily view your current kit options or check your delivery information in My Delivery Details. You can turn the help on and off at any time by clicking on this button.",helpExitOverlay:"Leave the Kit Customizer and return to the Proactiv main site. You can turn the help on and off at any time by clicking on this button.",helpTip:"Click here to toggle this Help overlay on or off.",helpContent:"Click here to close this Help overlay.",helpBrowse:"Browse the catalog and find items that are best for you. You can turn the help on and off at any time by clicking on this button.",myKitItem1:"Drag or click to add displayed items to your kit. You can turn the help on and off at any time by clicking on this button.",myKitItem2:"See how much money you’ll be saving when ordering your kit. You can turn the help on and off at any time by clicking on this button.",myKitItem3:"Be sure to save any changes you’ve made to your kit. You can turn the help on and off at any time by clicking on this button."};
var helpHeader={helpTabs:"Help",helpExitOverlay:"Help",helpTip:"Help",helpContent:"Help",helpBrowse:"Help",myKitItem1:"Help",myKitItem2:"Help",myKitItem3:"Help"};
dojo.declare("proactiv.behavior.KitCustomize.HelpTool",mojo.command.Command,{execute:function(requestObj){if($("helpIntro").style.display!="none"){$("helpIntro").fade({duration:0.5,from:1,to:0})
}var clickEvent=requestObj.eventObj;
Event.stop(clickEvent);
var mouseOverParent=requestObj.callerObj.parentNode;
var getHiLiteClass=document.getElementsByClassName("hiLiteHelp");
if(getHiLiteClass.length>0){for(var i=0;
i<getHiLiteClass.length;
i++){getHiLiteClass[i].className=""
}}mouseOverParent.className="hiLiteHelp";
$("hcInfo").innerHTML=helpContent[mouseOverParent.id];
$("hcHeader").innerHTML=helpHeader[mouseOverParent.id]
}});
dojo.provide("proactiv.behavior.KitCustomize.ProductRecommendDrop");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.KitCustomize.ProductRecommendDrop",mojo.command.Command,{execute:function(requestObj){var clickEvent=requestObj.eventObj;
Event.stop(clickEvent);
var prodDropLI=$("productDrop").getElementsByTagName("li");
var prodDropUL=$("productDrop").getElementsByTagName("ul");
var check=$(clickEvent.target).getAttribute("rel").split(",");
var itemsArr=(check.length>0)?check:[$(clickEvent.target).getAttribute("rel")];
var length=prodDropLI.length;
if($(clickEvent.target).getAttribute("alt")=="replace"){$A(prodDropLI).each(function(node,i){if(i<length-1){$(node).fade({duration:1,from:1,to:0})
}(function(){if(i<length-1){$(node).remove()
}var placeHolder=$(prodDropLI[prodDropLI.length-1]);
var placeHolderImg=placeHolder.getElementsByTagName("img");
placeHolderImg[0].setAttribute("src","/kitcustomize/templates/kitphase1/img/bg_num"+($("productDrop").getElementsByTagName("li").length)+".gif");
i++
}).delay(1)
});
new Ajax.Request("/kitcustomize/request/kit/remove/*",{method:"get",evalJSON:true})
}$A(itemsArr).each(function(item,i){if(($A(itemsArr).length+(prodDropLI.length-1)<10)||$(clickEvent.target).getAttribute("alt")=="replace"){new Ajax.Request("/kitcustomize/request/kit/save/"+item,{method:"get",evalJSON:true,onSuccess:function(data){var json=eval(data.responseText.evalJSON(true));
if(json.stat=="pass"){if(i==0){mojo.Model.set("kitLightbox",{prompt:json.prompt,item:json.item,msg:json.msg})
}if(i==$A(itemsArr).length-1){$$("div#kitSummary")[0].innerHTML=json.price
}var newProdDropItem=document.createElement("li");
var newProdImg=document.createElement("img");
$(newProdImg).setAttribute("src",json.item.image+"kits_small_image.jpg");
$(newProdImg).setAttribute("rel",json.item.name);
var placeHolder=$(prodDropLI[prodDropLI.length-1]);
$(placeHolder).style.display="none";
if((prodDropLI.length+1)<=9){$(placeHolder).style.display="block"
}var placeHolderImg=$(placeHolder).getElementsByTagName("img");
$(placeHolderImg[0]).setAttribute("src","/kitcustomize/templates/kitphase1/img/bg_num"+($("productDrop").getElementsByTagName("li").length+1)+".gif");
var nameHolder=document.createElement("div");
$(nameHolder).innerHTML=json.item.name;
$(nameHolder).style.display="none";
var newProdRemove=document.createElement("a");
$(newProdRemove).className="remove";
$(newProdRemove).setAttribute("href","#");
$(newProdRemove).setAttribute("rel",json.item.ffillitem);
$(newProdDropItem).appendChild(newProdImg);
$(newProdDropItem).appendChild(nameHolder);
$(newProdDropItem).appendChild(newProdRemove);
$(prodDropUL[0]).appendChild(newProdDropItem);
if(prodDropLI.length>9){$(prodDropUL[0]).removeChild(placeHolder);
$(prodDropUL[0]).appendChild(newProdDropItem);
$(prodDropUL[0]).appendChild(placeHolder)
}else{$(prodDropUL[0]).appendChild(placeHolder)
}$(newProdDropItem).appear({duration:1,from:0,to:1});
mojo.Model.set("EventsBound",{value:true});
mojo.Model.set("updateTips",{el:newProdDropItem});
mojo.Model.set("updateRTips",{el:newProdRemove});
mojo.controller.Controller.updateObservers("proactiv.controller.KitCustomizeController")
}else{mojo.Model.set("kitLightbox",json)
}}});
mojo.controller.Controller.updateObservers("proactiv.controller.KitCustomizeController");
mojo.Model.set("kitSummary",{itemCount:$A(itemsArr).length+(prodDropLI.length-1)})
}else{if($A(itemsArr).length>1){mojo.Model.set("kitLightbox",{prompt:"kit-full-multi"})
}else{mojo.Model.set("kitLightbox",{prompt:"kit-full"})
}}if($(clickEvent.target).getAttribute("alt")=="replace"){(function(){document.location="/kitcustomize/quiz/recommend/catalog/"
}).delay(2)
}})
}});
dojo.provide("proactiv.behavior.KitCustomize.PreviousNextQuiz");
dojo.require("mojo.command.Behavior");
var scrollPosition=0;
var currentItemPages=0;
var currentPage=1;
dojo.declare("proactiv.behavior.KitCustomize.PreviousNextQuiz",mojo.command.Behavior,{execute:function(requestObj){var clickEvent=requestObj.eventObj;
Event.stop(clickEvent);
var theElement=requestObj.callerObj;
var className=requestObj.callerObj.className;
var viewPort=$("quizContent");
var scrollContainer=$("quizScroll");
var stepSpans=$("steps").getElementsByTagName("span");
var itemsToScroll=scrollContainer.select("div.stepQuestions");
var pageWidth=872;
this.numPages=8;
var doMove=function(scrollPosition){return new Effect.Move("quizScroll",{x:scrollPosition,mode:"absolute",duration:1})
};
switch(className){case"quizNext":if(currentPage<=this.numPages){var previousStep="step"+(currentPage);
var stepChecked=$("steps").getElementsByClassName(previousStep);
var stepAnchor=stepChecked[0].getElementsByTagName("a");
stepAnchor[0].className="checked";
this.effect=doMove(currentPage*-pageWidth);
currentPage++;
var currentStep="step"+(currentPage);
stepChecked=$("steps").getElementsByClassName(currentStep);
stepAnchor=stepChecked[0].getElementsByTagName("a");
stepAnchor[0].className="stepSelect";
$("quizSteps").className=currentStep;
for(var i=0;
i<stepSpans.length;
i++){if(i<=currentPage){stepSpans[i].className="removeSpan"
}}}break;
case"quizPrevious":if(currentPage!=1){var previousStep="step"+(currentPage);
var stepChecked=$("steps").getElementsByClassName(previousStep);
stepChecked[0].className=previousStep;
currentPage--;
currentStep="step"+(currentPage);
stepChecked=$("steps").getElementsByClassName(currentStep);
var stepAnchor=stepChecked[0].getElementsByTagName("a");
stepAnchor[0].className="stepSelect";
$("quizSteps").className=currentStep;
this.effect=doMove((currentPage-1)*-pageWidth)
}break
}this.refreshPaginationControls(requestObj)
},refreshPaginationControls:function(requestObj){var scrollLeft=document.getElementsByClassName("quizPrevious");
var scrollRight=document.getElementsByClassName("quizNext");
var calculateResults=document.getElementsByClassName("quizResults");
scrollLeft[0].style.visibility="visible";
scrollRight[0].style.display="block";
calculateResults[0].style.visibility="hidden";
if(currentPage==1){scrollLeft[0].style.visibility="hidden"
}else{if(this.numPages==currentPage){scrollRight[0].style.display="none";
calculateResults[0].style.visibility="visible"
}}}});
dojo.provide("proactiv.behavior.KitCustomize.ScrollBySteps");
dojo.require("mojo.command.Behavior");
var scrollPosition=0;
var currentItemPages=0;
dojo.declare("proactiv.behavior.KitCustomize.ScrollBySteps",mojo.command.Behavior,{constructor:function(){},execute:function(requestObj){var clickEvent=requestObj.eventObj;
Event.stop(clickEvent);
var stepNum=parseInt(requestObj.callerObj.innerHTML);
var className=requestObj.callerObj.className;
var viewPort=$("quizContent");
var scrollContainer=$("quizScroll");
var itemsToScroll=scrollContainer.select("div.stepQuestions");
var stepSpans=$("steps").getElementsByTagName("span");
var pageWidth=872;
this.numPages=9;
var doMove=function(scrollPosition){return new Effect.Move("quizScroll",{x:scrollPosition,mode:"absolute",duration:1})
};
if(stepNum>=currentPage){if((currentPage)<this.numPages){var currentStep="step"+(currentPage);
stepChecked=$("steps").getElementsByTagName("a");
if(stepChecked.length>0){var istep=1;
$A(stepChecked).each(function(stepChecked){if(istep<stepNum){stepChecked.className="checked";
istep++
}})
}var stepSelect=$("steps").getElementsByClassName("step"+stepNum);
var stepAnchor=stepSelect[0].getElementsByTagName("a");
stepAnchor[0].className="stepSelect";
currentPage=stepNum;
for(var i=0;
i<stepSpans.length;
i++){if(i<=currentPage){stepSpans[i].className="removeSpan"
}}$("quizSteps").className=currentStep;
this.effect=doMove((stepNum-1)*-pageWidth)
}}else{if(stepNum<currentPage){if(currentPage!=0){var currentStep="step"+(currentPage);
stepChecked=$("steps").getElementsByTagName("a");
if(stepChecked.length>0){var istep=1;
$A(stepChecked).each(function(stepChecked){if(istep>=stepNum){stepChecked.className="step"+istep
}istep++
})
}var stepSelect=$("steps").getElementsByClassName("step"+stepNum);
var stepAnchor=stepSelect[0].getElementsByTagName("a");
stepAnchor[0].className="stepSelect";
currentPage=stepNum--;
$("quizSteps").className=currentStep;
this.effect=doMove((stepNum)*-pageWidth)
}}}this.refreshPaginationControls(requestObj)
},refreshPaginationControls:function(requestObj){var scrollLeft=document.getElementsByClassName("quizPrevious");
var scrollRight=document.getElementsByClassName("quizNext");
var calculateResults=document.getElementsByClassName("quizResults");
scrollLeft[0].style.visibility="visible";
scrollRight[0].style.display="block";
calculateResults[0].style.visibility="hidden";
if(currentPage==1){scrollLeft[0].style.visibility="hidden"
}else{if(this.numPages==currentPage){scrollRight[0].style.display="none";
calculateResults[0].style.visibility="visible"
}}}});
dojo.provide("proactiv.behavior.KitCustomize.PreviousNextSliderInsideQuiz");
dojo.require("mojo.command.Behavior");
var scrollPosition=0;
var currentItemPages=0;
dojo.declare("proactiv.behavior.KitCustomize.PreviousNextSliderInsideQuiz",mojo.command.Behavior,{constructor:function(){this.currentPage=0;
currentItemPages=0;
if($("currentQuizPage")!=undefined){var totalProducts=document.getElementsByClassName("products").length;
this.totalPages=Math.ceil(totalProducts/5);
$("currentQuizPage").innerHTML=this.currentPage+1;
$("totalQuizPages").innerHTML=this.totalPages;
if(this.totalPages<=1){var sRight=document.getElementsByClassName("scrollRight");
if(sRight[0]!=undefined){sRight[0].style.visibility="hidden"
}}}},execute:function(requestObj){var clickEvent=requestObj.eventObj;
Event.stop(clickEvent);
this.currentPage=currentItemPages;
var theElement=requestObj.callerObj;
var className=requestObj.callerObj.className;
var viewPort=$("kitQuizContainer");
var scrollContainer=$("kitQuizScroll");
var itemsToScroll=scrollContainer.select("div.products");
var pageWidth=viewPort.getWidth()+10;
var contentWidth=itemsToScroll.inject(0,function(total,item){return total+item.getWidth()
});
this.numPages=Math.ceil(contentWidth/pageWidth);
var doMove=function(scrollPosition){return new Effect.Move("kitQuizScroll",{x:scrollPosition,mode:"absolute",duration:1})
};
switch(className){case"scrollRight":if((this.currentPage+1)<this.numPages){this.currentPage++;
currentItemPages++;
$("currentQuizPage").innerHTML=this.currentPage+1;
this.effect=doMove(this.currentPage*-pageWidth)
}break;
case"scrollLeft":if(this.currentPage!=0){this.currentPage--;
currentItemPages--;
$("currentQuizPage").innerHTML=this.currentPage+1;
this.effect=doMove(this.currentPage*-pageWidth)
}break
}this.refreshPaginationControls(requestObj)
},refreshPaginationControls:function(requestObj){var scrollLeft=document.getElementsByClassName("scrollLeft");
var scrollRight=document.getElementsByClassName("scrollRight");
scrollLeft[0].style.visibility="visible";
scrollRight[0].style.visibility="visible";
if(this.currentPage==0){scrollLeft[0].style.visibility="hidden"
}else{if(this.numPages==(this.currentPage+1)){scrollRight[0].style.visibility="hidden"
}}}});
dojo.provide("proactiv.behavior.KitCustomize.SubmitKitOrder");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.KitCustomize.SubmitKitOrder",mojo.command.Command,{execute:function(requestObj){if(requestObj.eventObj){Event.stop(requestObj.eventObj)
}if(!$("saveNotification")){return
}var hash=new Hash();
$$("#kitBottom .remove").each(function(el,i){hash.set(i,el.getAttribute("rel"))
});
new Ajax.Request("/kitcustomize/request/order/save/",{method:"post",postBody:hash.toQueryString(),evalJSON:true,onSuccess:function(data){var json=eval(data.responseText.evalJSON(true));
$("saveNotification").innerHTML="Your kit is saved!";
(function(){$("saveNotification").fade({duration:2,from:1,to:0})
}).delay(2)
}})
}});
dojo.provide("proactiv.behavior.KitCustomize.RemoveProduct");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.KitCustomize.RemoveProduct",mojo.command.Command,{execute:function(requestObj){try{var clickEvent=requestObj.eventObj;
Event.stop(clickEvent);
var prodDropLI=$("productDrop").getElementsByTagName("li");
var prodDropUL=$("productDrop").getElementsByTagName("ul");
if(prodDropLI.length>=5){new Ajax.Request("/kitcustomize/request/kit/remove/"+$(clickEvent.target).getAttribute("rel"),{onSuccess:function(data){var json=eval(data.responseText.evalJSON(true));
if(json.stat=="pass"){mojo.Model.set("kitLightbox",json);
$("removeToolTip").style.display="none";
$("toolTip").style.display="none";
var callerParent=$(requestObj.callerObj).parentNode;
$(callerParent).fade({duration:1,from:1,to:0});
(function(){if($(callerParent)){$(callerParent).remove()
}var placeHolder=$(prodDropLI[prodDropLI.length-1]);
$(placeHolder).style.display="none";
if((prodDropLI.length-1)<=9){$(placeHolder).style.display="block"
}var placeHolderImg=$(placeHolder).getElementsByTagName("img");
$(placeHolderImg[0]).setAttribute("src","/kitcustomize/templates/kitphase1/img/bg_num"+($("productDrop").getElementsByTagName("li").length)+".gif")
}).delay(1);
$$("div#kitSummary")[0].innerHTML=json.price;
mojo.Model.set("kitSummary",{itemCount:prodDropLI.length-2});
mojo.Model.set("EventsBound",{value:true});
mojo.controller.Controller.updateObservers("proactiv.controller.KitCustomizeController")
}else{mojo.Model.set("kitLightbox",json)
}}})
}else{mojo.Model.set("kitLightbox",{prompt:"kit-empty",item:"false",msg:"kit-empty"})
}}catch(e){}}});
dojo.provide("proactiv.behavior.KitCustomize.TabBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.KitCustomize.TabBehavior",mojo.command.Command,{execute:function(requestObj){Event.stop(requestObj.eventObj);
var caller=requestObj.callerObj;
var callerParent=requestObj.callerObj.parentNode;
var grandParent=requestObj.callerObj.parentNode.parentNode;
var primaryKitTabs=grandParent.getElementsByTagName("li");
var primaryKitTabArray=$A(primaryKitTabs);
var subTabContent="";
var secondaryKitTabArray="";
var primaryKitSubTabs=grandParent.getElementsByTagName("a");
var subTabsArray=$A(primaryKitSubTabs);
if(grandParent.parentNode.id=="primaryKitTabs"){primaryKitTabArray.each(function(primaryKitTabArray){new Element.removeClassName(primaryKitTabArray,"tabOn");
var elClass=$(primaryKitTabArray.className);
elClass.style.display="none"
});
$(callerParent.className).style.display="block";
new Element.addClassName(callerParent,"tabOn")
}else{subTabsArray.each(function(subTabsArray){new Element.removeClassName(subTabsArray,"tabOn")
});
primaryKitTabArray.each(function(primaryKitTabArray){subTabContent="div."+primaryKitTabArray.className+"Content";
secondaryKitTabArray=$$(subTabContent);
secondaryKitTabArray.each(function(secondaryKitTabArray){secondaryKitTabArray.style.display="none"
})
});
subTabContent="div."+callerParent.className+"Content";
secondaryKitTabArray=$$(subTabContent);
secondaryKitTabArray.each(function(secondaryKitTabArray){secondaryKitTabArray.style.display="block"
});
new Element.addClassName(caller,"tabOn")
}}});
dojo.provide("proactiv.behavior.KitCustomize.HelpTab");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.KitCustomize.HelpTab",mojo.command.Command,{execute:function(requestObj){var clickEvent=(requestObj.eventObj)?requestObj.eventObj:false;
if(clickEvent){Event.stop(clickEvent)
}var tabStatus=$("helpTool").style.display;
$("helpHeader").className="tabOn";
if(tabStatus=="block"){$("helpHeader").className="";
$("helpTool").fade({duration:1,from:1,to:0})
}else{$("helpTool").style.display="block"
}dojo.cookie("GRCKitHelp",true,{path:"/"})
}});
dojo.provide("proactiv.behavior.updateObserversBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.updateObserversBehavior",mojo.command.Behavior,{execute:function(requestObj){mojo.controller.Controller.updateObservers.defer()
}});
dojo.provide("proactiv.behavior.homepage.RealStoriesNavigationBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.homepage.RealStoriesNavigationBehavior",mojo.command.Behavior,{execute:function(requestObj){var container=requestObj.getContextElement();
var scroller=$$("div.scroller").first();
if(scroller){var navigation='<div class="previousInactive"></div><div class="nextInactive"></div><a class="previous" href="#">Previous</a><a class="next" href="#">Next</a>';
new Element.insert(scroller,{top:navigation});
mojo.controller.Controller.updateObservers.defer()
}}});
dojo.provide("proactiv.behavior.homepage.randomCeleb");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.homepage.randomCeleb",mojo.command.Behavior,{execute:function(requestObj){var theSlideshow=$(requestObj.getContextElement());
var speed=5000;
function Slideshow(slideshow,timeout){this.slides=[];
var nl=theSlideshow.getElementsByTagName("a");
for(var i=0;
i<nl.length;
i++){if(Element.hasClassName(nl[i],"slide")){this.slides.push(nl[i])
}}this.timeout=timeout;
this.current=0;
for(var i=0;
i<this.slides.length;
i++){this.slides[i].style.zIndex=this.slides.length-i
}Element.show(slideshow);
setTimeout((function(){this.next()
}).bind(this),this.timeout+speed)
}Slideshow.prototype={next:function(){for(var i=0;
i<this.slides.length;
i++){var slide=this.slides[(this.current+i)%this.slides.length];
slide.style.zIndex=this.slides.length-i
}Effect.Fade(this.slides[this.current],{afterFinish:function(effect){effect.element.style.zIndex=0;
Element.show(effect.element);
Element.setOpacity(effect.element,1)
}});
this.current=(this.current+1)%this.slides.length;
setTimeout((function(){this.next()
}).bind(this),this.timeout+speed)
}};
if(theSlideshow){var showSlides=theSlideshow.getElementsByTagName("a");
var showSlide=$A(showSlides);
showSlide.each(function(showSlide){showSlide.style.left="0"
})
}new Slideshow(theSlideshow,1000)
}});
dojo.provide("proactiv.behavior.lazyload.DeferImageLoadBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.lazyload.DeferImageLoadBehavior",mojo.command.Behavior,{constructor:function(){this.htmlElement=$$("html")[0];
this.bodyElement=$$("body")[0]
},execute:function(requestObj){var safariMatch=navigator.appVersion.match(/AppleWebKit\/(\d)/);
if(safariMatch&&safariMatch[1]=="4"){return
}var container=$(requestObj.getContextElement());
var selector=requestObj.paramsObj.collectionSelector;
var placeholder=requestObj.paramsObj.placeholder||"";
container.select(selector).each(function(image){if(this.inView(image)){return
}var originalSource=image.readAttribute("src");
image.writeAttribute("original",originalSource);
image.src=placeholder;
if(placeholder==""){image.removeAttribute("src")
}image.loaded=false;
image.displayImage=function(){if(this.loaded){return
}this.writeAttribute("src",image.readAttribute("original"));
this.removeAttribute("original");
this.loaded=true
};
mojo.Messaging.subscribe("/lazyload/image/"+originalSource,image,"displayImage")
}.bind(this))
},inView:function(element){var containerRect,intersection;
var container=element.up();
var intersection=this.getRect(element);
do{containerRect=this.getRect(container);
intersection=this.getIntersection(intersection,containerRect);
container=container.up()
}while((container!=this.bodyElement)&&intersection);
return intersection
},getIntersection:function(firstRect,secondRect){var intersectionRect={left:firstRect.left>secondRect.left?firstRect.left:secondRect.left,top:firstRect.top>secondRect.top?firstRect.top:secondRect.top,bottom:firstRect.bottom<=secondRect.bottom?firstRect.bottom:secondRect.bottom,right:firstRect.right<=secondRect.right?firstRect.right:secondRect.right};
if((intersectionRect.left<intersectionRect.right)&&(intersectionRect.top<intersectionRect.bottom)){return intersectionRect
}},getRect:function(element){if(element==this.htmlElement){var elementCoordinates=document.viewport.getScrollOffsets();
var elementDimensions=document.viewport.getDimensions()
}else{var elementCoordinates=element.cumulativeOffset();
var elementDimensions=element.getDimensions()
}return{left:elementCoordinates.left,top:elementCoordinates.top,bottom:elementCoordinates.top+elementDimensions.height,right:elementCoordinates.left+elementDimensions.width}
}});
dojo.provide("proactiv.behavior.lazyload.LoadImagesBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.lazyload.LoadImagesBehavior",mojo.command.Behavior,{execute:function(requestObj){var imagesToLoad=requestObj.paramsObj.imageArray;
if(!imagesToLoad){return
}imagesToLoad.each(function(image){if(image&&!image.loaded){mojo.Messaging.publish("/lazyload/image/"+image.readAttribute("original"))
}})
}});
dojo.provide("proactiv.behavior.MessagingBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.MessagingBehavior",mojo.command.Behavior,{execute:function(requestObj){mojo.Messaging.publish(requestObj.paramsObj.topic,requestObj.paramsObj.message)
}});
dojo.provide("proactiv.behavior.RemoveElementsBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.RemoveElementsBehavior",mojo.command.Behavior,{execute:function(requestObj){var selectorsToRemove=requestObj.getParams().selectors;
selectorsToRemove.each(function(selector){$$(selector).each(function(element){element.remove()
})
})
}});
dojo.provide("proactiv.behavior.loginPanel.ControlPanelBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.loginPanel.ControlPanelBehavior",mojo.command.Behavior,{execute:function(requestObj){var params=requestObj.getParams();
var action=params.action;
var targetPosition=(action=="open")?0:-75;
var panelElement=params.panelElement;
panelElement.morph({top:targetPosition+"px"},{duration:0.25,afterFinish:function(){mojo.Model.set("/loginPanel/state",(action=="close")?"closed":"opened");
mojo.Model.set("/loginPanel/animating",false)
},beforeStart:function(){mojo.Model.set("/loginPanel/animating",true)
}})
}});
dojo.provide("proactiv.behavior.loginPanel.InitializeBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.loginPanel.InitializeBehavior",mojo.command.Behavior,{execute:function(requestObj){var panelElement=$(requestObj.getContextElement());
var panelParent=panelElement.parentNode;
var loginButton=new Element("a",{id:"signInTrigger",href:"#sign-in"}).update("Sign In");
panelElement.insert({before:loginButton});
mojo.controller.Controller.updateObservers.defer(requestObj.controllerName);
mojo.Model.set("/loginPanel/animating",false);
mojo.Model.set("/loginPanel/state","closed");
panelElement.setStyle({top:"-75px"});
panelElement.removeClassName("infoPanel");
panelElement.addClassName("loginDrawer");
if(panelElement.id=="infopanel_remember"){var welcome=$("welcome");
$(welcome).wrap("div",{id:"infopanel_loggedin","class":"infoPanel remember"});
panelElement.insert({before:$("infopanel_loggedin")})
}}});
dojo.provide("proactiv.behavior.loginPanel.TogglePanelBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.loginPanel.TogglePanelBehavior",mojo.command.Behavior,{execute:function(requestObj){var caller=requestObj.getCaller();
if(caller instanceof mojo.History){var action=caller.getHash()=="sign-in"?"open":"close"
}else{var action=(mojo.Model.get("/loginPanel/state")=="closed")?"open":"close"
}mojo.Messaging.publish("/loginPanel/"+action)
}});
dojo.provide("proactiv.behavior.FixCartLinksBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.FixCartLinksBehavior",mojo.command.Command,{execute:function(requestObj){var pactvid=this.getPactvid();
if(pactvid){var addToCartLinks=$$("a.addToCart");
addToCartLinks.each(function(link){if(!(/pactivid=/.test(link))){var href=link.getAttribute("href");
link.setAttribute("href",href+"&pactvid="+pactvid)
}}.bind(this))
}},getPactvid:function(){var cookieChunks=document.cookie.split(";");
var cookies=new Hash();
cookieChunks.each(function(cookie){var crumbs=cookie.split("=");
cookies.set(crumbs[0],crumbs[1])
});
return cookies.get("PHPSESSID")
}});
dojo.provide("proactiv.behavior.HistoryTabControlBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.HistoryTabControlBehavior",mojo.command.Behavior,{execute:function(requestObj){var params=requestObj.getParams();
var suffix=(params!=null)?params.suffix:"";
var theHash=mojo.History.getInstance().getHash();
var grabID=(theHash==""?"tab1":theHash)+suffix;
if(console){console.log(grabID)
}var theTab=$(grabID);
if(!theTab){return
}var grandParent=theTab.parentNode.parentNode;
var allLinks=grandParent.getElementsByTagName("a");
var link=$A(allLinks);
var move=function(element,xPosition){new Effect.Move(element,{x:xPosition,mode:"absolute",duration:0.4})
};
function switchClass(){link.each(function(link){new Element.removeClassName(link,"selected")
});
theTab.addClassName("selected")
}if(grabID=="tab1wide"){move("tabMask",0);
switchClass()
}if(grabID=="tab2wide"){move("tabMask",-645);
switchClass()
}if(grabID=="tab3wide"){move("tabMask",-1290);
switchClass()
}if(grabID=="tab4wide"){move("tabMask",-1935);
switchClass()
}if(grabID=="tab5wide"){move("tabMask",-2580);
switchClass()
}}});
dojo.provide("proactiv.behavior.BeforeAfterGalleryBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.BeforeAfterGalleryBehavior",mojo.command.Behavior,{execute:function(requestObj){var monkey=requestObj.eventObj.preventDefault();
var BrowserDetect={init:function(){this.browser=this.searchString(this.dataBrowser)||"An unknown browser";
this.version=this.searchVersion(navigator.userAgent)||this.searchVersion(navigator.appVersion)||"an unknown version"
},searchString:function(data){for(var i=0;
i<data.length;
i++){var dataString=data[i].string;
var dataProp=data[i].prop;
this.versionSearchString=data[i].versionSearch||data[i].identity;
if(dataString){if(dataString.indexOf(data[i].subString)!=-1){return data[i].identity
}}else{if(dataProp){return data[i].identity
}}}},searchVersion:function(dataString){var index=dataString.indexOf(this.versionSearchString);
if(index==-1){return
}return parseFloat(dataString.substring(index+this.versionSearchString.length+1))
},dataBrowser:[{string:navigator.vendor,subString:"Apple",identity:"Safari"}]};
BrowserDetect.init();
var browser=BrowserDetect.browser;
var version=BrowserDetect.version*1;
if(browser=="Safari"&&version<521){var safariHack=function(effect){effect.element.up().setStyle({opacity:0.99});
setTimeout(function(){effect.element.up().setStyle({opacity:1})
},1)
}
}var listWidth=760;
var parentID=requestObj.callerObj.parentNode.id;
if(parentID==parentID.match("set[0-9]+")){var trimID=parentID.slice(3);
var toNum=parseInt(trimID);
var xDist=0-(listWidth*toNum);
new Effect.Move("galleryHolder",{x:xDist,y:0,mode:"absolute",afterUpdate:function(effect){mojo.Messaging.publish("/beforeAfterGallery/safariHack",effect)
}});
var grabBlockID=$("primaryContent");
grabBlockID.removeClassName("s[0-9]+");
var newClassName="s"+trimID;
grabBlockID.addClassName(newClassName)
}var clickedClassName=requestObj.callerObj.className;
if(clickedClassName=="previous"||clickedClassName=="next"){var fullLength=document.getElementById("galleryHolder").getElementsByTagName("ul").length;
var offsetLength=fullLength-1;
grabClasses=document.getElementById("primaryContent").className;
var extractSetClass=grabClasses.match("s[0-9]+");
var trimSet=extractSetClass[0].sub("s","");
var setNum=parseInt(trimSet);
if(clickedClassName=="previous"){setNum-=1;
if(setNum<0){setNum=offsetLength
}}if(clickedClassName=="next"){setNum+=1;
if(setNum>offsetLength){setNum=0
}}var xDist=0-(listWidth*setNum);
new Effect.Move("galleryHolder",{x:xDist,y:0,mode:"absolute",afterUpdate:function(effect){mojo.Messaging.publish("/beforeAfterGallery/safariHack",effect)
}});
var grabBlockID=$("primaryContent");
grabBlockID.removeClassName("s[0-9]+");
var newClassName="s"+setNum;
grabBlockID.addClassName(newClassName)
}}});
dojo.provide("proactiv.behavior.CustomDropDownPressBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.CustomDropDownPressBehavior",mojo.command.Behavior,{execute:function(requestObj){var caller=$(requestObj.callerObj);
if(caller.hasClassName("selected")||caller==document.body){if(caller!=document.body){Event.stop(requestObj.getEvent())
}var elementToSize=$("countryList");
var height=elementToSize.getHeight()-2;
var counter=$(elementToSize).getElementsByTagName("li");
var dropHeight=counter.length*18;
if(height=="18"&&caller!=document.body){elementToSize.select("li.hideable").each(function(theListItem){theListItem.setStyle({display:"block"})
});
new Effect.Morph(elementToSize,{style:{height:dropHeight+"px",top:(18+6-dropHeight)+"px"},duration:0.3})
}else{new Effect.Morph(elementToSize,{style:{height:"18px",top:"6px"},duration:0.3,afterFinish:function(){elementToSize.select("li.hideable").each(function(theListItem){theListItem.setStyle({display:"none"})
})
}})
}}else{window.location.href=caller.select("a")[0].readAttribute("href")
}}});
dojo.provide("proactiv.behavior.storiesGallery.HandleThumbnailLinkBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.storiesGallery.HandleThumbnailLinkBehavior",mojo.command.Behavior,{execute:function(requestObj){requestObj.eventObj.preventDefault();
var grandParentClass=requestObj.callerObj.parentNode.parentNode.className;
var parentClass=requestObj.callerObj.parentNode.className;
var newClassName=grandParentClass+"_"+parentClass;
var grabBlockID=$("realStories");
grabBlockID.removeClassName("s[0-9]+_l[0-9]\\s*");
grabBlockID.addClassName(newClassName);
var setID=grandParentClass.slice(1);
var setNum=parseInt(setID);
var setDist=0-(3180*setNum);
var listID=parentClass.slice(1);
var listNum=parseInt(listID);
var listDist=0-(530*listNum);
this.currentPage=(setNum*6)+listNum;
var combDist=setDist+listDist;
new Effect.Move("lgListMask",{x:combDist,y:0,mode:"absolute"})
}});
dojo.provide("proactiv.behavior.storiesGallery.HandlePrevNextLinkBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.storiesGallery.HandlePrevNextLinkBehavior",mojo.command.Behavior,{execute:function(requestObj){requestObj.eventObj.preventDefault();
var clickedClassName=requestObj.callerObj.className;
if(clickedClassName=="previous"||clickedClassName=="next"){var fullLength=document.getElementById("thumbMask").getElementsByTagName("ul").length;
var offsetLength=fullLength-1;
grabClasses=document.getElementById("realStories").className;
var extractSetClass=grabClasses.match("s[0-9]+(?!_)");
var trimSet=extractSetClass[0].sub("s","");
var setNum=parseInt(trimSet);
if(clickedClassName=="previous"){setNum-=1;
if(setNum<0){setNum=offsetLength
}}if(clickedClassName=="next"){setNum+=1;
if(setNum>offsetLength){setNum=0
}}this.currentPage=setNum;
var xDist=0-(480*setNum);
new Effect.Move("thumbMask",{x:xDist,y:0,mode:"absolute"});
var grabBlockID=$("realStories");
grabBlockID.removeClassName("s[0-9]+(?!_)");
var newClassName="s"+setNum;
grabBlockID.addClassName(newClassName)
}}});
dojo.provide("proactiv.behavior.storiesGallery.HandlePageLinkBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.storiesGallery.HandlePageLinkBehavior",mojo.command.Behavior,{execute:function(requestObj){requestObj.eventObj.preventDefault();
var grabID=requestObj.callerObj.parentNode.id;
var trimID=grabID.slice(3);
var toNum=parseInt(trimID);
var xDist=0-(480*toNum);
new Effect.Move("thumbMask",{x:xDist,y:0,mode:"absolute"});
this.currentPage=toNum;
var grabBlockID=$("realStories");
grabBlockID.removeClassName("s[0-9]+(?!_)");
var newClassName="s"+trimID;
grabBlockID.addClassName(newClassName)
}});
dojo.provide("proactiv.behavior.recommendSystem.RecommendBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.recommendSystem.RecommendBehavior",mojo.command.Behavior,{execute:function(requestObj){var theForm=$(requestObj.callerObj);
var questions=theForm.select(".quizQuestion");
var answers=theForm.serialize(true);
var systems={"1":"quiz/results/combination.php","2a":"quiz/results/dry.php","2b":"quiz/results/sensitive.php","2c":"quiz/results/normal.php","3":"quiz/results/oily.php"};
var matchRules=[{system:"1",rules:[{property:"q2",value:"c"},{property:"q3",value:"c"}]},{system:"2a",rules:[{property:"q1",value:"a"},{property:"q4",value:"a"}]},{system:"2b",rules:[{property:"q5",value:"a"}]},{system:"2c",rules:[{property:"q2",value:"a"},{property:"q4",value:"c"}]},{system:"3",rules:[{property:"q2",value:"b"},{property:"q3",value:"b"}]}];
var lastResortRules=[{system:"2a",rules:[{property:"q1",value:"a"}]},{system:"2a",rules:[{property:"q4",value:"b"}]},{system:"3",rules:[{property:"q2",value:"b"}]},{system:"1",rules:[{property:"q3",value:"c"}]},{system:"2c",rules:[{property:"q5",value:"b"}]}];
var systemMatches=new Array();
matchRules.each(function(matchRule){var match=true;
matchRule.rules.each(function(rule){if(answers[rule.property]!=rule.value){match=false
}});
if(match){systemMatches.push(matchRule.system)
}});
var theURL;
if(systemMatches.indexOf("2b")!=-1){theURL=systems["2b"]
}else{if(systemMatches.length==1){theURL=systems[systemMatches.first()]
}else{systemMatches=new Array();
lastResortRules.each(function(matchRule){var match=true;
matchRule.rules.each(function(rule){if(answers[rule.property]!=rule.value){match=false
}});
if(match){systemMatches.push(matchRule.system)
}});
if(systemMatches.length==1){theURL=systems[systemMatches.first()]
}else{theURL=systems["1"]
}}}Event.stop(requestObj.eventObj);
window.location.href=theURL
}});
dojo.provide("proactiv.behavior.Validation");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.Validation",mojo.command.Behavior,{execute:function(requestObj){var className=requestObj.callerObj.className;
var page=document.body.className.split(" ");
page[0]="proactiv";
page=page.join(":");
switch(className){case"btnHeadLogin":var valid=new Validation("formHeadLogin");
var result=valid.validate();
break;
case"btnKioskLocator":var valid=new Validation("formKioskSearch");
var result=valid.validate();
break;
case"btnOrderQuiz":var valid=new Validation("formOrderQuiz");
var result=valid.validate();
break;
case"btnOrderBilling":var valid=new Validation("formOrderBilling");
var result=valid.validate();
var validField=$("formOrderBilling").select("div.validation-failed input").first();
var sProp3=(result==false)?page+":formOrderBilling:error:("+validField.id+")":"formCreate:success";
mojo.Messaging.publish("/form/validation/tracking",{validResult:sProp3});
break;
case"btnContinuePaypal":var valid=new Validation("formOrderBilling");
var result=valid.validate();
break;
case"btnConfirmCreate":var valid=new Validation("formConfirmCreate");
var result=valid.validate();
break;
case"btnTellUsStory":var valid=new Validation("formTellUsStory");
var result=valid.validate();
break;
case"btnSignIn":var valid=new Validation("formSignIn");
var result=valid.validate();
break;
case"btnCreateAccount":var valid=new Validation("formCreate");
var result=valid.validate();
var validField=$("formCreate").select("div.validation-failed input").first();
var sProp3=(result==false)?page+":formCreate:error:("+validField.id+")":"formCreate:success";
mojo.Messaging.publish("/form/validation/tracking",{validResult:sProp3});
break;
case"btnCreditCard":var valid=new Validation("formCredit");
var result=valid.validate();
break;
case"btnShipAddress":var valid=new Validation("shippingAddress");
var result=valid.validate();
break;
case"btnBillAddress":var valid=new Validation("formBilling");
var result=valid.validate();
break;
case"btnNamePassword":var valid=new Validation("formNamePassword");
var result=valid.validate();
break;
case"btnForgotPword":var valid=new Validation("formForgotPword");
var result=valid.validate();
break;
case"btnAccountContact":var valid=new Validation("formAccountContact");
var result=valid.validate();
break;
case"btnTellFriend":Validation.add("one-for-all-refer","Please fill out both fields",function(v,elm){var p=$(elm).up().up();
var options=p.getElementsByTagName("INPUT");
return !$A(options).any(function(elm){return $F(elm)
})||$A(options).all(function(elm){return $F(elm)
})
});
var valid=new Validation("formTellFriend");
var result=valid.validate();
var validField=$("formTellFriend").select("div.validation-failed input").first();
var sProp3=(result==false)?page+":formTellFriend:error:("+validField.id+")":"formTellFriend:success";
mojo.Messaging.publish("/form/validation/tracking",{validResult:sProp3});
break;
case"btnRefer":var valid=new Validation("formRefer");
var result=valid.validate();
var validField=$("formRefer").select("div.validation-failed input").first();
var events=(result==false)?"":"promoEnd";
var sProp3=(result==false)?page+":formRefer:error:("+validField.id+")":"formRefer:success";
mojo.Messaging.publish("/form/validation/tracking",{eventName:events,validResult:sProp3});
break;
case"btnEvaluateProgressQuiz":var valid=new Validation("formHowAreYouDoingQuiz");
var result=valid.validate();
break;
case"btnEnterKeyCode":var valid=new Validation("formEnterKeyCode");
var result=valid.validate();
break;
case"btnPayment":var valid=new Validation("formPayment");
var result=valid.validate();
break;
default:return true;
break
}}});
dojo.provide("proactiv.behavior.TabControlBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.TabControlBehavior",mojo.command.Behavior,{execute:function(requestObj){var grandParent=requestObj.callerObj.parentNode.parentNode;
var allLinks=grandParent.getElementsByTagName("a");
var link=$A(allLinks);
var grabID=requestObj.callerObj.id;
function switchClass(){link.each(function(link){new Element.removeClassName(link,"selected")
});
new Element.addClassName(grabID,"selected")
}var move=function(element,xPosition){new Effect.Move(element,{x:xPosition,mode:"absolute",duration:0.4})
};
if(grabID=="tab1"){move("tabMask",0);
switchClass();
requestObj.eventObj.preventDefault()
}if(grabID=="tab2"){move("tabMask",-485);
switchClass();
requestObj.eventObj.preventDefault()
}if(grabID=="tab3"){move("tabMask",-970);
switchClass();
requestObj.eventObj.preventDefault()
}if(grabID=="tabDescription"){$("tabDescription").className="selected";
$("descriptionContent").className="selectedTab";
if($("tabIngredients")){$("tabIngredients").className="";
$("ingredientsContent").className=""
}if($("tabDirections")){$("tabDirections").className="";
$("directionsContent").className=""
}requestObj.eventObj.preventDefault()
}if(grabID=="tabIngredients"){$("tabIngredients").className="selected";
$("ingredientsContent").className="selectedTab";
if($("tabDescription")){$("tabDescription").className="";
$("descriptionContent").className=""
}if($("tabDirections")){$("tabDirections").className="";
$("directionsContent").className=""
}requestObj.eventObj.preventDefault()
}if(grabID=="tabDirections"){$("tabDirections").className="selected";
$("directionsContent").className="selectedTab";
if($("tabIngredients")){$("tabIngredients").className="";
$("ingredientsContent").className=""
}if($("tabDescription")){$("tabDescription").className="";
$("descriptionContent").className=""
}requestObj.eventObj.preventDefault()
}if(grabID=="productTab1"){move("tabGroup",0);
switchClass();
requestObj.eventObj.preventDefault()
}if(grabID=="productTab2"){move("tabGroup",-380);
switchClass();
requestObj.eventObj.preventDefault()
}if(grabID=="productTab3"){move("tabGroup",-760);
switchClass();
requestObj.eventObj.preventDefault()
}}});
dojo.provide("proactiv.behavior.FixInputFocusBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.FixInputFocusBehavior",mojo.command.Behavior,{execute:function(requestObj){var theElement=requestObj.callerObj;
var eventType=requestObj.eventObj.type;
var tag=requestObj.eventObj.target;
switch(eventType){case"blur":if(tag.value==""){tag.parentNode.parentNode.className="notFocussed"
}else{tag.parentNode.parentNode.className="focussed"
}break;
case"focus":tag.parentNode.parentNode.className="focussed";
break
}}});
dojo.provide("proactiv.behavior.accordion.InitializeBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.accordion.InitializeBehavior",mojo.command.Behavior,{execute:function(requestObj){var theAccordion=$(requestObj.getContextElement());
if(theAccordion){var apanels=theAccordion.select("div.panel");
for(var i=0,len=apanels.length;
i<len;
i++){var theTab=apanels[i].select("span.openMe").first();
var theTabText=theTab.select("p").first();
var panelBody=apanels[i].select(".panel_body").first();
if(apanels[i].hasClassName("initiallyVisible")){theAccordion.activePanel=panelBody
}else{panelBody.hide();
theTabText.hide()
}new Element.addClassName("relatedLinks","linksLoaded")
}var panel0=$("panel0");
var c2c=$("inqC2CImgContainer");
if(panel0){$(panel0).hide()
}if(c2c){var c2cImg=c2c.select("img").first();
var waitTime=0.5;
var num=0,iterations=20;
function waiting(){checkImg.delay(waitTime)
}function checkImg(){num++;
var c2cImg=c2c.select("img").first();
if(num<iterations){(c2cImg)?mojo.Messaging.publish("/accordion/open/panel0"):waiting.delay(waitTime)
}}checkImg()
}}}});
dojo.provide("proactiv.behavior.accordion.UnfoldBehavior");
dojo.require("mojo.command.Behavior");
dojo.declare("proactiv.behavior.accordion.UnfoldBehavior",mojo.command.Behavior,{execute:function(requestObj){var theAccordion=requestObj.getContextElement();
var activePanel=$(theAccordion.activePanel);
var theElement=$(requestObj.callerObj);
var queueName=theAccordion.identify()+"_queue";
var animOptions={duration:0.4,queue:{position:"end",scope:queueName}};
var elup=activePanel;
function swapActiveClass(){new Element.addClassName(eldown.parentNode,"activePanel");
new Element.removeClassName(elup.parentNode,"activePanel")
}function updateController(){mojo.controller.Controller.updateObservers("proactiv.controller.AccordionController")
}if(theElement instanceof mojo.MessagingTopic){var eldown=$("panel0-body");
$("panel0").show();
swapActiveClass();
new Effect.Parallel([new Effect.BlindDown(eldown,{sync:true}),new Effect.BlindUp(elup,{sync:true}),new Effect.BlindUp(elup.up().select("span.openMe p").first(),{sync:true})],animOptions);
updateController.defer();
theAccordion.activePanel=eldown
}else{var eldown=$(theElement.up().id+"-body");
if(eldown!=activePanel&&Effect.Queues.get(queueName).effects.length==0){var newTabText=eldown.up().select("span.openMe p").first();
if(elup!=null){swapActiveClass();
new Effect.Parallel([new Effect.BlindDown(eldown,{sync:true}),new Effect.BlindDown(newTabText,{sync:true}),new Effect.BlindUp(elup,{sync:true}),new Effect.BlindUp(elup.up().select("span.openMe p").first(),{sync:true})],animOptions)
}else{new Effect.BlindDown(eldown,animOptions)
}theAccordion.activePanel=eldown
}}}});
dojo.provide("proactiv.rules.loginPanel.EnsurePanelNotAnimatingRule");
dojo.require("mojo.command.Rule");
dojo.declare("proactiv.rules.loginPanel.EnsurePanelNotAnimatingRule",mojo.command.Rule,{execute:function(requestObj){var invocation=requestObj.getInvocation();
if(mojo.Model.get("/loginPanel/animating")!=true){invocation.proceed()
}}});
dojo.provide("proactiv.SiteMap");
proactiv.SiteMap={"":[{controller:"proactiv.controller.GlobalController"},{controller:"proactiv.controller.metrics.MetricsController"},{controller:"proactiv.controller.metrics.GlobalController"}],"#realStoriesHome":[{controller:"proactiv.controller.homepage.RealStoriesHomepageModuleController"}],"#formOrderQuiz":[{controller:"proactiv.controller.RecommendSystemController"}],"#formHowAreYouDoingQuiz":[{controller:"proactiv.controller.ProgressEvaluationSystemController"}],"#page_quiz":[{controller:"proactiv.controller.AboutAcneController"}],"#relatedLinks":[{controller:"proactiv.controller.AccordionController"}],"#infopanel_loggedout":[{controller:"proactiv.controller.LoginPanelController"}],"#infopanel_remember":[{controller:"proactiv.controller.LoginPanelController"}],"#formOrderBilling":[{controller:"proactiv.controller.BillingAndShippingController"},{controller:"proactiv.controller.PaymentOptionController"}],"#formCredit":[{controller:"proactiv.controller.PaymentOptionController"}],"#countryselector":[{controller:"proactiv.controller.CountrySelectorController"}],"#randomCeleb":[{controller:"proactiv.controller.homepage.HomepageController"}],"#quickShopForm":[{controller:"proactiv.controller.QuickShopController"}],"#realStoriesSearch":[{controller:"proactiv.controller.RealStoriesNavController"}],"#beforeAfterGallery":[{controller:"proactiv.controller.BeforeAfterGalleryController"}],"#formHeadLogin":[{controller:"proactiv.controller.FixInputLoadController"}],"#formShopCart":[{controller:"proactiv.controller.radioButtonReplaceController"}],"#catalogScroller":[{controller:"proactiv.controller.homepage.HomepageLoggedInController"}],"#formPayment":[{controller:"proactiv.controller.reactivateRadioController"}],"#page_select":[{controller:"proactiv.controller.OrderSelectPageController"}],"#promoCodeContain":[{controller:"proactiv.controller.PromoCodeController"}],"#flashCarousel":[{controller:"proactiv.controller.FlashController"}],"#videoOne":[{controller:"proactiv.controller.FlashController"}],"#videoTwo":[{controller:"proactiv.controller.FlashController"}],"#largePlayer":[{controller:"proactiv.controller.FlashController"}],"#homeVideo":[{controller:"proactiv.controller.FlashController"}],"#inqC2CImgContainer":[{controller:"proactiv.controller.FlashController"}],"#RAFtabBlock":[{controller:"proactiv.controller.RAFController"}],"#primaryKitTabs":[{controller:"proactiv.controller.KitCustomizeController"}],"#page_warning":[{controller:"proactiv.controller.BrowserWarningController"}],"#shareMultipleJsTarget":[{controller:"proactiv.controller.ShareMultipleController"}],"#deliverySummary":[{controller:"proactiv.controller.DeliveryController"}]};
dojo.provide("proactiv.*");
dojo.provide("proactiv.service.Locator");
dojo.require("mojo.service.Locator");
dojo.require("mojo.service.Service");
var __demoServiceLocator=null;
dojo.declare("proactiv.service.Locator",mojo.service.Locator,{addServices:function(){this.addService(new mojo.service.Service("serviceName","service/url",{json:true}))
}});
proactiv.service.Locator.getInstance=function(){if(__demoServiceLocator==null){__demoServiceLocator=new proactiv.service.Locator()
}return __demoServiceLocator
};
dojo.provide("proactiv.command.UpdateControllerParamCommand");
dojo.require("mojo.command.Command");
dojo.declare("proactiv.command.UpdateControllerParamCommand",mojo.command.Command,{execute:function(requestObj){var __elm;
var __control;
var __parameter;
var __value;
var params=requestObj.getParams();
if(params){if(params.element!=null){__elm=params.element
}if(params.control!=null){__control=params.control
}if(params.params!=null){__parameter=params.params
}if(params.value!=null){__value=params.value
}}try{if((__control!=null)&&(__parameter!=null)&&(__value!=null)){if(__elm){__elm.mojoControllers[__control].setValue(__parameter,__value)
}else{requestObj.getController().getContextController(__control).setValue(__parameter,__value)
}}}catch(err){console.log(err)
}},onResponse:function(){},onError:function(){}});
dojo.provide("proactiv.command.metrics.OmnitureInterfaceCommand");
dojo.require("mojo.command.Command");
dojo.declare("proactiv.command.metrics.OmnitureInterfaceCommand",mojo.command.Command,{constructor:function(){if(!mojo.Model.contains("/metrics/variables")){mojo.Model.set("/metrics/variables",{})
}},onComplete:function(){},onError:function(){console.log("There was an error in the Metrics command.")
},execute:function(requestObj){if(proactiv.runmode=="testing"){return
}if(!requestObj.paramsObj.mode||!this[requestObj.paramsObj.mode]){return
}this.storedVariables=mojo.Model.get("/metrics/variables");
this[requestObj.paramsObj.mode](requestObj.paramsObj.params||{},requestObj)
},track:function(params,requestObj){var type=params.type||"pageview";
var clearVariables=params.clearVariables||true;
var options=params.options||{};
var callerName=params.callerName;
if(clearVariables){this.clearOmnitureVariables()
}this.storeVariables(options);
try{if(!s){return
}switch(type){case"pageview":console.log("PageView Tracked: ",this.storedVariables);
this.mapVariablesToOmnitureVariables(this.storedVariables);
s.t();
break;
case"event":this.mapVariablesToOmnitureVariables(this.storedVariables);
console.log("Event Tracked: ",this.storedVariables);
if(callerName){s.tl(requestObj.callerObj,"o",callerName)
}else{s.tl()
}delete this.storedVariables.eventName;
break;
default:console.log("A call to metrics was attempted, but no Type (pageview/event) was specified.")
}this.onComplete()
}catch(e){this.onError();
console.log(e);
console.log("Metrics call failed")
}},storeVariables:function(options){this.storedVariables=$H(this.storedVariables).merge(options);
mojo.Model.set("/metrics/variables",this.storedVariables)
},overwriteVariables:function(options){this.storedVariables=$H(this.storedVariables).merge(options);
mojo.Model.set("/metrics/variables",this.storedVariables)
},clearOmnitureVariables:function(object){var h=$H(this.storedVariables);
h.each(function(variable){this.storedVariables._object[variable.key]=null
}.bind(this));
this.mapVariablesToOmnitureVariables(this.storedVariables);
mojo.Model.set("/metrics/variables",{})
},set:function(options,requestObj){this.storeVariables(options);
if(requestObj.getParams().mapImmediately){this.mapVariablesToOmnitureVariables(this.storedVariables)
}},mapVariablesToOmnitureVariables:function(options){$H(options).each(function(option){value=option.value;
switch(option.key){case"pageName":if(value){s.pageName=value.toLowerCase()
}else{s.pageName=null
}break;
case"channel":s.channel=value;
break;
case"campaign":s.campaign=value;
s.prop4=(s.campaign)?"["+s.campaign+"]"+s.pageName:s.pageName;
break;
case"userState":s.eVar4=value;
if(s.events!=undefined&&s.events!=null&&s.events!=""){if(value=="sub"&&value!=""){s.events=s.events+"event3"
}}else{if(value=="sub"&&value!=""){s.events="event3"
}}if(value==null){s.prop1=value
}else{if(value!=null){s.prop1="["+value+"]"+s.pageName
}}break;
case"hourParting":s.eVar5=value;
s.prop5=value;
break;
case"dayParting":s.eVar6=value;
s.prop6=value;
break;
case"weekdayParting":s.eVar7=value;
s.prop7=value;
break;
case"catalogHeir":s.heir1=value;
break;
case"product":s.products=value;
break;
case"location":s.prop2=value;
break;
case"customLink":s.linkTrackVars="prop10";
break;
case"formName":s.prop3=value;
break;
case"pageType":s.pageType=value;
break;
case"acctConfirmation":s.eVar1=value;
break;
case"toolUsageInitiated":s.eVar2=value;
break;
case"toolUsageComplete":s.eVar2=value;
break;
case"microToolUsage":s.eVar3=value;
break;
case"videoName":if(value){s.eVar8=value;
s.prop8=value
}break;
case"promoName":s.eVar10=value;
break;
case"eventName":switch(value){case"createAcct":s.events="event1";
break;
case"acctConfirmation":s.events="event2";
break;
case"toolUsageInitiated":s.events="event4";
break;
case"toolUsageComplete":s.events="event5";
break;
case"promoStart":s.events="event6";
break;
case"promoEnd":s.events="event7";
break;
case"prodView":s.events="prodView";
break
}break;
default:console.log("Param matched no criteria: "+index+" = "+value);
break
}if(proactiv.runmode=="development"||proactiv.runmode=="testing"){console.log(index," --> ",value)
}})
}});
dojo.provide("proactiv.controller.RAFController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.RAFController",mojo.controller.Controller,{addObservers:function(){this.addObserver(this,"onInit","HideTab");
this.addObserver(".tabs li a","onclick","ChangeTab")
},addCommands:function(){this.addCommand("HideTab","proactiv.behavior.ReferAFriend.HideTabBehavior");
this.addCommand("ChangeTab","proactiv.behavior.ReferAFriend.TabBehavior")
},addIntercepts:function(){}});
dojo.provide("proactiv.controller.FlashController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.FlashController",mojo.controller.Controller,{addObservers:function(){this.addObserver(this,"onInit","flashDetect");
this.addObserver(mojo.Messaging.getTopic("/flash/container/id"),"onPublish","flashSwap");
this.addObserver(mojo.Messaging.getTopic("/flash/swfObj/params"),"onPublish","swfObject");
this.addObserver(mojo.Messaging.getTopic("/flash/swfObj/mouseOver"),"onPublish","mouseOverFlash");
this.addObserver($$("div.videoPlay"),"onclick","flashSwap");
this.addObserver($$("a.changeVideo"),"onclick","videoChange");
this.addObserver(mojo.Messaging.getTopic("/mojo/update/flash/observers"),"onPublish","updateObservers");
this.addObserver($$(".tabs li a"),"onclick","TabControl");
this.addObserver($$(".proactiv_close"),"onclick","AnimationRestart")
},addCommands:function(){this.addCommand("videoChange","proactiv.behavior.flashLoader.videoChangeBehavior");
this.addCommand("flashDetect","proactiv.behavior.flashLoader.flashDetectBehavior");
this.addCommand("flashSwap","proactiv.behavior.flashLoader.flashSwapBehavior");
this.addCommand("swfObject","proactiv.behavior.flashLoader.swfObjectBehavior");
this.addCommand("mouseOverFlash","proactiv.behavior.flashLoader.mouseOverFlashBehavior");
this.addCommand("updateObservers","proactiv.behavior.flashLoader.updateObserversBehavior");
this.addCommand("TabControl","proactiv.behavior.TabControlBehavior");
this.addCommand("AnimationRestart","proactiv.behavior.flashLoader.AnimationRestartBehavior")
},addIntercepts:function(){}});
dojo.provide("proactiv.controller.BillingAndShippingController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.BillingAndShippingController",mojo.controller.Controller,{addObservers:function(){this.addObserver("#sameAddress","onclick","MonitorBillingFields",function(){return{fieldset:mojo.query(".shippingAddress input",this.getContextElement())}
})
},addCommands:function(){this.addCommand("DisableFieldset","proactiv.behavior.DisableFieldsetBehavior");
this.addCommand("MonitorBillingFields","proactiv.behavior.MonitorBillingFieldsBehavior")
},addIntercepts:function(){}});
dojo.provide("proactiv.controller.PromoCodeController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.PromoCodeController",mojo.controller.Controller,{addObservers:function(){this.addObserver(this,"onInit","InputOnLoad");
this.addObserver("a.promoLaunch","onclick","InitialOverlayLink");
this.addObserver("button.btnPromoCode","onclick","InitialOverlay");
this.addObserver($$("form button.btnPromoSubmit"),"onclick","Reload");
this.addObserver($$("div.dialog a.btnClose"),"onclick","Close");
this.addObserver($$("input.showHideLabel"),"onfocus","InputFocus");
this.addObserver($$("input.showHideLabel"),"onblur","InputFocus");
this.addObserver($$("tr.promo div.promoBox div.buttons a.btnClose"),"onclick","RemovePromo");
this.addObserver(mojo.Messaging.getTopic("/promoCode/overlay/resize"),"onPublish","Resize");
this.addObserver(mojo.Messaging.getTopic("/promoCode/overlay/updateContent"),"onPublish","updateContent");
this.addObserver(mojo.Messaging.getTopic("/mojo/update/observers"),"onPublish","updateObservers")
},addCommands:function(){this.addCommand("InitialOverlay","proactiv.behavior.promoCode.InitialOverlayBehavior");
this.addCommand("InitialOverlayLink","proactiv.behavior.promoCode.InitialOverlayLinkBehavior");
this.addCommand("Reload","proactiv.behavior.promoCode.ReloadBehavior");
this.addCommand("Resize","proactiv.behavior.promoCode.ResizeBehavior");
this.addCommand("updateContent","proactiv.behavior.promoCode.UpdateContentBehavior");
this.addCommand("Validate","proactiv.behavior.promoCode.ValidationBehavior");
this.addCommand("InputFocus","proactiv.behavior.promoCode.input.InputFocusBehavior");
this.addCommand("InputOnLoad","proactiv.behavior.promoCode.input.InputOnLoadBehavior");
this.addCommand("Close","proactiv.behavior.promoCode.CloseBehavior");
this.addCommand("RemovePromo","proactiv.behavior.promoCode.RemovePromoBehavior");
this.addCommand("updateObservers","proactiv.behavior.updateObserversBehavior");
this.addCommand("CheckOverlays","proactiv.behavior.promoCode.CheckOverlaysBehavior")
},addIntercepts:function(){this.addIntercept("around","InitialOverlay","Validate");
this.addIntercept("around","InitialOverlay","CheckOverlays");
this.addIntercept("around","InitialOverlayLink","CheckOverlays");
this.addIntercept("around","Reload","Validate")
}});
dojo.provide("proactiv.controller.BeforeAfterGalleryController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.BeforeAfterGalleryController",mojo.controller.Controller,{addObservers:function(){this.addObserver(this,"onInit","RealStoriesNavAdjust");
this.addObserver(this,"onInit","DeferLoad",{collectionSelector:"li div.blockContent > img",placeholder:"/img/stories/gallery/thumb-placeholder-small.png"});
this.addObserver(this,"onInit","LoadImages",function(context){var allSmallImageContainers=$(context).select("#galleryHolder ul");
if(allSmallImageContainers.length==0){return{}
}if(allSmallImageContainers.length==1){var allSmallImages=allSmallImageContainers[0].select("li div.blockContent > img")
}else{var allSmallImages=[allSmallImageContainers[0].select("li div.blockContent > img"),allSmallImageContainers[1].select("li div.blockContent > img")].flatten()
}return{imageArray:allSmallImages}
});
this.addObserver([".galleryController a.previous",".galleryController a.next"],"onclick","HandlePrevNextLink");
this.addObserver(".galleryController .positionSet a","onclick","HandlePageLink");
this.addObserver(".galleryController .positionSet a","onclick","LoadImages",function(context,caller){var currentPage=this.getCommand("HandlePageLink").currentPage;
var allImageContainers=$(context).select("#galleryHolder ul");
var allImages=[allImageContainers[currentPage].select("li div.blockContent > img")];
if(allImageContainers[currentPage+1]){allImages.push(allImageContainers[currentPage+1].select("li div.blockContent > img"))
}if(allImageContainers[currentPage-1]){allImages.push(allImageContainers[currentPage-1].select("li div.blockContent > img"))
}allImages=allImages.flatten();
return{imageArray:allImages}
}.bind(this));
this.addObserver([".galleryController a.previous",".galleryController a.next"],"onclick","LoadImages",function(context,caller){var currentPage=this.getCommand("HandlePrevNextLink").currentPage;
var direction=$(caller).hasClassName("next")?1:-1;
var allImageContainers=$(context).select("#galleryHolder ul");
var allImages=[allImageContainers[currentPage].select("li div.blockContent > img")];
if(allImageContainers[currentPage+direction]){allImages.push(allImageContainers[currentPage+direction].select("li div.blockContent > img"))
}allImages=allImages.flatten();
return{imageArray:allImages}
}.bind(this));
this.addObserver(mojo.query("#searchHeader button.btnStoriesFind"),"onclick","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",callerName:"real stories:search:find real stories",options:{customLink:"real stories:search:find real stories",toolUsageInitiated:"[real stories search]",eventName:"toolUsageInitiated"}}}
});
this.addObserver(mojo.query("#searchHeader a.btnStoriesAll"),"onclick","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",callerName:"real stories:search:see all stories",options:{customLink:"real stories:search:see all stories"}}}
});
this.addObserver(mojo.query("#galleryMask #galleryHolder ul li a"),"onclick","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",customLink:"real stories:scroller:full story",options:{customLink:"real stories:scroller:full story"}}}
});
this.addObserver(mojo.query("div.galleryController a"),"onclick","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",options:{microToolUsage:"[real stories:scroll]"}}}
});
var BrowserDetect={init:function(){this.browser=this.searchString(this.dataBrowser)||"An unknown browser";
this.version=this.searchVersion(navigator.userAgent)||this.searchVersion(navigator.appVersion)||"an unknown version"
},searchString:function(data){for(var i=0;
i<data.length;
i++){var dataString=data[i].string;
var dataProp=data[i].prop;
this.versionSearchString=data[i].versionSearch||data[i].identity;
if(dataString){if(dataString.indexOf(data[i].subString)!=-1){return data[i].identity
}}else{if(dataProp){return data[i].identity
}}}},searchVersion:function(dataString){var index=dataString.indexOf(this.versionSearchString);
if(index==-1){return
}return parseFloat(dataString.substring(index+this.versionSearchString.length+1))
},dataBrowser:[{string:navigator.vendor,subString:"Apple",identity:"Safari"}]};
BrowserDetect.init();
if(BrowserDetect.browser=="Safari"&&BrowserDetect.version*1<521){this.addObserver(mojo.Messaging.getTopic("/beforeAfterGallery/safariHack"),"onPublish","HackSafari")
}},addCommands:function(){this.addCommand("RealStoriesNavAdjust","proactiv.behavior.RealStoriesNavAdjust");
this.addCommand("DeferLoad","proactiv.behavior.lazyload.DeferImageLoadBehavior");
this.addCommand("LoadImages","proactiv.behavior.lazyload.LoadImagesBehavior");
this.addCommand("HandlePrevNextLink","proactiv.behavior.beforeAfterGallery.HandlePrevNextLinkBehavior");
this.addCommand("HandlePageLink","proactiv.behavior.beforeAfterGallery.HandlePageLinkBehavior");
this.addCommand("HackSafari","proactiv.behavior.beforeAfterGallery.SafariHackBehavior");
this.addCommand("TrackOmniture","proactiv.command.metrics.OmnitureInterfaceCommand")
},addIntercepts:function(){}});
dojo.provide("proactiv.controller.QuickShopController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.QuickShopController",mojo.controller.Controller,{addObservers:function(){this.addObserver(this.getContextElement(),"onsubmit","ValidateMaxItems");
this.addObserver("input[type=checkbox]","onchange","ValidateMaxItems")
},addCommands:function(){this.addCommand("ValidateMaxItems","proactiv.behavior.ValidateMaxItemsBehavior")
},addIntercepts:function(){}});
dojo.provide("proactiv.controller.AboutAcneController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.AboutAcneController",mojo.controller.Controller,{addObservers:function(){this.addObserver(".quizAboutAcne input","onclick","aboutAcneQuiz");
this.addObserver(".quizAboutAcne input","onclick","TrackOmniture",function(context,caller){var quizQuestions=$$("form.quizAboutAcne ol li fieldset");
var quizAnswers=$$("form.quizAboutAcne ol li fieldset input");
var answered=0;
quizAnswers.each(function(answer,index){if(answer.checked){answered=answered+1
}});
if(answered==1){return{mode:"track",params:{type:"event",options:{toolUsageInitiated:"[about acne quiz]",eventName:"toolUsageInitiated"}}}
}else{if(answered==10){return{mode:"track",params:{type:"event",options:{toolUsageComplete:"[about acne quiz]",eventName:"toolUsageComplete"}}}
}}})
},addCommands:function(){this.addCommand("aboutAcneQuiz","proactiv.behavior.aboutAcne.aboutAcneQuiz");
this.addCommand("TrackOmniture","proactiv.command.metrics.OmnitureInterfaceCommand")
},addIntercepts:function(){}});
dojo.provide("proactiv.controller.RecommendSystemController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.RecommendSystemController",mojo.controller.Controller,{addObservers:function(){this.addObserver(this.getContextElement(),"onsubmit","RecommendSystem");
this.addObserver(mojo.query("li.q1 input"),"onclick","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",options:{eventName:"toolUsageInitiated",toolUsageInitiated:"[what system is right for me]"}}}
});
this.addObserver(this.getCommand("ValidateQuestionnaire"),"onResponse","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",options:{eventName:"toolUsageComplete",toolUsageComplete:"[what system is right for me]"}}}
})
},addCommands:function(){this.addCommand("RecommendSystem","proactiv.behavior.recommendSystem.RecommendBehavior");
this.addCommand("ValidateQuestionnaire","proactiv.behavior.ValidateQuestionnaireBehavior");
this.addCommand("TrackOmniture","proactiv.command.metrics.OmnitureInterfaceCommand")
},addIntercepts:function(){this.addIntercept("around","RecommendSystem","ValidateQuestionnaire")
}});
dojo.provide("proactiv.controller.metrics.GlobalController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.metrics.GlobalController",mojo.controller.Controller,{addObservers:function(){this.addObserver(this,"onInit","TrackOmniture",function(context,caller){if($$("body.clubcatalog").length>0){var tpage=document.body.className.split(" ");
tpage.shift();
page=tpage.join(",");
if((tpage.length==1||tpage.length==2)&&tpage[1]!="tips"&&tpage[1]!="quickshop"){return{mode:"track",params:{type:"event",options:{catalogHeir:page}}}
}else{if(tpage.length==3){return{mode:"track",params:{type:"event",options:{catalogHeir:page,product:tpage[1]+";"+tpage[2],eventName:"prodView"}}}
}}}});
this.addObserver("a.openOverlay","onclick","TrackOmniture",function(context,caller){var page=caller.pathname;
page="proactiv"+page.replace(/\//g,":");
page=page.replace("_nojs","").replace(".php","");
if(page.search("refining")!=-1||page.search("greentea")!=-1){page=page.replace(":popup",":bonus:popup")
}return{mode:"track",params:{type:"pageview",options:{pageName:page}}}
});
this.addObserver("a.openOverlay","onclick","TrackOmniture",function(context,caller){var page=caller.pathname;
page=page.split("/");
var product=page[page.length-1].replace("popup_","").replace("_nojs","").replace(".php","");
if(!caller.id){return{mode:"track",params:{type:"event",options:{eventName:"prodView",product:product}}}
}});
this.addObserver(this,"onInit","TrackOmniture",function(context,caller){if($("fourohfour")){return{mode:"track",params:{type:"event",options:{pageType:"errorPage"}}}
}});
this.addObserver(this,"onInit","TrackOmniture",function(context,caller){if($("page_createaccount")&&$$("body.myaccount")){return{mode:"track",params:{type:"event",options:{eventName:"createAcct",acctConfirmation:"create account"}}}
}});
this.addObserver(this,"onInit","TrackOmniture",function(context,caller){if($("page_confirmation")&&$A($$("body.login"))[0]){return{mode:"track",params:{type:"event",options:{eventName:"acctConfirmation",acctConfirmation:"create account"}}}
}});
this.addObserver(this,"onInit","TrackOmniture",function(context,caller){if($("page_createaccount")&&$A($$("body.promo"))[0]){return{mode:"track",params:{type:"event",options:{eventName:"promoStart"}}}
}});
this.addObserver(this,"onInit","TrackOmniture",function(context,caller){if($("page_login")&&$A($$("body.myaccount"))[0]){return{mode:"track",params:{type:"event",options:{eventName:"promoStart"}}}
}});
this.addObserver(this,"onInit","TrackOmniture",function(context,caller){if($("page_createaccount")&&$A($$("body.body_raf"))[0]){return{mode:"track",params:{type:"event",options:{eventName:"promoStart",promoName:"refer a friend"}}}
}});
this.addObserver(this,"onInit","TrackOmniture",function(context,caller){if($("page_login")&&$A($$("body.body_raf"))[0]){return{mode:"track",params:{type:"event",options:{eventName:"promoStart",promoName:"refer a friend"}}}
}});
this.addObserver(this,"onInit","TrackOmniture",function(context,caller){if($("page_logincreate")&&$A($$("body.body_raf"))[0]){return{mode:"track",params:{type:"event",options:{eventName:"promoStart",promoName:"refer a friend"}}}
}});
this.addObserver($$("a.reorderLink"),"onclick","TrackOmniture",function(context,caller){var page=document.body.className.split(" ");
page[0]="proactiv";
page=page.join(":");
return{mode:"track",params:{type:"event",callerName:page+":reorder now",options:{customLink:page+":reorder now"}}}
});
this.addObserver($$("btn-claimGift"),"onInit","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",options:{eventName:"promoEnd"}}}
});
this.addObserver($$("a.addToCart"),"onclick","TrackOmniture",function(context,caller){var page=document.body.className.split(" ");
page[0]="proactiv";
page=page.join(":");
return{mode:"track",params:{type:"event",callerName:page+":"+caller.innerHTML.toLowerCase(),options:{eventName:"addCart",customLink:page+":"+caller.innerHTML.toLowerCase()}}}
});
this.addObserver($$("a.btnOrderNow"),"onclick","TrackOmniture",function(context,caller){var page=document.body.className.split(" ");
page[0]="promo";
page=page.join(":");
return{mode:"track",params:{type:"event",callerName:page+":"+caller.innerHTML.toLowerCase(),options:{customLink:page+":"+caller.innerHTML.toLowerCase()}}}
});
this.addObserver($$("a.btnOrderYourSystem"),"onclick","TrackOmniture",function(context,caller){var page=document.body.className.split(" ");
page[0]="promo";
page=page.join(":");
return{mode:"track",params:{type:"event",callerName:page+":"+caller.innerHTML.toLowerCase(),options:{customLink:page+":"+caller.innerHTML.toLowerCase()}}}
});
this.addObserver(mojo.Messaging.getTopic("/flash/tracking/videoName"),"onPublish","TrackOmniture",function(context,caller){if(caller.getMessage().videoName){return{mode:"track",params:{type:"event",options:{videoName:caller.getMessage().videoName}}}
}});
this.addObserver($$("div.contain ul.tabs li"),"onclick","TrackOmniture",function(context,caller){var page=document.body.className.split(" ");
page[0]="proactiv";
page=page.join(":");
return{mode:"track",params:{type:"pageview",options:{pageName:page+":"+caller.childNodes[0].innerHTML.toLowerCase()}}}
});
this.addObserver($$("#page_select ul.tabs a"),"onclick","TrackOmniture",function(context,caller){var page=document.body.className.split(" ");
page[0]="proactiv";
page=page.join(":");
return{mode:"track",params:{type:"pageview",options:{pageName:page+":"+caller.innerHTML.toLowerCase()}}}
});
this.addObserver($$("#page_referafriend ul.tabs a"),"onclick","TrackOmniture",function(context,caller){var page=document.body.className.split(" ");
page[0]="proactiv";
page=page.join(":");
return{mode:"track",params:{type:"pageview",options:{pageName:page+":"+caller.innerHTML.toLowerCase()}}}
});
this.addObserver($$("div#orderProactiv a"),"onclick","TrackOmniture",function(context,caller){var page=document.body.className.split(" ");
page[0]="promos";
page=page.join(":");
return{mode:"track",params:{type:"event",callerName:page+":"+caller.innerHTML.toLowerCase(),options:{customLink:page+":"+caller.innerHTML.toLowerCase()}}}
});
this.addObserver($$("div#orderBonus a"),"onclick","TrackOmniture",function(context,caller){var page=document.body.className.split(" ");
page[0]="promos";
page=page.join(":");
return{mode:"track",params:{type:"event",callerName:caller.innerHTML.toLowerCase(),options:{customLink:page+":"+caller.innerHTML.toLowerCase()}}}
})
},addCommands:function(){this.addCommand("TrackOmniture","proactiv.command.metrics.OmnitureInterfaceCommand")
},addIntercepts:function(){}});
dojo.provide("proactiv.controller.metrics.MetricsController");
dojo.require("mojo.controller.Controller");
dojo.require("mojo.History");
dojo.declare("proactiv.controller.metrics.MetricsController",mojo.controller.Controller,{params:{completed:{defaultValue:false,type:Boolean}},addObservers:function(){this.addObserver(this,"onInit","Track",function(context,caller){return{mode:"track",params:{type:"pageview",options:{pageName:function(){var page=document.body.className.split(" ");
page[0]="proactiv";
page=page.join(":");
if(page=="proactiv"||page=="proactiv:"||page[1]=="loggedin"){page="proactiv:home"
}else{if(page.search("fourohfour")!=-1){var url=window.location.pathname;
page="proactiv"+url.replace(/\//g,":")
}else{if(page.match("clubcatalog")&&page.match(/\d{6}/)){page=page+" ("+mojo.queryFirst("p.productName").innerHTML+")"
}}}return page
}(),channel:function(){var page=document.body.className.split(" ");
if(page[1]&&page[1]!="loggedin"){return page[1]
}else{return""
}}(),hourParting:s.getTimeParting("h","-8","2008"),dayParting:s.getTimeParting("d","-8","2008"),weekdayParting:s.getTimeParting("w","-8","2008"),campaign:s.getQueryParam("cid"),location:"usa",userState:function(){var ustate=($("infopanel_loggedin"))?"sub":"non-sub";
return ustate
}()}}}
})
},addCommands:function(){this.addCommand("Track","proactiv.command.metrics.OmnitureInterfaceCommand");
this.addCommand("Messaging","proactiv.behavior.MessagingBehavior");
this.addCommand("UpdateControllerParam","proactiv.command.UpdateControllerParamCommand")
},addIntercepts:function(){this.addIntercept("before","Track","Messaging",{topic:"/metrics/callForInfo"})
}});
dojo.provide("proactiv.controller.GlobalController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.GlobalController",mojo.controller.Controller,{addObservers:function(){this.addObserver(this,"onInit","FixCartLinks");
this.addObserver(this,"onInit","FixIllegalFraming");
this.addObserver(".infoPanel input","onfocus","FixInputFocus");
this.addObserver(".infoPanel input","onblur","FixInputFocus");
this.addObserver("a.openOverlay","onclick","Overlay");
this.addObserver(".tabs li a","onclick","TabControl");
this.addObserver("form button","onclick","Validation");
this.addObserver(mojo.Messaging.getTopic("/form/validation/tracking"),"onPublish","TrackOmniture",function(context,caller){var message=caller.getMessage();
return{mode:"track",params:{type:"event",options:{eventName:message.eventName,formName:message.validResult}}}
})
},addCommands:function(){this.addCommand("FixInputFocus","proactiv.behavior.FixInputFocusBehavior");
this.addCommand("FixCartLinks","proactiv.behavior.FixCartLinksBehavior");
this.addCommand("FixIllegalFraming","proactiv.behavior.FixIllegalFramingBehavior");
this.addCommand("Overlay","proactiv.behavior.Overlay");
this.addCommand("TabControl","proactiv.behavior.TabControlBehavior");
this.addCommand("Validation","proactiv.behavior.Validation");
this.addCommand("TrackOmniture","proactiv.command.metrics.OmnitureInterfaceCommand")
},addIntercepts:function(){}});
dojo.provide("proactiv.controller.LoginPanelController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.LoginPanelController",mojo.controller.Controller,{addObservers:function(){this.addObserver(this,"onInit","InitializeLoginPanel");
this.addObserver("#signInTrigger","onclick","TogglePanel");
this.addObserver("#signInTrigger","onclick","PreventDefault");
this.addObserver(mojo.Messaging.getTopic("/loginPanel/close"),"onPublish","ControlPanel",{panelElement:this.getContextElement(),action:"close"});
this.addObserver(mojo.Messaging.getTopic("/loginPanel/open"),"onPublish","ControlPanel",{panelElement:this.getContextElement(),action:"open"});
this.addObserver(mojo.Model.getReference("/loginPanel/state"),"onNotify","SetClass",function(context,caller){return{elements:"#signInTrigger",add:caller.getValue()=="opened"?"open":"",remove:caller.getValue()=="opened"?"":"open"}
});
var BrowserDetect={init:function(){this.browser=this.searchString(this.dataBrowser)||"An unknown browser";
this.version=this.searchVersion(navigator.userAgent)||this.searchVersion(navigator.appVersion)||"an unknown version"
},searchString:function(data){for(var i=0;
i<data.length;
i++){var dataString=data[i].string;
var dataProp=data[i].prop;
this.versionSearchString=data[i].versionSearch||data[i].identity;
if(dataString){if(dataString.indexOf(data[i].subString)!=-1){return data[i].identity
}}else{if(dataProp){return data[i].identity
}}}},searchVersion:function(dataString){var index=dataString.indexOf(this.versionSearchString);
if(index==-1){return
}return parseFloat(dataString.substring(index+this.versionSearchString.length+1))
},dataBrowser:[{string:navigator.vendor,subString:"Apple",identity:"Safari"}]};
BrowserDetect.init();
if(BrowserDetect.browser!="Safari"&&BrowserDetect.version*1>521){this.addObserver(mojo.History.getInstance(),"onChange","TogglePanel")
}},addCommands:function(){this.addCommand("InitializeLoginPanel","proactiv.behavior.loginPanel.InitializeBehavior");
this.addCommand("EnsurePanelNotAnimating","proactiv.rules.loginPanel.EnsurePanelNotAnimatingRule");
this.addCommand("TogglePanel","proactiv.behavior.loginPanel.TogglePanelBehavior");
this.addCommand("ControlPanel","proactiv.behavior.loginPanel.ControlPanelBehavior");
this.addCommand("SetClass","proactiv.behavior.SetClassBehavior");
this.addCommand("PreventDefault","proactiv.behavior.PreventDefaultEventBehavior")
},addIntercepts:function(){this.addIntercept("around","TogglePanel","EnsurePanelNotAnimating")
}});
dojo.provide("proactiv.controller.CountrySelectorController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.CountrySelectorController",mojo.controller.Controller,{addObservers:function(){this.addObserver(this,"onInit","CustomDropDownBehavior");
this.addObserver("#countryList li","onclick","CustomDropDownPressBehavior");
this.addObserver(mojo.query("body"),"onclick","CustomDropDownPressBehavior")
},addCommands:function(){this.addCommand("CustomDropDownBehavior","proactiv.behavior.CustomDropDownBehavior");
this.addCommand("CustomDropDownPressBehavior","proactiv.behavior.CustomDropDownPressBehavior")
},addIntercepts:function(){}});
dojo.provide("proactiv.controller.OrderSelectPageController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.OrderSelectPageController",mojo.controller.Controller,{addObservers:function(){this.addObserver(this,"onInit","HistoryTabControl",{suffix:"wide"});
this.addObserver(mojo.History.getInstance(),"onChange","HistoryTabControl",{suffix:"wide"})
},addCommands:function(){this.addCommand("RemoveElements","proactiv.behavior.RemoveElementsBehavior");
this.addCommand("HistoryTabControl","proactiv.behavior.HistoryTabControlBehavior")
},addIntercepts:function(){}});
dojo.provide("proactiv.controller.homepage.HomepageLoggedInController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.homepage.HomepageLoggedInController",mojo.controller.Controller,{addObservers:function(){this.addObserver(["a.previous","a.next"],"onclick","PreviousNextSlider");
this.addObserver(mojo.query("#tellus a.btnStart"),"onclick","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",callerName:"promos:how are you doing:start",options:{customLink:"promos:how are you doing:start"}}}
});
this.addObserver(mojo.query("#secondaryContent div.productPromo a.btnAddCart"),"onclick","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",callerName:"promos:product: add to cart",options:{customLink:"promos:product: add to cart"}}}
});
this.addObserver(mojo.query("#tertiaryContent div.productPromo a.btnAddCart"),"onclick","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",callerName:"promos:product: add to cart",options:{customLink:"promos:product: add to cart"}}}
});
this.addObserver(mojo.query("a.previous"),"onclick","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",options:{microToolUsage:"[homepage:products:scroll]"}}}
});
this.addObserver(mojo.query("a.next"),"onclick","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",options:{microToolUsage:"[homepage:products:scroll]"}}}
})
},addCommands:function(){this.addCommand("PreviousNextSlider","proactiv.behavior.PreviousNextSlider");
this.addCommand("TrackOmniture","proactiv.command.metrics.OmnitureInterfaceCommand")
},addIntercepts:function(){}});
dojo.provide("proactiv.controller.homepage.RealStoriesHomepageModuleController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.homepage.RealStoriesHomepageModuleController",mojo.controller.Controller,{addObservers:function(){this.addObserver(this,"onInit","DeferLoad",{collectionSelector:".scrollerItem img",placeholder:"/img/stories/gallery/thumb-placeholder-small.png"});
this.addObserver(this,"onInit","LoadImages",function(context){var allImages=$(context).select(".scrollerItem img");
return{imageArray:[allImages[0],allImages[1],allImages[2]]}
});
this.addObserver(["div.scroller a.previous","div.scroller a.next"],"onclick","PreviousNextSlider");
this.addObserver(["div.scroller a.previous","div.scroller a.next"],"onclick","LoadImages",function(context,caller){var currentPage=this.getCommand("PreviousNextSlider").currentPage;
var direction=$(caller).hasClassName("next")?1:-1;
var allImages=$(context).select(".scrollerItem img");
return{imageArray:[allImages[currentPage],allImages[currentPage+direction],allImages[currentPage+(direction*2)]]}
}.bind(this));
this.addObserver(this,"onInit","LoadNavigation")
},addCommands:function(){this.addCommand("PreviousNextSlider","proactiv.behavior.PreviousNextSlider");
this.addCommand("DeferLoad","proactiv.behavior.lazyload.DeferImageLoadBehavior");
this.addCommand("LoadImages","proactiv.behavior.lazyload.LoadImagesBehavior");
this.addCommand("LoadNavigation","proactiv.behavior.homepage.RealStoriesNavigationBehavior")
},addIntercepts:function(){}});
dojo.provide("proactiv.controller.homepage.HomepageController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.homepage.HomepageController",mojo.controller.Controller,{addObservers:function(){this.addObserver(this,"onInit","randomCeleb");
this.addObserver(mojo.query("#realStoriesHome a.bottomLink"),"onclick","TrackOmniture",function(context,caller){console.log("this was clicked");
return{mode:"track",params:{type:"event",callerName:"promos:real stories:read their stories",options:{customLink:"promos:real stories:read their stories"}}}
});
this.addObserver(mojo.query("#realStoriesHome a.next"),"onclick","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",options:{microToolUsage:"[homepage:real stories:scroll]"}}}
});
this.addObserver(mojo.query("#realStoriesHome a.previous"),"onclick","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",options:{microToolUsage:"[homepage:real stories:scroll]"}}}
});
this.addObserver(mojo.query("#primaryContent a.bottomLink"),"onclick","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",callerName:"promos:product:learn about proactiv",options:{customLink:"promos:product:learn about proactiv"}}}
});
this.addObserver(mojo.query("div#tertiaryContent a.btnOrderNow"),"onclick","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",callerName:"promos:product:order now",options:{customLink:"promos:product:order now"}}}
});
this.addObserver(mojo.query("#dermatologists a.bottomLink"),"onclick","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",callerName:"promos:videos:learn how proactiv works",options:{customLink:"promos:videos:learn how proactiv works"}}}
});
this.addObserver(mojo.query("a.promoLaunch"),"onclick","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",callerName:"promos:product:redeem a promotion",options:{customLink:"promos:product:redeem a promotion"}}}
})
},addCommands:function(){this.addCommand("randomCeleb","proactiv.behavior.homepage.randomCeleb");
this.addCommand("TrackOmniture","proactiv.command.metrics.OmnitureInterfaceCommand")
},addIntercepts:function(){}});
dojo.provide("proactiv.controller.FixInputLoadController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.FixInputLoadController",mojo.controller.Controller,{addObservers:function(){this.addObserver(this,"onInit","FixInputLoad")
},addCommands:function(){this.addCommand("FixInputLoad","proactiv.behavior.FixInputLoadBehavior")
},addIntercepts:function(){}});
dojo.provide("proactiv.controller.radioButtonReplaceController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.radioButtonReplaceController",mojo.controller.Controller,{addObservers:function(){this.addObserver(this,"onInit","radioButtonReplace")
},addCommands:function(){this.addCommand("radioButtonReplace","proactiv.behavior.radioButtonReplace")
},addIntercepts:function(){}});
dojo.provide("proactiv.controller.ShareMultipleController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.ShareMultipleController",mojo.controller.Controller,{options:{nodes:[{id:"shareMultiple-1",hide:false},{id:"shareMultiple-2",hide:true},{id:"shareMultiple-3",hide:true},{id:"shareMultiple-4",hide:true},{id:"shareMultiple-5",hide:true}],messages:{sent:"<span>Message sent.<br /> Thank you for referring Proactiv!</span>"},targets:{container:"shareMultipleJsTarget",choose_provider:"#shareMultiple-1 .email-apps li",send_provider_form:"formReferEmail",send_provider_button:".btnReferEmail",selected_provider:"selectedProvider",provider_error:".share-error",referrer_email:"referrer_email",referrer_pass:"referrer_pass",send_referrals_button:".btnsendReferrals",send_referrals_succes_target:"#RAFreferrees div.contactScroll",import_referrals_list:"#RAFcontacts div.contactScroll",select_all_button:"#select_all",max_error:".maxError",empty_error:".empty-error",close_panel:"#close_panel"},services:{url:"import",data:{method:"import.contacts",web_service_api_key:"ab87cf12-485f-11dd-89ae-f5f5a5dd730f",secret:"c59a17e5d30334d118e0ea1f6fecd734835e14f3",version:"1.0",provider:"contact_provider_id",email:"user_email_address",password:"user_email_password"},providers:{aol:"AOL",gmail:"GMAIL",hotmail:"HOTMAIL",yahoo:"YAHOO"}}},addObservers:function(){var options=this.options;
this.addObserver(this,"onInit","PrepareShareMultipleWizard",function(context,caller){return options
});
this.addObserver(options.targets.choose_provider,"onclick","ChooseShareMultipleProvider",function(context,caller){return options
});
this.addObserver(options.targets.send_provider_button,"onclick","SendShareMultipleImport",function(context,caller){return options
});
this.addObserver($(options.targets.referrer_email),"onkeypress","SendShareMultipleImport",function(context,caller){return options
});
this.addObserver($(options.targets.referrer_pass),"onkeypress","SendShareMultipleImport",function(context,caller){return options
});
this.addObserver(options.targets.send_referrals_button,"onclick","SendShareMultipleInvite",function(context,caller){return options
});
this.addObserver(options.targets.select_all_button,"onclick","SelectAllShareMultiple",function(context,caller){return options
});
this.addObserver(options.targets.close_panel,"onclick","PrepareShareMultipleWizard",function(context,caller){return options
})
},addCommands:function(){this.addCommand("PrepareShareMultipleWizard","proactiv.behavior.ReferAFriend.PrepareShareMultipleWizard");
this.addCommand("ChooseShareMultipleProvider","proactiv.behavior.ReferAFriend.ChooseShareMultipleProvider");
this.addCommand("ValidateShareMultipleImport","proactiv.behavior.ReferAFriend.ValidateShareMultipleImport");
this.addCommand("SendShareMultipleImport","proactiv.behavior.ReferAFriend.SendShareMultipleImport");
this.addCommand("SendShareMultipleInvite","proactiv.behavior.ReferAFriend.SendShareMultipleInvite");
this.addCommand("SelectAllShareMultiple","proactiv.behavior.ReferAFriend.SelectAllShareMultiple")
},addIntercepts:function(){var options=this.options;
this.addIntercept("around","SendShareMultipleImport","ValidateShareMultipleImport",function(context,caller){return options
});
this.addIntercept("around","SendShareMultipleInvite","ValidateShareMultipleImport",function(context,caller){return options
})
}});
dojo.provide("proactiv.controller.KitCustomizeController");
dojo.require("mojo.controller.Controller");
dojo.require("dojo.cookie");
dojo.declare("proactiv.controller.KitCustomizeController",mojo.controller.Controller,{addObservers:function(){if(!dojo.cookie("GRCKitHelp")&&document.location.href.indexOf("category")>-1||!dojo.cookie("GRCKitHelp")&&document.location.href.indexOf("product")>-1){this.addObserver(this,"onInit","HelpToolTab")
}this.addObserver($$("#subTabs li a"),"onclick","ChangeTab");
this.addObserver($$("#kitProducts div.scrollBtns a.scrollLeft"),"onclick","PreviousNextSlider");
this.addObserver($$("#kitProducts div.scrollBtns a.scrollRight"),"onclick","PreviousNextSlider");
if(!mojo.Model.get("EventsBound")){this.addObserver($$("div#replaceKit a"),"onclick","ProductRecommendDrop");
this.addObserver($$("div.recommended-product a"),"onclick","ProductRecommendDrop");
this.addObserver($$("div#recommendBottom a.addKit"),"onclick","ProductDrop");
this.addObserver($$("div.products a.productAdd"),"onclick","ProductDrop");
this.addObserver($$("div#featuredProduct a.productAdd"),"onclick","ProductDrop")
}this.addObserver($$("#productDrop li a"),"onclick","RemoveProduct");
this.addObserver($("submit_your_kit"),"onclick","SubmitKitOrder");
this.addObserver(mojo.Model.getReference("kitLightbox"),"onNotify","LightBoxes");
this.addObserver(mojo.Model.getReference("kitSummary"),"onNotify","UpdateSH",function(context,caller){return{itemCount:caller.getValue().itemCount}
});
this.addObserver($$("#productDrop li a"),"mouseover","RemoveToolTip");
this.addObserver($$("#helpTool a"),"mouseover","HelpTool");
this.addObserver($$("#helptool"),"mouseout","helpintro");
this.addObserver($$("#helpTool a"),"onclick","HelpToolKillClick");
this.addObserver($$("#helpHeader a"),"onclick","HelpToolTab");
this.addObserver($$("#helpContent a"),"onclick","HelpToolTab");
this.addObserver(mojo.Model.getReference("updateTips"),"onNotify","ToolTip");
this.addObserver($$("#productDrop img"),"mouseover","ToolTip");
this.addObserver($$("#quizIntro a"),"onclick","StartQuiz");
this.addObserver($$("div.quizBtns a.quizPrevious"),"onclick","PreviousNextQuiz");
this.addObserver($$("div.quizBtns a.quizNext"),"onclick","PreviousNextQuiz");
this.addObserver($$("#steps a"),"onclick","ScrollBySteps");
this.addObserver($$("#currentKit a.scrollLeft"),"onclick","PreviousNextSliderInsideQuiz");
this.addObserver($$("#currentKit a.scrollRight"),"onclick","PreviousNextSliderInsideQuiz");
if($("shipping_and_handling")){Event.observe($("shipping_and_handling"),"click",function(e){if(e){Event.stop(e)
}mojo.Model.set("kitLightbox",{prompt:"shipping",item:"false",msg:"shipping"})
},false)
}},addCommands:function(){this.addCommand("HideTab","proactiv.behavior.KitCustomize.HideTabBehavior");
this.addCommand("SubmitKitOrder","proactiv.behavior.KitCustomize.SubmitKitOrder");
this.addCommand("ChangeTab","proactiv.behavior.KitCustomize.TabBehavior");
this.addCommand("PreviousNextSlider","proactiv.behavior.KitCustomize.PreviousNextSlider");
this.addCommand("ProductRecommendDrop","proactiv.behavior.KitCustomize.ProductRecommendDrop");
this.addCommand("ProductDrop","proactiv.behavior.KitCustomize.ProductDrop");
this.addCommand("LightBoxes","proactiv.behavior.KitCustomize.LightBoxes");
this.addCommand("RemoveProduct","proactiv.behavior.KitCustomize.RemoveProduct");
this.addCommand("RemoveToolTip","proactiv.behavior.KitCustomize.RemoveToolTip");
this.addCommand("UpdateSH","proactiv.behavior.KitCustomize.UpdateSH");
this.addCommand("HelpTool","proactiv.behavior.KitCustomize.HelpTool");
this.addCommand("HelpIntro","proactiv.behavior.KitCustomize.HelpIntro");
this.addCommand("HelpToolKillClick","proactiv.behavior.KitCustomize.HelpTool");
this.addCommand("HelpToolTab","proactiv.behavior.KitCustomize.HelpTab");
this.addCommand("ToolTip","proactiv.behavior.KitCustomize.ProdToolTip");
this.addCommand("StartQuiz","proactiv.behavior.KitCustomize.StartQuiz");
this.addCommand("PreviousNextQuiz","proactiv.behavior.KitCustomize.PreviousNextQuiz");
this.addCommand("ScrollBySteps","proactiv.behavior.KitCustomize.ScrollBySteps");
this.addCommand("PreviousNextSliderInsideQuiz","proactiv.behavior.KitCustomize.PreviousNextSliderInsideQuiz");
this.addCommand("ValidateQuiz","proactiv.behavior.KitCustomize.ValidateQuiz")
},addIntercepts:function(){this.addIntercept("around","PreviousNextQuiz","ValidateQuiz",function(context,caller){return{}
});
this.addIntercept("around","ScrollBySteps","ValidateQuiz",function(context,caller){return{}
})
}});
dojo.provide("proactiv.controller.RealStoriesNavController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.RealStoriesNavController",mojo.controller.Controller,{addObservers:function(){this.addObserver(this,"onInit","RealStoriesNavAdjust");
this.addObserver(this,"onInit","DeferLoad",{collectionSelector:"#lgScroller div.image img",placeholder:"/img/stories/gallery/thumb-placeholder-large.png"});
this.addObserver(this,"onInit","DeferLoad",{collectionSelector:".smScroller a img",placeholder:"/img/stories/gallery/thumb-placeholder-small.png"});
this.addObserver(this,"onInit","LoadImages",function(context){var allSmallImageContainers=$(context).select(".smScroller ul");
var allSmallImages=[allSmallImageContainers[0].select("img")];
if(allSmallImageContainers[1]){allSmallImages.push(allSmallImageContainers[1].select("img"))
}allSmallImages=allSmallImages.flatten();
var allLargeImages=$(context).select("#lgScroller div.image img");
return{imageArray:[allSmallImages,allLargeImages[0],allLargeImages[1],allLargeImages[2]].flatten()}
});
this.addObserver(".setController a","onclick","HandlePageLink");
this.addObserver(".smScroller a","onclick","HandleThumbnailLink");
this.addObserver([".thumbArea .previous",".thumbArea .next"],"onclick","HandlePrevNextLink");
this.addObserver(this.getCommand("HandleThumbnailLink"),"execute","LoadImages",function(context){var currentPage=this.getCommand("HandleThumbnailLink").currentPage;
var allImages=$(context).select("#lgScroller li div.image img");
var imagesToLoad=[allImages[currentPage]];
if(allImages[currentPage+1]){imagesToLoad.push(allImages[currentPage+1])
}if(allImages[currentPage+2]){imagesToLoad.push(allImages[currentPage+2])
}if(allImages[currentPage-1]){imagesToLoad.push(allImages[currentPage-1])
}if(allImages[currentPage-2]){imagesToLoad.push(allImages[currentPage-2])
}return{imageArray:imagesToLoad}
}.bind(this));
this.addObserver(this.getCommand("HandlePageLink"),"execute","LoadImages",function(context){var currentPage=this.getCommand("HandlePageLink").currentPage;
var allImageContainers=$(context).select(".smScroller ul");
var allImages=[allImageContainers[currentPage].select("img")];
if(allImageContainers[currentPage+1]){allImages.push(allImageContainers[currentPage+1].select("img"))
}if(allImageContainers[currentPage-1]){allImages.push(allImageContainers[currentPage-1].select("img"))
}allImages=allImages.flatten();
return{imageArray:allImages}
}.bind(this));
this.addObserver([".thumbArea .previous",".thumbArea .next"],"onclick","LoadImages",function(context,caller){var currentPage=this.getCommand("HandlePrevNextLink").currentPage;
var direction=$(caller).hasClassName("next")?1:-1;
var allImageContainers=$(context).select(".smScroller ul");
var allImages=[allImageContainers[currentPage].select("img")];
if(allImageContainers[currentPage+direction]){allImages.push(allImageContainers[currentPage+direction].select("img"))
}allImages=allImages.flatten();
return{imageArray:allImages}
}.bind(this));
this.addObserver(mojo.query(".thumbArea .previous"),"onclick","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",options:{microToolUsage:"[real stories:scroll]"}}}
});
this.addObserver(mojo.query(".thumbArea .next"),"onclick","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",options:{microToolUsage:"[real stories:scroll]"}}}
});
this.addObserver(mojo.query(".smScroller a"),"onclick","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",options:{microToolUsage:"[real stories:scroll]"}}}
});
this.addObserver(mojo.query(".setController a"),"onclick","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",options:{microToolUsage:"[real stories:scroll]"}}}
});
this.addObserver(mojo.query("#lgScroller #lgListMask ul li a"),"onclick","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",callerName:"real stories:scroller:full story",options:{customLink:"real stories:scroller:full story"}}}
});
this.addObserver(mojo.query("#realStoriesSearchLanding button.btnFind"),"onclick","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",callerName:"real stories:search:find real stories",options:{customLink:"real stories:search:find real stories",toolUsageInitiated:"[real stories search]",eventName:"toolUsageInitiated"}}}
});
this.addObserver(mojo.query("#realStoriesSearchLanding a.btnStoriesAll"),"onclick","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",callerName:"real stories:search:see all stories",options:{customLink:"real stories:search:see all stories"}}}
});
this.addObserver(mojo.query("div.shareLearn div.share a"),"onclick","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",callerName:"real stories:tell us:share your story",options:{customLink:"real stories:tell us:share your story"}}}
})
},addCommands:function(){this.addCommand("RealStoriesNavAdjust","proactiv.behavior.RealStoriesNavAdjust");
this.addCommand("DeferLoad","proactiv.behavior.lazyload.DeferImageLoadBehavior");
this.addCommand("LoadImages","proactiv.behavior.lazyload.LoadImagesBehavior");
this.addCommand("HandlePageLink","proactiv.behavior.storiesGallery.HandlePageLinkBehavior");
this.addCommand("HandlePrevNextLink","proactiv.behavior.storiesGallery.HandlePrevNextLinkBehavior");
this.addCommand("HandleThumbnailLink","proactiv.behavior.storiesGallery.HandleThumbnailLinkBehavior");
this.addCommand("TrackOmniture","proactiv.command.metrics.OmnitureInterfaceCommand")
},addIntercepts:function(){}});
dojo.provide("proactiv.controller.AccordionController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.AccordionController",mojo.controller.Controller,{addObservers:function(){this.addObserver(this,"onInit","InitializeAccordion");
this.addObserver("span.openMe","onclick","UnfoldBehavior");
this.addObserver(mojo.Messaging.getTopic("/accordion/open/panel0"),"onPublish","UnfoldBehavior")
},addCommands:function(){this.addCommand("InitializeAccordion","proactiv.behavior.accordion.InitializeBehavior");
this.addCommand("UnfoldBehavior","proactiv.behavior.accordion.UnfoldBehavior")
},addIntercepts:function(){}});
dojo.provide("proactiv.controller.ProgressEvaluationSystemController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.ProgressEvaluationSystemController",mojo.controller.Controller,{addObservers:function(){this.addObserver(this.getContextElement(),"onsubmit","EvaluateProgress");
this.addObserver(mojo.query("li.q1 input"),"onclick","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",options:{eventName:"toolUsageInitiated",toolUsageInitiated:"[how are you doing]"}}}
});
this.addObserver(this.getCommand("ValidateQuestionnaire"),"onResponse","TrackOmniture",function(context,caller){return{mode:"track",params:{type:"event",options:{eventName:"toolUsageComplete",toolUsageComplete:"[how are you doing]"}}}
})
},addCommands:function(){this.addCommand("EvaluateProgress","proactiv.behavior.progressEvaluationSystem.EvaluateBehavior");
this.addCommand("ValidateQuestionnaire","proactiv.behavior.ValidateQuestionnaireBehavior");
this.addCommand("TrackOmniture","proactiv.command.metrics.OmnitureInterfaceCommand")
},addIntercepts:function(){this.addIntercept("around","EvaluateProgress","ValidateQuestionnaire")
}});
dojo.provide("proactiv.controller.reactivateRadioController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.reactivateRadioController",mojo.controller.Controller,{addObservers:function(){this.addObserver(this,"onInit","reactivateRadio")
},addCommands:function(){this.addCommand("reactivateRadio","proactiv.behavior.reactivateRadioBehavior")
},addIntercepts:function(){}});
dojo.provide("proactiv.controller.DeliveryController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.DeliveryController",mojo.controller.Controller,{addObservers:function(){this.addObserver("#freqCalc select","onchange","freqCalc");
this.addObserver("#freqCalc a.calculate","onclick","swapPane");
this.addObserver("#freqCalc a.recalculate","onclick","swapPane")
},addCommands:function(){this.addCommand("freqCalc","proactiv.behavior.delivery.freqCalc");
this.addCommand("swapPane","proactiv.behavior.delivery.swapPane")
},addIntercepts:function(){}});
dojo.provide("proactiv.controller.RandomCelebController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.RandomCelebController",mojo.controller.Controller,{addObservers:function(){this.addObserver(this,"onInit","randomCeleb")
},addCommands:function(){this.addCommand("randomCeleb","proactiv.behavior.homepage.randomCeleb")
},addIntercepts:function(){}});
dojo.provide("proactiv.controller.PaymentOptionController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.PaymentOptionController",mojo.controller.Controller,{addObservers:function(){this.addObserver(this,"onInit","hideFormFields");
this.addObserver("div.cardType select","onchange","checkForPaypal");
this.addObserver(mojo.Messaging.getTopic("/paymentOption/formfields/disable"),"onPublish","disableFormFields");
this.addObserver(mojo.Messaging.getTopic("/paymentOption/formfields/enable"),"onPublish","enableFormFields");
this.addObserver(mojo.Messaging.getTopic("/paymentOption/formfields/hide"),"onPublish","hideFormFields");
this.addObserver(mojo.Messaging.getTopic("/mojo/update/observers"),"onPublish","updateObservers")
},addCommands:function(){this.addCommand("checkForPaypal","proactiv.behavior.paymentOption.checkForPaypalBehavior");
this.addCommand("updateObservers","proactiv.behavior.updateObserversBehavior");
this.addCommand("disableFormFields","proactiv.behavior.paymentOption.disableFormFieldsBehavior");
this.addCommand("enableFormFields","proactiv.behavior.paymentOption.enableFormFieldsBehavior");
this.addCommand("hideFormFields","proactiv.behavior.paymentOption.hideFormFieldsBehavior")
},addIntercepts:function(){}});
dojo.provide("proactiv.controller.BrowserWarningController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.BrowserWarningController",mojo.controller.Controller,{addObservers:function(){this.addObserver(this,"onInit","addBackButton")
},addCommands:function(){this.addCommand("addBackButton","proactiv.behavior.browserWarn.addBackButtonBehavior")
},addIntercepts:function(){}});
dojo.provide("proactiv.controller.CatalogHomepageModuleController");
dojo.require("mojo.controller.Controller");
dojo.declare("proactiv.controller.CatalogHomepageModuleController",mojo.controller.Controller,{addObservers:function(){this.addObserver(["a.previous","a.next"],"onclick","PreviousNextSlider")
},addCommands:function(){this.addCommand("PreviousNextSlider","proactiv.behavior.PreviousNextSlider")
},addIntercepts:function(){}});