
String.prototype.parseColor=function(){var color='#';if(this.slice(0,4)=='rgb('){var cols=this.slice(4,this.length-1).split(',');var i=0;do{color+=parseInt(cols[i]).toColorPart()}while(++i<3);}else{if(this.slice(0,1)=='#'){if(this.length==4)for(var i=1;i<4;i++)color+=(this.charAt(i)+this.charAt(i)).toLowerCase();if(this.length==7)color=this.toLowerCase();}}
return(color.length==7?color:(arguments[0]||this));}
Element.collectTextNodes=function(element){return $A($(element).childNodes).collect(function(node){return(node.nodeType==3?node.nodeValue:(node.hasChildNodes()?Element.collectTextNodes(node):''));}).flatten().join('');}
Element.collectTextNodesIgnoreClass=function(element,className){return $A($(element).childNodes).collect(function(node){return(node.nodeType==3?node.nodeValue:((node.hasChildNodes()&&!Element.hasClassName(node,className))?Element.collectTextNodesIgnoreClass(node,className):''));}).flatten().join('');}
Element.setContentZoom=function(element,percent){element=$(element);element.setStyle({fontSize:(percent/100)+'em'});if(Prototype.Browser.WebKit)window.scrollBy(0,0);return element;}
Element.getInlineOpacity=function(element){return $(element).style.opacity||'';}
Element.forceRerendering=function(element){try{element=$(element);var n=document.createTextNode(' ');element.appendChild(n);element.removeChild(n);}catch(e){}};Array.prototype.call=function(){var args=arguments;this.each(function(f){f.apply(this,args)});}
var Effect={_elementDoesNotExistError:{name:'ElementDoesNotExistError',message:'The specified DOM element does not exist, but is required for this effect to operate'},tagifyText:function(element){if(typeof Builder=='undefined')
throw("Effect.tagifyText requires including script.aculo.us' builder.js library");var tagifyStyle='position:relative';if(Prototype.Browser.IE)tagifyStyle+=';zoom:1';element=$(element);$A(element.childNodes).each(function(child){if(child.nodeType==3){child.nodeValue.toArray().each(function(character){element.insertBefore(Builder.node('span',{style:tagifyStyle},character==' '?String.fromCharCode(160):character),child);});Element.remove(child);}});},multiple:function(element,effect){var elements;if(((typeof element=='object')||(typeof element=='function'))&&(element.length))
elements=element;else
elements=$(element).childNodes;var options=Object.extend({speed:0.1,delay:0.0},arguments[2]||{});var masterDelay=options.delay;$A(elements).each(function(element,index){new effect(element,Object.extend(options,{delay:index*options.speed+masterDelay}));});},PAIRS:{'slide':['SlideDown','SlideUp'],'blind':['BlindDown','BlindUp'],'appear':['Appear','Fade']},toggle:function(element,effect){element=$(element);effect=(effect||'appear').toLowerCase();var options=Object.extend({queue:{position:'end',scope:(element.id||'global'),limit:1}},arguments[2]||{});Effect[element.visible()?Effect.PAIRS[effect][1]:Effect.PAIRS[effect][0]](element,options);}};var Effect2=Effect;Effect.Transitions={linear:Prototype.K,sinoidal:function(pos){return(-Math.cos(pos*Math.PI)/2)+0.5;},reverse:function(pos){return 1-pos;},flicker:function(pos){var pos=((-Math.cos(pos*Math.PI)/4)+0.75)+Math.random()/4;return(pos>1?1:pos);},wobble:function(pos){return(-Math.cos(pos*Math.PI*(9*pos))/2)+0.5;},pulse:function(pos,pulses){pulses=pulses||5;return(Math.round((pos%(1/pulses))*pulses)==0?((pos*pulses*2)-Math.floor(pos*pulses*2)):1-((pos*pulses*2)-Math.floor(pos*pulses*2)));},none:function(pos){return 0;},full:function(pos){return 1;}};Effect.ScopedQueue=Class.create();Object.extend(Object.extend(Effect.ScopedQueue.prototype,Enumerable),{initialize:function(){this.effects=[];this.interval=null;},_each:function(iterator){this.effects._each(iterator);},add:function(effect){var timestamp=new Date().getTime();var position=(typeof effect.options.queue=='string')?effect.options.queue:effect.options.queue.position;switch(position){case'front':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(typeof queueName!='string')return queueName;if(!this.instances[queueName])
this.instances[queueName]=new Effect.ScopedQueue();return this.instances[queueName];}}
Effect.Queue=Effect.Queues.get('global');Effect.DefaultOptions={transition:Effect.Transitions.sinoidal,duration:1.0,fps:100,sync:false,from:0.0,to:1.0,delay:0.0,queue:'parallel'}
Effect.Base=function(){};Effect.Base.prototype={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.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(options,'beforeSetup')+
(this.setup?'this.setup();':'')+
codeForEvent(options,'afterSetup')+'};if(this.state=="running"){'+'pos=this.options.transition(pos)*'+this.fromToDelta+'+'+this.options.from+';'+'this.position=pos;'+
codeForEvent(options,'beforeUpdate')+
(this.update?'this.update(pos);':'')+
codeForEvent(options,'afterUpdate')+'}}');this.event('beforeStart');if(!this.options.sync)
Effect.Queues.get(typeof this.options.queue=='string'?'global':this.options.queue.scope).add(this);},loop:function(timePos){if(timePos>=this.startOn){if(timePos>=this.finishOn){this.render(1.0);this.cancel();this.event('beforeFinish');if(this.finish)this.finish();this.event('afterFinish');return;}
var pos=(timePos-this.startOn)/this.totalTime,frame=Math.round(pos*this.totalFrames);if(frame>this.currentFrame){this.render(pos);this.currentFrame=frame;}}},cancel:function(){if(!this.options.sync)
Effect.Queues.get(typeof this.options.queue=='string'?'global':this.options.queue.scope).remove(this);this.state='finished';},event:function(eventName){if(this.options[eventName+'Internal'])this.options[eventName+'Internal'](this);if(this.options[eventName])this.options[eventName](this);},inspect:function(){var data=$H();for(property in this)
if(typeof this[property]!='function')data[property]=this[property];return'#<Effect:'+data.inspect()+',options:'+$H(this.options).inspect()+'>';}}
Effect.Parallel=Class.create();Object.extend(Object.extend(Effect.Parallel.prototype,Effect.Base.prototype),{initialize:function(effects){this.effects=effects||[];this.start(arguments[1]);},update:function(position){this.effects.invoke('render',position);},finish:function(position){this.effects.each(function(effect){effect.render(1.0);effect.cancel();effect.event('beforeFinish');if(effect.finish)effect.finish(position);effect.event('afterFinish');});}});Effect.Event=Class.create();Object.extend(Object.extend(Effect.Event.prototype,Effect.Base.prototype),{initialize:function(){var options=Object.extend({duration:0},arguments[0]||{});this.start(options);},update:Prototype.emptyFunction});Effect.Opacity=Class.create();Object.extend(Object.extend(Effect.Opacity.prototype,Effect.Base.prototype),{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout))
this.element.setStyle({zoom:1});var options=Object.extend({from:this.element.getOpacity()||0.0,to:1.0},arguments[1]||{});this.start(options);},update:function(position){this.element.setOpacity(position);}});Effect.Move=Class.create();Object.extend(Object.extend(Effect.Move.prototype,Effect.Base.prototype),{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({x:0,y:0,mode:'relative'},arguments[1]||{});this.start(options);},setup:function(){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:Math.round(this.options.x*position+this.originalLeft)+'px',top:Math.round(this.options.y*position+this.originalTop)+'px'});}});Effect.MoveBy=function(element,toTop,toLeft){return new Effect.Move(element,Object.extend({x:toLeft,y:toTop},arguments[3]||{}));};Effect.Scale=Class.create();Object.extend(Object.extend(Effect.Scale.prototype,Effect.Base.prototype),{initialize:function(element,percent){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:'box',scaleFrom:100.0,scaleTo:percent},arguments[2]||{});this.start(options);},setup:function(){this.restoreAfterFinish=this.options.restoreAfterFinish||false;this.elementPositioning=this.element.getStyle('position');this.originalStyle={};['top','left','width','height','fontSize'].each(function(k){this.originalStyle[k]=this.element.style[k];}.bind(this));this.originalTop=this.element.offsetTop;this.originalLeft=this.element.offsetLeft;var fontSize=this.element.getStyle('font-size')||'100%';['em','px','%','pt'].each(function(fontSizeType){if(fontSize.indexOf(fontSizeType)>0){this.fontSize=parseFloat(fontSize);this.fontSizeType=fontSizeType;}}.bind(this));this.factor=(this.options.scaleTo-this.options.scaleFrom)/100;this.dims=null;if(this.options.scaleMode=='box')
this.dims=[this.element.offsetHeight,this.element.offsetWidth];if(/^content/.test(this.options.scaleMode))
this.dims=[this.element.scrollHeight,this.element.scrollWidth];if(!this.dims)
this.dims=[this.options.scaleMode.originalHeight,this.options.scaleMode.originalWidth];},update:function(position){var currentScale=(this.options.scaleFrom/100.0)+(this.factor*position);if(this.options.scaleContent&&this.fontSize)
this.element.setStyle({fontSize:this.fontSize*currentScale+this.fontSizeType});this.setDimensions(this.dims[0]*currentScale,this.dims[1]*currentScale);},finish:function(position){if(this.restoreAfterFinish)this.element.setStyle(this.originalStyle);},setDimensions:function(height,width){var d={};if(this.options.scaleX)d.width=Math.round(width)+'px';if(this.options.scaleY)d.height=Math.round(height)+'px';if(this.options.scaleFromCenter){var topd=(height-this.dims[0])/2;var leftd=(width-this.dims[1])/2;if(this.elementPositioning=='absolute'){if(this.options.scaleY)d.top=this.originalTop-topd+'px';if(this.options.scaleX)d.left=this.originalLeft-leftd+'px';}else{if(this.options.scaleY)d.top=-topd+'px';if(this.options.scaleX)d.left=-leftd+'px';}}
this.element.setStyle(d);}});Effect.Highlight=Class.create();Object.extend(Object.extend(Effect.Highlight.prototype,Effect.Base.prototype),{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({startcolor:'#ffff99'},arguments[1]||{});this.start(options);},setup:function(){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+(Math.round(this._base[i]+(this._delta[i]*position)).toColorPart());}.bind(this))});},finish:function(){this.element.setStyle(Object.extend(this.oldStyle,{backgroundColor:this.options.restorecolor}));}});Effect.ScrollTo=Class.create();Object.extend(Object.extend(Effect.ScrollTo.prototype,Effect.Base.prototype),{initialize:function(element){this.element=$(element);this.start(arguments[1]||{});},setup:function(){Position.prepare();var offsets=Position.cumulativeOffset(this.element);if(this.options.offset)offsets[1]+=this.options.offset;var max=window.innerHeight?window.height-window.innerHeight:document.body.scrollHeight-
(document.documentElement.clientHeight?document.documentElement.clientHeight:document.body.clientHeight);this.scrollStart=Position.deltaY;this.delta=(offsets[1]>max?max:offsets[1])-this.scrollStart;},update:function(position){Position.prepare();window.scrollTo(Position.deltaX,this.scrollStart+(position*this.delta));}});Effect.Fade=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();var options=Object.extend({from:element.getOpacity()||1.0,to:0.0,afterFinishInternal:function(effect){if(effect.options.to!=0)return;effect.element.hide().setStyle({opacity:oldOpacity});}},arguments[1]||{});return new Effect.Opacity(element,options);}
Effect.Appear=function(element){element=$(element);var options=Object.extend({from:(element.getStyle('display')=='none'?0.0:element.getOpacity()||0.0),to:1.0,afterFinishInternal:function(effect){effect.element.forceRerendering();},beforeSetup:function(effect){effect.element.setOpacity(effect.options.from).show();}},arguments[1]||{});return new Effect.Opacity(element,options);}
Effect.Puff=function(element){element=$(element);var oldStyle={opacity:element.getInlineOpacity(),position:element.getStyle('position'),top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};return new Effect.Parallel([new Effect.Scale(element,200,{sync:true,scaleFromCenter:true,scaleContent:true,restoreAfterFinish:true}),new Effect.Opacity(element,{sync:true,to:0.0})],Object.extend({duration:1.0,beforeSetupInternal:function(effect){Position.absolutize(effect.effects[0].element)},afterFinishInternal:function(effect){effect.effects[0].element.hide().setStyle(oldStyle);}},arguments[1]||{}));}
Effect.BlindUp=function(element){element=$(element);element.makeClipping();return new Effect.Scale(element,0,Object.extend({scaleContent:false,scaleX:false,restoreAfterFinish:true,afterFinishInternal:function(effect){effect.element.hide().undoClipping();}},arguments[1]||{}));}
Effect.BlindDown=function(element){element=$(element);var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makeClipping().setStyle({height:'0px'}).show();},afterFinishInternal:function(effect){effect.element.undoClipping();}},arguments[1]||{}));}
Effect.SwitchOff=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();return new Effect.Appear(element,Object.extend({duration:0.4,from:0,transition:Effect.Transitions.flicker,afterFinishInternal:function(effect){new Effect.Scale(effect.element,1,{duration:0.3,scaleFromCenter:true,scaleX:false,scaleContent:false,restoreAfterFinish:true,beforeSetup:function(effect){effect.element.makePositioned().makeClipping();},afterFinishInternal:function(effect){effect.element.hide().undoClipping().undoPositioned().setStyle({opacity:oldOpacity});}})}},arguments[1]||{}));}
Effect.DropOut=function(element){element=$(element);var oldStyle={top:element.getStyle('top'),left:element.getStyle('left'),opacity:element.getInlineOpacity()};return new Effect.Parallel([new Effect.Move(element,{x:0,y:100,sync:true}),new Effect.Opacity(element,{sync:true,to:0.0})],Object.extend({duration:0.5,beforeSetup:function(effect){effect.effects[0].element.makePositioned();},afterFinishInternal:function(effect){effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);}},arguments[1]||{}));}
Effect.Shake=function(element){element=$(element);var oldStyle={top:element.getStyle('top'),left:element.getStyle('left')};return new Effect.Move(element,{x:20,y:0,duration:0.05,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-40,y:0,duration:0.1,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:40,y:0,duration:0.1,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-40,y:0,duration:0.1,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:40,y:0,duration:0.1,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-20,y:0,duration:0.05,afterFinishInternal:function(effect){effect.element.undoPositioned().setStyle(oldStyle);}})}})}})}})}})}});}
Effect.SlideDown=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle('bottom');var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:window.opera?0:1,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makePositioned();effect.element.down().makePositioned();if(window.opera)effect.element.setStyle({top:''});effect.element.makeClipping().setStyle({height:'0px'}).show();},afterUpdateInternal:function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+'px'});},afterFinishInternal:function(effect){effect.element.undoClipping().undoPositioned();effect.element.down().undoPositioned().setStyle({bottom:oldInnerBottom});}},arguments[1]||{}));}
Effect.SlideUp=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle('bottom');return new Effect.Scale(element,window.opera?0:1,Object.extend({scaleContent:false,scaleX:false,scaleMode:'box',scaleFrom:100,restoreAfterFinish:true,beforeStartInternal:function(effect){effect.element.makePositioned();effect.element.down().makePositioned();if(window.opera)effect.element.setStyle({top:''});effect.element.makeClipping().show();},afterUpdateInternal:function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+'px'});},afterFinishInternal:function(effect){effect.element.hide().undoClipping().undoPositioned().setStyle({bottom:oldInnerBottom});effect.element.down().undoPositioned();}},arguments[1]||{}));}
Effect.Squish=function(element){return new Effect.Scale(element,window.opera?1:0,{restoreAfterFinish:true,beforeSetup:function(effect){effect.element.makeClipping();},afterFinishInternal:function(effect){effect.element.hide().undoClipping();}});}
Effect.Grow=function(element){element=$(element);var options=Object.extend({direction:'center',moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.full},arguments[1]||{});var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};var dims=element.getDimensions();var initialMoveX,initialMoveY;var moveX,moveY;switch(options.direction){case'top-left':initialMoveX=initialMoveY=moveX=moveY=0;break;case'top-right':initialMoveX=dims.width;initialMoveY=moveY=0;moveX=-dims.width;break;case'bottom-left':initialMoveX=moveX=0;initialMoveY=dims.height;moveY=-dims.height;break;case'bottom-right':initialMoveX=dims.width;initialMoveY=dims.height;moveX=-dims.width;moveY=-dims.height;break;case'center':initialMoveX=dims.width/2;initialMoveY=dims.height/2;moveX=-dims.width/2;moveY=-dims.height/2;break;}
return new Effect.Move(element,{x:initialMoveX,y:initialMoveY,duration:0.01,beforeSetup:function(effect){effect.element.hide().makeClipping().makePositioned();},afterFinishInternal:function(effect){new Effect.Parallel([new Effect.Opacity(effect.element,{sync:true,to:1.0,from:0.0,transition:options.opacityTransition}),new Effect.Move(effect.element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition}),new Effect.Scale(effect.element,100,{scaleMode:{originalHeight:dims.height,originalWidth:dims.width},sync:true,scaleFrom:window.opera?1:0,transition:options.scaleTransition,restoreAfterFinish:true})],Object.extend({beforeSetup:function(effect){effect.effects[0].element.setStyle({height:'0px'}).show();},afterFinishInternal:function(effect){effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle);}},options))}});}
Effect.Shrink=function(element){element=$(element);var options=Object.extend({direction:'center',moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.none},arguments[1]||{});var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};var dims=element.getDimensions();var moveX,moveY;switch(options.direction){case'top-left':moveX=moveY=0;break;case'top-right':moveX=dims.width;moveY=0;break;case'bottom-left':moveX=0;moveY=dims.height;break;case'bottom-right':moveX=dims.width;moveY=dims.height;break;case'center':moveX=dims.width/2;moveY=dims.height/2;break;}
return new Effect.Parallel([new Effect.Opacity(element,{sync:true,to:0.0,from:1.0,transition:options.opacityTransition}),new Effect.Scale(element,window.opera?1:0,{sync:true,transition:options.scaleTransition,restoreAfterFinish:true}),new Effect.Move(element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition})],Object.extend({beforeStartInternal:function(effect){effect.effects[0].element.makePositioned().makeClipping();},afterFinishInternal:function(effect){effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle);}},options));}
Effect.Pulsate=function(element){element=$(element);var options=arguments[1]||{};var oldOpacity=element.getInlineOpacity();var transition=options.transition||Effect.Transitions.sinoidal;var reverser=function(pos){return transition(1-Effect.Transitions.pulse(pos,options.pulses))};reverser.bind(transition);return new Effect.Opacity(element,Object.extend(Object.extend({duration:2.0,from:0,afterFinishInternal:function(effect){effect.element.setStyle({opacity:oldOpacity});}},options),{transition:reverser}));}
Effect.Fold=function(element){element=$(element);var oldStyle={top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};element.makeClipping();return new Effect.Scale(element,5,Object.extend({scaleContent:false,scaleX:false,afterFinishInternal:function(effect){new Effect.Scale(element,1,{scaleContent:false,scaleY:false,afterFinishInternal:function(effect){effect.element.hide().undoClipping().setStyle(oldStyle);}});}},arguments[1]||{}));};Effect.Morph=Class.create();Object.extend(Object.extend(Effect.Morph.prototype,Effect.Base.prototype),{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({style:{}},arguments[1]||{});if(typeof options.style=='string'){if(options.style.indexOf(':')==-1){var cssText='',selector='.'+options.style;$A(document.styleSheets).reverse().each(function(styleSheet){if(styleSheet.cssRules)cssRules=styleSheet.cssRules;else if(styleSheet.rules)cssRules=styleSheet.rules;$A(cssRules).reverse().each(function(rule){if(selector==rule.selectorText){cssText=rule.style.cssText;throw $break;}});if(cssText)throw $break;});this.style=cssText.parseStyle();options.afterFinishInternal=function(effect){effect.element.addClassName(effect.options.style);effect.transforms.each(function(transform){if(transform.style!='opacity')
effect.element.style[transform.style]='';});}}else this.style=options.style.parseStyle();}else this.style=$H(options.style)
this.start(options);},setup:function(){function parseColor(color){if(!color||['rgba(0, 0, 0, 0)','transparent'].include(color))color='#ffffff';color=color.parseColor();return $R(0,2).map(function(i){return parseInt(color.slice(i*2+1,i*2+3),16)});}
this.transforms=this.style.map(function(pair){var property=pair[0],value=pair[1],unit=null;if(value.parseColor('#zzzzzz')!='#zzzzzz'){value=value.parseColor();unit='color';}else if(property=='opacity'){value=parseFloat(value);if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout))
this.element.setStyle({zoom:1});}else if(Element.CSS_LENGTH.test(value)){var components=value.match(/^([\+\-]?[0-9\.]+)(.*)$/);value=parseFloat(components[1]);unit=(components.length==3)?components[2]:null;}
var originalValue=this.element.getStyle(property);return{style:property.camelize(),originalValue:unit=='color'?parseColor(originalValue):parseFloat(originalValue||0),targetValue:unit=='color'?parseColor(value):value,unit:unit};}.bind(this)).reject(function(transform){return((transform.originalValue==transform.targetValue)||(transform.unit!='color'&&(isNaN(transform.originalValue)||isNaN(transform.targetValue))))});},update:function(position){var style={},transform,i=this.transforms.length;while(i--)
style[(transform=this.transforms[i]).style]=transform.unit=='color'?'#'+
(Math.round(transform.originalValue[0]+
(transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart()+
(Math.round(transform.originalValue[1]+
(transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart()+
(Math.round(transform.originalValue[2]+
(transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart():transform.originalValue+Math.round(((transform.targetValue-transform.originalValue)*position)*1000)/1000+transform.unit;this.element.setStyle(style,true);}});Effect.Transform=Class.create();Object.extend(Effect.Transform.prototype,{initialize:function(tracks){this.tracks=[];this.options=arguments[1]||{};this.addTracks(tracks);},addTracks:function(tracks){tracks.each(function(track){var data=$H(track).values().first();this.tracks.push($H({ids:$H(track).keys().first(),effect:Effect.Morph,options:{style:data}}));}.bind(this));return this;},play:function(){return new Effect.Parallel(this.tracks.map(function(track){var elements=[$(track.ids)||$$(track.ids)].flatten();return elements.map(function(e){return new track.effect(e,Object.extend({sync:true},track.options))});}).flatten(),this.options);}});Element.CSS_PROPERTIES=$w('backgroundColor backgroundPosition borderBottomColor borderBottomStyle '+'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth '+'borderRightColor borderRightStyle borderRightWidth borderSpacing '+'borderTopColor borderTopStyle borderTopWidth bottom clip color '+'fontSize fontWeight height left letterSpacing lineHeight '+'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+'maxWidth minHeight minWidth opacity outlineColor outlineOffset '+'outlineWidth paddingBottom paddingLeft paddingRight paddingTop '+'right textIndent top width wordSpacing zIndex');Element.CSS_LENGTH=/^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;String.prototype.parseStyle=function(){var element=document.createElement('div');element.innerHTML='<div style="'+this+'"></div>';var style=element.childNodes[0].style,styleRules=$H();Element.CSS_PROPERTIES.each(function(property){if(style[property])styleRules[property]=style[property];});if(Prototype.Browser.IE&&this.indexOf('opacity')>-1){styleRules.opacity=this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1];}
return styleRules;};Element.morph=function(element,style){new Effect.Morph(element,Object.extend({style:style},arguments[2]||{}));return element;};['getInlineOpacity','forceRerendering','setContentZoom','collectTextNodes','collectTextNodesIgnoreClass','morph'].each(function(f){Element.Methods[f]=Element[f];});Element.Methods.visualEffect=function(element,effect,options){s=effect.dasherize().camelize();effect_class=s.charAt(0).toUpperCase()+s.substring(1);new Effect[effect_class](element,options);return $(element);};Element.addMethods();var Rico={Version:'1.1.2',prototypeVersion:parseFloat(Prototype.Version.split(".")[0]+"."+Prototype.Version.split(".")[1])}
if((typeof Prototype=='undefined')||Rico.prototypeVersion<1.3)
throw("Rico requires the Prototype JavaScript framework >= 1.3");Rico.ArrayExtensions=new Array();if(Object.prototype.extend){Rico.ArrayExtensions[Rico.ArrayExtensions.length]=Object.prototype.extend;}else{Object.prototype.extend=function(object){return Object.extend.apply(this,[this,object]);}
Rico.ArrayExtensions[Rico.ArrayExtensions.length]=Object.prototype.extend;}
if(Array.prototype.push){Rico.ArrayExtensions[Rico.ArrayExtensions.length]=Array.prototype.push;}
if(!Array.prototype.remove){Array.prototype.remove=function(dx){if(isNaN(dx)||dx>this.length)
return false;for(var i=0,n=0;i<this.length;i++)
if(i!=dx)
this[n++]=this[i];this.length-=1;};Rico.ArrayExtensions[Rico.ArrayExtensions.length]=Array.prototype.remove;}
if(!Array.prototype.removeItem){Array.prototype.removeItem=function(item){for(var i=0;i<this.length;i++)
if(this[i]==item){this.remove(i);break;}};Rico.ArrayExtensions[Rico.ArrayExtensions.length]=Array.prototype.removeItem;}
if(!Array.prototype.indices){Array.prototype.indices=function(){var indexArray=new Array();for(index in this){var ignoreThis=false;for(var i=0;i<Rico.ArrayExtensions.length;i++){if(this[index]==Rico.ArrayExtensions[i]){ignoreThis=true;break;}}
if(!ignoreThis)
indexArray[indexArray.length]=index;}
return indexArray;}
Rico.ArrayExtensions[Rico.ArrayExtensions.length]=Array.prototype.indices;}
if(window.DOMParser&&window.XMLSerializer&&window.Node&&Node.prototype&&Node.prototype.__defineGetter__){if(!Document.prototype.loadXML){Document.prototype.loadXML=function(s){var doc2=(new DOMParser()).parseFromString(s,"text/xml");while(this.hasChildNodes())
this.removeChild(this.lastChild);for(var i=0;i<doc2.childNodes.length;i++){this.appendChild(this.importNode(doc2.childNodes[i],true));}};}
Document.prototype.__defineGetter__("xml",function(){return(new XMLSerializer()).serializeToString(this);});}
document.getElementsByTagAndClassName=function(tagName,className){if(tagName==null)
tagName='*';var children=document.getElementsByTagName(tagName)||document.all;var elements=new Array();if(className==null)
return children;for(var i=0;i<children.length;i++){var child=children[i];var classNames=child.className.split(' ');for(var j=0;j<classNames.length;j++){if(classNames[j]==className){elements.push(child);break;}}}
return elements;}
Rico.Accordion=Class.create();Rico.Accordion.prototype={initialize:function(container,options){this.container=$(container);this.lastExpandedTab=null;this.accordionTabs=new Array();this.setOptions(options);this._attachBehaviors();if(!container)return;this.container.style.borderBottom='1px solid '+this.options.borderColor;if(this.options.onLoadShowTab>=this.accordionTabs.length)
this.options.onLoadShowTab=0;for(var i=0;i<this.accordionTabs.length;i++)
{if(i!=this.options.onLoadShowTab){this.accordionTabs[i].collapse();this.accordionTabs[i].content.style.display='none';}}
this.lastExpandedTab=this.accordionTabs[this.options.onLoadShowTab];if(this.options.panelHeight=='auto'){var tabToCheck=(this.options.onloadShowTab===0)?1:0;var titleBarSize=parseInt(RicoUtil.getElementsComputedStyle(this.accordionTabs[tabToCheck].titleBar,'height'));if(isNaN(titleBarSize))
titleBarSize=this.accordionTabs[tabToCheck].titleBar.offsetHeight;var totalTitleBarSize=this.accordionTabs.length*titleBarSize;var parentHeight=parseInt(RicoUtil.getElementsComputedStyle(this.container.parentNode,'height'));if(isNaN(parentHeight))
parentHeight=this.container.parentNode.offsetHeight;this.options.panelHeight=parentHeight-totalTitleBarSize-2;}
this.lastExpandedTab.content.style.height=this.options.panelHeight+"px";this.lastExpandedTab.showExpanded();this.lastExpandedTab.titleBar.style.fontWeight=this.options.expandedFontWeight;},setOptions:function(options){this.options={expandedBg:'#63699c',hoverBg:'#63699c',collapsedBg:'#6b79a5',expandedTextColor:'#ffffff',expandedFontWeight:'bold',hoverTextColor:'#ffffff',collapsedTextColor:'#ced7ef',collapsedFontWeight:'normal',hoverTextColor:'#ffffff',borderColor:'#1f669b',panelHeight:200,onHideTab:null,onShowTab:null,onLoadShowTab:0}
Object.extend(this.options,options||{});},showTabByIndex:function(anIndex,animate){var doAnimate=arguments.length==1?true:animate;this.showTab(this.accordionTabs[anIndex],doAnimate);},showTab:function(accordionTab,animate){if(this.lastExpandedTab==accordionTab)
return;var doAnimate=arguments.length==1?true:animate;if(this.options.onHideTab)
this.options.onHideTab(this.lastExpandedTab);this.lastExpandedTab.showCollapsed();var accordion=this;var lastExpandedTab=this.lastExpandedTab;this.lastExpandedTab.content.style.height=(this.options.panelHeight-1)+'px';accordionTab.content.style.display='';accordionTab.titleBar.style.fontWeight=this.options.expandedFontWeight;if(doAnimate){new Rico.Effect.AccordionSize(this.lastExpandedTab.content,accordionTab.content,1,this.options.panelHeight,100,10,{complete:function(){accordion.showTabDone(lastExpandedTab)}});this.lastExpandedTab=accordionTab;}
else{this.lastExpandedTab.content.style.height="1px";accordionTab.content.style.height=this.options.panelHeight+"px";this.lastExpandedTab=accordionTab;this.showTabDone(lastExpandedTab);}},showTabDone:function(collapsedTab){collapsedTab.content.style.display='none';this.lastExpandedTab.showExpanded();if(this.options.onShowTab)
this.options.onShowTab(this.lastExpandedTab);},_attachBehaviors:function(){var panels=this._getDirectChildrenByTag(this.container,'DIV');for(var i=0;i<panels.length;i++){var tabChildren=this._getDirectChildrenByTag(panels[i],'DIV');if(tabChildren.length!=2)
continue;var tabTitleBar=tabChildren[0];var tabContentBox=tabChildren[1];this.accordionTabs.push(new Rico.Accordion.Tab(this,tabTitleBar,tabContentBox));}},_getDirectChildrenByTag:function(e,tagName){var kids=new Array();var allKids=e.childNodes;for(var i=0;i<allKids.length;i++)
if(allKids[i]&&allKids[i].tagName&&allKids[i].tagName==tagName)
kids.push(allKids[i]);return kids;}};Rico.Accordion.Tab=Class.create();Rico.Accordion.Tab.prototype={initialize:function(accordion,titleBar,content){this.accordion=accordion;this.titleBar=titleBar;this.content=content;this._attachBehaviors();},collapse:function(){this.showCollapsed();this.content.style.height="1px";},showCollapsed:function(){this.expanded=false;this.titleBar.style.backgroundColor=this.accordion.options.collapsedBg;this.titleBar.style.color=this.accordion.options.collapsedTextColor;this.titleBar.style.fontWeight=this.accordion.options.collapsedFontWeight;this.content.style.overflow="hidden";},showExpanded:function(){this.expanded=true;this.titleBar.style.backgroundColor=this.accordion.options.expandedBg;this.titleBar.style.color=this.accordion.options.expandedTextColor;this.content.style.overflow="auto";},titleBarClicked:function(e){if(this.accordion.lastExpandedTab==this)
return;this.accordion.showTab(this);},hover:function(e){this.titleBar.style.backgroundColor=this.accordion.options.hoverBg;this.titleBar.style.color=this.accordion.options.hoverTextColor;},unhover:function(e){if(this.expanded){this.titleBar.style.backgroundColor=this.accordion.options.expandedBg;this.titleBar.style.color=this.accordion.options.expandedTextColor;}
else{this.titleBar.style.backgroundColor=this.accordion.options.collapsedBg;this.titleBar.style.color=this.accordion.options.collapsedTextColor;}},_attachBehaviors:function(){this.content.style.border="1px solid "+this.accordion.options.borderColor;this.content.style.borderTopWidth="0px";this.content.style.borderBottomWidth="0px";this.content.style.margin="0px";this.titleBar.onclick=this.titleBarClicked.bindAsEventListener(this);this.titleBar.onmouseover=this.hover.bindAsEventListener(this);this.titleBar.onmouseout=this.unhover.bindAsEventListener(this);}};Rico.AjaxEngine=Class.create();Rico.AjaxEngine.prototype={initialize:function(){this.ajaxElements=new Array();this.ajaxObjects=new Array();this.requestURLS=new Array();this.options={};},registerAjaxElement:function(anId,anElement){if(!anElement)
anElement=$(anId);this.ajaxElements[anId]=anElement;},registerAjaxObject:function(anId,anObject){this.ajaxObjects[anId]=anObject;},registerRequest:function(requestLogicalName,requestURL){this.requestURLS[requestLogicalName]=requestURL;},sendRequest:function(requestName,options){if(arguments.length>=2)
if(typeof arguments[1]=='string')
options={parameters:this._createQueryString(arguments,1)};this.sendRequestWithData(requestName,null,options);},sendRequestWithData:function(requestName,xmlDocument,options){var requestURL=this.requestURLS[requestName];if(requestURL==null)
return;if(arguments.length>=3)
if(typeof arguments[2]=='string')
options.parameters=this._createQueryString(arguments,2);new Ajax.Request(requestURL,this._requestOptions(options,xmlDocument));},sendRequestAndUpdate:function(requestName,container,options){if(arguments.length>=3)
if(typeof arguments[2]=='string')
options.parameters=this._createQueryString(arguments,2);this.sendRequestWithDataAndUpdate(requestName,null,container,options);},sendRequestWithDataAndUpdate:function(requestName,xmlDocument,container,options){var requestURL=this.requestURLS[requestName];if(requestURL==null)
return;if(arguments.length>=4)
if(typeof arguments[3]=='string')
options.parameters=this._createQueryString(arguments,3);var updaterOptions=this._requestOptions(options,xmlDocument);new Ajax.Updater(container,requestURL,updaterOptions);},_requestOptions:function(options,xmlDoc){var requestHeaders=['X-Rico-Version',Rico.Version];var sendMethod='post';if(xmlDoc==null)
if(Rico.prototypeVersion<1.4)
requestHeaders.push('Content-type','text/xml');else
sendMethod='get';(!options)?options={}:'';if(!options._RicoOptionsProcessed){if(options.onComplete)
options.onRicoComplete=options.onComplete;if(options.overrideOnComplete)
options.onComplete=options.overrideOnComplete;else
options.onComplete=this._onRequestComplete.bind(this);options._RicoOptionsProcessed=true;}
this.options={requestHeaders:requestHeaders,parameters:options.parameters,postBody:xmlDoc,method:sendMethod,onComplete:options.onComplete};Object.extend(this.options,options);return this.options;},_createQueryString:function(theArgs,offset){var queryString=""
for(var i=offset;i<theArgs.length;i++){if(i!=offset)
queryString+="&";var anArg=theArgs[i];if(anArg.name!=undefined&&anArg.value!=undefined){queryString+=anArg.name+"="+escape(anArg.value);}
else{var ePos=anArg.indexOf('=');var argName=anArg.substring(0,ePos);var argValue=anArg.substring(ePos+1);queryString+=argName+"="+escape(argValue);}}
return queryString;},_onRequestComplete:function(request){if(!request)
return;if(request.status!=200)
return;var response=request.responseXML.getElementsByTagName("ajax-response");if(response==null||response.length!=1)
return;this._processAjaxResponse(response[0].childNodes);var onRicoComplete=this.options.onRicoComplete;if(onRicoComplete!=null)
onRicoComplete();},_processAjaxResponse:function(xmlResponseElements){for(var i=0;i<xmlResponseElements.length;i++){var responseElement=xmlResponseElements[i];if(responseElement.nodeType!=1)
continue;var responseType=responseElement.getAttribute("type");var responseId=responseElement.getAttribute("id");if(responseType=="object")
this._processAjaxObjectUpdate(this.ajaxObjects[responseId],responseElement);else if(responseType=="element")
this._processAjaxElementUpdate(this.ajaxElements[responseId],responseElement);else
alert('unrecognized AjaxResponse type : '+responseType);}},_processAjaxObjectUpdate:function(ajaxObject,responseElement){ajaxObject.ajaxUpdate(responseElement);},_processAjaxElementUpdate:function(ajaxElement,responseElement){ajaxElement.innerHTML=RicoUtil.getContentAsString(responseElement);}}
var ajaxEngine=new Rico.AjaxEngine();Rico.Color=Class.create();Rico.Color.prototype={initialize:function(red,green,blue){this.rgb={r:red,g:green,b:blue};},setRed:function(r){this.rgb.r=r;},setGreen:function(g){this.rgb.g=g;},setBlue:function(b){this.rgb.b=b;},setHue:function(h){var hsb=this.asHSB();hsb.h=h;this.rgb=Rico.Color.HSBtoRGB(hsb.h,hsb.s,hsb.b);},setSaturation:function(s){var hsb=this.asHSB();hsb.s=s;this.rgb=Rico.Color.HSBtoRGB(hsb.h,hsb.s,hsb.b);},setBrightness:function(b){var hsb=this.asHSB();hsb.b=b;this.rgb=Rico.Color.HSBtoRGB(hsb.h,hsb.s,hsb.b);},darken:function(percent){var hsb=this.asHSB();this.rgb=Rico.Color.HSBtoRGB(hsb.h,hsb.s,Math.max(hsb.b-percent,0));},brighten:function(percent){var hsb=this.asHSB();this.rgb=Rico.Color.HSBtoRGB(hsb.h,hsb.s,Math.min(hsb.b+percent,1));},blend:function(other){this.rgb.r=Math.floor((this.rgb.r+other.rgb.r)/2);this.rgb.g=Math.floor((this.rgb.g+other.rgb.g)/2);this.rgb.b=Math.floor((this.rgb.b+other.rgb.b)/2);},isBright:function(){var hsb=this.asHSB();return this.asHSB().b>0.5;},isDark:function(){return!this.isBright();},asRGB:function(){return"rgb("+this.rgb.r+","+this.rgb.g+","+this.rgb.b+")";},asHex:function(){return"#"+this.rgb.r.toColorPart()+this.rgb.g.toColorPart()+this.rgb.b.toColorPart();},asHSB:function(){return Rico.Color.RGBtoHSB(this.rgb.r,this.rgb.g,this.rgb.b);},toString:function(){return this.asHex();}};Rico.Color.createFromHex=function(hexCode){if(hexCode.length==4){var shortHexCode=hexCode;var hexCode='#';for(var i=1;i<4;i++)hexCode+=(shortHexCode.charAt(i)+
shortHexCode.charAt(i));}
if(hexCode.indexOf('#')==0)
hexCode=hexCode.substring(1);var red=hexCode.substring(0,2);var green=hexCode.substring(2,4);var blue=hexCode.substring(4,6);return new Rico.Color(parseInt(red,16),parseInt(green,16),parseInt(blue,16));}
Rico.Color.createColorFromBackground=function(elem){var actualColor=RicoUtil.getElementsComputedStyle($(elem),"backgroundColor","background-color");if(actualColor=="transparent"&&elem.parentNode)
return Rico.Color.createColorFromBackground(elem.parentNode);if(actualColor==null)
return new Rico.Color(255,255,255);if(actualColor.indexOf("rgb(")==0){var colors=actualColor.substring(4,actualColor.length-1);var colorArray=colors.split(",");return new Rico.Color(parseInt(colorArray[0]),parseInt(colorArray[1]),parseInt(colorArray[2]));}
else if(actualColor.indexOf("#")==0){return Rico.Color.createFromHex(actualColor);}
else
return new Rico.Color(255,255,255);}
Rico.Color.HSBtoRGB=function(hue,saturation,brightness){var red=0;var green=0;var blue=0;if(saturation==0){red=parseInt(brightness*255.0+0.5);green=red;blue=red;}
else{var h=(hue-Math.floor(hue))*6.0;var f=h-Math.floor(h);var p=brightness*(1.0-saturation);var q=brightness*(1.0-saturation*f);var t=brightness*(1.0-(saturation*(1.0-f)));switch(parseInt(h)){case 0:red=(brightness*255.0+0.5);green=(t*255.0+0.5);blue=(p*255.0+0.5);break;case 1:red=(q*255.0+0.5);green=(brightness*255.0+0.5);blue=(p*255.0+0.5);break;case 2:red=(p*255.0+0.5);green=(brightness*255.0+0.5);blue=(t*255.0+0.5);break;case 3:red=(p*255.0+0.5);green=(q*255.0+0.5);blue=(brightness*255.0+0.5);break;case 4:red=(t*255.0+0.5);green=(p*255.0+0.5);blue=(brightness*255.0+0.5);break;case 5:red=(brightness*255.0+0.5);green=(p*255.0+0.5);blue=(q*255.0+0.5);break;}}
return{r:parseInt(red),g:parseInt(green),b:parseInt(blue)};}
Rico.Color.RGBtoHSB=function(r,g,b){var hue;var saturation;var brightness;var cmax=(r>g)?r:g;if(b>cmax)
cmax=b;var cmin=(r<g)?r:g;if(b<cmin)
cmin=b;brightness=cmax/255.0;if(cmax!=0)
saturation=(cmax-cmin)/cmax;else
saturation=0;if(saturation==0)
hue=0;else{var redc=(cmax-r)/(cmax-cmin);var greenc=(cmax-g)/(cmax-cmin);var bluec=(cmax-b)/(cmax-cmin);if(r==cmax)
hue=bluec-greenc;else if(g==cmax)
hue=2.0+redc-bluec;else
hue=4.0+greenc-redc;hue=hue/6.0;if(hue<0)
hue=hue+1.0;}
return{h:hue,s:saturation,b:brightness};}
Rico.Corner={round:function(e,options){var e=$(e);this._setOptions(options);var color=this.options.color;if(this.options.color=="fromElement")
color=this._background(e);var bgColor=this.options.bgColor;if(this.options.bgColor=="fromParent")
bgColor=this._background(e.offsetParent);this._roundCornersImpl(e,color,bgColor);},_roundCornersImpl:function(e,color,bgColor){if(this.options.border)
this._renderBorder(e,bgColor);if(this._isTopRounded())
this._roundTopCorners(e,color,bgColor);if(this._isBottomRounded())
this._roundBottomCorners(e,color,bgColor);},_renderBorder:function(el,bgColor){var borderValue="1px solid "+this._borderColor(bgColor);var borderL="border-left: "+borderValue;var borderR="border-right: "+borderValue;var style="style='"+borderL+";"+borderR+"'";el.innerHTML="<div "+style+">"+el.innerHTML+"</div>"},_roundTopCorners:function(el,color,bgColor){var corner=this._createCorner(bgColor);for(var i=0;i<this.options.numSlices;i++)
corner.appendChild(this._createCornerSlice(color,bgColor,i,"top"));el.style.paddingTop=0;el.insertBefore(corner,el.firstChild);},_roundBottomCorners:function(el,color,bgColor){var corner=this._createCorner(bgColor);for(var i=(this.options.numSlices-1);i>=0;i--)
corner.appendChild(this._createCornerSlice(color,bgColor,i,"bottom"));el.style.paddingBottom=0;el.appendChild(corner);},_createCorner:function(bgColor){var corner=document.createElement("div");corner.style.backgroundColor=(this._isTransparent()?"transparent":bgColor);return corner;},_createCornerSlice:function(color,bgColor,n,position){var slice=document.createElement("span");var inStyle=slice.style;inStyle.backgroundColor=color;inStyle.display="block";inStyle.height="1px";inStyle.overflow="hidden";inStyle.fontSize="1px";var borderColor=this._borderColor(color,bgColor);if(this.options.border&&n==0){inStyle.borderTopStyle="solid";inStyle.borderTopWidth="1px";inStyle.borderLeftWidth="0px";inStyle.borderRightWidth="0px";inStyle.borderBottomWidth="0px";inStyle.height="0px";inStyle.borderColor=borderColor;}
else if(borderColor){inStyle.borderColor=borderColor;inStyle.borderStyle="solid";inStyle.borderWidth="0px 1px";}
if(!this.options.compact&&(n==(this.options.numSlices-1)))
inStyle.height="2px";this._setMargin(slice,n,position);this._setBorder(slice,n,position);return slice;},_setOptions:function(options){this.options={corners:"all",color:"fromElement",bgColor:"fromParent",blend:true,border:false,compact:false}
Object.extend(this.options,options||{});this.options.numSlices=this.options.compact?2:4;if(this._isTransparent())
this.options.blend=false;},_whichSideTop:function(){if(this._hasString(this.options.corners,"all","top"))
return"";if(this.options.corners.indexOf("tl")>=0&&this.options.corners.indexOf("tr")>=0)
return"";if(this.options.corners.indexOf("tl")>=0)
return"left";else if(this.options.corners.indexOf("tr")>=0)
return"right";return"";},_whichSideBottom:function(){if(this._hasString(this.options.corners,"all","bottom"))
return"";if(this.options.corners.indexOf("bl")>=0&&this.options.corners.indexOf("br")>=0)
return"";if(this.options.corners.indexOf("bl")>=0)
return"left";else if(this.options.corners.indexOf("br")>=0)
return"right";return"";},_borderColor:function(color,bgColor){if(color=="transparent")
return bgColor;else if(this.options.border)
return this.options.border;else if(this.options.blend)
return this._blend(bgColor,color);else
return"";},_setMargin:function(el,n,corners){var marginSize=this._marginSize(n);var whichSide=corners=="top"?this._whichSideTop():this._whichSideBottom();if(whichSide=="left"){el.style.marginLeft=marginSize+"px";el.style.marginRight="0px";}
else if(whichSide=="right"){el.style.marginRight=marginSize+"px";el.style.marginLeft="0px";}
else{el.style.marginLeft=marginSize+"px";el.style.marginRight=marginSize+"px";}},_setBorder:function(el,n,corners){var borderSize=this._borderSize(n);var whichSide=corners=="top"?this._whichSideTop():this._whichSideBottom();if(whichSide=="left"){el.style.borderLeftWidth=borderSize+"px";el.style.borderRightWidth="0px";}
else if(whichSide=="right"){el.style.borderRightWidth=borderSize+"px";el.style.borderLeftWidth="0px";}
else{el.style.borderLeftWidth=borderSize+"px";el.style.borderRightWidth=borderSize+"px";}
if(this.options.border!=false)
el.style.borderLeftWidth=borderSize+"px";el.style.borderRightWidth=borderSize+"px";},_marginSize:function(n){if(this._isTransparent())
return 0;var marginSizes=[5,3,2,1];var blendedMarginSizes=[3,2,1,0];var compactMarginSizes=[2,1];var smBlendedMarginSizes=[1,0];if(this.options.compact&&this.options.blend)
return smBlendedMarginSizes[n];else if(this.options.compact)
return compactMarginSizes[n];else if(this.options.blend)
return blendedMarginSizes[n];else
return marginSizes[n];},_borderSize:function(n){var transparentBorderSizes=[5,3,2,1];var blendedBorderSizes=[2,1,1,1];var compactBorderSizes=[1,0];var actualBorderSizes=[0,2,0,0];if(this.options.compact&&(this.options.blend||this._isTransparent()))
return 1;else if(this.options.compact)
return compactBorderSizes[n];else if(this.options.blend)
return blendedBorderSizes[n];else if(this.options.border)
return actualBorderSizes[n];else if(this._isTransparent())
return transparentBorderSizes[n];return 0;},_hasString:function(str){for(var i=1;i<arguments.length;i++)if(str.indexOf(arguments[i])>=0)return true;return false;},_blend:function(c1,c2){var cc1=Rico.Color.createFromHex(c1);cc1.blend(Rico.Color.createFromHex(c2));return cc1;},_background:function(el){try{return Rico.Color.createColorFromBackground(el).asHex();}catch(err){return"#ffffff";}},_isTransparent:function(){return this.options.color=="transparent";},_isTopRounded:function(){return this._hasString(this.options.corners,"all","top","tl","tr");},_isBottomRounded:function(){return this._hasString(this.options.corners,"all","bottom","bl","br");},_hasSingleTextChild:function(el){return el.childNodes.length==1&&el.childNodes[0].nodeType==3;}}
Rico.DragAndDrop=Class.create();Rico.DragAndDrop.prototype={initialize:function(){this.dropZones=new Array();this.draggables=new Array();this.currentDragObjects=new Array();this.dragElement=null;this.lastSelectedDraggable=null;this.currentDragObjectVisible=false;this.interestedInMotionEvents=false;this._mouseDown=this._mouseDownHandler.bindAsEventListener(this);this._mouseMove=this._mouseMoveHandler.bindAsEventListener(this);this._mouseUp=this._mouseUpHandler.bindAsEventListener(this);},registerDropZone:function(aDropZone){this.dropZones[this.dropZones.length]=aDropZone;},deregisterDropZone:function(aDropZone){var newDropZones=new Array();var j=0;for(var i=0;i<this.dropZones.length;i++){if(this.dropZones[i]!=aDropZone)
newDropZones[j++]=this.dropZones[i];}
this.dropZones=newDropZones;},clearDropZones:function(){this.dropZones=new Array();},registerDraggable:function(aDraggable){this.draggables[this.draggables.length]=aDraggable;this._addMouseDownHandler(aDraggable);},clearSelection:function(){for(var i=0;i<this.currentDragObjects.length;i++)
this.currentDragObjects[i].deselect();this.currentDragObjects=new Array();this.lastSelectedDraggable=null;},hasSelection:function(){return this.currentDragObjects.length>0;},setStartDragFromElement:function(e,mouseDownElement){this.origPos=RicoUtil.toDocumentPosition(mouseDownElement);this.startx=e.screenX-this.origPos.x;this.starty=e.screenY-this.origPos.y;this.interestedInMotionEvents=this.hasSelection();this._terminateEvent(e);},updateSelection:function(draggable,extendSelection){if(!extendSelection)
this.clearSelection();if(draggable.isSelected()){this.currentDragObjects.removeItem(draggable);draggable.deselect();if(draggable==this.lastSelectedDraggable)
this.lastSelectedDraggable=null;}
else{this.currentDragObjects[this.currentDragObjects.length]=draggable;draggable.select();this.lastSelectedDraggable=draggable;}},_mouseDownHandler:function(e){if(arguments.length==0)
e=event;var nsEvent=e.which!=undefined;if((nsEvent&&e.which!=1)||(!nsEvent&&e.button!=1))
return;var eventTarget=e.target?e.target:e.srcElement;var draggableObject=eventTarget.draggable;var candidate=eventTarget;while(draggableObject==null&&candidate.parentNode){candidate=candidate.parentNode;draggableObject=candidate.draggable;}
if(draggableObject==null)
return;this.updateSelection(draggableObject,e.ctrlKey);if(this.hasSelection())
for(var i=0;i<this.dropZones.length;i++)
this.dropZones[i].clearPositionCache();this.setStartDragFromElement(e,draggableObject.getMouseDownHTMLElement());},_mouseMoveHandler:function(e){var nsEvent=e.which!=undefined;if(!this.interestedInMotionEvents){return;}
if(!this.hasSelection())
return;if(!this.currentDragObjectVisible)
this._startDrag(e);if(!this.activatedDropZones)
this._activateRegisteredDropZones();this._updateDraggableLocation(e);this._updateDropZonesHover(e);this._terminateEvent(e);},_makeDraggableObjectVisible:function(e)
{if(!this.hasSelection())
return;var dragElement;if(this.currentDragObjects.length>1)
dragElement=this.currentDragObjects[0].getMultiObjectDragGUI(this.currentDragObjects);else
dragElement=this.currentDragObjects[0].getSingleObjectDragGUI();if(RicoUtil.getElementsComputedStyle(dragElement,"position")!="absolute")
dragElement.style.position="absolute";if(dragElement.parentNode==null||dragElement.parentNode.nodeType==11)
document.body.appendChild(dragElement);this.dragElement=dragElement;this._updateDraggableLocation(e);this.currentDragObjectVisible=true;},_leftOffset:function(e){return e.offsetX?document.body.scrollLeft:0},_topOffset:function(e){return e.offsetY?document.body.scrollTop:0},_updateDraggableLocation:function(e){var dragObjectStyle=this.dragElement.style;dragObjectStyle.left=(e.screenX+this._leftOffset(e)-this.startx)+"px"
dragObjectStyle.top=(e.screenY+this._topOffset(e)-this.starty)+"px";},_updateDropZonesHover:function(e){var n=this.dropZones.length;for(var i=0;i<n;i++){if(!this._mousePointInDropZone(e,this.dropZones[i]))
this.dropZones[i].hideHover();}
for(var i=0;i<n;i++){if(this._mousePointInDropZone(e,this.dropZones[i])){if(this.dropZones[i].canAccept(this.currentDragObjects))
this.dropZones[i].showHover();}}},_startDrag:function(e){for(var i=0;i<this.currentDragObjects.length;i++)
this.currentDragObjects[i].startDrag();this._makeDraggableObjectVisible(e);},_mouseUpHandler:function(e){if(!this.hasSelection())
return;var nsEvent=e.which!=undefined;if((nsEvent&&e.which!=1)||(!nsEvent&&e.button!=1))
return;this.interestedInMotionEvents=false;if(this.dragElement==null){this._terminateEvent(e);return;}
if(this._placeDraggableInDropZone(e))
this._completeDropOperation(e);else{this._terminateEvent(e);new Rico.Effect.Position(this.dragElement,this.origPos.x,this.origPos.y,200,20,{complete:this._doCancelDragProcessing.bind(this)});}
Event.stopObserving(document.body,"mousemove",this._mouseMove);Event.stopObserving(document.body,"mouseup",this._mouseUp);},_retTrue:function(){return true;},_completeDropOperation:function(e){if(this.dragElement!=this.currentDragObjects[0].getMouseDownHTMLElement()){if(this.dragElement.parentNode!=null)
this.dragElement.parentNode.removeChild(this.dragElement);}
this._deactivateRegisteredDropZones();this._endDrag();this.clearSelection();this.dragElement=null;this.currentDragObjectVisible=false;this._terminateEvent(e);},_doCancelDragProcessing:function(){this._cancelDrag();if(this.dragElement!=this.currentDragObjects[0].getMouseDownHTMLElement()&&this.dragElement)
if(this.dragElement.parentNode!=null)
this.dragElement.parentNode.removeChild(this.dragElement);this._deactivateRegisteredDropZones();this.dragElement=null;this.currentDragObjectVisible=false;},_placeDraggableInDropZone:function(e){var foundDropZone=false;var n=this.dropZones.length;for(var i=0;i<n;i++){if(this._mousePointInDropZone(e,this.dropZones[i])){if(this.dropZones[i].canAccept(this.currentDragObjects)){this.dropZones[i].hideHover();this.dropZones[i].accept(this.currentDragObjects);foundDropZone=true;break;}}}
return foundDropZone;},_cancelDrag:function(){for(var i=0;i<this.currentDragObjects.length;i++)
this.currentDragObjects[i].cancelDrag();},_endDrag:function(){for(var i=0;i<this.currentDragObjects.length;i++)
this.currentDragObjects[i].endDrag();},_mousePointInDropZone:function(e,dropZone){var absoluteRect=dropZone.getAbsoluteRect();return e.clientX>absoluteRect.left+this._leftOffset(e)&&e.clientX<absoluteRect.right+this._leftOffset(e)&&e.clientY>absoluteRect.top+this._topOffset(e)&&e.clientY<absoluteRect.bottom+this._topOffset(e);},_addMouseDownHandler:function(aDraggable)
{htmlElement=aDraggable.getMouseDownHTMLElement();if(htmlElement!=null){htmlElement.draggable=aDraggable;Event.observe(htmlElement,"mousedown",this._onmousedown.bindAsEventListener(this));Event.observe(htmlElement,"mousedown",this._mouseDown);}},_activateRegisteredDropZones:function(){var n=this.dropZones.length;for(var i=0;i<n;i++){var dropZone=this.dropZones[i];if(dropZone.canAccept(this.currentDragObjects))
dropZone.activate();}
this.activatedDropZones=true;},_deactivateRegisteredDropZones:function(){var n=this.dropZones.length;for(var i=0;i<n;i++)
this.dropZones[i].deactivate();this.activatedDropZones=false;},_onmousedown:function(){Event.observe(document.body,"mousemove",this._mouseMove);Event.observe(document.body,"mouseup",this._mouseUp);},_terminateEvent:function(e){if(e.stopPropagation!=undefined)
e.stopPropagation();else if(e.cancelBubble!=undefined)
e.cancelBubble=true;if(e.preventDefault!=undefined)
e.preventDefault();else
e.returnValue=false;},initializeEventHandlers:function(){if(typeof document.implementation!="undefined"&&document.implementation.hasFeature("HTML","1.0")&&document.implementation.hasFeature("Events","2.0")&&document.implementation.hasFeature("CSS","2.0")){document.addEventListener("mouseup",this._mouseUpHandler.bindAsEventListener(this),false);document.addEventListener("mousemove",this._mouseMoveHandler.bindAsEventListener(this),false);}
else{document.attachEvent("onmouseup",this._mouseUpHandler.bindAsEventListener(this));document.attachEvent("onmousemove",this._mouseMoveHandler.bindAsEventListener(this));}}}
var dndMgr=new Rico.DragAndDrop();dndMgr.initializeEventHandlers();Rico.Draggable=Class.create();Rico.Draggable.prototype={initialize:function(type,htmlElement){this.type=type;this.htmlElement=$(htmlElement);this.selected=false;},getMouseDownHTMLElement:function(){return this.htmlElement;},select:function(){this.selected=true;if(this.showingSelected)
return;var htmlElement=this.getMouseDownHTMLElement();var color=Rico.Color.createColorFromBackground(htmlElement);color.isBright()?color.darken(0.033):color.brighten(0.033);this.saveBackground=RicoUtil.getElementsComputedStyle(htmlElement,"backgroundColor","background-color");htmlElement.style.backgroundColor=color.asHex();this.showingSelected=true;},deselect:function(){this.selected=false;if(!this.showingSelected)
return;var htmlElement=this.getMouseDownHTMLElement();htmlElement.style.backgroundColor=this.saveBackground;this.showingSelected=false;},isSelected:function(){return this.selected;},startDrag:function(){},cancelDrag:function(){},endDrag:function(){},getSingleObjectDragGUI:function(){return this.htmlElement;},getMultiObjectDragGUI:function(draggables){return this.htmlElement;},getDroppedGUI:function(){return this.htmlElement;},toString:function(){return this.type+":"+this.htmlElement+":";}}
Rico.Dropzone=Class.create();Rico.Dropzone.prototype={initialize:function(htmlElement){this.htmlElement=$(htmlElement);this.absoluteRect=null;},getHTMLElement:function(){return this.htmlElement;},clearPositionCache:function(){this.absoluteRect=null;},getAbsoluteRect:function(){if(this.absoluteRect==null){var htmlElement=this.getHTMLElement();var pos=RicoUtil.toViewportPosition(htmlElement);this.absoluteRect={top:pos.y,left:pos.x,bottom:pos.y+htmlElement.offsetHeight,right:pos.x+htmlElement.offsetWidth};}
return this.absoluteRect;},activate:function(){var htmlElement=this.getHTMLElement();if(htmlElement==null||this.showingActive)
return;this.showingActive=true;this.saveBackgroundColor=htmlElement.style.backgroundColor;var fallbackColor="#ffea84";var currentColor=Rico.Color.createColorFromBackground(htmlElement);if(currentColor==null)
htmlElement.style.backgroundColor=fallbackColor;else{currentColor.isBright()?currentColor.darken(0.2):currentColor.brighten(0.2);htmlElement.style.backgroundColor=currentColor.asHex();}},deactivate:function(){var htmlElement=this.getHTMLElement();if(htmlElement==null||!this.showingActive)
return;htmlElement.style.backgroundColor=this.saveBackgroundColor;this.showingActive=false;this.saveBackgroundColor=null;},showHover:function(){var htmlElement=this.getHTMLElement();if(htmlElement==null||this.showingHover)
return;this.saveBorderWidth=htmlElement.style.borderWidth;this.saveBorderStyle=htmlElement.style.borderStyle;this.saveBorderColor=htmlElement.style.borderColor;this.showingHover=true;htmlElement.style.borderWidth="1px";htmlElement.style.borderStyle="solid";htmlElement.style.borderColor="#ffff00";},hideHover:function(){var htmlElement=this.getHTMLElement();if(htmlElement==null||!this.showingHover)
return;htmlElement.style.borderWidth=this.saveBorderWidth;htmlElement.style.borderStyle=this.saveBorderStyle;htmlElement.style.borderColor=this.saveBorderColor;this.showingHover=false;},canAccept:function(draggableObjects){return true;},accept:function(draggableObjects){var htmlElement=this.getHTMLElement();if(htmlElement==null)
return;n=draggableObjects.length;for(var i=0;i<n;i++)
{var theGUI=draggableObjects[i].getDroppedGUI();if(RicoUtil.getElementsComputedStyle(theGUI,"position")=="absolute")
{theGUI.style.position="static";theGUI.style.top="";theGUI.style.top="";}
htmlElement.appendChild(theGUI);}}}
Rico.Effect={};Rico.Effect.SizeAndPosition=Class.create();Rico.Effect.SizeAndPosition.prototype={initialize:function(element,x,y,w,h,duration,steps,options){this.element=$(element);this.x=x;this.y=y;this.w=w;this.h=h;this.duration=duration;this.steps=steps;this.options=arguments[7]||{};this.sizeAndPosition();},sizeAndPosition:function(){if(this.isFinished()){if(this.options.complete)this.options.complete(this);return;}
if(this.timer)
clearTimeout(this.timer);var stepDuration=Math.round(this.duration/this.steps);var currentX=this.element.offsetLeft;var currentY=this.element.offsetTop;var currentW=this.element.offsetWidth;var currentH=this.element.offsetHeight;this.x=(this.x)?this.x:currentX;this.y=(this.y)?this.y:currentY;this.w=(this.w)?this.w:currentW;this.h=(this.h)?this.h:currentH;var difX=this.steps>0?(this.x-currentX)/this.steps:0;var difY=this.steps>0?(this.y-currentY)/this.steps:0;var difW=this.steps>0?(this.w-currentW)/this.steps:0;var difH=this.steps>0?(this.h-currentH)/this.steps:0;this.moveBy(difX,difY);this.resizeBy(difW,difH);this.duration-=stepDuration;this.steps--;this.timer=setTimeout(this.sizeAndPosition.bind(this),stepDuration);},isFinished:function(){return this.steps<=0;},moveBy:function(difX,difY){var currentLeft=this.element.offsetLeft;var currentTop=this.element.offsetTop;var intDifX=parseInt(difX);var intDifY=parseInt(difY);var style=this.element.style;if(intDifX!=0)
style.left=(currentLeft+intDifX)+"px";if(intDifY!=0)
style.top=(currentTop+intDifY)+"px";},resizeBy:function(difW,difH){var currentWidth=this.element.offsetWidth;var currentHeight=this.element.offsetHeight;var intDifW=parseInt(difW);var intDifH=parseInt(difH);var style=this.element.style;if(intDifW!=0)
style.width=(currentWidth+intDifW)+"px";if(intDifH!=0)
style.height=(currentHeight+intDifH)+"px";}}
Rico.Effect.Size=Class.create();Rico.Effect.Size.prototype={initialize:function(element,w,h,duration,steps,options){new Rico.Effect.SizeAndPosition(element,null,null,w,h,duration,steps,options);}}
Rico.Effect.Position=Class.create();Rico.Effect.Position.prototype={initialize:function(element,x,y,duration,steps,options){new Rico.Effect.SizeAndPosition(element,x,y,null,null,duration,steps,options);}}
Rico.Effect.Round=Class.create();Rico.Effect.Round.prototype={initialize:function(tagName,className,options){var elements=document.getElementsByTagAndClassName(tagName,className);for(var i=0;i<elements.length;i++)
Rico.Corner.round(elements[i],options);}};Rico.Effect.FadeTo=Class.create();Rico.Effect.FadeTo.prototype={initialize:function(element,opacity,duration,steps,options){this.element=$(element);this.opacity=opacity;this.duration=duration;this.steps=steps;this.options=arguments[4]||{};this.fadeTo();},fadeTo:function(){if(this.isFinished()){if(this.options.complete)this.options.complete(this);return;}
if(this.timer)
clearTimeout(this.timer);var stepDuration=Math.round(this.duration/this.steps);var currentOpacity=this.getElementOpacity();var delta=this.steps>0?(this.opacity-currentOpacity)/this.steps:0;this.changeOpacityBy(delta);this.duration-=stepDuration;this.steps--;this.timer=setTimeout(this.fadeTo.bind(this),stepDuration);},changeOpacityBy:function(v){var currentOpacity=this.getElementOpacity();var newOpacity=Math.max(0,Math.min(currentOpacity+v,1));this.element.ricoOpacity=newOpacity;this.element.style.filter="alpha(opacity:"+Math.round(newOpacity*100)+")";this.element.style.opacity=newOpacity;;},isFinished:function(){return this.steps<=0;},getElementOpacity:function(){if(this.element.ricoOpacity==undefined){var opacity=RicoUtil.getElementsComputedStyle(this.element,'opacity');this.element.ricoOpacity=opacity!=undefined?opacity:1.0;}
return parseFloat(this.element.ricoOpacity);}}
Rico.Effect.AccordionSize=Class.create();Rico.Effect.AccordionSize.prototype={initialize:function(e1,e2,start,end,duration,steps,options){this.e1=$(e1);this.e2=$(e2);this.start=start;this.end=end;this.duration=duration;this.steps=steps;this.options=arguments[6]||{};this.accordionSize();},accordionSize:function(){if(this.isFinished()){this.e1.style.height=this.start+"px";this.e2.style.height=this.end+"px";if(this.options.complete)
this.options.complete(this);return;}
if(this.timer)
clearTimeout(this.timer);var stepDuration=Math.round(this.duration/this.steps);var diff=this.steps>0?(parseInt(this.e1.offsetHeight)-this.start)/this.steps:0;this.resizeBy(diff);this.duration-=stepDuration;this.steps--;this.timer=setTimeout(this.accordionSize.bind(this),stepDuration);},isFinished:function(){return this.steps<=0;},resizeBy:function(diff){var h1Height=this.e1.offsetHeight;var h2Height=this.e2.offsetHeight;var intDiff=parseInt(diff);if(diff!=0){this.e1.style.height=(h1Height-intDiff)+"px";this.e2.style.height=(h2Height+intDiff)+"px";}}};Rico.LiveGridMetaData=Class.create();Rico.LiveGridMetaData.prototype={initialize:function(pageSize,totalRows,columnCount,options){this.pageSize=pageSize;this.totalRows=totalRows;this.setOptions(options);this.ArrowHeight=16;this.columnCount=columnCount;},setOptions:function(options){this.options={largeBufferSize:7.0,nearLimitFactor:0.2};Object.extend(this.options,options||{});},getPageSize:function(){return this.pageSize;},getTotalRows:function(){return this.totalRows;},setTotalRows:function(n){this.totalRows=n;},getLargeBufferSize:function(){return parseInt(this.options.largeBufferSize*this.pageSize);},getLimitTolerance:function(){return parseInt(this.getLargeBufferSize()*this.options.nearLimitFactor);}};Rico.LiveGridScroller=Class.create();Rico.LiveGridScroller.prototype={initialize:function(liveGrid,viewPort){this.isIE=navigator.userAgent.toLowerCase().indexOf("msie")>=0;this.liveGrid=liveGrid;this.metaData=liveGrid.metaData;this.createScrollBar();this.scrollTimeout=null;this.lastScrollPos=0;this.viewPort=viewPort;this.rows=new Array();},isUnPlugged:function(){return this.scrollerDiv.onscroll==null;},plugin:function(){this.scrollerDiv.onscroll=this.handleScroll.bindAsEventListener(this);},unplug:function(){this.scrollerDiv.onscroll=null;},sizeIEHeaderHack:function(){if(!this.isIE)return;var headerTable=$(this.liveGrid.tableId+"_header");if(headerTable)
headerTable.rows[0].cells[0].style.width=(headerTable.rows[0].cells[0].offsetWidth+1)+"px";},createScrollBar:function(){var visibleHeight=this.liveGrid.viewPort.visibleHeight();this.scrollerDiv=document.createElement("div");var scrollerStyle=this.scrollerDiv.style;scrollerStyle.borderRight=this.liveGrid.options.scrollerBorderRight;scrollerStyle.position="relative";scrollerStyle.left=this.isIE?"-6px":"-3px";scrollerStyle.width="19px";scrollerStyle.height=visibleHeight+"px";scrollerStyle.overflow="auto";this.heightDiv=document.createElement("div");this.heightDiv.style.width="1px";this.heightDiv.style.height=parseInt(visibleHeight*this.metaData.getTotalRows()/this.metaData.getPageSize())+"px";this.scrollerDiv.appendChild(this.heightDiv);this.scrollerDiv.onscroll=this.handleScroll.bindAsEventListener(this);var table=this.liveGrid.table;table.parentNode.parentNode.insertBefore(this.scrollerDiv,table.parentNode.nextSibling);var eventName=this.isIE?"mousewheel":"DOMMouseScroll";Event.observe(table,eventName,function(evt){if(evt.wheelDelta>=0||evt.detail<0)
this.scrollerDiv.scrollTop-=(2*this.viewPort.rowHeight);else
this.scrollerDiv.scrollTop+=(2*this.viewPort.rowHeight);this.handleScroll(false);}.bindAsEventListener(this),false);},updateSize:function(){var table=this.liveGrid.table;var visibleHeight=this.viewPort.visibleHeight();this.heightDiv.style.height=parseInt(visibleHeight*this.metaData.getTotalRows()/this.metaData.getPageSize())+"px";},rowToPixel:function(rowOffset){return(rowOffset/this.metaData.getTotalRows())*this.heightDiv.offsetHeight},moveScroll:function(rowOffset){this.scrollerDiv.scrollTop=this.rowToPixel(rowOffset);if(this.metaData.options.onscroll)
this.metaData.options.onscroll(this.liveGrid,rowOffset);},handleScroll:function(){if(this.scrollTimeout)
clearTimeout(this.scrollTimeout);var scrollDiff=this.lastScrollPos-this.scrollerDiv.scrollTop;if(scrollDiff!=0.00){var r=this.scrollerDiv.scrollTop%this.viewPort.rowHeight;if(r!=0){this.unplug();if(scrollDiff<0){this.scrollerDiv.scrollTop+=(this.viewPort.rowHeight-r);}else{this.scrollerDiv.scrollTop-=r;}
this.plugin();}}
var contentOffset=parseInt(this.scrollerDiv.scrollTop/this.viewPort.rowHeight);this.liveGrid.requestContentRefresh(contentOffset);this.viewPort.scrollTo(this.scrollerDiv.scrollTop);if(this.metaData.options.onscroll)
this.metaData.options.onscroll(this.liveGrid,contentOffset);this.scrollTimeout=setTimeout(this.scrollIdle.bind(this),1200);this.lastScrollPos=this.scrollerDiv.scrollTop;},scrollIdle:function(){if(this.metaData.options.onscrollidle)
this.metaData.options.onscrollidle();}};Rico.LiveGridBuffer=Class.create();Rico.LiveGridBuffer.prototype={initialize:function(metaData,viewPort){this.startPos=0;this.size=0;this.metaData=metaData;this.rows=new Array();this.updateInProgress=false;this.viewPort=viewPort;this.maxBufferSize=metaData.getLargeBufferSize()*2;this.maxFetchSize=metaData.getLargeBufferSize();this.lastOffset=0;},getBlankRow:function(){if(!this.blankRow){this.blankRow=new Array();for(var i=0;i<this.metaData.columnCount;i++)
this.blankRow[i]="&nbsp;";}
return this.blankRow;},loadRows:function(ajaxResponse){var rowsElement=ajaxResponse.getElementsByTagName('rows')[0];this.updateUI=rowsElement.getAttribute("update_ui")=="true"
var newRows=new Array()
var trs=rowsElement.getElementsByTagName("tr");for(var i=0;i<trs.length;i++){var row=newRows[i]=new Array();var cells=trs[i].getElementsByTagName("td");for(var j=0;j<cells.length;j++){var cell=cells[j];var convertSpaces=cell.getAttribute("convert_spaces")=="true";var cellContent=RicoUtil.getContentAsString(cell);row[j]=convertSpaces?this.convertSpaces(cellContent):cellContent;if(!row[j])
row[j]='&nbsp;';}}
return newRows;},update:function(ajaxResponse,start){var newRows=this.loadRows(ajaxResponse);if(this.rows.length==0){this.rows=newRows;this.size=this.rows.length;this.startPos=start;return;}
if(start>this.startPos){if(this.startPos+this.rows.length<start){this.rows=newRows;this.startPos=start;}else{this.rows=this.rows.concat(newRows.slice(0,newRows.length));if(this.rows.length>this.maxBufferSize){var fullSize=this.rows.length;this.rows=this.rows.slice(this.rows.length-this.maxBufferSize,this.rows.length)
this.startPos=this.startPos+(fullSize-this.rows.length);}}}else{if(start+newRows.length<this.startPos){this.rows=newRows;}else{this.rows=newRows.slice(0,this.startPos).concat(this.rows);if(this.rows.length>this.maxBufferSize)
this.rows=this.rows.slice(0,this.maxBufferSize)}
this.startPos=start;}
this.size=this.rows.length;},clear:function(){this.rows=new Array();this.startPos=0;this.size=0;},isOverlapping:function(start,size){return((start<this.endPos())&&(this.startPos<start+size))||(this.endPos()==0)},isInRange:function(position){return(position>=this.startPos)&&(position+this.metaData.getPageSize()<=this.endPos());},isNearingTopLimit:function(position){return position-this.startPos<this.metaData.getLimitTolerance();},endPos:function(){return this.startPos+this.rows.length;},isNearingBottomLimit:function(position){return this.endPos()-(position+this.metaData.getPageSize())<this.metaData.getLimitTolerance();},isAtTop:function(){return this.startPos==0;},isAtBottom:function(){return this.endPos()==this.metaData.getTotalRows();},isNearingLimit:function(position){return(!this.isAtTop()&&this.isNearingTopLimit(position))||(!this.isAtBottom()&&this.isNearingBottomLimit(position))},getFetchSize:function(offset){var adjustedOffset=this.getFetchOffset(offset);var adjustedSize=0;if(adjustedOffset>=this.startPos){var endFetchOffset=this.maxFetchSize+adjustedOffset;if(endFetchOffset>this.metaData.totalRows)
endFetchOffset=this.metaData.totalRows;adjustedSize=endFetchOffset-adjustedOffset;if(adjustedOffset==0&&adjustedSize<this.maxFetchSize){adjustedSize=this.maxFetchSize;}}else{var adjustedSize=this.startPos-adjustedOffset;if(adjustedSize>this.maxFetchSize)
adjustedSize=this.maxFetchSize;}
return adjustedSize;},getFetchOffset:function(offset){var adjustedOffset=offset;if(offset>this.startPos)
adjustedOffset=(offset>this.endPos())?offset:this.endPos();else{if(offset+this.maxFetchSize>=this.startPos){var adjustedOffset=this.startPos-this.maxFetchSize;if(adjustedOffset<0)
adjustedOffset=0;}}
this.lastOffset=adjustedOffset;return adjustedOffset;},getRows:function(start,count){var begPos=start-this.startPos
var endPos=begPos+count
if(endPos>this.size)
endPos=this.size
var results=new Array()
var index=0;for(var i=begPos;i<endPos;i++){results[index++]=this.rows[i]}
return results},convertSpaces:function(s){return s.split(" ").join("&nbsp;");}};Rico.GridViewPort=Class.create();Rico.GridViewPort.prototype={initialize:function(table,rowHeight,visibleRows,buffer,liveGrid){this.lastDisplayedStartPos=0;this.div=table.parentNode;this.table=table
this.rowHeight=rowHeight;this.div.style.height=(this.rowHeight*visibleRows)+"px";this.div.style.overflow="hidden";this.buffer=buffer;this.liveGrid=liveGrid;this.visibleRows=visibleRows+1;this.lastPixelOffset=0;this.startPos=0;},populateRow:function(htmlRow,row){for(var j=0;j<row.length;j++){htmlRow.cells[j].innerHTML=row[j]}},bufferChanged:function(){this.refreshContents(parseInt(this.lastPixelOffset/this.rowHeight));},clearRows:function(){if(!this.isBlank){this.liveGrid.table.className=this.liveGrid.options.loadingClass;for(var i=0;i<this.visibleRows;i++)
this.populateRow(this.table.rows[i],this.buffer.getBlankRow());this.isBlank=true;}},clearContents:function(){this.clearRows();this.scrollTo(0);this.startPos=0;this.lastStartPos=-1;},refreshContents:function(startPos){if(startPos==this.lastRowPos&&!this.isPartialBlank&&!this.isBlank){return;}
if((startPos+this.visibleRows<this.buffer.startPos)||(this.buffer.startPos+this.buffer.size<startPos)||(this.buffer.size==0)){this.clearRows();return;}
this.isBlank=false;var viewPrecedesBuffer=this.buffer.startPos>startPos
var contentStartPos=viewPrecedesBuffer?this.buffer.startPos:startPos;var contentEndPos=(this.buffer.startPos+this.buffer.size<startPos+this.visibleRows)?this.buffer.startPos+this.buffer.size:startPos+this.visibleRows;var rowSize=contentEndPos-contentStartPos;var rows=this.buffer.getRows(contentStartPos,rowSize);var blankSize=this.visibleRows-rowSize;var blankOffset=viewPrecedesBuffer?0:rowSize;var contentOffset=viewPrecedesBuffer?blankSize:0;for(var i=0;i<rows.length;i++){this.populateRow(this.table.rows[i+contentOffset],rows[i]);}
for(var i=0;i<blankSize;i++){this.populateRow(this.table.rows[i+blankOffset],this.buffer.getBlankRow());}
this.isPartialBlank=blankSize>0;this.lastRowPos=startPos;this.liveGrid.table.className=this.liveGrid.options.tableClass;var onRefreshComplete=this.liveGrid.options.onRefreshComplete;if(onRefreshComplete!=null)
onRefreshComplete();},scrollTo:function(pixelOffset){if(this.lastPixelOffset==pixelOffset)
return;this.refreshContents(parseInt(pixelOffset/this.rowHeight))
this.div.scrollTop=pixelOffset%this.rowHeight
this.lastPixelOffset=pixelOffset;},visibleHeight:function(){return parseInt(RicoUtil.getElementsComputedStyle(this.div,'height'));}};Rico.LiveGridRequest=Class.create();Rico.LiveGridRequest.prototype={initialize:function(requestOffset,options){this.requestOffset=requestOffset;}};Rico.LiveGrid=Class.create();Rico.LiveGrid.prototype={initialize:function(tableId,visibleRows,totalRows,url,options,ajaxOptions){this.options={tableClass:$(tableId).className,loadingClass:$(tableId).className,scrollerBorderRight:'1px solid #ababab',bufferTimeout:20000,sortAscendImg:'images/sort_asc.gif',sortDescendImg:'images/sort_desc.gif',sortImageWidth:9,sortImageHeight:5,ajaxSortURLParms:[],onRefreshComplete:null,requestParameters:null,inlineStyles:true};Object.extend(this.options,options||{});this.ajaxOptions={parameters:null};Object.extend(this.ajaxOptions,ajaxOptions||{});this.tableId=tableId;this.table=$(tableId);this.addLiveGridHtml();var columnCount=this.table.rows[0].cells.length;this.metaData=new Rico.LiveGridMetaData(visibleRows,totalRows,columnCount,options);this.buffer=new Rico.LiveGridBuffer(this.metaData);var rowCount=this.table.rows.length;this.viewPort=new Rico.GridViewPort(this.table,this.table.offsetHeight/rowCount,visibleRows,this.buffer,this);this.scroller=new Rico.LiveGridScroller(this,this.viewPort);this.options.sortHandler=this.sortHandler.bind(this);if($(tableId+'_header'))
this.sort=new Rico.LiveGridSort(tableId+'_header',this.options)
this.processingRequest=null;this.unprocessedRequest=null;this.initAjax(url);if(this.options.prefetchBuffer||this.options.prefetchOffset>0){var offset=0;if(this.options.offset){offset=this.options.offset;this.scroller.moveScroll(offset);this.viewPort.scrollTo(this.scroller.rowToPixel(offset));}
if(this.options.sortCol){this.sortCol=options.sortCol;this.sortDir=options.sortDir;}
this.requestContentRefresh(offset);}},addLiveGridHtml:function(){if(this.table.getElementsByTagName("thead").length>0){var tableHeader=this.table.cloneNode(true);tableHeader.setAttribute('id',this.tableId+'_header');tableHeader.setAttribute('class',this.table.className+'_header');for(var i=0;i<tableHeader.tBodies.length;i++)
tableHeader.removeChild(tableHeader.tBodies[i]);this.table.deleteTHead();this.table.parentNode.insertBefore(tableHeader,this.table);}
new Insertion.Before(this.table,"<div id='"+this.tableId+"_container'></div>");this.table.previousSibling.appendChild(this.table);new Insertion.Before(this.table,"<div id='"+this.tableId+"_viewport' style='float:left;'></div>");this.table.previousSibling.appendChild(this.table);},resetContents:function(){this.scroller.moveScroll(0);this.buffer.clear();this.viewPort.clearContents();},sortHandler:function(column){if(!column)return;this.sortCol=column.name;this.sortDir=column.currentSort;this.resetContents();this.requestContentRefresh(0)},adjustRowSize:function(){},setTotalRows:function(newTotalRows){this.resetContents();this.metaData.setTotalRows(newTotalRows);this.scroller.updateSize();},initAjax:function(url){ajaxEngine.registerRequest(this.tableId+'_request',url);ajaxEngine.registerAjaxObject(this.tableId+'_updater',this);},invokeAjax:function(){},handleTimedOut:function(){this.processingRequest=null;this.processQueuedRequest();},fetchBuffer:function(offset){if(this.buffer.isInRange(offset)&&!this.buffer.isNearingLimit(offset)){return;}
if(this.processingRequest){this.unprocessedRequest=new Rico.LiveGridRequest(offset);return;}
var bufferStartPos=this.buffer.getFetchOffset(offset);this.processingRequest=new Rico.LiveGridRequest(offset);this.processingRequest.bufferOffset=bufferStartPos;var fetchSize=this.buffer.getFetchSize(offset);var partialLoaded=false;var queryString
if(this.options.requestParameters)
queryString=this._createQueryString(this.options.requestParameters,0);queryString=(queryString==null)?'':queryString+'&';queryString=queryString+'id='+this.tableId+'&page_size='+fetchSize+'&offset='+bufferStartPos;if(this.sortCol)
queryString=queryString+'&sort_col='+escape(this.sortCol)+'&sort_dir='+this.sortDir;this.ajaxOptions.parameters=queryString;ajaxEngine.sendRequest(this.tableId+'_request',this.ajaxOptions);this.timeoutHandler=setTimeout(this.handleTimedOut.bind(this),this.options.bufferTimeout);},setRequestParams:function(){this.options.requestParameters=[];for(var i=0;i<arguments.length;i++)
this.options.requestParameters[i]=arguments[i];},requestContentRefresh:function(contentOffset){this.fetchBuffer(contentOffset);},ajaxUpdate:function(ajaxResponse){try{clearTimeout(this.timeoutHandler);this.buffer.update(ajaxResponse,this.processingRequest.bufferOffset);this.viewPort.bufferChanged();}
catch(err){}
finally{this.processingRequest=null;}
this.processQueuedRequest();},_createQueryString:function(theArgs,offset){var queryString=""
if(!theArgs)
return queryString;for(var i=offset;i<theArgs.length;i++){if(i!=offset)
queryString+="&";var anArg=theArgs[i];if(anArg.name!=undefined&&anArg.value!=undefined){queryString+=anArg.name+"="+escape(anArg.value);}
else{var ePos=anArg.indexOf('=');var argName=anArg.substring(0,ePos);var argValue=anArg.substring(ePos+1);queryString+=argName+"="+escape(argValue);}}
return queryString;},processQueuedRequest:function(){if(this.unprocessedRequest!=null){this.requestContentRefresh(this.unprocessedRequest.requestOffset);this.unprocessedRequest=null}}};Rico.LiveGridSort=Class.create();Rico.LiveGridSort.prototype={initialize:function(headerTableId,options){this.headerTableId=headerTableId;this.headerTable=$(headerTableId);this.options=options;this.setOptions();this.applySortBehavior();if(this.options.sortCol){this.setSortUI(this.options.sortCol,this.options.sortDir);}},setSortUI:function(columnName,sortDirection){var cols=this.options.columns;for(var i=0;i<cols.length;i++){if(cols[i].name==columnName){this.setColumnSort(i,sortDirection);break;}}},setOptions:function(){new Image().src=this.options.sortAscendImg;new Image().src=this.options.sortDescendImg;this.sort=this.options.sortHandler;if(!this.options.columns)
this.options.columns=this.introspectForColumnInfo();else{this.options.columns=this.convertToTableColumns(this.options.columns);}},applySortBehavior:function(){var headerRow=this.headerTable.rows[0];var headerCells=headerRow.cells;for(var i=0;i<headerCells.length;i++){this.addSortBehaviorToColumn(i,headerCells[i]);}},addSortBehaviorToColumn:function(n,cell){if(this.options.columns[n].isSortable()){cell.id=this.headerTableId+'_'+n;cell.style.cursor='pointer';cell.onclick=this.headerCellClicked.bindAsEventListener(this);cell.innerHTML=cell.innerHTML+'<span id="'+this.headerTableId+'_img_'+n+'">'
+'&nbsp;&nbsp;&nbsp;</span>';}},headerCellClicked:function(evt){var eventTarget=evt.target?evt.target:evt.srcElement;var cellId=eventTarget.id;var columnNumber=parseInt(cellId.substring(cellId.lastIndexOf('_')+1));var sortedColumnIndex=this.getSortedColumnIndex();if(sortedColumnIndex!=-1){if(sortedColumnIndex!=columnNumber){this.removeColumnSort(sortedColumnIndex);this.setColumnSort(columnNumber,Rico.TableColumn.SORT_ASC);}
else
this.toggleColumnSort(sortedColumnIndex);}
else
this.setColumnSort(columnNumber,Rico.TableColumn.SORT_ASC);if(this.options.sortHandler){this.options.sortHandler(this.options.columns[columnNumber]);}},removeColumnSort:function(n){this.options.columns[n].setUnsorted();this.setSortImage(n);},setColumnSort:function(n,direction){if(isNaN(n))return;this.options.columns[n].setSorted(direction);this.setSortImage(n);},toggleColumnSort:function(n){this.options.columns[n].toggleSort();this.setSortImage(n);},setSortImage:function(n){var sortDirection=this.options.columns[n].getSortDirection();var sortImageSpan=$(this.headerTableId+'_img_'+n);if(sortDirection==Rico.TableColumn.UNSORTED)
sortImageSpan.innerHTML='&nbsp;&nbsp;';else if(sortDirection==Rico.TableColumn.SORT_ASC)
sortImageSpan.innerHTML='&nbsp;&nbsp;<img width="'+this.options.sortImageWidth+'" '+'height="'+this.options.sortImageHeight+'" '+'src="'+this.options.sortAscendImg+'"/>';else if(sortDirection==Rico.TableColumn.SORT_DESC)
sortImageSpan.innerHTML='&nbsp;&nbsp;<img width="'+this.options.sortImageWidth+'" '+'height="'+this.options.sortImageHeight+'" '+'src="'+this.options.sortDescendImg+'"/>';},getSortedColumnIndex:function(){var cols=this.options.columns;for(var i=0;i<cols.length;i++){if(cols[i].isSorted())
return i;}
return-1;},introspectForColumnInfo:function(){var columns=new Array();var headerRow=this.headerTable.rows[0];var headerCells=headerRow.cells;for(var i=0;i<headerCells.length;i++)
columns.push(new Rico.TableColumn(this.deriveColumnNameFromCell(headerCells[i],i),true));return columns;},convertToTableColumns:function(cols){var columns=new Array();for(var i=0;i<cols.length;i++)
columns.push(new Rico.TableColumn(cols[i][0],cols[i][1]));return columns;},deriveColumnNameFromCell:function(cell,columnNumber){var cellContent=cell.innerText!=undefined?cell.innerText:cell.textContent;return cellContent?cellContent.toLowerCase().split(' ').join('_'):"col_"+columnNumber;}};Rico.TableColumn=Class.create();Rico.TableColumn.UNSORTED=0;Rico.TableColumn.SORT_ASC="ASC";Rico.TableColumn.SORT_DESC="DESC";Rico.TableColumn.prototype={initialize:function(name,sortable){this.name=name;this.sortable=sortable;this.currentSort=Rico.TableColumn.UNSORTED;},isSortable:function(){return this.sortable;},isSorted:function(){return this.currentSort!=Rico.TableColumn.UNSORTED;},getSortDirection:function(){return this.currentSort;},toggleSort:function(){if(this.currentSort==Rico.TableColumn.UNSORTED||this.currentSort==Rico.TableColumn.SORT_DESC)
this.currentSort=Rico.TableColumn.SORT_ASC;else if(this.currentSort==Rico.TableColumn.SORT_ASC)
this.currentSort=Rico.TableColumn.SORT_DESC;},setUnsorted:function(direction){this.setSorted(Rico.TableColumn.UNSORTED);},setSorted:function(direction){this.currentSort=direction;}};var RicoUtil={getElementsComputedStyle:function(htmlElement,cssProperty,mozillaEquivalentCSS){if(arguments.length==2)
mozillaEquivalentCSS=cssProperty;var el=$(htmlElement);if(el.currentStyle)
return el.currentStyle[cssProperty];else if(document.defaultView)
return document.defaultView.getComputedStyle(el,null).getPropertyValue(mozillaEquivalentCSS);else
return'';},createXmlDocument:function(){if(document.implementation&&document.implementation.createDocument){var doc=document.implementation.createDocument("","",null);if(doc.readyState==null){doc.readyState=1;doc.addEventListener("load",function(){doc.readyState=4;if(typeof doc.onreadystatechange=="function")
doc.onreadystatechange();},false);}
return doc;}
if(window.ActiveXObject)
return Try.these(function(){return new ActiveXObject('MSXML2.DomDocument')},function(){return new ActiveXObject('Microsoft.DomDocument')},function(){return new ActiveXObject('MSXML.DomDocument')},function(){return new ActiveXObject('MSXML3.DomDocument')})||false;return null;},getContentAsString:function(parentNode){return parentNode.xml!=undefined?this._getContentAsStringIE(parentNode):this._getContentAsStringMozilla(parentNode);},_getContentAsStringIE:function(parentNode){var contentStr="";for(var i=0;i<parentNode.childNodes.length;i++){var n=parentNode.childNodes[i];if(n.nodeType==4){contentStr+=n.nodeValue;}
else{contentStr+=n.xml;}}
return contentStr;},_getContentAsStringMozilla:function(parentNode){var xmlSerializer=new XMLSerializer();var contentStr="";for(var i=0;i<parentNode.childNodes.length;i++){var n=parentNode.childNodes[i];if(n.nodeType==4){contentStr+=n.nodeValue;}
else{contentStr+=xmlSerializer.serializeToString(n);}}
return contentStr;},toViewportPosition:function(element){return this._toAbsolute(element,true);},toDocumentPosition:function(element){return this._toAbsolute(element,false);},_toAbsolute:function(element,accountForDocScroll){if(navigator.userAgent.toLowerCase().indexOf("msie")==-1)
return this._toAbsoluteMozilla(element,accountForDocScroll);var x=0;var y=0;var parent=element;while(parent){var borderXOffset=0;var borderYOffset=0;if(parent!=element){var borderXOffset=parseInt(this.getElementsComputedStyle(parent,"borderLeftWidth"));var borderYOffset=parseInt(this.getElementsComputedStyle(parent,"borderTopWidth"));borderXOffset=isNaN(borderXOffset)?0:borderXOffset;borderYOffset=isNaN(borderYOffset)?0:borderYOffset;}
x+=parent.offsetLeft-parent.scrollLeft+borderXOffset;y+=parent.offsetTop-parent.scrollTop+borderYOffset;parent=parent.offsetParent;}
if(accountForDocScroll){x-=this.docScrollLeft();y-=this.docScrollTop();}
return{x:x,y:y};},_toAbsoluteMozilla:function(element,accountForDocScroll){var x=0;var y=0;var parent=element;while(parent){x+=parent.offsetLeft;y+=parent.offsetTop;parent=parent.offsetParent;}
parent=element;while(parent&&parent!=document.body&&parent!=document.documentElement){if(parent.scrollLeft)
x-=parent.scrollLeft;if(parent.scrollTop)
y-=parent.scrollTop;parent=parent.parentNode;}
if(accountForDocScroll){x-=this.docScrollLeft();y-=this.docScrollTop();}
return{x:x,y:y};},docScrollLeft:function(){if(window.pageXOffset)
return window.pageXOffset;else if(document.documentElement&&document.documentElement.scrollLeft)
return document.documentElement.scrollLeft;else if(document.body)
return document.body.scrollLeft;else
return 0;},docScrollTop:function(){if(window.pageYOffset)
return window.pageYOffset;else if(document.documentElement&&document.documentElement.scrollTop)
return document.documentElement.scrollTop;else if(document.body)
return document.body.scrollTop;else
return 0;}};document.getElementsBySelector=function(){return Selector.findChildElements(document,arguments);}
VR=Class.create();VR.Browser={IE:!!(window.attachEvent&&!window.opera),IE6:navigator.userAgent.indexOf('MSIE 6')>-1,IE7:navigator.userAgent.indexOf('MSIE 7')>-1,Opera:!!window.opera,WebKit:navigator.userAgent.indexOf('AppleWebKit/')>-1,Gecko:navigator.userAgent.indexOf('Gecko')>-1&&navigator.userAgent.indexOf('KHTML')==-1,MobileSafari:!!navigator.userAgent.match(/Apple.*Mobile.*Safari/)}
VR.CSS=Class.create();VR.CSS.StyleSheet=Class.create();VR.CSS.StyleSheet.setProperty=function(sheet,selector,property,value){if(!document.styleSheets)return;for(var i=0;i<document.styleSheets.length;i++){var ss=document.styleSheets[i];if(ss.href&&ss.href.match(new RegExp('\/'+sheet+'$'))){var rules=[];if(ss.cssRules)
rules=ss.cssRules;else if(ss.rules)
rules=ss.rules;else return;$A(rules).each(function(r){if(r.cssText&&r.cssText.match(new RegExp('^'+selector+'[ \,{]')))
r.style[property]=value;else if(r.selectorText.match(new RegExp('^'+selector+'$')))
r.style[property]=value;});}}};VR.Window=Class.create();VR.Window.scrollOffsets=function(){var xy=(typeof(window.pageXOffset)=='number')?[window.pageXOffset,window.pageYOffset]:[document.documentElement.scrollLeft,document.documentElement.scrollTop];xy.x=xy[0]
xy.y=xy[1]
return xy}
VR.Window.viewportSize=function(){var size=[0,0];if(typeof window.innerWidth!='undefined')
size=[window.innerWidth,window.innerHeight];else if(typeof document.documentElement!='undefined'&&typeof document.documentElement.clientWidth!='undefined'&&document.documentElement.clientWidth!=0)
size=[document.documentElement.clientWidth,document.documentElement.clientHeight];else
size=[document.body.clientWidth,document.body.clientHeight];size.x=size[0]
size.y=size[1]
return size;}
VR.Window.popup=function(url,name,attr){var popup=window.open(url,name,attr);if(!popup)alert('Popups must be enabled in order to use this feature.');return popup;}
VR.Element=Class.create();VR.Element.setOpacity=function(elm,o){elm.style.filter='alpha(opacity='+Math.round(o*100)+')';elm.style.opacity=o;;}
VR.Element.disableSelection=function(elm){elm.onselectstart=function(){return false;};elm.unselectable='on';elm.style.MozUserSelect='none';}
VR.Element.scroll=function(elm,amount){var factor=2;var at=0;new PeriodicalExecuter(function(pe){if(at>=Math.abs(amount))
pe.stop();else{at+=factor;elm.scrollTop+=(amount>0)?factor:factor*-1;}},.01);}
VR.Input=Class.create();VR.Input.disable=function(elm){$(elm).style.cursor='default';$(elm)._vr_disabled=true;VR.Element.setOpacity(elm,.5);}
VR.Input.enable=function(elm){$(elm).removeClassName('input_disabled');$(elm)._vr_disabled=false;VR.Element.setOpacity(elm,1);}
VR.Input.InlineTextEditor=Class.create();VR.Input.InlineTextEditor.prototype={initialize:function(elm,opt){this.elm=$(elm);this.opt=opt;this.editorValueIsSet=false;this.editorCacheIsSet=false;this.maskElms=[null,null,null,null];if(this.opt.onRequest&&this.opt.onRequest(this))
this._init();else if(!this.opt.onRequest)
this._init();},_init:function(){this.cachedOnclick=this.elm.onclick;if(!this.editorValueIsSet)
this.setEditorText(this.elm.innerHTML);if(!this.editorCacheIsSet)
this.setEditorCache(this.elm.innerHTML);this.elm.onclick=null;this._render();if(this.opt.onCreate)
this.opt.onCreate(this);},filterKeystroke:function(e){if(this.opt.type=='text'&&e.keyCode==Event.KEY_RETURN){Event.stop(e);this.save();}
else if(e.keyCode==Event.KEY_ESC){Event.stop(e);this.cancel();}
return true;},setEditorText:function(txt){txt=txt.replace(/^[ \r\n\t]+/g,'');txt=txt.replace(/[ \r\n\t]+$/g,'');txt=txt.replace(/^\&nbsp\;$/g,'');if(this.opt.type=='text')
txt=txt.replace(/[\n\r]/g,'');this.editorValue=txt;this.editorValueIsSet=true;},setEditorCache:function(txt){this.editorCache=txt;this.editorCacheIsSet=true;},save:function(e){if(this.opt.onSave)
this.opt.onSave(this);else
this.replaceAndDestroy();return false;},hasChanged:function(){return(this.editorCache!=this.sanitizeValue(this.getContents()))?true:false;},cancel:function(e){if(this.opt.onCancel)
this.opt.onCancel(this);else
this.revertAndDestroy();return false;},wysiwygDestroyPrep:function(){if(this.opt.type=='wysiwyg'){tinyMCE.triggerSave();tinyMCE.execCommand('mceRemoveControl',false,'inline_editor_textarea');}},revertAndDestroy:function(){this.wysiwygDestroyPrep();this.elm.update(this.sanitizeValue(this.editorCache));this.destroy();},replaceAndDestroy:function(){this.wysiwygDestroyPrep();this.elm.update(this.sanitizeValue(this.getContents()));this.destroy();},getContents:function(){return(this.opt.type=='text')?this.inputElm.value.stripTags():this.inputElm.value;},sanitizeValue:function(txt){return(txt.length>0)?txt:'&nbsp;';},destroy:function(){new PeriodicalExecuter(function(pe){this.elm.onclick=this.cachedOnclick;this.cachedValue=null;this.editorValueIsSet=false;this.editorCacheIsSet=false;pe.stop();}.bind(this),.01);},showIndicator:function(){this.workingElm.style.display='block';},hideIndicator:function(){this.workingElm.style.display='none';},_render:function(){this.editorElm=$C('div',{classes:['vr_input_inlineeditor']});this.workingContElm=$C('div',{classes:['vr_input_inlineeditor_working_containter']});this.workingElm=$C('img',{src:VR_IMAGE_HOST+'/cobrand/vr/icons/inline_editor_working.gif',classes:['vr_input_inlineeditor_working']});if(this.opt.type=='textarea'||this.opt.type=='wysiwyg')
this.inputElm=$C('textarea',{style:$H({width:'98%',height:'150px',marginBottom:'10px'}),classes:[this.opt.inputClass],onkeypress:this.filterKeystroke.bind(this),value:this.editorValue,id:'inline_editor_textarea'});else
this.inputElm=$C('input',{type:'text',classes:[this.opt.inputClass],onkeypress:this.filterKeystroke.bind(this),value:this.editorValue,onblur:this.blur.bindAsEventListener(this)});this.elm.update('');this.workingContElm.appendChild(this.workingElm);this.editorElm.appendChild(this.inputElm);if(!this.opt.formOnly){this.saveElm=$C('a',{type:'button',onclick:this.save.bind(this),classes:[this.opt.buttonClass],html:'Save'});this.cancelElm=$C('a',{type:'button',onclick:this.cancel.bind(this),html:'Cancel'});this.editorElm.appendChild($C('br'));this.editorElm.appendChild($T(' '));this.editorElm.appendChild(this.saveElm);this.editorElm.appendChild($T(' | '));this.editorElm.appendChild(this.cancelElm);}
this.elm.appendChild(this.editorElm);this.inputElm.focus();if(this.opt.type=='text')
this.inputElm.select();if(this.opt.type=='wysiwyg')
tinyMCE.execCommand('mceAddControl',false,'inline_editor_textarea');},blur:function(e){if(this.opt.cancelOnBlur)this.cancel();else if(this.opt.saveOnBlur)this.save();}}
VR.Select=Class.create();VR.Select.setOptions=function(elm,opt,selected){elm.length=0;opt.length.times(function(i){elm.options[i]=new Option(opt[i][1],opt[i][0]);if(selected==opt[i][0])
elm.selectedIndex=i;});};VR.Select.setSelected=function(elm,value){elm.options.length.times(function(i){if(elm.options[i].value==value)elm.selectedIndex=i;}.bind(this));};Number.prototype.humanize=Number.prototype.humanize||function(rounding,delimiter,separator){rounding=(typeof rounding!='undefined')?rounding:2;delimiter=(typeof delimiter!='undefined')?delimiter:',';separator=(typeof separator!='undefined')?separator:'.';var round_by=Math.pow(10,rounding);var value=(Math.round(this*(round_by))/round_by);parts=value.toString().split('.');parts[0]=parts[0].gsub(/(\d)(?=(\d\d\d)+(?!\d))/,"#{1}"+delimiter);return parts.join(separator);};Number.prototype.delimiter=Number.prototype.delimiter||function(delimiter){return this.humanize(undefined,delimiter)};String.prototype.toNumber=String.prototype.toNumber||function(){return(parseFloat(this).toString()==this)?parseFloat(this):null;};String.prototype.toFloat=String.prototype.toFloat||function(){return parseFloat(this)};String.prototype.toInt=String.prototype.toInt||function(){return parseInt(this)};String.prototype.humanize=String.prototype.humanize||function(){if(typeof this.toNumber()=='number')
return this.toNumber().humanize.apply(this,$A(arguments));return this;};if(Array.prototype.applyToFirst==null)Array.prototype.applyToFirst=function(func){if(this.length>0){return func(this.first());}}
VR.String=Class.create();VR.String.escapeQuotes=function(t){return t.replace(/\'/g,"\\'").replace(/\"/g,"&quot;");}
VR.String.isEmail=function(s){return s.match(/^[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.(?:[a-zA-Z]{2,4}|travel|museum)$/);}
VR.String.toJSON=function(s){return s.replace('"','\\\"');};VR.String.checkXSS=function(str){if(str.match(/<[ \t\r\n\/]*script/i))return true;if(str.match(/<[^>]*on(load|unload|mouseover|mouseout|mouseup|mousedown|mousemove|keydown|keyup|keypress|select|resize|reset|change|submit|focus|blur|abort|click|dblclick|error)/i))return true;return false;};VR.Image=Class.create();VR.Image.Loader=Class.create();VR.Image.Loader.prototype={initialize:function(images){images.each(function(imgUrl){var img=new Image();img.src=imgUrl;});}}
var _vrcp=null;VR.ColorPicker=Class.create();VR.ColorPicker.prototype={maxValue:{h:360,s:100,v:100},HSV:{0:360,1:100,2:100},hSV:165,wSV:162,hH:163,slideHSV:{0:360,1:100,2:100},zINDEX:15,stop:1,initialize:function(valueElm,opt){if(_vrcp)_vrcp.destroy();_vrcp=this;this.valueElm=valueElm;this.cv='ffffff';this.opt=opt;this._render();},_render:function(){var x=Position.cumulativeOffset(this.valueElm)[0]+this.valueElm.getWidth()+40;var y=Position.cumulativeOffset(this.valueElm)[1];var shtml='';this.opElm=$C('div',{id:'vr_colorpicker_opacity',style:$H({top:(y-10)+'px',left:(x-10)+'px'})});this.elm=$C('div',{style:$H({position:'absolute',top:y+'px',left:x+'px'})});this.elm.update('<div id="vr_colorpicker_plugin" style="TOP: 37px; LEFT: 25px; Z-INDEX: 20;">'+'<div id="vr_colorpicker_plugCUR"></div>'+'<div id="vr_colorpicker_plugHEX" onmousedown="_vrcp.stop=0; setTimeout(\'_vrcp.stop=1\',100);">ffffff</div>'+'<br>'+'<div id="vr_colorpicker_SV" onmousedown="_vrcp.HSVslide(\'vr_colorpicker_SVslide\',\'vr_colorpicker_plugin\',event)" title="Saturation + Value">'+'<div id="vr_colorpicker_SVslide" style="TOP: -4px; LEFT: -4px;"><br /></div>'+'</div>'+'<form id="vr_colorpicker_H" onmousedown="_vrcp.HSVslide(\'vr_colorpicker_Hslide\',\'vr_colorpicker_plugin\',event)" title="Hue">'+'<div id="vr_colorpicker_Hslide" style="TOP: -7px; LEFT: -8px;"><br /></div>'+'<div id="vr_colorpicker_Hmodel"></div>'+'</form>'+'<div style="clear: both; padding-top: 10px; height: 50px">'+'<input onclick="_vrcp.save();return false" class="button" type="button" value="Select Color" /> | '+'<a href="#" onclick="_vrcp.cancel();return false">Cancel</a></a>'+'</div>');VR.Element.setOpacity(this.opElm,.5);document.body.appendChild(this.opElm);document.body.appendChild(this.elm);this.loadSV();},save:function(){this.valueElm.value=this.cv;if(this.opt.onselect)eval(this.opt.onselect);this.destroy();},cancel:function(){this.destroy();},destroy:function(){Element.remove(this.opElm)
Element.remove(this.elm)
_vrcp=null;},absPos:function(o){var r={x:o.offsetLeft,y:o.offsetTop};if(o.offsetParent){var v=this.absPos(o.offsetParent);r.x+=v.x;r.y+=v.y;}
return(r);},agent:function(v){return(Math.max(navigator.userAgent.toLowerCase().indexOf(v),0));},toggle:function(v){$S(v).display=($S(v).display=='none'?'block':'none');},within:function(v,a,z){return((v>=a&&v<=z)?true:false);},XY:function(e,v){var z=[Event.pointerX(e),Event.pointerY(e)];return(z[this.zero(v)]);},zero:function(v){v=parseInt(v);return(!isNaN(v)?v:0);},tXY:function(e){this.tY=this.XY(e,1)-this.ab.y;this.tX=this.XY(e)-this.ab.x;},mkHSV:function(a,b,c){return(Math.min(a,Math.max(0,Math.ceil((parseInt(c)/b)*a))));},ckHSV:function(a,b){if(this.within(a,0,b))return(a);else if(a>b)return(b);else if(a<0)return('-'+this.oo);},drag:function(e){if(!this.stop){if(this.d!='vr_colorpicker_drag')this.tXY(e);if(this.d=='vr_colorpicker_SVslide'){this.ds.left=this.ckHSV(this.tX-this.oo,this.wSV)+'px';this.ds.top=this.ckHSV(this.tY-this.oo,this.wSV)+'px';this.slideHSV[1]=this.mkHSV(100,this.wSV,this.ds.left);this.slideHSV[2]=100-this.mkHSV(100,this.wSV,this.ds.top);this.HSVupdate(this.slideHSV);}
else if(this.d=='vr_colorpicker_Hslide'){var ck=this.ckHSV(this.tY-this.oo,this.hH),j,r='hsv',z={};this.ds.top=(ck-5)+'px';this.slideHSV[0]=this.mkHSV(360,this.hH,ck);for(var i=0;i<=r.length-1;i++){j=r.substr(i,1);z[i]=(j=='h')?this.maxValue[j]-this.mkHSV(this.maxValue[j],this.hH,ck):this.HSV[i];}
this.HSVupdate(z);$S('vr_colorpicker_SV').backgroundColor='#'+this.hsv2hex([this.HSV[0],100,100]);}
else if(this.d=='vr_colorpicker_drag'){this.ds.left=this.XY(e)+this.oX-this.eX+'px';this.ds.top=this.XY(e,1)+this.oY-this.eY+'px';}}},HSVslide:function(d,o,e){this.d=d;if(this.stop){this.stop='';this.ds=$S(d!='vr_colorpicker_drag'?d:o);if(this.d=='vr_colorpicker_drag'){this.oX=parseInt(this.ds.left);this.oY=parseInt(this.ds.top);this.eX=this.XY(e);this.eY=this.XY(e,1);$S(o).zIndex=this.zINDEX++;}
else{this.ab=this.absPos($(o));this.tX=null;this.tY=null;this.oo=(this.d=='vr_colorpicker_Hslide')?2:4;this.ab.x+=10;this.ab.y+=22;if(this.d=='vr_colorpicker_SVslide')this.slideHSV[0]=this.HSV[0];document.onmousemove=this.drag.bindAsEventListener(this);document.onmouseup=function(){_vrcp.stop=1;document.onmousemove='';document.onmouseup='';};this.drag(e);}}},HSVupdate:function(v){v=this.hsv2hex((this.HSV=v)?v:this.slideHSV);this.cv=v;$('vr_colorpicker_plugHEX').innerHTML=v;$S('vr_colorpicker_plugCUR').background='#'+v;return(v);},loadSV:function(){var z='';for(var i=this.hSV;i>=0;i--)
z+="<div style=\"background: #"+this.hsv2hex([Math.round((360/this.hSV)*i),100,100])+";\"><br /><\/div>";$('vr_colorpicker_Hmodel').innerHTML=z;},toHex:function(v){v=Math.round(Math.min(Math.max(0,v),255));return("0123456789ABCDEF".charAt((v-v%16)/16)+"0123456789ABCDEF".charAt(v%16));},rgb2hex:function(r){return(this.toHex(r[0])+this.toHex(r[1])+this.toHex(r[2]));},hsv2hex:function(h){return(this.rgb2hex(this.hsv2rgb(h)));},hsv2rgb:function(r){var R,B,G,S=r[1]/100,V=r[2]/100,H=r[0]/360;if(S>0){if(H>=1)H=0;H=6*H;F=H-Math.floor(H);A=Math.round(255*V*(1.0-S));B=Math.round(255*V*(1.0-(S*F)));C=Math.round(255*V*(1.0-(S*(1.0-F))));V=Math.round(255*V);switch(Math.floor(H)){case 0:R=V;G=C;B=A;break;case 1:R=B;G=V;B=A;break;case 2:R=A;G=V;B=C;break;case 3:R=A;G=B;B=V;break;case 4:R=C;G=A;B=V;break;case 5:R=V;G=A;B=B;break;}
return([R?R:0,G?G:0,B?B:0]);}
else return([(V=Math.round(V*255)),V,V]);}}
var _vrlb=null;VR.PopUp=Class.create();VR.PopUp.prototype={overflowX:'auto',overflowY:'auto',initialize:function(width,height,opt){if(_vrlb instanceof VR.PopUp)_vrlb.destroy();_vrlb=this;this.width=width;this.height=height;this.opt=opt;this.border=20;this._render();this._size();Event.observe(window,'resize',this._size.bindAsEventListener(this));Event.observe(window,'scroll',this._size.bindAsEventListener(this));},destroy:function(){Element.remove(this.foundationElm);Element.remove(this.maskElm);Element.remove(this.popupElm);Element.remove(this.behindElm);this._onscroll();if(this.opt.onDestroy)this.opt.onDestroy(this)
_vrlb=null;},setContent:function(content){var prepend='';if(this.opt['closeLink'])
prepend+='<div class="vrlb_close"><a href="#" onclick="_vrlb.destroy(); return false">'+'<img src="'+VR_IMAGE_HOST+'/cobrand/vr/icons/close.gif" />'+'</a></div>';if(this.opt['title'])
prepend+='<h3 class="vrlb_header">'+this.opt['title']+'</h3>';this.popupElm.update(prepend+content);return this;},appendChild:function(element){this.popupElm.appendChild(element);return this;},showWorking:function(){Element.update(this.behindElm,'<img src="'+VR_IMAGE_HOST+'/cobrand/vr/indicators/indicator.bar.gif" />');return this;},hideWorking:function(){Element.update(this.behindElm,'&nbsp;');return this;},_onscroll:function(){this._html().style.overflowX=this.overflowX;this._html().style.overflowY=this.overflowY;},_offscroll:function(){this._html().style.overflowY='hidden';this._html().style.overflowX='hidden';},_html:function(){return document.body},_legacy:function(){return(browserIsMSIE)?true:false;},_renderMask:function(){if(this.maskElm.contentDocument)
mdoc=this.maskElm.contentDocument
else
mdoc=this.maskElm.contentWindow.document
mdoc.write('<html><body bgcolor="#000000"></body></html>');mdoc.close();},_render:function(){this.foundationElm=$C('div',{style:$H({zIndex:1000,overflow:'hidden',position:'absolute',top:'-10px',left:'-10px'})});this.maskElm=$C('iframe',{src:'/blank_iframe.html',scrolling:'no',frameborder:0,style:$H({width:'100%',display:'none',backgroundColor:'#000'})});this.foundationElm.appendChild(this.maskElm);document.body.appendChild(this.foundationElm);this._opacity(this.maskElm,.7);window.setTimeout('_vrlb._renderMask()',1);this.behindElm=$C('div',{html:'&nbsp;',style:$H({zIndex:1010,backgroundColor:'#fff',width:(this.width+this.border*2)+'px',height:(this.height+this.border*2)+'px',position:'absolute',backgroundColor:'#fff',textAlign:'center'})});this.popupElm=$C('div',{html:'&nbsp;',style:$H({zIndex:1020,backgroundColor:'#fff',width:this.width+'px',height:this.height+'px',lineHeight:'13px',position:'absolute'})});if(this._legacy()){this._offscroll();}
else{this.behindElm.style.position='fixed';this.popupElm.style.position='fixed';this.foundationElm.style.position='fixed';}
this._size();this._opacity(this.behindElm,.4);this._opacity(this.popupElm,1);document.body.appendChild(this.behindElm);document.body.appendChild(this.popupElm);if(this.opt.onCreate)this.opt.onCreate(this)},_opacity:function(elm,o){elm.style.filter='alpha(opacity:'+Math.round(o*100)+')';elm.style.opacity=o;;},_size:function(e){var wdim=VR.Window.viewportSize();var soff=(this._legacy())?VR.Window.scrollOffsets():[0,0];if(this.maskElm){var h=Element.getHeight(document.body);if(h<wdim[1])h=wdim[1]
this.maskElm.style.width=(getViewportSize()[0]+10)+'px';this.maskElm.style.height=(h+60)+'px';this.maskElm.style.display='block';}
if(this.popupElm){var top=soff[1]+(Math.floor((wdim[1]-this.height)/2));var left=soff[0]+(Math.floor((wdim[0]-this.width)/2));this.popupElm.style.top=top+'px';this.popupElm.style.left=left+'px';this.behindElm.style.top=(top-this.border)+'px'
this.behindElm.style.left=(left-this.border)+'px'}}}
VR.Shroud=(function(){Event.observe(window,'load',render_iframe);return{show:function(){if(!this.container)render_shroud.bind(this)()
if(document.body.lastChild!=this.containter)document.body.appendChild(this.container)
this.container.show()
return this},hide:function(){if(this.container)this.container.hide()
return this},update:function(content){this.content.update(content)
return this},appendChild:function(element){this.content.appendChild(element)
return this}}
function render_iframe(){if(VR.Shroud.iframe)return
iframe=$C('iframe',{src:'/blank_iframe.html',scrolling:'no',frameborder:0}).addClassName('vr_shroud_iframe').hide()
document.body.appendChild(iframe)
if(VR.Browser.IE)setTimeout(function(){var doc=((this.contentDocument)?this.contentDocument:this.contentWindow.document)
doc.write('<html><body bgcolor="#000000"></body></html>');doc.close();}.bind(iframe),1)
VR.Shroud.iframe=iframe;}
function render_shroud(){render_iframe()
this.container=$C('div').addClassName('vr_shroud')
this.content=$C('div').addClassName('vr_shroud_content')
if(VR.Browser.IE6){this.container.setStyle({position:'absolute'})
this.content.setStyle({position:'absolute'})
var position=function(){var size=VR.Window.viewportSize();var scroll=VR.Window.scrollOffsets();this.content.setStyle({top:scroll.y+'px',left:scroll.x+'px',height:size.y+'px',width:size.x+'px'})
this.container.setStyle({height:parseInt(document.body.clientHeight)+'px',width:parseInt(document.body.clientWidth)+'px'})}.bind(this)
position();Event.observe(window,'resize',position)
Event.observe(window,'scroll',position)}
this.container.appendChild(this.iframe)
this.iframe.show()
this.container.appendChild(this.content)
document.body.appendChild(this.container)}})();VR.Modal=Class.create();VR.Modal.instance=null;VR.Modal.prototype=(function(){var addFeature={closeLink:function(){this.elements.closeLink=$C('a',{href:'javascipr:void(null)'}).observe('click',function(event){Event.stop(event);this.destroy()}.bindAsEventListener(this)).update('<img src="'+VR_IMAGE_HOST+'/cobrand/vr/icons/close.gif" />')
var wrapper=$C('div').addClassName('vrlb_close')
wrapper.appendChild(this.elements.closeLink)
this.elements.content.appendChild(wrapper)
return this;},title:function(title){this.elements.title=$C('h3').addClassName('vrlb_header').update(this.options.title).observe('mousedown',function(event){Event.stop(event);this}.bindAsEventListener(this)).observe('mouseup',function(event){Event.stop(event);}.bindAsEventListener(this))
this.elements.content.appendChild(this.elements.title)
return this;}}
function shift(x,y){x=(x|0);y=(y|0)
this.elements.content.setStyle({top:(parseInt(this.elements.content.getStyle('top'))+y)+'px',left:(parseInt(this.elements.content.getStyle('left'))+x)+'px'})
this.elements.hallow.setStyle({top:(parseInt(this.elements.hallow.getStyle('top'))+y)+'px',left:(parseInt(this.elements.hallow.getStyle('left'))+x)+'px'})}
var defaults={height:200,width:300,hallowSize:20,title:false,closeLink:false,working:false,onCreate:Prototype.emptyFunction,onDestroy:Prototype.emptyFunction,beforeDestroy:function(){return true}}
return{shift:function(x,y){shift.bind(this)(x,y)},initialize:function(options,content){if(VR.Modal.instance)VR.Modal.instance.destroy();this.options=Object.extend(defaults,(options||{}))
render.bind(this)()
VR.Modal.instance=this;if(typeof content!='undefined')
this.update(content)
else
this.working.show()
this.options.onCreate(this)},destroy:function(){if(!this.options.beforeDestroy())return false;this.elements.frame.remove()
VR.Shroud.hide()
VR.Modal.instance=null
this.options.onDestroy(this)
return this;},update:function(content){this.elements.content.innerHTML='';if(this.options.closeLink)addFeature.closeLink.bind(this)()
if(this.options.title)addFeature.title.bind(this)()
if(typeof content=='string'){this.elements.content.appendChild($C('div').update(content))}else if(typeof content=='object'&content.nodeType==1){this.elements.content.appendChild(content)}
return this;}};function render(){var e=this.elements={}
var o=this.options
VR.Shroud.show()
e.frame=$C('div').addClassName('vr_modal_frame')
e.hallow=$C('div').addClassName('vr_modal_hallow').setStyle((function(){var height=(o.height+(o.hallowSize*2))+'px'
var width=(o.width+(o.hallowSize*2))+'px'
var top=(parseFloat(height)/2*-1)+'px'
var left=(parseFloat(width)/2*-1)+'px'
return{height:height,width:width,top:top,left:left}})())
e.working=$C('div').addClassName('vr_modal_working')
if(!this.options.working)e.working.hide()
this.working=e.working;e.content=$C('div').addClassName('vr_modal_content').setStyle({top:(o.height/2*-1)+'px',left:(o.width/2*-1)+'px',height:o.height+'px',width:o.width+'px'})
e.hallow.appendChild(e.working)
e.frame.appendChild(e.content)
e.frame.appendChild(e.hallow)
VR.Shroud.appendChild(e.frame)}})();VR.Modal=Object.extend(VR.Modal,{destroy:function(){return(this.instance)?this.instance.destroy():false;}})
var _vrd_imgpre=new VR.Image.Loader([VR_IMAGE_HOST+'/cobrand/vr/interface/v5/vr.dialog/vr.dialog.header.1.210.png',VR_IMAGE_HOST+'/cobrand/vr/interface/v5/vr.dialog/vr.dialog.header.2.210.png',VR_IMAGE_HOST+'/cobrand/vr/interface/v5/vr.dialog/vr.dialog.header.3.210.png',VR_IMAGE_HOST+'/cobrand/vr/interface/v5/vr.dialog/vr.dialog.header.4.350.png',VR_IMAGE_HOST+'/cobrand/vr/interface/v5/vr.dialog/vr.dialog.content.210.png',VR_IMAGE_HOST+'/cobrand/vr/interface/v5/vr.dialog/vr.dialog.content.350.png',VR_IMAGE_HOST+'/cobrand/vr/interface/v5/vr.dialog/vr.dialog.footer.4.350.png',VR_IMAGE_HOST+'/cobrand/vr/interface/v5/vr.dialog/vr.dialog.footer.2.210.png',VR_IMAGE_HOST+'/cobrand/vr/interface/v5/vr.dialog/vr.dialog.content.350.png',VR_IMAGE_HOST+'/cobrand/vr/interface/v5/vr.dialog/vr.dialog.content.210.png']);var _vrd=null;VR.Dialog=Class.create();VR.Dialog.prototype={initialize:function(element,width,height,html,type,opt){if(_vrd)_vrd.destroy();_vrd=this;var cOff=Position.cumulativeOffset(element)[1];var vHeight=VR.Window.viewportSize()[1];var sOff=VR.Window.scrollOffsets()[1];if(type==2&&((cOff-sOff)+height)+50>vHeight)type=3;this.html=html;this.height=height;this.width=width;this.type=type;this.elmSource=element;if(opt)this.opt=opt;else this.opt={};this.dead=false;this.draw();Event.observe(window,'resize',this.place.bindAsEventListener(this));Event.observe(document,'mousedown',this.filterDestroy.bindAsEventListener(this));},place:function(){var t,l;var offset=Position.cumulativeOffset(this.elmSource);if(this.type==1){t=offset[1]+10;l=offset[0]+10;}
else if(this.type==2){t=offset[1]+15;l=offset[0]-this.width;}
else if(this.type==3){t=offset[1]-20-this.height;l=offset[0]-this.width;}
else if(this.type==4){t=offset[1]-0-this.height;l=offset[0]+20;}
this.elm.style.top=t+'px';this.elm.style.left=l+'px';this.elmMask.style.top=this.elm.style.top;this.elmMask.style.left=this.elm.style.left;},draw:function(){this.elm=$C('div',{classes:['vrDialog','vrDialog'+this.type]});this.elmHeader=$C('div',{classes:['vrDialogHeader']});this.elmFooter=$C('div',{style:$H({height:36+'px',width:(this.width-195)+'px'}),classes:['vrDialogFooter']});this.elmContent=$C('div',{style:$H({height:this.height-64+'px'}),classes:['vrDialogContent','vrDialogContent'+this.width]});this.elmHeaderImg=$C('img',{style:$H({width:this.width,height:36}),src:VR_IMAGE_HOST+'/cobrand/vr/interface/v5/vr.dialog/vr.dialog.header.'+this.type+'.'+this.width+'.png'});this.elmFooterImg=$C('img',{style:$H({width:this.width+'px',height:'36px'}),src:VR_IMAGE_HOST+'/cobrand/vr/interface/v5/vr.dialog/vr.dialog.footer.'+this.type+'.'+this.width+'.png'});this.elmMask=$C('div');this.elm.setStyle({width:this.width+'px',height:this.height+'px'});this.elmMask.setStyle({width:this.elm.style.width,height:this.elm.style.height,position:'absolute'});this.place();this.elmHeader.appendChild(this.elmHeaderImg);this.elmFooter.appendChild(this.elmFooterImg);this.elm.appendChild(this.elmHeader);this.elm.appendChild(this.elmContent);this.elm.appendChild(this.elmFooter);if(browserIsGecko&&osIsMac){this.elmMask.style.overflow='auto';}
document.body.appendChild(this.elmMask);document.body.appendChild(this.elm);this.setContents(this.html);if(this.opt.onmouseover)
Event.observe(this.elmContent,'mouseover',this.opt.onmouseover,true);if(this.opt.onmouseout)
Event.observe(this.elmContent,'mouseout',this.opt.onmouseout,true);return true;},setContents:function(html){this.elmContent.innerHTML='<a style="float: right" href="javascript:_vrd.destroy()">'+'<img border="0" height="16" width="16" id="vrDialogCloseLink" src="'+VR_IMAGE_HOST+'/cobrand/vr/interface/v5/vr.dialog/cross.png" /></a>';this.elmContent.innerHTML+=html;},filterDestroy:function(e){var elm=Event.element(e);if(!this.dead&&_vrd&&$(elm).ancestors&&!Element.up($(elm),'.vrDialog'))
this.destroy();},destroy:function(){Event.stopObserving(document,'resize',this.place);Event.stopObserving(document,'mousedown',this.filterDestroy);if(this.opt.ondestroy)
this.opt.ondestroy();$(this.elm).remove();$(this.elmMask).remove();_vrd=null;this.dead=true;}}
VR.Jumper=Class.create();VR.Jumper.prototype={topOffset:10,bottomOffset:50,initialize:function(elm){this.elm=$(elm);this.elm.setStyle({position:'relative'});Event.observe(window,'scroll',this._jump.bind(this));Event.observe(window,'load',this._load.bind(this));},_jump:function(){if(this.pe){this.pe.stop();this.pe=null;}
this.pe=new PeriodicalExecuter(function(pe){var o=VR.Window.scrollOffsets();if(o[1]+this.topOffset+this.elm.getHeight()+this.bottomOffset>Element.getHeight(document.body))
this.elm.setStyle({top:(Element.getHeight(document.body)-this.elm.getHeight()-this.initialTop-this.bottomOffset)+'px'});else if(o[1]>this.initialTop)
this.elm.setStyle({top:((o[1]-this.initialTop)+this.topOffset)+'px'});else
this.elm.setStyle({top:'0px'});pe.stop();}.bind(this),.1);},_load:function(){this.initialTop=Position.cumulativeOffset(this.elm)[1];}};function $S(v){return($(v).style);}
function $T(text){return document.createTextNode(text);}
function $C(tag,opt){var _elm=$(document.createElement(tag));if(opt){if(tag=='a'&&!opt['href'])
_elm.href='javascript:Prototype.emptyFunction()';$H(opt).keys().each(function(key){switch(key){case'id':_elm.id=opt.id;break;case'onmouseup':Event.observe($(_elm),'mouseup',opt.onmouseup);break;case'onmouseover':Event.observe($(_elm),'mouseover',opt.onmouseover);break;case'onmouseout':Event.observe($(_elm),'mouseout',opt.onmouseout);break;case'onblur':Event.observe($(_elm),'blur',opt.onblur);break;case'onfocus':Event.observe($(_elm),'focus',opt.onfocus);break;case'onkeyup':Event.observe($(_elm),'keyup',opt.onkeyup);break;case'onkeydown':Event.observe($(_elm),'keydown',opt.onkeydown);break;case'onkeypress':Event.observe($(_elm),'keypress',opt.onkeypress);break;case'html':$(_elm).update(opt.html);break;case'classes':opt.classes.each(function(c){$(_elm).addClassName(c);});break;case'style':opt.style.keys().each(function(k){$(_elm).style[k]=opt.style[k];});break;default:_elm[key]=opt[key];break;}});}
return _elm;}
VR.Loading=VR.Loading||{};VR.Loading.Wheel=Class.create()
VR.Loading.Wheel.prototype={percent:0,initialize:function(element){this.element=$(element)||new Element('div');this.element.update('<img src="/blank.gif" alt="" title="" />');this.image=this.element.down('img');this.setPercentage(0);},toElement:function(){return this.element;},setPercentage:function(newPercentage){if(typeof newPercentage=='undefined')throw"0 arguments passed to newPercentage";this.percent=newPercentage;this.image.setAttribute('alt',this.percent+"% complete");this.image.setAttribute('title',this.percent+"% complete");this.image.setAttribute('src',this.images[(Math.round((this.images.size()-1)*(this.percent/100)))]);return this;},images:[VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/0-percent.gif',VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/10-percent.gif',VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/20-percent.gif',VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/25-percent.gif',VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/30-percent.gif',VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/45-percent.gif',VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/50-percent.gif',VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/65-percent.gif',VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/70-percent.gif',VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/75-percent.gif',VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/80-percent.gif',VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/90-percent.gif',VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/95-percent.gif',VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/100-percent.gif']};VR.Loading.Bar=Class.create();VR.Loading.Bar.prototype={};VR.Menu={activeButton:null,pageMousedown:function(event){var el;if(VR.Menu.activeButton==null)
return;if(VR.Browser.IE)
el=window.event.srcElement;else
el=(event.target.tagName?event.target:event.target.parentNode);if(el==VR.Menu.activeButton)
return;if(VR.Menu.getContainerWith(el,"DIV","menu")==null){VR.Menu.resetButton(VR.Menu.activeButton);VR.Menu.activeButton=null;}},buttonClick:function(event,menuId){var button;if(VR.Browser.IE)
button=window.event.srcElement;else
button=event.currentTarget;button.blur();if(button.menu==null){button.menu=document.getElementById(menuId);if(button.menu.isInitialized==null)
VR.Menu.menuInit(button.menu);}
if(VR.Menu.activeButton!=null)
VR.Menu.resetButton(VR.Menu.activeButton);if(button!=VR.Menu.activeButton){VR.Menu.depressButton(button);VR.Menu.activeButton=button;}
else
VR.Menu.activeButton=null;return false;},buttonMouseover:function(event,menuId){var button;if(VR.Browser.IE)
button=window.event.srcElement;else
button=event.currentTarget;if(VR.Menu.activeButton!=null&&VR.Menu.activeButton!=button)
VR.Menu.buttonClick(event,menuId);},depressButton:function(button){var x,y;button.className+=" menuButtonActive";x=VR.Menu.getPageOffsetLeft(button);y=VR.Menu.getPageOffsetTop(button)+button.offsetHeight;if(VR.Browser.IE){x+=button.offsetParent.clientLeft;y+=button.offsetParent.clientTop;}
button.menu.style.left=x+"px";button.menu.style.top=y+"px";button.menu.style.visibility="visible";if(button.menu.iframeEl!=null)
{button.menu.iframeEl.style.left=button.menu.style.left;button.menu.iframeEl.style.top=button.menu.style.top;button.menu.iframeEl.style.width=button.menu.offsetWidth+"px";button.menu.iframeEl.style.height=button.menu.offsetHeight+"px";button.menu.iframeEl.style.display="";}},resetActiveButton:function(){VR.Menu.resetButton(VR.Menu.activeButton);},resetButton:function(button){if(!button)return;VR.Menu.removeClassName(button,"menuButtonActive");if(button.menu!=null){VR.Menu.closeSubMenu(button.menu);button.menu.style.visibility="hidden";if(button.menu.iframeEl!=null)
button.menu.iframeEl.style.display="none";}},menuMouseover:function(event){var menu;if(VR.Browser.IE)
menu=VR.Menu.getContainerWith(window.event.srcElement,"DIV","menu");else
menu=event.currentTarget;if(menu&&menu.activeItem!=null)
VR.Menu.closeSubMenu(menu);},menuItemMouseover:function(event,menuId){var item,menu,x,y;if(VR.Browser.IE)
item=VR.Menu.getContainerWith(window.event.srcElement,"A","menuItem");else
item=event.currentTarget;menu=VR.Menu.getContainerWith(item,"DIV","menu");if(menu.activeItem!=null)
VR.Menu.closeSubMenu(menu);menu.activeItem=item;item.className+=" menuItemHighlight";if(item.subMenu==null){item.subMenu=document.getElementById(menuId);if(item.subMenu.isInitialized==null)
VR.Menu.menuInit(item.subMenu);}
x=VR.Menu.getPageOffsetLeft(item)+item.offsetWidth;y=VR.Menu.getPageOffsetTop(item);var maxX,maxY;if(VR.Browser.IE){maxX=Math.max(document.documentElement.scrollLeft,document.body.scrollLeft)+
(document.documentElement.clientWidth!=0?document.documentElement.clientWidth:document.body.clientWidth);maxY=Math.max(document.documentElement.scrollTop,document.body.scrollTop)+
(document.documentElement.clientHeight!=0?document.documentElement.clientHeight:document.body.clientHeight);}
if(VR.Browser.Opera){maxX=document.documentElement.scrollLeft+window.innerWidth;maxY=document.documentElement.scrollTop+window.innerHeight;}
if(VR.Browser.Gecko){maxX=window.scrollX+window.innerWidth;maxY=window.scrollY+window.innerHeight;}
maxX-=item.subMenu.offsetWidth;maxY-=item.subMenu.offsetHeight;if(x>maxX)
x=Math.max(0,x-item.offsetWidth-item.subMenu.offsetWidth
+(menu.offsetWidth-item.offsetWidth));y=Math.max(0,Math.min(y,maxY));item.subMenu.style.left=x+"px";item.subMenu.style.top=y+"px";item.subMenu.style.visibility="visible";if(item.subMenu.iframeEl!=null)
{item.subMenu.iframeEl.style.left=item.subMenu.style.left;item.subMenu.iframeEl.style.top=item.subMenu.style.top;item.subMenu.iframeEl.style.width=item.subMenu.offsetWidth+"px";item.subMenu.iframeEl.style.height=item.subMenu.offsetHeight+"px";item.subMenu.iframeEl.style.display="";}
if(Browser.IE)
window.event.cancelBubble=true;else
event.stopPropagation();},closeSubMenu:function(menu){if(menu==null||menu.activeItem==null)
return;if(menu.activeItem.subMenu!=null){VR.Menu.closeSubMenu(menu.activeItem.subMenu);menu.activeItem.subMenu.style.visibility="hidden";if(menu.activeItem.subMenu.iframeEl!=null)
menu.activeItem.subMenu.iframeEl.style.display="none";menu.activeItem.subMenu=null;}
VR.Menu.removeClassName(menu.activeItem,"menuItemHighlight");menu.activeItem=null;},menuInit:function(menu){var itemList,spanList;var textEl,arrowEl;var itemWidth;var w,dw;var i,j;if(VR.Browser.IE){menu.style.lineHeight="2.5ex";spanList=menu.getElementsByTagName("SPAN");for(i=0;i<spanList.length;i++)
if(VR.Menu.hasClassName(spanList[i],"menuItemArrow")){spanList[i].style.fontFamily="Webdings";spanList[i].firstChild.nodeValue="4";}}
itemList=menu.getElementsByTagName("A");if(itemList.length>0)
itemWidth=itemList[0].offsetWidth;else
return;for(i=0;i<itemList.length;i++){spanList=itemList[i].getElementsByTagName("SPAN");textEl=null;arrowEl=null;for(j=0;j<spanList.length;j++){if(VR.Menu.hasClassName(spanList[j],"menuItemText"))
textEl=spanList[j];if(VR.Menu.hasClassName(spanList[j],"menuItemArrow")){arrowEl=spanList[j];}}
if(textEl!=null&&arrowEl!=null){textEl.style.paddingRight=(itemWidth
-(textEl.offsetWidth+arrowEl.offsetWidth))+"px";if(VR.Browser.Opera)
arrowEl.style.marginRight="0px";}}
if(VR.Browser.IE){w=itemList[0].offsetWidth;itemList[0].style.width=w+"px";dw=itemList[0].offsetWidth-w;w-=dw;itemList[0].style.width=w+"px";}
if(VR.Browser.IE){var iframeEl=document.createElement("IFRAME");iframeEl.frameBorder=0;iframeEl.src="javascript:false;";iframeEl.style.display="none";iframeEl.style.position="absolute";iframeEl.style.filter="progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)";menu.iframeEl=menu.parentNode.insertBefore(iframeEl,menu);}
menu.isInitialized=true;},getContainerWith:function(node,tagName,className){return $(node).up(tagName+'.'+className);},hasClassName:function(el,name){return $(el).hasClassName(name);},removeClassName:function(el,name){if(el)$(el).removeClassName(name);},getPageOffsetLeft:function(el){return Position.cumulativeOffset($(el))[0];},getPageOffsetTop:function(el){return Position.cumulativeOffset($(el))[1];}};Event.observe(document,'mousedown',VR.Menu.pageMousedown);VR.App=Class.create();VR.App.authenticityToken=function(){auth_token=document.getElementsByName('authenticity_token')[0]==undefined?0:document.getElementsByName('authenticity_token')[0].value;return auth_token;}
VR.App.sanitizeHtml=function(html,opt){var opt=$H({onSuccess:function(){},onFailure:function(){},tagSet:'email'}).merge($H(opt));VR.App.API.Request('/app/sanitize/'+opt['tagSet'],$H({content:html}),function(response){opt['onSuccess'](response.responseText);},opt['onFailure']);}
_vrss=null;VR.App.SessionStore=Class.create();VR.App.SessionStore.prototype={initialize:function(){this.session={};this.validUntil=30;this.cookieName='VR_VIEW_SESSION';this._get_session();},set:function(key,value){this.session[key]=value;this._save_session();},get:function(key){return(this.session[key])?this.session[key]:null;},_get_session:function(){$A(document.cookie.split('; ')).each(function(ck){if(ck.match(new RegExp("^"+this.cookieName+"="))&&(ck=ck.replace(new RegExp("^"+this.cookieName+"="),''))){try{eval('this.session = '+ck);}
catch(e){}}}.bind(this));},_save_session:function(){var date=new Date();date.setTime(date.getTime()+(this.validUntil*24*60*60*1000));var session=$H(this.session).toJSON();document.cookie=this.cookieName+'='+session+'; expires='+date.toGMTString()+'; path=/';}}
VR.App.SessionStore.set=function(key,value){if(!_vrss)
_vrss=new VR.App.SessionStore();_vrss.set(key,value);}
VR.App.SessionStore.get=function(key){if(!_vrss)
_vrss=new VR.App.SessionStore();return _vrss.get(key);}
VR.App.StandardFormInterface=Class.create();VR.App.StandardFormInterface.prototype={initialize:function(id){this.fElm=null;this.elm=$(id);['input','select','textarea'].each(function(tag){this.elm.getElementsBySelector(tag).each(function(elm){this.registerElm(elm);}.bind(this));}.bind(this));},registerElm:function(elm){Event.observe(elm,'focus',this.focus.bindAsEventListener(this));Event.observe(elm,'blur',this.blur.bindAsEventListener(this));},focus:function(e){var elm=Event.element(e);if(elm&&elm.up){this.blur();this.fElm=elm.up('.formrow');if(this.fElm)
this.fElm.addClassName('formrow_focus');}},blur:function(){if(this.fElm){this.fElm.removeClassName('formrow_focus');this.fElm=null;}}}
VR.App.DataTable=Class.create();VR.App.DataTable.prototype={initialize:function(elm){this.elm=$(elm);if((this.celm=this.elm.down('._vrdt_global_sel'))&&this.celm)
Event.observe(this.celm,'click',this.toggleAllFormCheckboxes.bind(this));this.elm.getElementsBySelector('._vrdt_sel').each(function(ielm){Event.observe(ielm,'click',this.updateContext.bind(this));}.bind(this));this.cbElms=$A(this.elm.getElementsBySelector('._vrdt_cb'));this.updateContext();},toggleAllFormCheckboxes:function(){$A(this.celm.form.elements).each(function(elm){if(elm.type=='checkbox'&&elm.disabled==false)
elm.checked=this.celm.checked;}.bind(this));this.updateContext();return true;},updateContext:function(e){var num=0;if(this.celm){if(e&&this.celm&&!Event.element(e).checked)this.celm.checked=false;$A(this.celm.form.elements).each(function(elm){if(elm.type=='checkbox'&&elm.checked&&elm.name!='all')
num+=1;}.bind(this));}
this.cbElms.each(function(belm){belm=belm.childNodes[0];var btext=belm.value.replace(/ \([0-9]+\)$/,'');if(num>0){VR.Input.enable(belm);if(this.cbElms.length==1)belm.value=btext+' ('+num+')';}
else{VR.Input.disable(belm);if(this.cbElms.length==1)belm.value=btext;}}.bind(this));}}
VR.App.DataTableSearch=Class.create();VR.App.DataTableSearch.prototype={advancedEnabled:false,initialize:function(opt){this.opt=opt;this.elm=$(opt['id']);this.sessionKey='vrdtss_'+opt['id'];this.frmElm=$('_vrdt_search');this.advElm=$('_vrdt_search_advanced');this.colLink=$('_vrdt_search_hide');this.expLink=$('_vrdt_search_show');this.advLink=$('_vrdt_search_advanced_link');if(this.advLink){Event.observe(this.advLink,'click',this.toggleAdvanced.bind(this));if(opt['expand_advanced'])
this.expandAdvanced(1);else
this.collapseAdvanced();}
if(this.colLink)
Event.observe(this.colLink,'click',this.collapseSearch.bind(this));if(this.expLink)
Event.observe(this.expLink,'click',this.expandSearch.bind(this));if(VR.App.SessionStore.get(this.sessionKey)=='off')
this.collapseSearch();else
this.expandSearch();},toggleAdvanced:function(){return(this.advancedEnabled)?this.collapseAdvanced():this.expandAdvanced(0);},expandAdvanced:function(quick){if(quick)
this.advElm.show();else
Effect.Appear(this.advElm);this.advLink.update('Hide Advanced');this.advancedEnabled=true;},collapseAdvanced:function(){this.advElm.hide();this.advLink.update('Advanced');this.advancedEnabled=false;this.advElm.getElementsBySelector('input').each(function(elm){if(elm.type=='checkbox'||elm.type=='radio')elm.checked=false;else elm.value='';});this.advElm.getElementsBySelector('select').each(function(elm){elm.selectedIndex=0;});},expandSearch:function(){if(this.colLink)this.colLink.show();if(this.expLink)this.expLink.hide();this.frmElm.show();VR.App.SessionStore.set(this.sessionKey,'on');return false;},collapseSearch:function(){if(this.colLink)this.colLink.hide();if(this.expLink)this.expLink.show();this.frmElm.hide();VR.App.SessionStore.set(this.sessionKey,'off');return false;}}
VR.App.API=Class.create();VR.App.API.Request=function(url,parameters,onSuccess,onFailure,onError,method){if(typeof method=="undefined"){method="get";}
auth_token=VR.App.authenticityToken();if(typeof(parameters)==='string'){parameters+='&authenticity_token='+auth_token;}else{parameters['authenticity_token']=auth_token;}
new Ajax.Request(url,{parameters:parameters,onSuccess:function(transport,json){var json=null
if(transport.getResponseHeader('Content-Type').match(/json/i))
eval('json = '+transport.responseText);if(transport.getResponseHeader('X-Request-Error')&&onError){onError(transport,json);}else
onSuccess(transport,json);}.bind(this),requestHeaders:{'X-Request-Context':'AJAX'},onFailure:function(transport){if(transport.getResponseHeader('X-Request-Status')==526)
alert('Unable to process request.');else if(onFailure)
onFailure(transport);}});};VR.App.API.prototype={initialize:function(){},findListMemberByEmailAddress:function(emailAddress,onSuccess,onFailure,onError){new VR.App.API.Request('/app/list_management/member/list.json',{'conditions[][field_name]':'email_address','conditions[][operator]':'EQ','conditions[][value]':emailAddress},onSuccess,onFailure,onError);},copySurvey:function(surveyId,newName,onSuccess,onFailure,onError){new VR.App.API.Request('/app/surveys/survey/copy/'+surveyId+'.json',$H({'survey[name]':newName}).toQueryString(),onSuccess,onFailure,onError);},saveSurveyAppearance:function(surveyId,params,onSuccess,onFailure,onError){new VR.App.API.Request('/app/surveys/survey/save_survey_appearance/'+surveyId+'.json',params,onSuccess,onFailure,onError);},deleteSurveyPage:function(pageId,onSuccess,onFailure,onError){new VR.App.API.Request('/app/surveys/page/delete/'+pageId+'.json',{},onSuccess,onFailure,onError);},moveSurveyPageUp:function(pageId,onSuccess,onFailure,onError){new VR.App.API.Request('/app/surveys/page/move_up/'+pageId+'.json',{},onSuccess,onFailure,onError);},moveSurveyPageDown:function(pageId,onSuccess,onFailure,onError){new VR.App.API.Request('/app/surveys/page/move_down/'+pageId+'.json',{},onSuccess,onFailure,onError);},addSurveyPageAfter:function(pageId,onSuccess,onFailure,onError){new VR.App.API.Request('/app/surveys/page/create_after/'+pageId+'.json',{},onSuccess,onFailure,onError);},addSurveyPageBreakAfter:function(pageId,questionId,onSuccess,onFailure,onError){new VR.App.API.Request('/app/surveys/page/break_after/'+pageId+'.json',$H({break_after_question:questionId}).toQueryString(),onSuccess,onFailure,onError);},saveSurveyPageName:function(surveyId,pageId,pageName,onSuccess,onFailure,onError){new VR.App.API.Request('/app/surveys/page/save/'+pageId+'.json',$H({survey_id:surveyId,page_name:pageName}),onSuccess,onFailure,onError);},saveSurveyPagePreambleText:function(surveyId,pageId,pagePreambleText,onSuccess,onFailure,onError){new VR.App.API.Request('/app/surveys/page/save/'+pageId+'.json',$H({survey_id:surveyId,preamble_text:pagePreambleText}),onSuccess,onFailure,onError);},buildSurveyQuestionForm:function(questionId,onSuccess,onFailure,onError){new VR.App.API.Request('/app/surveys/question/build/'+questionId+'.json',{},onSuccess,onFailure,onError);},editSurveyQuestion:function(questionId,onSuccess,onFailure,onError){new VR.App.API.Request('/app/surveys/question/edit/'+questionId+'.json',{},onSuccess,onFailure,onError);},copySurveyQuestion:function(questionId,onSuccess,onFailure,onError){new VR.App.API.Request('/app/surveys/question/copy/'+questionId+'.json',{},onSuccess,onFailure,onError);},saveSurveyQuestion:function(questionId,formData,onSuccess,onFailure,onError){new VR.App.API.Request('/app/surveys/question/save/'+questionId+'.json',$H(formData).toQueryString(),onSuccess,onFailure,onError);},createSurveyQuestion:function(pageId,previousQuestionId,questionType,formData,onSuccess,onFailure,onError){new VR.App.API.Request('/app/surveys/question/create.json',$H({previous_question_id:previousQuestionId,page_id:pageId,question_type:questionType}).merge(formData).toQueryString(),onSuccess,onFailure,onError);},deleteSurveyQuestion:function(questionId,onSuccess,onFailure,onError){new VR.App.API.Request('/app/surveys/question/delete/'+questionId+'.json',{},onSuccess,onFailure,onError);},setSurveyQuestionOrdinals:function(rawOrdinals,onSuccess,onFailure,onError){var ordinals=new Hash();$H(rawOrdinals).each(function(page){$H(page.value).each(function(question){ordinals['ordinals['+page.key+']['+question.key+']']=question.value;})});new VR.App.API.Request('/app/surveys/question/save_ordinals.json',ordinals.toQueryString(),onSuccess,onFailure,onError);},newSurveyQuestion:function(surveyId,pageId,questionType,onSuccess,onFailure,onError){new VR.App.API.Request('/app/surveys/question/new.json',$H({survey_id:surveyId,page_id:pageId,question_type:questionType}),onSuccess,onFailure,onError);},saveWidgetArrangement:function(page,arrangement,onSuccess,onFailure){var layout=$H({'page':page});$H(arrangement).each(function(p){layout['column['+p.key+']']=p.value.join(',');});new VR.App.API.Request('/app/connector/save_widget_arrangement',layout.toQueryString(),onSuccess,onFailure);},saveWidgetStateDataAndReturnNewRendering:function(widget_id,state,onSuccess,onFailure){var qstring=$H({widget_id:widget_id})
state.each(function(pair){qstring['widget_state['+pair.key+']']=pair.value;});new VR.App.API.Request('/app/connector/save_widget_state_data_and_return_new_rendering',qstring.toQueryString(),onSuccess,onFailure);},getPAYGRateQuotation:function(product_type,campaign_id,quantity,promotion_code,onSuccess,onFailure){new VR.App.API.Request('/app/account/purchase/get_payg_rate_quotation.json',$H({product_type:product_type,campaign_id:campaign_id,quantity:quantity+'',promotion_code:promotion_code}).toQueryString(),onSuccess,onFailure);},getCreditCardDetailsForm:function(cardId,onSuccess,onFailure){new VR.App.API.Request('/app/credit_card/details_form/'+cardId,'',onSuccess,onFailure);},customFieldsByList:function(lists,onSuccess){new VR.App.API.Request('/app/connector/custom_fields_by_list',$H({list:lists.join(',')}).toQueryString(),onSuccess);},customFieldsByCampaign:function(campaigns,onSuccess){new VR.App.API.Request('/app/connector/custom_fields_by_campaign',$H({campaign:campaigns.join(',')}).toQueryString(),onSuccess);},backgroundTaskStatus:function(taskId,onSuccess){new VR.App.API.Request('/app/connector/background_task_status',$H({task_id:taskId}).toQueryString(),onSuccess);}};var _vrss=null;VR.App.SurveySelector=Class.create();VR.App.SurveySelector.prototype={initialize:function(context,onSelect,onDestroy){_vrss=this;this.context=context;this.onSelect=onSelect;this.onDestroy=onDestroy;this.customLinkText=false;_vrlb=new VR.PopUp(500,320,{onCreate:this.load.bind(this),onDestroy:this.destroy.bind(this)});},select:function(){var name=$('_vrss_survey_id').options[$('_vrss_survey_id').selectedIndex].text;this.onSelect($F('_vrss_survey_id'),(this.customLinkText)?$F('_vrss_custom_link_text_input'):$F('_vrss_link_text'),name);_vrlb.destroy();},toggleLinkText:function(elm){if($F(elm)=='Custom...'){$('_vrss_custom_link_text').style.display='block';this.customLinkText=true;}
else{$('_vrss_custom_link_text').style.display='none';this.customLinkText=false;}},load:function(){_vrlb.showWorking();new VR.App.API.Request('/app/surveys/survey/selector','',function(transport){_vrlb.setContent(transport.responseText);_vrlb.hideWorking();}.bind(this),function(){});},destroy:function(){this.onDestroy();}}
var _vrmfc=undefined;VR.App.MergeFieldCreator=Class.create();VR.App.MergeFieldCreator.disabled=false;VR.App.MergeFieldCreator.template=null;VR.App.MergeFieldCreator.prototype={initialize:function(context,mergeFieldName,onSelect,onDestroy){if(_vrlb instanceof VR.App.MergeFieldCreator)_vrlb.destroy();this.mergeFieldName=mergeFieldName.gsub(/[\{\}]/,'');if(VR.App.MergeFieldCreator.disabled==true)return onSelect('{'+this.mergeFieldName+'}');_vrmfc=this;this.context=context;this.onSelect=(onSelect||Prototype.emptyFunction);this.onDestroy=(onDestroy||Prototype.emptyFunction);this.customLinkText=false;_vrlb=new VR.PopUp(500,223,{onCreate:this.load.bind(this),onDestroy:this.destroy.bind(this),closeLink:true,title:'Insert Merge Field'});},select:function(){var alternateValue=$('vrmfc_alternate_value').value;VR.App.sanitizeHtml(alternateValue,{tagSet:'email',onSuccess:function(sanitizedText){alternateValue=sanitizedText;},onFailure:function(){}});var mf='{'+this.mergeFieldName+((alternateValue)?'|'+alternateValue:'')+'}';this.onSelect(mf);if($('vrmfc_disable').checked)VR.App.MergeFieldCreator.disabled=true;_vrlb.destroy();},_setVrlbContent:function(){_vrlb.setContent(VR.App.MergeFieldCreator.template);$('vrmfc_alternate_value').focus();},load:function(){if(!VR.App.MergeFieldCreator.template){_vrlb.showWorking();new VR.App.API.Request('/app/emails/email/merge_field_default_value_form','',function(transport,json){VR.App.MergeFieldCreator.template=transport.responseText;this._setVrlbContent()
_vrlb.hideWorking();$('vrmfc_alternate_value').focus();}.bind(this),function(){_vrlb.destroy();},function(){_vrlb.destroy();});}else{this._setVrlbContent();}},destroy:function(){this.onDestroy()
_vrmfc=null;}}
var _vrh=null;VR.App.Help=Class.create();VR.App.Help.prototype=(function(){default_options={width:700,height:400,popup_height:500,popup_width:500}
return{elements:{},initialize:function(section,page,bookmark,options){this.options=Object.extend(default_options,options)
this.section=section;this.page=page;this.bookmark=bookmark;_vrlb=new VR.PopUp(this.options.width,this.options.height,{closeLink:true,onCreate:this.viewPage.bind(this)});_vrh=this;},viewPopup:function(){window.open('/app/help/popup?section='+this.section+'&page='+this.page+'&bookmark='+this.bookmark,'_vrhPopup','width='+this.options.popup_width+',height='+this.options.popup_height+',menubar=no,status=no,scrollbars=yes,resizable=no,location=no');_vrlb.destroy();},viewPage:function(){_vrlb.showWorking();new VR.App.API.Request('/app/help/onpage',$H({section:this.section,page:this.page,bookmark:this.bookmark}).toQueryString(),function(transport){render.bind(this)(transport.responseText);_vrlb.hideWorking();}.bind(this),function(transport){_vrlb.destroy();});},destroy:function(){_vrlb.destroy()}}
function render(help_html){var e=this.elements;e.wrapper=$C('div').addClassName('help_wrapper').setStyle({padding:'10px'})
e.toPopupLink=$C('a',{href:'javascript:void(null)'}).update('Open in New Window').observe('click',function(event){Event.stop(event)
this.viewPopup()}.bindAsEventListener(this));e.wrapper.appendChild(e.toPopupLink)
e.scrollbox=$C('div').addClassName('help_scrollbox').setStyle({height:(this.options.height-60)+'px',border:'1px solid #aaa',overflow:'auto',marginTop:'13px'})
e.wrapper.appendChild(e.scrollbox)
e.content=$C('div').addClassName('help_content').setStyle({padding:'0 10px 10px 10px'})
e.scrollbox.appendChild(e.content)
e.content.update(help_html)
_vrlb.setContent('').appendChild(e.wrapper)}})();var _vri=null;VR.App.Inbox=Class.create();VR.App.Inbox.prototype={initialize:function(alert_id){this.alert_id=alert_id;_vrlb=new VR.PopUp(700,400,{onCreate:this.handleLoad.bind(this),onDestroy:this.destroy.bind(this),closeLink:true,title:'Message Box'});},handleLoad:function(){if(this.alert_id)
this.viewMessage(this.alert_id);else
this.viewInbox();},viewInbox:function(){_vrlb.showWorking();new VR.App.API.Request('/app/alert/list','',function(transport){_vrlb.setContent(transport.responseText);_vrlb.hideWorking();}.bind(this),function(){});},viewMessage:function(id){_vrlb.showWorking();new VR.App.API.Request('/app/alert/show/'+id,'',function(transport){_vrlb.setContent(transport.responseText);_vrlb.hideWorking();}.bind(this),function(){});},deleteMessages:function(ids,afterDelete){_vrlb.showWorking();ids=ids.map(function(id){return($(id)&&id.value)?id.value:id});new VR.App.API.Request('/app/alert/delete/?','ids='+ids.join(','),function(transport){eval('var json = '+transport.responseText);if(json.error){alert('Error: '+json.error)
_vrlb.hideWorking();}
else if(afterDelete)
this.viewMessage(afterDelete);else
this.viewInbox();}.bind(this),function(){});},destroy:function(){}}
var _vrwe=null;VR.App.WidgetEditor=Class.create();VR.App.WidgetEditor.prototype={initialize:function(page){this.page=page;this.working=false;},spawnEditor:function(){_vrlb=new VR.PopUp(700,400,{onCreate:this.loadEditor.bind(this),onDestroy:this.destroy.bind(this)});},requestDrag:function(){return!this.working;},cancelConfiguration:function(elm){elm.up('._widget').getElementsByClassName('_widget_configuration')[0].hide();},saveConfiguration:function(elm){if(this.working)
alert('Please wait until the last save is completed.');this.cancelConfiguration(elm);var widget=elm.up('._widget');var widget_state=widget.getElementsByClassName('_widget_configuration')[0];var coords=this.getWidgetLocation(widget);var state=$H();widget_state.getElementsBySelector('._widget_state').each(function(elm){state[elm.name]=$F(elm);});this.setWorking(widget);(new VR.App.API).saveWidgetStateDataAndReturnNewRendering(widget.id.replace('widget_',''),state,function(transport){widget.update(transport.responseText);this.unsetWorking(widget);_am.reload();}.bind(this),function(transport){this.unsetWorking(widget);alert('Unable to save configuration.');}.bind(this));},getWidgetLocation:function(elm){var sandbox=$(elm).up('.amoebaSandbox');return{column:sandbox.id,ordinal:$(sandbox).immediateDescendants().indexOf($(elm))}},configureWidget:function(elm){var ce=elm.up('._widget').getElementsByClassName('_widget_configuration')[0];ce.toggle();},setWorking:function(elm){this.working=true;((elm)?elm:document).getElementsBySelector('.widget_working').each(function(e){e.style.display='inline';});},unsetWorking:function(elm){this.working=false;((elm)?elm:document).getElementsBySelector('.widget_working').each(function(e){e.style.display='none';});},openPrefs:function(){$('homePrefs').style.display='block';},closePrefs:function(){$('homePrefs').style.display='none';},arrangeWidgets:function(rawArrangement,elm){arrangement={};rawArrangement.each(function(nv){arrangement[nv[0].replace('column_','')]=nv[1].map(function(w){return w.replace('widget_','');});});this.setWorking(elm);(new VR.App.API).saveWidgetArrangement(this.page,arrangement,function(transport){this.unsetWorking(elm);}.bind(this),function(transport){this.unsetWorking();}.bind(this));},contextualizeWidgets:function(){document.getElementsBySelector('._widget').each(function(elm){this.contextualizeWidget(elm)}.bind(this));},preparePlace:function(elm,container){this._contextualizeWidget(elm,container);},contextualizeWidget:function(elm){this._contextualizeWidget(elm,elm.parentNode);},_contextualizeWidget:function(elm,container){$(container).classNames().each(function(cl){matches=cl.match(/^_widget_sandbox_([0-9]+)_([n0-9]+)$/);if(matches)
w=matches[1];});if(w=='n')
w=1000000
elm.getElementsBySelector('._widget_content').each(function(cElm){cElm.classNames().each(function(cn){matches=cn.match(/^_widget_content_([0-9]+)_([n0-9]+)$/)
if(matches&&((matches[2]!='n'&&w>=new Number(matches[1])&&w<=new Number(matches[2]))||(matches[2]=='n'&&w>=new Number(matches[1])))){$(cElm).show();}
else{$(cElm).hide();}});});}}
VR.App.Prompt=Class.create();VR.App.Prompt.prototype={opt:[],template:new Template('<div class="vrlb_content">'+'<p class="page_copy_text">'+'#{text}'+'</p>'+'<div id="prompt_error" class="error" style="display: none"></div>'+'<fieldset class="vrform" id="prompt_form"><dl>'+'<div class="formrow" id="prompt_form_formrow_name" /><dt><label>#{field}:</label></dt><dd>'+'<input class="input auto-select" id="prompt_form_value" name="" maxlength="#{maxlength}" size="40" type="text" style="width: 330px" value="" />'+'</dd></div>'+'<div class="formrow"><dt>&nbsp;</dt><dd>'+'<input class="button" id="prompt_form_save" name="commit" type="submit" value="Save" /> | '+'<a href="#" id="prompt_form_cancel">Cancel</a>  '+'</dd></div>'+'</dl></fieldset><script type="text/javascript">_prompt_form = new VR.App.StandardFormInterface($(\'prompt_form\'));</script>'+'</div>'),initialize:function(title,text,field,value,onCancel,onSubmit,opt){this.opt=(opt===undefined)?{}:opt;this.title=title;this.text=text;this.field=field;this.value=value;this.onCancel=onCancel;this.onSubmit=onSubmit;this.working=false;this.render();},getValue:function(){return $('prompt_form_value').value;},render:function(){this.lb=new VR.PopUp(550,200,{onCreate:function(lb){lb.setContent(this.template.evaluate({text:this.text,field:this.field,maxlength:this.opt.maxlength}));if(this.opt.maxlength)$('prompt_form_value').maxlength=40;$('prompt_form_value').value=this.value
Event.observe($('prompt_form_save'),'click',this.doSave.bind(this));Event.observe($('prompt_form_value'),'keyup',function(e){if(e.keyCode==Event.KEY_RETURN)this.doSave();}.bind(this));Event.observe($('prompt_form_value'),'focus',function(e){Event.element(e).select();}.bind(this));Event.observe($('prompt_form_cancel'),'click',function(e){lb.destroy();this.onCancel(this);}.bind(this));$('prompt_form_value').focus();}.bind(this),closeLink:true,title:this.title});},doSave:function(){if(!this.working){this.startWorking();this.onSubmit(this.getValue(),this);}},destroy:function(){this.lb.destroy();},startWorking:function(){this.working=true;this.lb.showWorking();VR.Input.disable($('prompt_form_value'));VR.Input.disable($('prompt_form_save'));},stopWorking:function(){new PeriodicalExecuter(function(pe){pe.stop();this.working=false;this.lb.hideWorking();VR.Input.enable($('prompt_form_value'));VR.Input.enable($('prompt_form_save'));}.bind(this),0.1);}}
VR.App.Confirm=Class.create();VR.App.Confirm.prototype={opt:[],initialize:function(boldText,message,onCancel,onConfirm,opt){_vrc=this;this.opt=$H({height:225,width:470,title:'Confirmation'}).merge($H(opt));this.onCancel=onCancel;this.onConfirm=onConfirm;this.boldText=boldText;this.message=message;this.render();},render:function(){_vrlb=new VR.PopUp(this.opt.width,this.opt.height,{onCreate:function(lb){lb.setContent('<p style="text-align: center;">'+'<img src="'+VR_IMAGE_HOST+'/cobrand/vr/icons/warning.png" width="75" height="66" /><br /><br />'+'<strong>'+this.boldText+'</strong><br /><br />'+
this.message+'<br /><br /><br />'+'<input class="button" type="button" value="Cancel" onclick="_vrc.cancel()" style="width: 100px" />&nbsp;'+'<input class="button" type="button" value="OK" onclick="_vrc.confirm()" style="width: 100px" />'+'</p>');}.bind(this),onDestroy:this.onCancel,closeLink:true,title:this.opt.title});},cancel:function(e){_vrlb.destroy();this.onCancel();},confirm:function(e){this.onConfirm();}};VR.App.Rename=Class.create();VR.App.Rename.Email=Class.create();VR.App.Rename.prototype={initialize:function(id,name,opt){this.id=id;this.name=name;this.opt=(opt===undefined)?{}:opt;if(this.initializeDefaults)this.initializeDefaults();if(_vrd)_vrd.destroy();if(id&&name&&document.body)this.render();},render:function(){(new VR.App.Prompt(this.title,this.text,this.field,this.name,function(){},this.submit.bind(this),{maxlength:this.opt.maxlength}));}}
VR.App.Rename.Email.prototype=Object.extend(new VR.App.Rename(),{title:'Rename Email',text:'Enter the new email name below:',field:'New Email Name',initializeDefaults:function(){if(VR.App.Rename.Email.cache[this.id])
this.name=VR.App.Rename.Email.cache[this.id];this.opt.maxlength=40;},submit:function(txt,c){VR.App.API.Request('/app/emails/email/save/'+this.id+'.json',{'email[name]':txt},function(transport,json){VR.App.Rename.Email.cache[this.id]=json.email.name;var txt=json.email.name.escapeHTML();this.opt.updateElements.each(function(elm){$(elm).innerHTML=txt;});c.destroy();if(this.opt.onComplete)this.opt.onComplete(json.email.name);}.bind(this),function(transport,json){c.stopWorking();alert('A temporary error occurred.  Please try again.');},function(transport,json){c.stopWorking();alert(json.error_message+"\n\nPlease click \"OK\" and provide a new name.");});}});VR.App.Rename.Email.cache={}
VR.App.Actions=Class.create();VR.App.Actions.Email=Class.create();VR.App.Actions.Postcard=Class.create();VR.App.Actions.DBSeg=Class.create();VR.App.Actions.OptinForm=Class.create();VR.App.Actions.LegacyList=Class.create();VR.App.Actions.List=Class.create();VR.App.Actions.ListMember=Class.create();VR.App.Actions.Survey=Class.create();VR.App.Actions.Subscription=Class.create();VR.App.Actions.prototype={initialize:function(elm,id,opt){this.elm=elm;this.id=id;this.opt=opt;if(!this.opt)
this.opt={};if(!this.opt.query_string_params)
this.opt.query_string_params=''
if(elm&&this.canDisplay())
this.render();},canDisplay:function(){if(typeof(_am)!='undefined'&&_am.dragState)
return false;return true},render:function(){this.tr=$(this.elm).up('tr');if(this.tr)
this.tr.style.backgroundColor='#ffc';new VR.Dialog(this.elm,210,this.getHeight(),this.getContent(),2,{ondestroy:this.destroy.bind(this)});},getContent:function(){},destroy:function(){if(this.tr)
this.tr.style.backgroundColor='';}}
VR.App.Actions.Email.prototype=Object.extend(new VR.App.Actions(),{getHeight:function(){if(this.opt.context_status=='active')
return 230;else if(this.opt.unlaunch_only)
return 115;else
return 247;},renameLink:function(){var name=VR.String.escapeQuotes(this.opt.name.escapeHTML());var url='<a href="#" onclick="new VR.App.Rename.Email(\''+this.id+'\', \''+name+'\', { updateElements: [ \''+this.opt.update_element+'\' ] });return false;">Rename</a>'
return url;},getContent:function(){var t=new Template('<a href="#{href}" title="#{title}"#{onclick}>#{name}</a>');function l(href,name,title,onclick){return t.evaluate({href:(href)?href:'javascript:void(null)',onclick:(onclick)?' onclick="'+onclick+'"':'',name:name,title:(title)?title:name})}
if(this.opt.context_status=='active'){return'<div class="action_links">'+((this.opt.campaign_type=='template')?l('/campaign/show_campaign.html?cmpid='+this.id+'&redirect_to='+this.redirect_to,'Edit Content'):(this.opt.campaign_type!='freeform_text')?l('/campaign/load_html.html?campaign_id='+this.id+'&reuse_sf_email_template=1','Edit Content'):l('/campaign/load_freeform_text_only.html?campaign_id='+this.id+'&reuse_sf_email_template=1','Edit Content'))+
l(null,'View',null,'_vrd.destroy();previewCampaign('+this.id+', true, true)')+
l('/campaign/launch_2.html?cmpid='+this.id,'Send Test Email')+
l('/campaign/launch_4.html?cmpid='+this.id,'Schedule Launch Time')+
l('/campaign/launch_campaign.html?cmpid='+this.id,'Launch')+'<br />'+
l('/app/emails/email/copyform/'+this.id+'?'+this.opt.query_string_params,'Make a Copy')+
l(null,'Delete',null,'_vrd.destroy();if (confirm(\'Are you sure you want to delete this email?\')) window.location=\'/app/emails/email/delete/'+this.id+'?'+this.opt.query_string_params+'\'; return false;')+
this.renameLink()+'</div>';}else if(this.opt.unlaunch_only){return'<div class="action_links">'+
l('/stats/campaign_unlaunch.html?cmpid='+this.id,'Unlaunch')+
l('/app/emails/email/copyform/'+this.id+'?'+this.opt.query_string_params,'Make a Copy')+'</div>';}else{return'<div class="action_links">'+
l('/app/emails/email/show/'+this.id,'Open Dashboard')+
l('/app/emails/report/response_type/'+this.id,'View Reports')+
l('/app/emails/email/download_form/'+this.id,'Download Lists')+
l('/app/emails/email/export_to_list_form/'+this.id,'Create Mailing List')+
l('/app/emails/report/compare/'+this.id,'Compare Results')+
l(null,'View Email',null,'_vrd.destroy();previewCampaign('+this.id+', true, true)')+'<br />'+
l('/app/emails/email/copyform/'+this.id+'?'+this.opt.query_string_params,'Make a Copy')+
l(null,'Delete',null,'_vrd.destroy();if (confirm(\'Are you sure you want to delete this email?\')) window.location=\'/app/emails/email/delete/'+this.id+'?'+this.opt.query_string_params+'\'; return false;')+
this.renameLink()+'</div>';}}});VR.App.Actions.Postcard.prototype=Object.extend(new VR.App.Actions(),{getHeight:function(){return(this.opt.context_status=='active')?240:155;},getContent:function(){if(this.opt.context_status=='active')
return'<div class="action_links">'+'<a href="/postcard/edit_postcard_front.html?cmpid='+this.id+'">Edit Front</a>'+'<a href="/postcard/edit_postcard_back.html?cmpid='+this.id+'">Edit Back</a>'+'<a href="/postcard/view_proofs.html?cmpid='+this.id+'">View PDF Proofs</a>'+'<a href="/postcard/choose_lists.html?cmpid='+this.id+'">Select Mailing List(s)</a>'+'<a href="/postcard/choose_mail_date.html?cmpid='+this.id+'">Schedule Launch Time</a>'+'<a href="/postcard/launch_postcard.html?cmpid='+this.id+'">Launch</a>'+'<br />'+'<a href="javascript:void(null)" onclick="runWizard(200,400,\'/util/change_name.html?type=CAMPAIGN&item_id='+this.id+'\'); return false" title="rename">Rename</a>'+'<a href="/postcard/copy_postcard.html?cmpid='+this.id+'&'+this.opt.query_string_params+'">Copy</a>'+'<a href="" onclick="if (confirm(\'Are you sure you want to delete this postcard?\')) window.location=\'/app/postcard/delete/'+this.id+'?'+this.opt.query_string_params+'\'; return false;">Delete</a>'+'</div>';else
return'<div class="action_links">'+'<a href="/stats/postcard.html?cmpid='+this.id+'">Summary Report</a>'+'<br />'+'<a href="javascript:void(null)" onclick="runWizard(200,400,\'/util/change_name.html?type=CAMPAIGN&item_id='+this.id+'\'); return false" title="rename">Rename</a>'+'<a href="/postcard/copy_postcard.html?cmpid='+this.id+'&'+this.opt.query_string_params+'">Copy</a>'+'<a href="" onclick="if (confirm(\'Are you sure you want to delete this postcard?\')) window.location=\'/app/postcard/delete/'+this.id+'?'+this.opt.query_string_params+'\'; return false;">Delete</a>'+'</div>';}});VR.App.Actions.DBSeg.prototype=Object.extend(new VR.App.Actions(),{getHeight:function(){return 200;},getContent:function(){return'<div class="action_links">'+'<a href="/app/dbseg/edit_query/'+this.id+'">Edit Segment</a>'+'<a href="/app/dbseg/run/'+this.id+'">Run Segment</a>'+
((this.opt.hasRun)?'<a href="/app/dbseg/edit_results/'+this.id+'">Preview Results</a>':'<div class="action_disabled">Preview Results</div>')+
((this.opt.hasRun)?'<a href="/app/dbseg/edit_save/'+this.id+'">Create Mailing List(s)</a>':'<div class="action_disabled">Create Mailing List(s)</div>')+'<br />'+'<a href="/app/dbseg/copyform/'+this.id+'?'+this.opt.query_string_params+'">Copy Segment</a>'+'<a href="/app/dbseg/edit_name/'+this.id+'?'+this.opt.query_string_params+'">Change Segment Name</a>'+'<a href="" onclick="if (confirm(\'Are you sure you want to delete this segment?\')) window.location=\'/app/dbseg/delete/'+this.id+'?'+this.opt.query_string_params+'\'; return false;">Delete Segment</a>'+'</div>';}});VR.App.Actions.OptinForm.prototype=Object.extend(new VR.App.Actions(),{getHeight:function(){return 125;},getContent:function(){return'<div class="action_links">'+'<a href="/optin_form/forms/optinFormEditForm.html?fid='+this.id+'">Edit Opt-in Form</a>'+'<a href="/optin_form/forms/optinFormEditForm.html?fid='+this.id+'">Add Form to Your Website</a>'+'<a href="" onclick="if (confirm(\'Are you sure you want to delete this opt-in form?\')) window.location=\'/app/optin_form/delete/'+this.id+'?'+this.opt.query_string_params+'\'; return false;">Delete Opt-in Form</a>'+'</div>';}});VR.App.Actions.LegacyList.prototype=Object.extend(new VR.App.Actions(),{getHeight:function(){return 210;},getContent:function(){return'<div class="action_links">'+
((this.opt.locked)?'<div class="action_disabled">Add New Record</div>':'<a href="/list/appendRecordToListTOSForm.html?list_id='+this.id+'">Add New Record</a>')+
((this.opt.locked)?'<div class="action_disabled">Append File</div>':'<a href="/list/appendFileToListTOSForm.html?list_id='+this.id+'">Append File</a>')+'<a href="/list/showListForm.html?list_id='+this.id+'">View</a>'+'<a href="/list/searchListForm.html?list_id='+this.id+'">Search</a>'+
((this.opt.locked)?'<div class="action_disabled">Customize</div>':'<a href="/list/modifyListFieldsForm.html?list_id='+this.id+'">Customize List</a>')+'<a href="/list/downloadListForm.html?list_id='+this.id+'">Download</a>'+'<a href="JavaScript:runWizard(200, 450, \'/list/renameListForm.html?list_id='+this.id+'\')">Rename</a>'+
((this.opt.locked)?'<div class="action_disabled">Delete</div>':'<a href="" onclick="if (confirm(\'Are you sure you want to delete this list?\')) window.location=\'/app/list/delete/'+this.id+'?'+this.opt.query_string_params+'\'; return false;">Delete</a>')+'</div>';}});VR.App.Actions.List.prototype=Object.extend(new VR.App.Actions(),{getHeight:function(){return 175;},getContent:function(){return'<div class="action_links">'+
((this.opt.locked)?'<div class="action_disabled">Add New Record</div>':'<a href="/app/list_management/member/new?list_view_id='+this.id+'">Add New Record</a>')+
((this.opt.locked)?'<div class="action_disabled">Append File</div>':'<a href="/app/list_management/member/upload_file?list_view_id='+this.id+'">Append File</a>')+'<a href="/app/list_management/member/list?list_view_id='+this.id+'">View List Members</a>'+'<a href="/app/list_management/member/download_form?list_view_id='+this.id+'">Download Members</a>'+
((this.opt.master_list)?'<div class="action_disabled">Edit List Properties</div>':'<a href="/app/list_management/list/edit/'+this.id+'">Edit List Properties</a>')+
((this.opt.locked||this.opt.master_list)?'<div class="action_disabled">Delete</div>':'<a href="/app/list_management/list/delete_form?ids[]='+this.id+'">Delete</a>')+'</div>';}});VR.App.Actions.ListMember.prototype=Object.extend(new VR.App.Actions(),{getHeight:function(){return 180;},getContent:function(){return'<div class="action_links">'+'<a href="/app/list_management/member/show/'+this.id+'?list_view_id='+this.opt.list_view_id+'">View Details</a>'+'<a href="/app/list_management/member/edit/'+this.id+'?list_view_id='+this.opt.list_view_id+'">Edit Member</a>'+'<a href="/app/list_management/member/edit_lists/'+this.id+'?list_view_id='+this.opt.list_view_id+'">Edit Lists</a>'+'<a href="/app/list_management/member/edit_comments/'+this.id+'?list_view_id='+this.opt.list_view_id+'">Edit Comments</a>'+'<a href="" onclick="massActionConfirmation(\'delete\', \'/app/list_management/member/mass_action/'+this.id+'?mass_action=delete&list_view_id='+this.opt.list_view_id+'\');return false">Delete</a>'+'<a href="" onclick="massActionConfirmation(\'unsubscribe\', \'/app/list_management/member/mass_action/'+this.id+'?mass_action=unsubscribe&list_view_id='+this.opt.list_view_id+'\');return false">Unsubscribe</a>'+'</div>';}});VR.App.Actions.Survey.prototype=Object.extend(new VR.App.Actions(),{getHeight:function(){return 205;},getContent:function(){return'<div class="action_links">'+
((this.opt.status!='closed')?'<a href="/app/surveys/survey/build/'+this.id+'">Edit Questions</a>':'<div class="action_disabled">Edit Questions</div>')+
((this.opt.status=='launched')?'<a href="/app/surveys/survey/show/'+this.id+'">Manage This Survey</a>':'<div class="action_disabled">Manage This Survey</div>')+
((this.opt.status!='closed')?'<a href="/app/surveys/survey/test/'+this.id+'">Test It Out</a>':'<div class="action_disabled">Test It Out</div>')+'<a target="_blank" href="/app/surveys/survey/preview/'+this.id+'">Preview</a>'+
((this.opt.status=='draft')?'<a href="/app/surveys/survey/golive/'+this.id+'">Go Live</a>':'<a href="/app/surveys/report/show/'+this.id+'">View Responses</a>')+'<br />'+'<a href="/app/surveys/survey/copyform/'+this.id+'">Make a Copy</a>'+'<a href="" onclick="if (confirm(\'Are you sure you want to delete this survey?  Note: Deleted surveys cannot be recovered!\')) window.location=\'/app/surveys/survey/delete/'+this.id+'?'+this.opt.query_string_params+'\'; return false;">Delete</a>'+'</div>';}});VR.App.Actions.Subscription.prototype=Object.extend(new VR.App.Actions(),{getHeight:function(){var height=122;return height;},getContent:function(){return'<div class="action_links">'+
((this.opt.display_edit)?'<a href="/app/subscriptions/edit/'+this.id+'">Change Billing Information</a>':'<div class="action_disabled">Change Billing Information</div>')+'<a href="'+this.opt.modify_url+'">Modify Subscription</a>'+
((this.opt.display_cancel)?'<a href="/app/subscriptions/confirm_cancel/'+this.id+'">Cancel Subscription</a>':'<div class="action_disabled">Cancel Subscription</div>')+'</div>';}});VR.App.DynamicTabNav=Class.create();VR.App.DynamicTabNav.prototype={initialize:function(id){this.id=id;var parent=this;var folders=this.folders=$('dfolders-'+id).getElementsBySelector('div.dynamic_folder');var folders_by_name=folders.inject({},function(folders,folder){folders[folder.getAttribute('name')]=folder;return folders;});var tabs=[];var default_tab=null;$('dtabs-'+id).getElementsBySelector('li.dynamic_tab').each(function(tab,i){tab=$(tab);var name=tab.getAttribute('name')
var folder=folders_by_name[name]
if(!folder)return
tabs.push(new VR.App.DynamicTabNav.Tab(name,tab,folder,tabs))
if(tab.getAttribute('is_default')!=null)default_tab=(tabs.length-1)});this.tabs=tabs
var tab_matching_hash=tabs.pluck('name').find(function(name){return('#'+name==window.location.hash)});if(!!tab_matching_hash){this.findTabByName(tab_matching_hash).activate()}else if(default_tab){tabs[default_tab].activate()}else{tabs.first().activate()}},activeTab:function(){var index=tabs.invoke('isActive').indexOf(true)
return(index==-1)?null:this.tabs[index]},findTabByName:function(name){return this.tabs.find(function(tab){return(tab.name==name)})}}
VR.App.DynamicTabNav.Tab=Class.create();VR.App.DynamicTabNav.Tab.prototype={initialize:function(name,element,folder,siblings){this.name=name
this.element=element=$(element)
if(!this.element)throw new Error('VR.App.DynamicTabNav.Tab requires argument 1 to be a valid dom element.')
this.folder=folder=$(folder)
if(!this.folder)throw new Error('VR.App.DynamicTabNav.Tab requires argument 2 to be a valid dom element.')
this.siblings=siblings
element.addClassName('dynamic_tab').observe('click',function(event){Event.stop(event);this.activate();}.bindAsEventListener(this));},activate:function(){this.siblings.each(function(tab){if(tab.element!=this.element)tab.deactivate()})
this.element.removeClassName('inactive').addClassName('active')
this.folder.show()
window.location.hash='#'+this.name},deactivate:function(){this.element.removeClassName('active').addClassName('inactive')
this.folder.hide()},isActive:function(){return this.element.hasClassName('active')}}
var ua=navigator.userAgent;var up=navigator.platform;var browserIsMSIE=(navigator.appName=="Microsoft Internet Explorer");var browserIsMSIE5=browserIsMSIE&&(ua.indexOf('MSIE 5')!=-1);var browserIsMSIE5_0=browserIsMSIE&&(ua.indexOf('MSIE 5.0')!=-1);var browserIsMSIE7=browserIsMSIE&&(ua.indexOf('MSIE 7')!=-1);var browserIsGecko=ua.indexOf('Gecko')!=-1;var browserIsSafari=ua.indexOf('Safari')!=-1;var browserIsOpera=ua.indexOf('Opera')!=-1;var browserIsMac=ua.indexOf('Mac')!=-1;var browserIsNS7=ua.indexOf('Netscape/7')!=-1;var browserIsNS71=ua.indexOf('Netscape/7.1')!=-1;var osIsWindows=up.indexOf('Win')!=-1;var osIsLinux=up.indexOf('Linux')!=-1;var osIsMac=up.indexOf('Mac')!=-1;function runWizard(h,w,content)
{oNewWindow=window.open(content,null,"height="+h+",width="+w+",status=no,toolbar=no,resizable=yes,menubar=no,location=no,scrollbars=yes");}
var browserName=navigator.appName;var browserVer=parseInt(navigator.appVersion);if(browserName=="Netscape"&&browserVer>=3)
var version="n3";else{version="n2"};if(navigator.appVersion.substring(0,3)=='4.0')
{version="n3"};function img_act(imgName)
{if(version=="n3")
{imgOn=eval(imgName+"on.src");document[imgName].src=imgOn;}}
function img_inact(imgName)
{if(version=="n3")
{imgOff=eval(imgName+"off.src");document[imgName].src=imgOff;}}
function swapit(imgName,status)
{if(document.images)
{document.images[imgName].src=eval(imgName+"_"+status+".src");}}
function jsconfirm(url,confirmationText){if(confirm(confirmationText)){window.location=url;}}
function getViewportSize(){var size=[0,0];if(typeof window.innerWidth!='undefined'){size=[window.innerWidth,window.innerHeight];}
else if(typeof document.documentElement!='undefined'&&typeof document.documentElement.clientWidth!='undefined'&&document.documentElement.clientWidth!=0){size=[document.documentElement.clientWidth,document.documentElement.clientHeight];}
else{size=[document.getElementsByTagName('body')[0].clientWidth,document.getElementsByTagName('body')[0].clientHeight];}
return size;}
IMLState=function(){this.setState=function(relPathField,httpPathField,previewContainer){this.isValid=true;this.relPathField=relPathField;this.httpPathField=httpPathField;this.previewContainer=previewContainer;}
this.resetState=function(){this.isValid=false;this.relPathField=null;this.httpPathField=null;this.previewContainer=null;}
this.setValues=function(relPath,httpPath,previewContainer){document.getElementById(this.relPathField).value=relPath;document.getElementById(this.httpPathField).value=httpPath;document.getElementById(this.previewContainer).innerHTML=previewContainer;}
this.resetState();};var imlState=new IMLState();function imlSelector(relPathField,httpPathField,previewContainer){imlState.setState(relPathField,httpPathField,previewContainer);window.open('/mlibrary/select.html','imlselector','status=1,toolbar=0,location=0,resizable=1,menubar=0,width=700,height=500');}
function imlSearchSelector(relPathField,httpPathField,previewContainer){imlState.setState(relPathField,httpPathField,previewContainer);window.open('/app/image_search/splash?context=library','imlselector','status=1,toolbar=0,location=0,resizable=0,menubar=0,width=824,height=600');}
function postcardSearchSelector(relPathField,httpPathField,previewContainer){imlState.setState(relPathField,httpPathField,previewContainer);window.open('/app/image_search/splash?context=postcard','imlselector','status=1,toolbar=0,location=0,resizable=0,menubar=0,width=824,height=600');}
var _vr_footer_state=null;VR.App.LiveSupport={live_support_timeout:null,supportAgentsAvailable:function(){document.getElementById('smartbutton').innerHTML='<a href="" onClick="window.open(\'http://www.verticalresponse.com/support/livechat\',\'chat_client\',\'width=514,height=350,scrollbars=0\');'+'return false;"><img src="https://www.verticalresponse.com/images/chat/reponline.gif" border="0"></a>';return true;},supportAgentsNotAvailable:function(support_email){document.getElementById('smartbutton').innerHTML='<a href="mailto:'+support_email+'" ><img src="https://www.verticalresponse.com/images/chat/repoffline.gif"/></a>';return true;},timeSupportFooter:function(display_chat,support_email){VR.App.LiveSupport.live_support_timeout=window.setTimeout('VR.App.LiveSupport.showSupportFooter('+display_chat+', "'+support_email+'")',625);},untimeSupportFooter:function(){window.clearTimeout(VR.App.LiveSupport.live_support_timeout);},showSupportFooter:function(display_chat,support_email){var elm=$('supportFooter');var liveChat='';_vr_support_lock=false;_vr_support_out=null;if(display_chat){liveChat='<div id="smartbutton"></div>'+'<img src="https://rs.instantservice.com/resources/smartbutton/7528/41275/available.gif?'+
Math.floor(Math.random()*10001)+'"'+'  style="width:0;height:0;visibility:hidden;position:absolute;"'+'  onLoad="VR.App.LiveSupport.supportAgentsAvailable()" onError="VR.App.LiveSupport.supportAgentsNotAvailable(\''+support_email+'\')">';}
var supportDialog=new VR.Dialog($('footerLink'),350,150,elm.innerHTML+liveChat,4);},hideSupportFooter:function(){if(typeof _vrd!='undefined'&&typeof _vrd.destroy=='function'){_vrd.destroy();}}}
var _pwBox=null;function showPleaseWait(msg){hidePleaseWait();var vp=getViewportSize();_pwBox=document.createElement('div');$(_pwBox).addClassName('pleasewait');_pwBox.style.top='250px';$(_pwBox).update('<img src="'+VR_IMAGE_HOST+'/images/cobrand/vr/indicators/indicator.standard.gif" />'+msg);document.body.appendChild(_pwBox);}
function hidePleaseWait(){if(_pwBox)
_pwBox.remove();_pwBox=null;}
function sortCollectionByAttribute(collection,sortByAttribute,sortOrder,sortCase){collection=collection.sortBy(function(element){if('insensitive'==sortCase.toLowerCase()){try{return element[sortByAttribute].toLowerCase();}
catch(e){return element[sortByAttribute];}}else{return element[sortByAttribute];}});if('desc'==sortOrder.toLowerCase()){collection.reverse();}
return collection;}
function previewCampaign(campaignId,addVars,showNav){if(campaignId){var prevWin=window.open('/campaign/preview_mailing.html?'+'cmpid='+campaignId+'&'+'addvars='+((addVars)?'true':'')+'&'+'shownav='+((showNav)?'true':''),'preview_email','height=500,width=770,status=yes,toolbar=yes,resizable=yes,menubar=yes,location=yes,scrollbars=yes');}}
function CreateBookmarkLink(title,url){if(window.sidebar){window.sidebar.addPanel(title,url,"");}else if(window.external){window.external.AddFavorite(url,title);}
else if(window.opera&&window.print){return true;}}
