// Compacted by ScriptingMagic.com
/**
  *
  *  Copyright 2005 Sabre Airline Solutions
  *
  *  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
  *  file except in compliance with the License. You may obtain a copy of the License at
  *
  *         http://www.apache.org/licenses/LICENSE-2.0
  *
  *  Unless required by applicable law or agreed to in writing, software distributed under the
  *  License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
  *  either express or implied. See the License for the specific language governing permissions
  *  and limitations under the License.
  **/
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(a){return Object.extend.apply(this,[this,a])};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(a){if(isNaN(a)||a>this.length){return false}for(var i=0,n=0;i<this.length;i++){if(i!=a){this[n++]=this[i]}}this.length-=1};Rico.ArrayExtensions[Rico.ArrayExtensions.length]=Array.prototype.remove}if(!Array.prototype.removeItem){Array.prototype.removeItem=function(a){for(var i=0;i<this.length;i++){if(this[i]==a){this.remove(i);break}}};Rico.ArrayExtensions[Rico.ArrayExtensions.length]=Array.prototype.removeItem}if(!Array.prototype.indices){Array.prototype.indices=function(){var a=new Array();for(index in this){var b=false;for(var i=0;i<Rico.ArrayExtensions.length;i++){if(this[index]==Rico.ArrayExtensions[i]){b=true;break}}if(!b){a[a.length]=index}}return a};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 a=(new DOMParser()).parseFromString(s,"text/xml");while(this.hasChildNodes()){this.removeChild(this.lastChild)}for(var i=0;i<a.childNodes.length;i++){this.appendChild(this.importNode(a.childNodes[i],true))}}}Document.prototype.__defineGetter__("xml",function(){return (new XMLSerializer()).serializeToString(this)})}document.getElementsByTagAndClassName=function(a,b){if(a==null){a="*"}var c=document.getElementsByTagName(a)||document.all;var d=new Array();if(b==null){return c}for(var i=0;i<c.length;i++){var e=c[i];var f=e.className.split(" ");for(var j=0;j<f.length;j++){if(f[j]==b){d.push(e);break}}}return d};Rico.Accordion=Class.create();Rico.Accordion.prototype={initialize:function(a,b){this.container=$(a);this.lastExpandedTab=null;this.accordionTabs=new Array();this.setOptions(b);this._attachBehaviors();if(!a){return}this.container.style.borderBottom="1px solid "+this.options.borderColor;if(this.options.onLoadShowTab>=this.accordionTabs.length){this.options.onLoadShowTab=0}var c=0;var d=50000;for(var i=0;i<this.accordionTabs.length;i++){h=parseInt(RicoUtil.getElementsComputedStyle(this.accordionTabs[i].content,"height"));if(isNaN(h)){h=this.accordionTabs[i].content.offsetHeight}if(h>c){c=h}if(h<d){d=h}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 e=(this.options.onloadShowTab===0)?1:0;var f=parseInt(RicoUtil.getElementsComputedStyle(this.accordionTabs[e].titleBar,"height"));if(isNaN(f)){f=this.accordionTabs[e].titleBar.offsetHeight}var g=this.accordionTabs.length*f;var j=parseInt(RicoUtil.getElementsComputedStyle(this.container.parentNode,"height"));if(isNaN(j)){j=this.container.parentNode.offsetHeight}this.options.panelHeight=j-g-2;if((c-d)>0){this.options.panelHeight+=(c-d)}}this.lastExpandedTab.content.style.height=this.options.panelHeight+"px";this.lastExpandedTab.showExpanded();this.lastExpandedTab.titleBar.style.fontWeight=this.options.expandedFontWeight},setOptions:function(a){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,a||{})},showTabByIndex:function(a,b){var c=arguments.length==1?false:b;this.showTab(this.accordionTabs[a],c)},showTab:function(a,b){if(this.lastExpandedTab==a){return}var c=arguments.length==1?false:b;if(this.options.onHideTab){this.options.onHideTab(this.lastExpandedTab)}this.lastExpandedTab.showCollapsed();var d=this;var e=this.lastExpandedTab;this.lastExpandedTab.content.style.height=(this.options.panelHeight-1)+"px";a.content.style.display="";a.titleBar.style.fontWeight=this.options.expandedFontWeight;if(c){new Rico.Effect.AccordionSize(this.lastExpandedTab.content,a.content,1,this.options.panelHeight,100,10,{complete:function(){d.showTabDone(e)}});this.lastExpandedTab=a}else{this.lastExpandedTab.content.style.height="1px";a.content.style.height=this.options.panelHeight+"px";this.lastExpandedTab=a;this.showTabDone(e)}},showTabDone:function(a){a.content.style.display="none";this.lastExpandedTab.showExpanded();if(this.options.onShowTab){this.options.onShowTab(this.lastExpandedTab)}},_attachBehaviors:function(){var a=this._getDirectChildrenByTag(this.container,"DIV");for(var i=0;i<a.length;i++){var b=this._getDirectChildrenByTag(a[i],"DIV");if(b.length!=2){continue}var c=b[0];var d=b[1];this.accordionTabs.push(new Rico.Accordion.Tab(this,c,d))}},_getDirectChildrenByTag:function(e,a){var b=new Array();var c=e.childNodes;for(var i=0;i<c.length;i++){if(c[i]&&c[i].tagName&&c[i].tagName==a){b.push(c[i])}}return b}};Rico.Accordion.Tab=Class.create();Rico.Accordion.Tab.prototype={initialize:function(a,b,c){this.accordion=a;this.titleBar=b;this.content=c;this._attachBehaviors()},collapse:function(){this.showCollapsed();this.content.style.height="1px"},showCollapsed:function(){this.expanded=false;if(this.accordion.options.collapsedBgImg!=null){this.titleBar.style.backgroundImage=this.accordion.options.collapsedBgImg;this.titleBar.style.backgroundRepeat="no-repeat"}else{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;if(this.accordion.options.expandedBgImg!=null){this.titleBar.style.backgroundImage=this.accordion.options.expandedBgImg;this.titleBar.style.backgroundRepeat="no-repeat"}else{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="5px 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(a,b){if(!b){b=$(a)}this.ajaxElements[a]=b},registerAjaxObject:function(a,b){this.ajaxObjects[a]=b},registerRequest:function(a,b){this.requestURLS[a]=b},sendRequest:function(a,b){if(arguments.length>=2){if(typeof arguments[1]=="string"){b={parameters:this._createQueryString(arguments,1)}}}this.sendRequestWithData(a,null,b)},sendRequestWithData:function(a,b,c){var d=this.requestURLS[a];if(d==null){return}if(arguments.length>=3){if(typeof arguments[2]=="string"){c.parameters=this._createQueryString(arguments,2)}}new Ajax.Request(d,this._requestOptions(c,b))},sendRequestAndUpdate:function(a,b,c){if(arguments.length>=3){if(typeof arguments[2]=="string"){c.parameters=this._createQueryString(arguments,2)}}this.sendRequestWithDataAndUpdate(a,null,b,c)},sendRequestWithDataAndUpdate:function(a,b,c,d){var e=this.requestURLS[a];if(e==null){return}if(arguments.length>=4){if(typeof arguments[3]=="string"){d.parameters=this._createQueryString(arguments,3)}}var f=this._requestOptions(d,b);new Ajax.Updater(c,e,f)},_requestOptions:function(a,b){var c=["X-Rico-Version",Rico.Version];var d="post";if(b==null){if(Rico.prototypeVersion<1.4){c.push("Content-type","text/xml")}else{d="get"}}(!a)?a={}:"";if(!a._RicoOptionsProcessed){if(a.onComplete){a.onRicoComplete=a.onComplete}if(a.overrideOnComplete){a.onComplete=a.overrideOnComplete}else{a.onComplete=this._onRequestComplete.bind(this)}a._RicoOptionsProcessed=true}this.options={requestHeaders:c,parameters:a.parameters,postBody:b,method:d,onComplete:a.onComplete};Object.extend(this.options,a);return this.options},_createQueryString:function(a,b){var c="";for(var i=b;i<a.length;i++){if(i!=b){c+="&"}var d=a[i];if(d.name!=undefined&&d.value!=undefined){c+=d.name+"="+escape(d.value)}else{var e=d.indexOf("=");var f=d.substring(0,e);var g=d.substring(e+1);c+=f+"="+escape(g)}}return c},_onRequestComplete:function(a){if(!a){return}if(a.status!=200){return}var b=a.responseXML.getElementsByTagName("ajax-response");if(b==null||b.length!=1){return}this._processAjaxResponse(b[0].childNodes);var c=this.options.onRicoComplete;if(c!=null){c()}},_processAjaxResponse:function(a){for(var i=0;i<a.length;i++){var b=a[i];if(b.nodeType!=1){continue}var c=b.getAttribute("type");var d=b.getAttribute("id");if(c=="object"){this._processAjaxObjectUpdate(this.ajaxObjects[d],b)}else{if(c=="element"){this._processAjaxElementUpdate(this.ajaxElements[d],b)}else{alert("unrecognized AjaxResponse type : "+c)}}}},_processAjaxObjectUpdate:function(a,b){a.ajaxUpdate(b)},_processAjaxElementUpdate:function(a,b){a.innerHTML=RicoUtil.getContentAsString(b)}};var ajaxEngine=new Rico.AjaxEngine();Rico.Color=Class.create();Rico.Color.prototype={initialize:function(a,c,d){this.rgb={r:a,g:c,b:d}},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 a=this.asHSB();a.h=h;this.rgb=Rico.Color.HSBtoRGB(a.h,a.s,a.b)},setSaturation:function(s){var a=this.asHSB();a.s=s;this.rgb=Rico.Color.HSBtoRGB(a.h,a.s,a.b)},setBrightness:function(b){var a=this.asHSB();a.b=b;this.rgb=Rico.Color.HSBtoRGB(a.h,a.s,a.b)},darken:function(a){var b=this.asHSB();this.rgb=Rico.Color.HSBtoRGB(b.h,b.s,Math.max(b.b-a,0))},brighten:function(a){var b=this.asHSB();this.rgb=Rico.Color.HSBtoRGB(b.h,b.s,Math.min(b.b+a,1))},blend:function(a){this.rgb.r=Math.floor((this.rgb.r+a.rgb.r)/2);this.rgb.g=Math.floor((this.rgb.g+a.rgb.g)/2);this.rgb.b=Math.floor((this.rgb.b+a.rgb.b)/2)},isBright:function(){var a=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(a){if(a.length==4){var b=a;var a="#";for(var i=1;i<4;i++){a+=(b.charAt(i)+b.charAt(i))}}if(a.indexOf("#")==0){a=a.substring(1)}var c=a.substring(0,2);var d=a.substring(2,4);var e=a.substring(4,6);return new Rico.Color(parseInt(c,16),parseInt(d,16),parseInt(e,16))};Rico.Color.createColorFromBackground=function(a){var b=RicoUtil.getElementsComputedStyle($(a),"backgroundColor","background-color");if(b=="transparent"&&a.parentNode){return Rico.Color.createColorFromBackground(a.parentNode)}if(b==null){return new Rico.Color(255,255,255)}if(b.indexOf("rgb(")==0){var c=b.substring(4,b.length-1);var d=c.split(",");return new Rico.Color(parseInt(d[0]),parseInt(d[1]),parseInt(d[2]))}else{if(b.indexOf("#")==0){return Rico.Color.createFromHex(b)}else{return new Rico.Color(255,255,255)}}};Rico.Color.HSBtoRGB=function(a,c,d){var e=0;var f=0;var h=0;if(c==0){e=parseInt(d*255+0.5);f=e;h=e}else{var i=(a-Math.floor(a))*6;var j=i-Math.floor(i);var p=d*(1-c);var q=d*(1-c*j);var t=d*(1-(c*(1-j)));switch(parseInt(i)){case 0:e=(d*255+0.5);f=(t*255+0.5);h=(p*255+0.5);break;case 1:e=(q*255+0.5);f=(d*255+0.5);h=(p*255+0.5);break;case 2:e=(p*255+0.5);f=(d*255+0.5);h=(t*255+0.5);break;case 3:e=(p*255+0.5);f=(q*255+0.5);h=(d*255+0.5);break;case 4:e=(t*255+0.5);f=(p*255+0.5);h=(d*255+0.5);break;case 5:e=(d*255+0.5);f=(p*255+0.5);h=(q*255+0.5);break}}return {r:parseInt(e),g:parseInt(f),b:parseInt(h)}};Rico.Color.RGBtoHSB=function(r,g,b){var a;var c;var d;var e=(r>g)?r:g;if(b>e){e=b}var f=(r<g)?r:g;if(b<f){f=b}d=e/255;if(e!=0){c=(e-f)/e}else{c=0}if(c==0){a=0}else{var i=(e-r)/(e-f);var j=(e-g)/(e-f);var k=(e-b)/(e-f);if(r==e){a=k-j}else{if(g==e){a=2+i-k}else{a=4+j-i}}a=a/6;if(a<0){a=a+1}}return {h:a,s:c,b:d}};Rico.Corner={round:function(e,a){var e=$(e);this._setOptions(a);var b=this.options.color;if(this.options.color=="fromElement"){b=this._background(e)}var c=this.options.bgColor;if(this.options.bgColor=="fromParent"){c=this._background(e.offsetParent)}this._roundCornersImpl(e,b,c)},_roundCornersImpl:function(e,a,b){if(this.options.border){this._renderBorder(e,b)}if(this._isTopRounded()){this._roundTopCorners(e,a,b)}if(this._isBottomRounded()){this._roundBottomCorners(e,a,b)}},_renderBorder:function(a,b){var c="1px solid "+this._borderColor(b);var d="border-left: "+c;var e="border-right: "+c;var f="style='"+d+";"+e+"'";a.innerHTML="<div "+f+">"+a.innerHTML+"</div>"},_roundTopCorners:function(a,b,c){var d=this._createCorner(c);for(var i=0;i<this.options.numSlices;i++){d.appendChild(this._createCornerSlice(b,c,i,"top"))}a.style.paddingTop=0;a.insertBefore(d,a.firstChild)},_roundBottomCorners:function(a,b,c){var d=this._createCorner(c);for(var i=(this.options.numSlices-1);i>=0;i--){d.appendChild(this._createCornerSlice(b,c,i,"bottom"))}a.style.paddingBottom=0;a.appendChild(d)},_createCorner:function(a){var b=document.createElement("div");b.style.backgroundColor=(this._isTransparent()?"transparent":a);return b},_createCornerSlice:function(a,b,n,c){var d=document.createElement("span");var e=d.style;e.backgroundColor=a;e.display="block";e.height="1px";e.overflow="hidden";e.fontSize="1px";var f=this._borderColor(a,b);if(this.options.border&&n==0){e.borderTopStyle="solid";e.borderTopWidth="1px";e.borderLeftWidth="0px";e.borderRightWidth="0px";e.borderBottomWidth="0px";e.height="0px";e.borderColor=f}else{if(f){e.borderColor=f;e.borderStyle="solid";e.borderWidth="0px 1px"}}if(!this.options.compact&&(n==(this.options.numSlices-1))){e.height="2px"}this._setMargin(d,n,c);this._setBorder(d,n,c);return d},_setOptions:function(a){this.options={corners:"all",color:"fromElement",bgColor:"fromParent",blend:true,border:false,compact:false};Object.extend(this.options,a||{});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(a,b){if(a=="transparent"){return b}else{if(this.options.border){return this.options.border}else{if(this.options.blend){return this._blend(b,a)}else{return ""}}}},_setMargin:function(a,n,b){var c=this._marginSize(n);var d=b=="top"?this._whichSideTop():this._whichSideBottom();if(d=="left"){a.style.marginLeft=c+"px";a.style.marginRight="0px"}else{if(d=="right"){a.style.marginRight=c+"px";a.style.marginLeft="0px"}else{a.style.marginLeft=c+"px";a.style.marginRight=c+"px"}}},_setBorder:function(a,n,b){var c=this._borderSize(n);var d=b=="top"?this._whichSideTop():this._whichSideBottom();if(d=="left"){a.style.borderLeftWidth=c+"px";a.style.borderRightWidth="0px"}else{if(d=="right"){a.style.borderRightWidth=c+"px";a.style.borderLeftWidth="0px"}else{a.style.borderLeftWidth=c+"px";a.style.borderRightWidth=c+"px"}}if(this.options.border!=false){a.style.borderLeftWidth=c+"px"}a.style.borderRightWidth=c+"px"},_marginSize:function(n){if(this._isTransparent()){return 0}var a=[5,3,2,1];var b=[3,2,1,0];var c=[2,1];var d=[1,0];if(this.options.compact&&this.options.blend){return d[n]}else{if(this.options.compact){return c[n]}else{if(this.options.blend){return b[n]}else{return a[n]}}}},_borderSize:function(n){var a=[5,3,2,1];var b=[2,1,1,1];var c=[1,0];var d=[0,2,0,0];if(this.options.compact&&(this.options.blend||this._isTransparent())){return 1}else{if(this.options.compact){return c[n]}else{if(this.options.blend){return b[n]}else{if(this.options.border){return d[n]}else{if(this._isTransparent()){return a[n]}}}}}return 0},_hasString:function(a){for(var i=1;i<arguments.length;i++){if(a.indexOf(arguments[i])>=0){return true}}return false},_blend:function(a,b){var c=Rico.Color.createFromHex(a);c.blend(Rico.Color.createFromHex(b));return c},_background:function(a){try{return Rico.Color.createColorFromBackground(a).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(a){return a.childNodes.length==1&&a.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(a){this.dropZones[this.dropZones.length]=a},deregisterDropZone:function(a){var b=new Array();var j=0;for(var i=0;i<this.dropZones.length;i++){if(this.dropZones[i]!=a){b[j++]=this.dropZones[i]}}this.dropZones=b},clearDropZones:function(){this.dropZones=new Array()},registerDraggable:function(a){this.draggables[this.draggables.length]=a;this._addMouseDownHandler(a)},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,a){this.origPos=RicoUtil.toDocumentPosition(a);this.startx=e.screenX-this.origPos.x;this.starty=e.screenY-this.origPos.y;this.interestedInMotionEvents=this.hasSelection();this._terminateEvent(e)},updateSelection:function(a,b){if(!b){this.clearSelection()}if(a.isSelected()){this.currentDragObjects.removeItem(a);a.deselect();if(a==this.lastSelectedDraggable){this.lastSelectedDraggable=null}}else{this.currentDragObjects[this.currentDragObjects.length]=a;a.select();this.lastSelectedDraggable=a}},_mouseDownHandler:function(e){if(arguments.length==0){e=event}var a=e.which!=undefined;if((a&&e.which!=1)||(!a&&e.button!=1)){return}var b=e.target?e.target:e.srcElement;var c=b.draggable;var d=b;while(c==null&&d.parentNode){d=d.parentNode;c=d.draggable}if(c==null){return}this.updateSelection(c,e.ctrlKey);if(this.hasSelection()){for(var i=0;i<this.dropZones.length;i++){this.dropZones[i].clearPositionCache()}}this.setStartDragFromElement(e,c.getMouseDownHTMLElement())},_mouseMoveHandler:function(e){var a=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 a;if(this.currentDragObjects.length>1){a=this.currentDragObjects[0].getMultiObjectDragGUI(this.currentDragObjects)}else{a=this.currentDragObjects[0].getSingleObjectDragGUI()}if(RicoUtil.getElementsComputedStyle(a,"position")!="absolute"){a.style.position="absolute"}if(a.parentNode==null||a.parentNode.nodeType==11){document.body.appendChild(a)}this.dragElement=a;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 a=this.dragElement.style;a.left=(e.screenX+this._leftOffset(e)-this.startx)+"px";a.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 a=e.which!=undefined;if((a&&e.which!=1)||(!a&&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 a=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);a=true;break}}}return a},_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,a){var b=a.getAbsoluteRect();return e.clientX>b.left+this._leftOffset(e)&&e.clientX<b.right+this._leftOffset(e)&&e.clientY>b.top+this._topOffset(e)&&e.clientY<b.bottom+this._topOffset(e)},_addMouseDownHandler:function(a){htmlElement=a.getMouseDownHTMLElement();if(htmlElement!=null){htmlElement.draggable=a;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 a=this.dropZones[i];if(a.canAccept(this.currentDragObjects)){a.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(a,b){this.type=a;this.htmlElement=$(b);this.selected=false},getMouseDownHTMLElement:function(){return this.htmlElement},select:function(){this.selected=true;if(this.showingSelected){return}var a=this.getMouseDownHTMLElement();var b=Rico.Color.createColorFromBackground(a);b.isBright()?b.darken(0.033):b.brighten(0.033);this.saveBackground=RicoUtil.getElementsComputedStyle(a,"backgroundColor","background-color");a.style.backgroundColor=b.asHex();this.showingSelected=true},deselect:function(){this.selected=false;if(!this.showingSelected){return}var a=this.getMouseDownHTMLElement();a.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(a){return this.htmlElement},getDroppedGUI:function(){return this.htmlElement},toString:function(){return this.type+":"+this.htmlElement+":"}};Rico.Dropzone=Class.create();Rico.Dropzone.prototype={initialize:function(a){this.htmlElement=$(a);this.absoluteRect=null},getHTMLElement:function(){return this.htmlElement},clearPositionCache:function(){this.absoluteRect=null},getAbsoluteRect:function(){if(this.absoluteRect==null){var a=this.getHTMLElement();var b=RicoUtil.toViewportPosition(a);this.absoluteRect={top:b.y,left:b.x,bottom:b.y+a.offsetHeight,right:b.x+a.offsetWidth}}return this.absoluteRect},activate:function(){var a=this.getHTMLElement();if(a==null||this.showingActive){return}this.showingActive=true;this.saveBackgroundColor=a.style.backgroundColor;var b="#ffea84";var c=Rico.Color.createColorFromBackground(a);if(c==null){a.style.backgroundColor=b}else{c.isBright()?c.darken(0.2):c.brighten(0.2);a.style.backgroundColor=c.asHex()}},deactivate:function(){var a=this.getHTMLElement();if(a==null||!this.showingActive){return}a.style.backgroundColor=this.saveBackgroundColor;this.showingActive=false;this.saveBackgroundColor=null},showHover:function(){var a=this.getHTMLElement();if(a==null||this.showingHover){return}this.saveBorderWidth=a.style.borderWidth;this.saveBorderStyle=a.style.borderStyle;this.saveBorderColor=a.style.borderColor;this.showingHover=true;a.style.borderWidth="1px";a.style.borderStyle="solid";a.style.borderColor="#ffff00"},hideHover:function(){var a=this.getHTMLElement();if(a==null||!this.showingHover){return}a.style.borderWidth=this.saveBorderWidth;a.style.borderStyle=this.saveBorderStyle;a.style.borderColor=this.saveBorderColor;this.showingHover=false},canAccept:function(a){return true},accept:function(a){var b=this.getHTMLElement();if(b==null){return}n=a.length;for(var i=0;i<n;i++){var c=a[i].getDroppedGUI();if(RicoUtil.getElementsComputedStyle(c,"position")=="absolute"){c.style.position="static";c.style.top="";c.style.top=""}b.appendChild(c)}}};Rico.Effect={};Rico.Effect.SizeAndPosition=Class.create();Rico.Effect.SizeAndPosition.prototype={initialize:function(a,x,y,w,h,b,c,d){this.element=$(a);this.x=x;this.y=y;this.w=w;this.h=h;this.duration=b;this.steps=c;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 a=Math.round(this.duration/this.steps);var b=this.element.offsetLeft;var c=this.element.offsetTop;var d=this.element.offsetWidth;var e=this.element.offsetHeight;this.x=(this.x)?this.x:b;this.y=(this.y)?this.y:c;this.w=(this.w)?this.w:d;this.h=(this.h)?this.h:e;var f=this.steps>0?(this.x-b)/this.steps:0;var g=this.steps>0?(this.y-c)/this.steps:0;var h=this.steps>0?(this.w-d)/this.steps:0;var i=this.steps>0?(this.h-e)/this.steps:0;this.moveBy(f,g);this.resizeBy(h,i);this.duration-=a;this.steps--;this.timer=setTimeout(this.sizeAndPosition.bind(this),a)},isFinished:function(){return this.steps<=0},moveBy:function(a,b){var c=this.element.offsetLeft;var d=this.element.offsetTop;var e=parseInt(a);var f=parseInt(b);var g=this.element.style;if(e!=0){g.left=(c+e)+"px"}if(f!=0){g.top=(d+f)+"px"}},resizeBy:function(a,b){var c=this.element.offsetWidth;var d=this.element.offsetHeight;var e=parseInt(a);var f=parseInt(b);var g=this.element.style;if(e!=0){g.width=(c+e)+"px"}if(f!=0){g.height=(d+f)+"px"}}};Rico.Effect.Size=Class.create();Rico.Effect.Size.prototype={initialize:function(a,w,h,b,c,d){new Rico.Effect.SizeAndPosition(a,null,null,w,h,b,c,d)}};Rico.Effect.Position=Class.create();Rico.Effect.Position.prototype={initialize:function(a,x,y,b,c,d){new Rico.Effect.SizeAndPosition(a,x,y,null,null,b,c,d)}};Rico.Effect.Round=Class.create();Rico.Effect.Round.prototype={initialize:function(a,b,c){var d=document.getElementsByTagAndClassName(a,b);for(var i=0;i<d.length;i++){Rico.Corner.round(d[i],c)}}};Rico.Effect.FadeTo=Class.create();Rico.Effect.FadeTo.prototype={initialize:function(a,b,c,d,e){this.element=$(a);this.opacity=b;this.duration=c;this.steps=d;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 a=Math.round(this.duration/this.steps);var b=this.getElementOpacity();var c=this.steps>0?(this.opacity-b)/this.steps:0;this.changeOpacityBy(c);this.duration-=a;this.steps--;this.timer=setTimeout(this.fadeTo.bind(this),a)},changeOpacityBy:function(v){var a=this.getElementOpacity();var b=Math.max(0,Math.min(a+v,1));this.element.ricoOpacity=b;this.element.style.filter="alpha(opacity:"+Math.round(b*100)+")";this.element.style.opacity=b},isFinished:function(){return this.steps<=0},getElementOpacity:function(){if(this.element.ricoOpacity==undefined){var a=RicoUtil.getElementsComputedStyle(this.element,"opacity");this.element.ricoOpacity=a!=undefined?a:1}return parseFloat(this.element.ricoOpacity)}};Rico.Effect.AccordionSize=Class.create();Rico.Effect.AccordionSize.prototype={initialize:function(a,b,c,d,e,f,g){this.e1=$(a);this.e2=$(b);this.start=c;this.end=d;this.duration=e;this.steps=f;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 a=Math.round(this.duration/this.steps);var b=this.steps>0?(parseInt(this.e1.offsetHeight)-this.start)/this.steps:0;this.resizeBy(b);this.duration-=a;this.steps--;this.timer=setTimeout(this.accordionSize.bind(this),a)},isFinished:function(){return this.steps<=0},resizeBy:function(a){var b=this.e1.offsetHeight;var c=this.e2.offsetHeight;var d=parseInt(a);if(a!=0){this.e1.style.height=(b-d)+"px";this.e2.style.height=(c+d)+"px"}}};Rico.LiveGridMetaData=Class.create();Rico.LiveGridMetaData.prototype={initialize:function(a,b,c,d){this.pageSize=a;this.totalRows=b;this.setOptions(d);this.ArrowHeight=16;this.columnCount=c},setOptions:function(a){this.options={largeBufferSize:7,nearLimitFactor:0.2};Object.extend(this.options,a||{})},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(a,b){this.isIE=navigator.userAgent.toLowerCase().indexOf("msie")>=0;this.liveGrid=a;this.metaData=a.metaData;this.createScrollBar();this.scrollTimeout=null;this.lastScrollPos=0;this.viewPort=b;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 a=$(this.liveGrid.tableId+"_header");if(a){a.rows[0].cells[0].style.width=(a.rows[0].cells[0].offsetWidth+1)+"px"}},createScrollBar:function(){var a=this.liveGrid.viewPort.visibleHeight();this.scrollerDiv=document.createElement("div");var b=this.scrollerDiv.style;b.borderRight=this.liveGrid.options.scrollerBorderRight;b.position="relative";b.left=this.isIE?"-6px":"-3px";b.width="19px";b.height=a+"px";b.overflow="auto";this.heightDiv=document.createElement("div");this.heightDiv.style.width="1px";this.heightDiv.style.height=parseInt(a*this.metaData.getTotalRows()/this.metaData.getPageSize())+"px";this.scrollerDiv.appendChild(this.heightDiv);this.scrollerDiv.onscroll=this.handleScroll.bindAsEventListener(this);var c=this.liveGrid.table;c.parentNode.parentNode.insertBefore(this.scrollerDiv,c.parentNode.nextSibling);var d=this.isIE?"mousewheel":"DOMMouseScroll";Event.observe(c,d,function(e){if(e.wheelDelta>=0||e.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 a=this.liveGrid.table;var b=this.viewPort.visibleHeight();this.heightDiv.style.height=parseInt(b*this.metaData.getTotalRows()/this.metaData.getPageSize())+"px"},rowToPixel:function(a){return (a/this.metaData.getTotalRows())*this.heightDiv.offsetHeight},moveScroll:function(a){this.scrollerDiv.scrollTop=this.rowToPixel(a);if(this.metaData.options.onscroll){this.metaData.options.onscroll(this.liveGrid,a)}},handleScroll:function(){if(this.scrollTimeout){clearTimeout(this.scrollTimeout)}var a=this.lastScrollPos-this.scrollerDiv.scrollTop;if(a!=0){var r=this.scrollerDiv.scrollTop%this.viewPort.rowHeight;if(r!=0){this.unplug();if(a<0){this.scrollerDiv.scrollTop+=(this.viewPort.rowHeight-r)}else{this.scrollerDiv.scrollTop-=r}this.plugin()}}var b=parseInt(this.scrollerDiv.scrollTop/this.viewPort.rowHeight);this.liveGrid.requestContentRefresh(b);this.viewPort.scrollTo(this.scrollerDiv.scrollTop);if(this.metaData.options.onscroll){this.metaData.options.onscroll(this.liveGrid,b)}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(a,b){this.startPos=0;this.size=0;this.metaData=a;this.rows=new Array();this.updateInProgress=false;this.viewPort=b;this.maxBufferSize=a.getLargeBufferSize()*2;this.maxFetchSize=a.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(a){var b=a.getElementsByTagName("rows")[0];this.updateUI=b.getAttribute("update_ui")=="true";var c=new Array();var d=b.getElementsByTagName("tr");for(var i=0;i<d.length;i++){var e=c[i]=new Array();var f=d[i].getElementsByTagName("td");for(var j=0;j<f.length;j++){var g=f[j];var h=g.getAttribute("convert_spaces")=="true";var k=RicoUtil.getContentAsString(g);e[j]=h?this.convertSpaces(k):k;if(!e[j]){e[j]="&nbsp;"}}}return c},update:function(a,b){var c=this.loadRows(a);if(this.rows.length==0){this.rows=c;this.size=this.rows.length;this.startPos=b;return}if(b>this.startPos){if(this.startPos+this.rows.length<b){this.rows=c;this.startPos=b}else{this.rows=this.rows.concat(c.slice(0,c.length));if(this.rows.length>this.maxBufferSize){var d=this.rows.length;this.rows=this.rows.slice(this.rows.length-this.maxBufferSize,this.rows.length);this.startPos=this.startPos+(d-this.rows.length)}}}else{if(b+c.length<this.startPos){this.rows=c}else{this.rows=c.slice(0,this.startPos).concat(this.rows);if(this.rows.length>this.maxBufferSize){this.rows=this.rows.slice(0,this.maxBufferSize)}}this.startPos=b}this.size=this.rows.length},clear:function(){this.rows=new Array();this.startPos=0;this.size=0},isOverlapping:function(a,b){return ((a<this.endPos())&&(this.startPos<a+b))||(this.endPos()==0)},isInRange:function(a){return (a>=this.startPos)&&(a+this.metaData.getPageSize()<=this.endPos())},isNearingTopLimit:function(a){return a-this.startPos<this.metaData.getLimitTolerance()},endPos:function(){return this.startPos+this.rows.length},isNearingBottomLimit:function(a){return this.endPos()-(a+this.metaData.getPageSize())<this.metaData.getLimitTolerance()},isAtTop:function(){return this.startPos==0},isAtBottom:function(){return this.endPos()==this.metaData.getTotalRows()},isNearingLimit:function(a){return (!this.isAtTop()&&this.isNearingTopLimit(a))||(!this.isAtBottom()&&this.isNearingBottomLimit(a))},getFetchSize:function(a){var b=this.getFetchOffset(a);var c=0;if(b>=this.startPos){var d=this.maxFetchSize+b;if(d>this.metaData.totalRows){d=this.metaData.totalRows}c=d-b;if(b==0&&c<this.maxFetchSize){c=this.maxFetchSize}}else{var c=this.startPos-b;if(c>this.maxFetchSize){c=this.maxFetchSize}}return c},getFetchOffset:function(a){var b=a;if(a>this.startPos){b=(a>this.endPos())?a:this.endPos()}else{if(a+this.maxFetchSize>=this.startPos){var b=this.startPos-this.maxFetchSize;if(b<0){b=0}}}this.lastOffset=b;return b},getRows:function(a,b){var c=a-this.startPos;var d=c+b;if(d>this.size){d=this.size}var e=new Array();var f=0;for(var i=c;i<d;i++){e[f++]=this.rows[i]}return e},convertSpaces:function(s){return s.split(" ").join("&nbsp;")}};Rico.GridViewPort=Class.create();Rico.GridViewPort.prototype={initialize:function(a,b,c,d,e){this.lastDisplayedStartPos=0;this.div=a.parentNode;this.table=a;this.rowHeight=b;this.div.style.height=(this.rowHeight*c)+"px";this.div.style.overflow="hidden";this.buffer=d;this.liveGrid=e;this.visibleRows=c+1;this.lastPixelOffset=0;this.startPos=0},populateRow:function(a,b){for(var j=0;j<b.length;j++){a.cells[j].innerHTML=b[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(a){if(a==this.lastRowPos&&!this.isPartialBlank&&!this.isBlank){return}if((a+this.visibleRows<this.buffer.startPos)||(this.buffer.startPos+this.buffer.size<a)||(this.buffer.size==0)){this.clearRows();return}this.isBlank=false;var b=this.buffer.startPos>a;var c=b?this.buffer.startPos:a;var d=(this.buffer.startPos+this.buffer.size<a+this.visibleRows)?this.buffer.startPos+this.buffer.size:a+this.visibleRows;var e=d-c;var f=this.buffer.getRows(c,e);var g=this.visibleRows-e;var h=b?0:e;var i=b?g:0;for(var j=0;j<f.length;j++){this.populateRow(this.table.rows[j+i],f[j])}for(var j=0;j<g;j++){this.populateRow(this.table.rows[j+h],this.buffer.getBlankRow())}this.isPartialBlank=g>0;this.lastRowPos=a;this.liveGrid.table.className=this.liveGrid.options.tableClass;var k=this.liveGrid.options.onRefreshComplete;if(k!=null){k()}},scrollTo:function(a){if(this.lastPixelOffset==a){return}this.refreshContents(parseInt(a/this.rowHeight));this.div.scrollTop=a%this.rowHeight;this.lastPixelOffset=a},visibleHeight:function(){return parseInt(RicoUtil.getElementsComputedStyle(this.div,"height"))}};Rico.LiveGridRequest=Class.create();Rico.LiveGridRequest.prototype={initialize:function(a,b){this.requestOffset=a}};Rico.LiveGrid=Class.create();Rico.LiveGrid.prototype={initialize:function(a,b,c,d,e,f){this.options={tableClass:$(a).className,loadingClass:$(a).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,e||{});this.ajaxOptions={parameters:null};Object.extend(this.ajaxOptions,f||{});this.tableId=a;this.table=$(a);this.addLiveGridHtml();var g=this.table.rows[0].cells.length;this.metaData=new Rico.LiveGridMetaData(b,c,g,e);this.buffer=new Rico.LiveGridBuffer(this.metaData);var h=this.table.rows.length;this.viewPort=new Rico.GridViewPort(this.table,this.table.offsetHeight/h,b,this.buffer,this);this.scroller=new Rico.LiveGridScroller(this,this.viewPort);this.options.sortHandler=this.sortHandler.bind(this);if($(a+"_header")){this.sort=new Rico.LiveGridSort(a+"_header",this.options)}this.processingRequest=null;this.unprocessedRequest=null;this.initAjax(d);if(this.options.prefetchBuffer||this.options.prefetchOffset>0){var i=0;if(this.options.offset){i=this.options.offset;this.scroller.moveScroll(i);this.viewPort.scrollTo(this.scroller.rowToPixel(i))}if(this.options.sortCol){this.sortCol=e.sortCol;this.sortDir=e.sortDir}this.requestContentRefresh(i)}},addLiveGridHtml:function(){if(this.table.getElementsByTagName("thead").length>0){var a=this.table.cloneNode(true);a.setAttribute("id",this.tableId+"_header");a.setAttribute("class",this.table.className+"_header");for(var i=0;i<a.tBodies.length;i++){a.removeChild(a.tBodies[i])}this.table.deleteTHead();this.table.parentNode.insertBefore(a,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(a){if(!a){return}this.sortCol=a.name;this.sortDir=a.currentSort;this.resetContents();this.requestContentRefresh(0)},adjustRowSize:function(){},setTotalRows:function(a){this.resetContents();this.metaData.setTotalRows(a);this.scroller.updateSize()},initAjax:function(a){ajaxEngine.registerRequest(this.tableId+"_request",a);ajaxEngine.registerAjaxObject(this.tableId+"_updater",this)},invokeAjax:function(){},handleTimedOut:function(){this.processingRequest=null;this.processQueuedRequest()},fetchBuffer:function(a){if(this.buffer.isInRange(a)&&!this.buffer.isNearingLimit(a)){return}if(this.processingRequest){this.unprocessedRequest=new Rico.LiveGridRequest(a);return}var b=this.buffer.getFetchOffset(a);this.processingRequest=new Rico.LiveGridRequest(a);this.processingRequest.bufferOffset=b;var c=this.buffer.getFetchSize(a);var d=false;var e;if(this.options.requestParameters){e=this._createQueryString(this.options.requestParameters,0)}e=(e==null)?"":e+"&";e=e+"id="+this.tableId+"&page_size="+c+"&offset="+b;if(this.sortCol){e=e+"&sort_col="+escape(this.sortCol)+"&sort_dir="+this.sortDir}this.ajaxOptions.parameters=e;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(a){this.fetchBuffer(a)},ajaxUpdate:function(a){try{clearTimeout(this.timeoutHandler);this.buffer.update(a,this.processingRequest.bufferOffset);this.viewPort.bufferChanged()}catch(err){}finally{this.processingRequest=null}this.processQueuedRequest()},_createQueryString:function(a,b){var c="";if(!a){return c}for(var i=b;i<a.length;i++){if(i!=b){c+="&"}var d=a[i];if(d.name!=undefined&&d.value!=undefined){c+=d.name+"="+escape(d.value)}else{var e=d.indexOf("=");var f=d.substring(0,e);var g=d.substring(e+1);c+=f+"="+escape(g)}}return c},processQueuedRequest:function(){if(this.unprocessedRequest!=null){this.requestContentRefresh(this.unprocessedRequest.requestOffset);this.unprocessedRequest=null}}};Rico.LiveGridSort=Class.create();Rico.LiveGridSort.prototype={initialize:function(a,b){this.headerTableId=a;this.headerTable=$(a);this.options=b;this.setOptions();this.applySortBehavior();if(this.options.sortCol){this.setSortUI(this.options.sortCol,this.options.sortDir)}},setSortUI:function(a,b){var c=this.options.columns;for(var i=0;i<c.length;i++){if(c[i].name==a){this.setColumnSort(i,b);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 a=this.headerTable.rows[0];var b=a.cells;for(var i=0;i<b.length;i++){this.addSortBehaviorToColumn(i,b[i])}},addSortBehaviorToColumn:function(n,a){if(this.options.columns[n].isSortable()){a.id=this.headerTableId+"_"+n;a.style.cursor="pointer";a.onclick=this.headerCellClicked.bindAsEventListener(this);a.innerHTML=a.innerHTML+'<span id="'+this.headerTableId+"_img_"+n+'">&nbsp;&nbsp;&nbsp;</span>'}},headerCellClicked:function(a){var b=a.target?a.target:a.srcElement;var c=b.id;var d=parseInt(c.substring(c.lastIndexOf("_")+1));var e=this.getSortedColumnIndex();if(e!=-1){if(e!=d){this.removeColumnSort(e);this.setColumnSort(d,Rico.TableColumn.SORT_ASC)}else{this.toggleColumnSort(e)}}else{this.setColumnSort(d,Rico.TableColumn.SORT_ASC)}if(this.options.sortHandler){this.options.sortHandler(this.options.columns[d])}},removeColumnSort:function(n){this.options.columns[n].setUnsorted();this.setSortImage(n)},setColumnSort:function(n,a){if(isNaN(n)){return}this.options.columns[n].setSorted(a);this.setSortImage(n)},toggleColumnSort:function(n){this.options.columns[n].toggleSort();this.setSortImage(n)},setSortImage:function(n){var a=this.options.columns[n].getSortDirection();var b=$(this.headerTableId+"_img_"+n);if(a==Rico.TableColumn.UNSORTED){b.innerHTML="&nbsp;&nbsp;"}else{if(a==Rico.TableColumn.SORT_ASC){b.innerHTML='&nbsp;&nbsp;<img width="'+this.options.sortImageWidth+'" height="'+this.options.sortImageHeight+'" src="'+this.options.sortAscendImg+'"/>'}else{if(a==Rico.TableColumn.SORT_DESC){b.innerHTML='&nbsp;&nbsp;<img width="'+this.options.sortImageWidth+'" height="'+this.options.sortImageHeight+'" src="'+this.options.sortDescendImg+'"/>'}}}},getSortedColumnIndex:function(){var a=this.options.columns;for(var i=0;i<a.length;i++){if(a[i].isSorted()){return i}}return -1},introspectForColumnInfo:function(){var a=new Array();var b=this.headerTable.rows[0];var c=b.cells;for(var i=0;i<c.length;i++){a.push(new Rico.TableColumn(this.deriveColumnNameFromCell(c[i],i),true))}return a},convertToTableColumns:function(a){var b=new Array();for(var i=0;i<a.length;i++){b.push(new Rico.TableColumn(a[i][0],a[i][1]))}return b},deriveColumnNameFromCell:function(a,b){var c=a.innerText!=undefined?a.innerText:a.textContent;return c?c.toLowerCase().split(" ").join("_"):"col_"+b}};Rico.TableColumn=Class.create();Rico.TableColumn.UNSORTED=0;Rico.TableColumn.SORT_ASC="ASC";Rico.TableColumn.SORT_DESC="DESC";Rico.TableColumn.prototype={initialize:function(a,b){this.name=a;this.sortable=b;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(a){this.setSorted(Rico.TableColumn.UNSORTED)},setSorted:function(a){this.currentSort=a}};var RicoUtil={getElementsComputedStyle:function(a,b,c){if(arguments.length==2){c=b}var d=$(a);if(d.currentStyle){return d.currentStyle[b]}else{return document.defaultView.getComputedStyle(d,null).getPropertyValue(c)}},createXmlDocument:function(){if(document.implementation&&document.implementation.createDocument){var a=document.implementation.createDocument("","",null);if(a.readyState==null){a.readyState=1;a.addEventListener("load",function(){a.readyState=4;if(typeof a.onreadystatechange=="function"){a.onreadystatechange()}},false)}return a}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(a){return a.xml!=undefined?this._getContentAsStringIE(a):this._getContentAsStringMozilla(a)},_getContentAsStringIE:function(a){var b="";for(var i=0;i<a.childNodes.length;i++){var n=a.childNodes[i];if(n.nodeType==4){b+=n.nodeValue}else{b+=n.xml}}return b},_getContentAsStringMozilla:function(a){var b=new XMLSerializer();var c="";for(var i=0;i<a.childNodes.length;i++){var n=a.childNodes[i];if(n.nodeType==4){c+=n.nodeValue}else{c+=b.serializeToString(n)}}return c},toViewportPosition:function(a){return this._toAbsolute(a,true)},toDocumentPosition:function(a){return this._toAbsolute(a,false)},_toAbsolute:function(a,b){if(navigator.userAgent.toLowerCase().indexOf("msie")==-1){return this._toAbsoluteMozilla(a,b)}var x=0;var y=0;var c=a;while(c){var d=0;var e=0;if(c!=a){var d=parseInt(this.getElementsComputedStyle(c,"borderLeftWidth"));var e=parseInt(this.getElementsComputedStyle(c,"borderTopWidth"));d=isNaN(d)?0:d;e=isNaN(e)?0:e}x+=c.offsetLeft-c.scrollLeft+d;y+=c.offsetTop-c.scrollTop+e;c=c.offsetParent}if(b){x-=this.docScrollLeft();y-=this.docScrollTop()}return {x:x,y:y}},_toAbsoluteMozilla:function(a,b){var x=0;var y=0;var c=a;while(c){x+=c.offsetLeft;y+=c.offsetTop;c=c.offsetParent}c=a;while(c&&c!=document.body&&c!=document.documentElement){if(c.scrollLeft){x-=c.scrollLeft}if(c.scrollTop){y-=c.scrollTop}c=c.parentNode}if(b){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}}}}}
