/** * (C) Luis Huancapaza **/ var Prototype = { Version:'1.4.0', ScriptFragment:'(?:)((\n|\r|.)*?)(?:<\/script>)', emptyFunction:function(){}, K:function(x){return x} } var Class = { create:function(){ return function(){ this.initialize.apply(this,arguments); } } } var Abstract=new Object(); Object.extend=function(destination,source){ for(property in source){ destination[property]=source[property]; } return destination; } Object.inspect=function(object){ try { if(object==undefined) return'undefined'; if(object==null) return'null'; return object.inspect?object.inspect():object.toString(); } catch(e){ if(e instanceof RangeError) return'...';throw e; } } Function.prototype.bind=function(){ var __method=this, args=$A(arguments), object=args.shift(); return function(){ return __method.apply(object,args.concat($A(arguments))); } } Function.prototype.bindAsEventListener=function(object){ var __method=this; return function(event){ return __method.call(object,event||window.event); } } Object.extend(Number.prototype, { toColorPart:function(){ var digits=this.toString(16); if(this<16) return'0'+digits; return digits; }, succ:function(){ return this+1; }, times:function(iterator){ $R(0,this,true).each(iterator);return this; } }); var Try={these:function(){var returnValue;for(var i=0;i]+>/gi,'');},stripScripts:function(){return this.replace(new RegExp(Prototype.ScriptFragment,'img'),'');},extractScripts:function(){var matchAll=new RegExp(Prototype.ScriptFragment,'img');var matchOne=new RegExp(Prototype.ScriptFragment,'im');return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||['',''])[1];});},evalScripts:function(){return this.extractScripts().map(eval);}, escapeHTML:function(){ var div=document.createElement('div'); var text=document.createTextNode(this); div.appendChild(text); return div.innerHTML; }, unescapeHTML:function(){ var div=document.createElement('div'); div.innerHTML=this.stripTags(); return div.childNodes[0]?div.childNodes[0].nodeValue:''; }, toQueryParams:function(){ var pairs=this.match(/^\??(.*)$/)[1].split('&'); return pairs.inject( {}, function(params,pairString){ var pair=pairString.split('='); params[pair[0]]=pair[1]; return params; } ); }, toArray:function(){ return this.split(''); }, camelize:function(){ var oStringList=this.split('-'); if(oStringList.length==1) return oStringList[0]; var camelizedString=this.indexOf('-')==0?oStringList[0].charAt(0).toUpperCase()+oStringList[0].substring(1):oStringList[0]; for(var i=1,len=oStringList.length;i=(result||value)) result=value;});return result;},min:function(iterator){var result;this.each(function(value,index){value=(iterator||Prototype.K)(value,index);if(value<=(result||value)) result=value;});return result;},partition:function(iterator){var trues=[],falses=[];this.each(function(value,index){((iterator||Prototype.K)(value,index)?trues:falses).push(value);});return[trues,falses];},pluck:function(property){var results=[];this.each(function(value,index){results.push(value[property]);});return results;},reject:function(iterator){var results=[];this.each(function(value,index){if(!iterator(value,index)) results.push(value);});return results;},sortBy:function(iterator){return this.collect(function(value,index){return{value:value,criteria:iterator(value,index)};}).sort(function(left,right){var a=left.criteria,b=right.criteria;return ab?1:0;}).pluck('value');},toArray:function(){return this.collect(Prototype.K);},zip:function(){var iterator=Prototype.K,args=$A(arguments);if(typeof args.last()=='function') iterator=args.pop();var collections=[this].concat(args).map($A);return this.map(function(value,index){iterator(value=collections.pluck(index));return value;});},inspect:function(){return'#';}} Object.extend(Enumerable,{map:Enumerable.collect,find:Enumerable.detect,select:Enumerable.findAll,member:Enumerable.include,entries:Enumerable.toArray});var $A=Array.from=function(iterable){if(!iterable)return[];if(iterable.toArray){return iterable.toArray();}else{var results=[];for(var i=0;i';}} function $H(object){var hash=Object.extend({},object||{});Object.extend(hash,Enumerable);Object.extend(hash,Hash);return hash;} ObjectRange=Class.create();Object.extend(ObjectRange.prototype,Enumerable);Object.extend(ObjectRange.prototype,{initialize:function(start,end,exclusive){this.start=start;this.end=end;this.exclusive=exclusive;},_each:function(iterator){var value=this.start;do{iterator(value);value=value.succ();}while(this.include(value));},include:function(value){if(value=200&&this.transport.status<300);},responseIsFailure:function(){return!this.responseIsSuccess();}} Ajax.Request=Class.create();Ajax.Request.Events=['Uninitialized','Loading','Loaded','Interactive','Complete'];Ajax.Request.prototype=Object.extend(new Ajax.Base(),{initialize:function(url,options){this.transport=Ajax.getTransport();this.setOptions(options);this.request(url);},request:function(url){var parameters=this.options.parameters||'';if(parameters.length>0)parameters+='&_=';try{this.url=url;if(this.options.method=='get'&¶meters.length>0) this.url+=(this.url.match(/\?/)?'&':'?')+parameters;Ajax.Responders.dispatch('onCreate',this,this.transport);this.transport.open(this.options.method,this.url,this.options.asynchronous);if(this.options.asynchronous){this.transport.onreadystatechange=this.onStateChange.bind(this);setTimeout((function(){this.respondToReadyState(1)}).bind(this),10);} this.setRequestHeaders();var body=this.options.postBody?this.options.postBody:parameters;this.transport.send(this.options.method=='post'?body:null);}catch(e){this.dispatchException(e);}},setRequestHeaders:function(){var requestHeaders=['X-Requested-With','XMLHttpRequest','X-Prototype-Version',Prototype.Version];if(this.options.method=='post'){requestHeaders.push('Content-type','application/x-www-form-urlencoded');if(this.transport.overrideMimeType) requestHeaders.push('Connection','close');} if(this.options.requestHeaders) requestHeaders.push.apply(requestHeaders,this.options.requestHeaders);for(var i=0;i'; return $A(div.childNodes[0].childNodes[0].childNodes);}} var Insertion=new Object();Insertion.Before=Class.create();Insertion.Before.prototype=Object.extend(new Abstract.Insertion('beforeBegin'),{initializeRange:function(){this.range.setStartBefore(this.element);},insertContent:function(fragments){fragments.each((function(fragment){this.element.parentNode.insertBefore(fragment,this.element);}).bind(this));}});Insertion.Top=Class.create();Insertion.Top.prototype=Object.extend(new Abstract.Insertion('afterBegin'),{initializeRange:function(){this.range.selectNodeContents(this.element);this.range.collapse(true);},insertContent:function(fragments){fragments.reverse(false).each((function(fragment){this.element.insertBefore(fragment,this.element.firstChild);}).bind(this));}});Insertion.Bottom=Class.create();Insertion.Bottom.prototype=Object.extend(new Abstract.Insertion('beforeEnd'),{initializeRange:function(){this.range.selectNodeContents(this.element);this.range.collapse(this.element);},insertContent:function(fragments){fragments.each((function(fragment){this.element.appendChild(fragment);}).bind(this));}});Insertion.After=Class.create();Insertion.After.prototype=Object.extend(new Abstract.Insertion('afterEnd'),{initializeRange:function(){this.range.setStartAfter(this.element);},insertContent:function(fragments){fragments.each((function(fragment){this.element.parentNode.insertBefore(fragment,this.element.nextSibling);}).bind(this));}});Element.ClassNames=Class.create();Element.ClassNames.prototype={initialize:function(element){this.element=$(element);},_each:function(iterator){this.element.className.split(/\s+/).select(function(name){return name.length>0;})._each(iterator);},set:function(className){this.element.className=className;},add:function(classNameToAdd){if(this.include(classNameToAdd))return;this.set(this.toArray().concat(classNameToAdd).join(' '));},remove:function(classNameToRemove){if(!this.include(classNameToRemove))return;this.set(this.select(function(className){return className!=classNameToRemove;}).join(' '));},toString:function(){return this.toArray().join(' ');}} Object.extend(Element.ClassNames.prototype,Enumerable);var Field={clear:function(){for(var i=0;i=0){opt=element.options[index];value=opt.value;if(!value&&!('value'in opt)) value=opt.text;} return[element.name,value];},selectMany:function(element){var value=new Array();for(var i=0;i=this.offset[1]&&y=this.offset[0]&&x=this.offset[1]&&this.ycomp=this.offset[0]&&this.xcompthis.length) return false;for(var i=0,n=0;i=0,isSafari:navigator.userAgent.toLowerCase().indexOf("safari")>=0,isOpera:(typeof(window.opera)=='object')&&(window.opera!=null),isIE:(typeof(document.all)=='object')&&(!window.opera),startTime:new Date(),timeStamp:function(){var stamp=new Date();return(stamp.getTime()-this.startTime.getTime())+": ";}};Number.prototype.zf=function(slen){var s=this.toString();while(s.length"+s+suffix+"";} var RicoTranslate={phrases:new Array(),thouSep:",",decPoint:".",langCode:"en",re:/^(\W*)\b(.*)\b(\W*)$/,dateFmt:"mm/dd/yyyy",monthNames:['January','February','March','April','May','June','July','August','September','October','November','December'],dayNames:['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],addPhrase:function(fromPhrase,toPhrase){this.phrases[fromPhrase]=toPhrase;},getPhrase:function(fromPhrase){var words=fromPhrase.split(/\t/);var transWord,translated='';for(var i=0;iRicoUtil.windowWidth())newLeft-=this.width; //this.div.style.left=newLeft+"px"; var newTop=RicoUtil.docScrollTop()+e.clientY; //this.div.style.top=newTop+"px"; //this.div.style.display="block"; var contentHt=this.div.offsetHeight; if(e.clientY+contentHt>RicoUtil.windowHeight()){ newTop=Math.max(newTop-contentHt,0); //this.div.style.top=newTop+"px"; } this.shim.show(this.div);return false;},clearMenu:function(){this.div.innerHTML="";this.defaultAction=null;},addMenuHeading:function(hdg,translate){var el=document.createElement('div') el.innerHTML=(translate==null||translate==true)?RicoTranslate.getPhrase(hdg):hdg;el.className='ricoMenuHeading';this.div.appendChild(el);},addMenuBreak:function(){var brk=document.createElement('div');brk.className="ricoMenuBreak";this.div.appendChild(brk);},addMenuItem:function(menutext,action,enabled,title,translate){var a=document.createElement('a');if(arguments.length<3||enabled){switch(typeof action){case'function':a.href="#";a.onclick=action;break;case'string':a.href=action;break} a.className='enabled';if(this.defaultAction==null)this.defaultAction=action;}else{a.disabled=true;a.className='disabled';} a.innerHTML=(translate==null||translate==true)?RicoTranslate.getPhrase(menutext):menutext;if(title!=null) a.title=(translate==null||translate==true)?RicoTranslate.getPhrase(title):title;this.div.appendChild(a);},isVisible:function(){return this.div&&this.div.style.display!="none";},cancelmenu:function(){if(this.hideFunc)this.hideFunc();this.hidemenu();},hidemenu:function(){if(!this.div)return;this.shim.hide();this.div.style.display="none";this.hideFunc=null;}};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"+el.innerHTML+"" },_roundTopCorners:function(el,color,bgColor){var corner=this._createCorner(bgColor);for(var i=0;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="0px"; inStyle.overflow="hidden"; inStyle.fontSize="0px"; var borderColor=this._borderColor(color,bgColor);if(this.options.border&&n==0){inStyle.borderTopStyle="solid"; inStyle.borderTopWidth="0px"; 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 0px"; } if(!this.options.compact&&(n==(this.options.numSlices-1))) inStyle.height="0px";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=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;i0;},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;i1) 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;iabsoluteRect.left+this._leftOffset(e)&&e.clientXabsoluteRect.top+this._topOffset(e)&&e.clientY0?(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;i0?(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.Accordion=Class.create(); Rico.Accordion.prototype={ initialize:function(container,options){ this.container=$(container); if(!this.container)return; this.lastExpandedTab=null; this.accordionTabs=new Array(); this.setOptions(options); this._attachBehaviors(); if(this.options.panelWidth) this.container.style.width=this.options.panelWidth+"px"; if(this.options.tabLocation=='inline'&&!this.options.fixborders) this.container.style.borderBottom='0px solid '+this.options.borderColor; if(this.options.loadedTab>=this.accordionTabs.length) this.options.loadedTab=0; var flag=(this.options.panelHeight=="auto"); for(var i=0;i=0){ var accordionTab=this.accordionTabs[anIndex]; this.showTab(accordionTab,doAnimate); } else if(anIndex<0){ this.showTabHide(this.accordionTabs.length-1,"desc"); } }, showTabHide:function(index,mode){ if(!mode) mode="desc"; var accordion=this; var accordionTab; if((mode=="desc"&&index>=0)||(mode=="asc"&&index5)){this.lastExpandedTab.content.style.height=(this.lastExpandedTab.content.offsetHeight-1)+"px";} if(this.options.mode=="free"&&doAnimate&&this.lastExpandedTab!=accordionTab) this.lastExpandedTab.content.style.overflowY="auto";else this.lastExpandedTab.content.style.overflowY="hidden";var factor=0.85;if(RicoUtil.isIE){factor=1.3;} if(state=="auto"){size=accordionTab.content.scrollHeight+incr;size2=parseInt(this.lastExpandedTab.content.scrollHeight)+incr;var incr=5;accordionTab.content.style.overflowY='hidden';size=accordionTab.content.scrollHeight+incr;size2=this.lastExpandedTab.content.scrollHeight+incr;if(this.options.duration){duration2=duration=this.options.duration*factor;}else{duration=parseInt(size*factor);duration2=parseInt(size2*factor);}}else{accordionTab.content.style.overflowY='hidden';size2=size=state;if(this.options.duration){duration2=duration=this.options.duration*factor;}else{duration=duration2=parseInt(size*factor);}} if(this.options.mode=="free"&&doAnimate){new Rico.Effect.AccordionSize(accordionTab.content,size,duration,(duration/10),{mode:this.options.mode,color:tColor,complete:function(){accordion.showTabDone(accordionTab,colapsed,true,{showCollapsed:function(){}})}});}else{if(this.lastExpandedTab==accordionTab){if((this.options.loadedTab==-2&&doAnimate)||colapsed||(this.options.mode=="free"&&!doAnimate)){accordionTab.content.style.overflowY="hidden";new Rico.Effect.AccordionSize(accordionTab.content,size,duration,(duration/10),{mode:"free",color:tColor,complete:function(){accordion.showTabDone(accordionTab,colapsed,true,{showCollapsed:function(){}})}});if(!colapsed)this.lastExpandedTab=false;}else{accordionTab.content.style.overflowY="auto";}}else{if(state=="auto"){accordionTab.content.style.display='none';new Rico.Effect.AccordionSize(lastExpandedTab.content,size2,duration2,(duration2/10),{mode:"free",color:tColor,complete:function(){accordionTab.showExpanded(true);lastExpandedTab.showCollapsed(true,true);accordionTab.content.style.display='';lastExpandedTab.content.style.display='none';new Rico.Effect.AccordionSize(accordionTab.content,size,duration,(duration/10),{mode:"free",color:tColor,complete:function(){lastExpandedTab.content.style.display='';accordion.showTabDone(accordionTab,colapsed,true,lastExpandedTab)}});}});this.lastExpandedTab=accordionTab;}else if(doAnimate){new Rico.Effect.AccordionSize(this.lastExpandedTab.content,size+1,duration,(duration/10),{couple:accordionTab.content,mode:this.options.mode,color:tColor,complete:function(){accordion.showTabDone(accordionTab,colapsed,true,lastExpandedTab)}});this.lastExpandedTab=accordionTab;}else{if(this.options.mode=="free"||colapsed)this.showTabDone(accordionTab,colapsed,false,lastExpandedTab);if(colapsed)this.lastExpandedTab=accordionTab;}}}},showTabDone:function(expandedTab,colapsed,doAnimate,contractedTab){var flag=(this.options.panelHeight=="auto");if(colapsed){expandedTab.showExpanded(flag);contractedTab.showCollapsed();if(!doAnimate){if(expandedTab!=contractedTab){contractedTab.content.style.height="0px";contractedTab.content.style.display='none';}} if(!flag) expandedTab.content.style.height=this.options.panelHeight+"px";}else{if(this.options.mode=="free"){expandedTab.showCollapsed();if(!doAnimate){expandedTab.content.style.height="0px";contractedTab.content.style.height="0px";expandedTab.content.style.display='none';contractedTab.content.style.display='none';}}else{if(doAnimate){if(expandedTab!=contractedTab){expandedTab.showCollapsed();expandedTab.content.style.height="0px";expandedTab.content.style.display='none';}}else{contractedTab.content.style.height="0px";contractedTab.content.style.display='none';contractedTab.showCollapsed();expandedTab.showExpanded(flag);}}} if(this.options.onShowTab)this.options.onShowTab(this.lastExpandedTab);},_attachBehaviors:function(){var panels=this._getDirectChildrenByTag(this.container,'DIV');var viewport=null;var tabs=null;if(this.options.tabLocation!='inline'){viewport=document.createElement('div');viewport.style.border="0px solid "+this.options.borderColor;viewport.style.clear="both";this.container.insertBefore(viewport,this.container.firstChild);tabs=document.createElement('div');tabs.style.overflowY="hidden";tabs.style.backgroundColor="transparent";if(this.options.tabLocation=='top'){this.container.insertBefore(tabs,this.container.firstChild);}else if(this.options.tabLocation=='bottom'){this.container.appendChild(tabs);} this.container.style.overflowY='hidden';} for(var i=0;i0) tabWrapper.style.marginLeft=this.options.tabSpacing+'px'; if(this.options.panelWidth){if((Math.floor(this.options.panelWidth)/(parseInt(tabChildren.length)+1)-((i>0)?this.options.tabSpacing:0))<=300) tabWrapper.style.width=(Math.floor(this.options.panelWidth)/(tabChildren.length+2)-((i>0)?this.options.tabSpacing:0))+'px';else tabWrapper.style.width=300/tabChildren.length;}else{if((Math.floor(tabContentBox.offsetWidth)/tabChildren.length)<=300){tabWrapper.style.width=((Math.floor(tabContentBox.offsetWidth)/(tabChildren.length))-((i>0)?this.options.tabSpacing:0))+'px';}else{tabWrapper.style.width=300/tabChildren.length;}} tabWrapper.style.styleFloat="left";tabs.appendChild(tabWrapper);if(this.options.roundCorners){Rico.Corner.round(tabWrapper,{corners:this.options.tabLocation,color:'transparent'});} this.accordionTabs.push(new Rico.Accordion.Tab(this,tabWrapper,tabContentBox));} else 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;ithis.e2.offsetHeight)?(this.e1.offsetHeight):((this.e2.offsetHeight>1)?(this.e2.offsetHeight):(size));this.options=arguments[4]||{};if(this.options.color){this.color1=this.e1.style.color;this.color2=this.e2.style.color;this.e1.style.color=this.options.color;this.e2.style.color=this.options.color;} var margin=10;this.mode=(options.couple&&(options.mode!="free"))?((parseInt(this.e1.offsetHeight)-parseInt(this.e2.offsetHeight)>=margin)?0:3):(this.e2.offsetHeight<=margin?2:1);this.diff=(steps>=0)?parseInt((this.size-1)/steps):0;if(this.diff){realSize=this.diff*steps;aditional=this.size-realSize;aditionalSteps=parseInt(aditional/this.diff);steps+=aditionalSteps;} this.counter=steps;this.stepDuration=(steps>=0)?(Math.round(duration/steps)):0;this.accordionSize();},accordionSize:function(){if(this.isFinished()){if(this.e1.style.height<=5){this.e1.style.height="0px";} if(this.e2.style.height<=5){this.e2.style.height="0px";} if(this.options.color){this.e1.style.color=this.color1;this.e2.style.color=this.color2;} if(this.options.complete) this.options.complete(this);return;} if(this.timer)clearTimeout(this.timer);var diff;if((this.counter<=1)&&(this.size-parseInt(this.e2.style.height)>=0)){if(this.mode==0||this.mode==2) diff=this.size-parseInt(this.e2.offsetHeight);else diff=-parseInt(this.e2.offsetHeight)+1;}else{if(this.mode==0||this.mode==2) diff=this.diff;else diff=-this.diff;} var stepDuration=this.stepDuration;this.counter--;this.resizeBy(diff);this.timer=setTimeout(this.accordionSize.bind(this),stepDuration);},isFinished:function(){return this.counter<=0;},resizeBy:function(diff){var intDiff=parseInt(diff);if(this.mode==0||this.mode==3)var h1Height=this.e1.offsetHeight;var h2Height=this.e2.offsetHeight;if(parseInt(this.mode)==0||parseInt(this.mode)==3){this.e1.style.height=(h1Height-intDiff)+"px";} this.e2.style.height=(h2Height+intDiff)+"px";}};