/* series_detail.js */
var SeriesDetail=Class.create({arrSeries:false,objSeries:false,active:false,_prefix:'',_url:false,group:false,request:false,_current:{group:false,request:false},_classes:{highlightedCell:"snapshotShown",highlightedRow:"snapshotShown",originalRow:"series_row",detailDiv:"homeSnapshotLoader",detailTD:"snapshotTD",closeBtn:"closeBtn",loadingText:"loadingText",containerDiv:"containerDiv"},_params:{loadingText:"loading...",closeBtnText:"x",colspan:10,height:125,closeTimeout:5000},autoShowSerie:false,_timeout:false,initialize:function(){this.arrSeries=new Array();this.objSeries=new Array();},initScope:function(){this.showDetail._oScope=this;this.clearShowDetailTimeout._oScope=this;},addSerie:function(identifier,hotzone,seriesGroup,row,cell){if(row==null){row=$(hotzone).parentNode.parentNode;}
if(cell==null){cell=$(hotzone).parentNode;}
var tmp={'id':identifier,'hotzone':hotzone,'seriesGroup':seriesGroup,'row':row,'cell':cell};this.objSeries[identifier]=tmp;this.arrSeries.push(tmp);},setup:function(){},initEvents:function(){for(i=0;i<this.arrSeries.length;i++){serie=this.arrSeries[i];$(serie.hotzone).serieId=serie.id;$(serie.hotzone).controller=this;$(serie.hotzone).row=serie.row;$(serie.hotzone).cell=serie.cell;Event.observe(serie.hotzone,'click',function(ev){target=this;me=target.controller;if(target.serieId==null){}else{me.nextSerieId=target.serieId;me._current.hotZone=target;me._current.row=$(target.row);me._current.cell=$(target.cell);me._timeout=me.showDetail.bind(me).delay(0.01);}});Event.observe(serie.hotzone,'mouseout',function(ev){target=ev.currentTarget;if(typeof target=='undefined'){}else{if(target.controller==null){}else{me=target.controller;me.clearShowDetailTimeout.bind(me)();}}});}
this.startup();},showDetail:function(){tmp=this.objSeries[this.nextSerieId];this.show(tmp.id,tmp.seriesGroup);},clearShowDetailTimeout:function(){clearTimeout(this._timeout);},startup:function(){if(this.autoShowSerie=='random'){this.showRandomSerie();}},showRandomSerie:function(){index=Math.floor(Math.random()*this.arrSeries.length);this.showSerie(this.arrSeries[index].id,false);},showSerie:function(serieId,animate){target=$(this.objSeries[serieId].hotzone);me=target.controller;me.nextSerieId=target.serieId;me._current.hotZone=target;me._current.row=$(target.row);me._current.cell=$(target.cell);tmp=this.objSeries[this.nextSerieId];this.show(tmp.id,tmp.seriesGroup,animate);},show:function(serie_id,group_id,animate){if(typeof(animate)=='undefined'){animate=true;}
if(this._current.serie==serie_id){return false;}
if($(this._prefix+'snapshotRow'+group_id)==null){if(this.group){$(this._prefix+"snapshotDiv").id=this._prefix+"oldSnapshotDiv";$(this._prefix+"containerDiv").id=this._prefix+"oldContainerDiv";this.remove(this.group);}
this.createRow(group_id,serie_id,animate);}
this._current.serie=serie_id;this.highlightLabel();this.loadDetailData(serie_id);},createRow:function(group_id,serie_id,animate){if(typeof(animate)=='undefined'){animate=true;}
row=me._current.row;currentTable=row.parentNode;newRow=currentTable.insertRow(row.rowIndex+1);newRow.id=this._prefix+'snapshotRow'+group_id;newCell=new Element('td',{colspan:this._params.colspan});newContainerDiv=new Element('div',{"class":this._classes.containerDiv,id:this._prefix+"containerDiv"});newDiv=new Element('div',{"class":this._classes.detailDiv,id:this._prefix+"snapshotDiv"});newCloseBtn=new Element('span',{"class":this._classes.closeBtn,id:this._prefix+"btnClose"});newCloseBtn.update(this._params.closeBtnText);newCell.addClassName(this._classes.detailTD);newDiv.appendChild(newCloseBtn);newDiv.appendChild(newContainerDiv);newCell.appendChild(newDiv);newRow.appendChild(newCell);this.group=group_id;this.group=group_id;this._current.snapshot=newDiv;this._current.containerDiv=newContainerDiv;Event.observe(this._prefix+"btnClose",'click',this.clickCloseBtn.bind(this));if(animate){new Effect.Scale(this._current.snapshot,100,{scaleX:false,scaleContent:true,scaleFrom:0,duration:1.0,scaleMode:{originalHeight:this._params.height}});}else{new Effect.Scale(this._current.snapshot,100,{scaleX:false,scaleContent:true,scaleFrom:0,duration:0.01,scaleMode:{originalHeight:this._params.height}});}},clickCloseBtn:function(){this.unhighlightLabel();$(this._prefix+"snapshotDiv").id=this._prefix+"oldSnapshotDiv";$(this._prefix+'snapshotRow'+this.group).remove();this._current.serie=false;this.group=false;},loadDetailData:function(serieId){$(this._prefix+"containerDiv").update("<span class='"+this._classes.loadingText+"'>"+this._params.loadingText+"</span>");if(this.request){this.request.transport.abort();}
if(this._url){this.request=new Ajax.Updater(this._prefix+"containerDiv",this._url+serieId,{evalScripts:true});}else{alert('Error: url prefix not set');}},highlightLabel:function(serie_id){cell=this._current.cell;row=this._current.row;cells=$$('td.'+this._prefix+"_selectedCell");for(i=0;i<cells.length;i++){cells[i].removeClassName(this._classes.highlightedCell);}
cell.addClassName(this._classes.highlightedCell);cell.addClassName(this._prefix+"_selectedCell");rows=$$('tr.'+this._prefix+"selectedRow");for(i=0;i<rows.length;i++){rows[i].className=this._classes.originalRow;}
row.className=this._classes.originalRow+" "+this._classes.highlightedRow+" "+this._prefix+"selectedRow";},unhighlightLabel:function(){cells=$$('td.'+this._prefix+"_selectedCell");for(i=0;i<cells.length;i++){cells[i].removeClassName(this._classes.highlightedCell);}
rows=$$('tr.'+this._prefix+"selectedRow");for(i=0;i<rows.length;i++){rows[i].className=this._classes.originalRow;}},remove:function(group_id){new Effect.Scale(this._prefix+"oldSnapshotDiv",0,{scaleX:false,scaleContent:true,duration:1.0,serie:group_id,me:this,scaleMode:'box',afterFinish:function(obj){if($(me._prefix+'snapshotRow'+obj.options.serie)!=null){$(me._prefix+'snapshotRow'+obj.options.serie).remove();}
if($(me._prefix+'snapshotDiv')!=null){$(me._prefix+'snapshotDiv').setStyle('z-index',500);}}});}});var ChartLoader=Class.create({properties:Array,size:String,serieId:String,url:String,target:String,interval:String,loadingSign:String,updaterParams:{evalScripts:true},initialize:function(params){this.initDefaults();this.setDefaults(params);},initDefaults:function(){this.properties=['size','serieId','url','target','interval','updaterParams','loadingSign'];this.loadingSign=false;},setDefaults:function(params){params=this.checkParams(params);for(a=0;a<this.properties.length;a++){this[this.properties[a]]=params[this.properties[a]];}},loadChart:function(params){params=this.checkParams(params);url=params.url+"/"+params.interval+"/"+params.size+"/"+params.serieId;if(params.loadingSign){if($(params.loadingSign)!=null){$(params.loadingSign).show();}}
new Ajax.Updater(params.target,url,Object.extend(params.updaterParams,{loadingSign:params.loadingSign,onComplete:function(ev){if($(ev.request.options.loadingSign)!=null){$(ev.request.options.loadingSign).hide();}}}));},checkParams:function(params){for(a=0;a<this.properties.length;a++){if(typeof(params[this.properties[a]])=='undefined'){params[this.properties[a]]=this[this.properties[a]];}}
return params;}});
