/*
  SimpleJsMin From YouYee OpenSource 
  2008 - 2009
*/

org.youyee.controls=org.youyee.controls||{};org.youyee.controls.DataGrid=function(fields,container,styleNames){this.styleName={DATAGRID:'yee_ctrls_datagrid',DRAG_DIV:'drag_div',INSERT_ICON:'insert_icon',DIVIDE_LINE:'yee_ctrls_dg_spline',DIVIDE_CURSOR:'yee_ctrls_dg_sp',ODD:'data_grid_odd'};if(styleNames){for(var i in styleNames){this.styleName[i]=styleNames[i];}}
this._dom=document.createElement('table');this._dom.className=this.styleName.DATAGRID;this._dom.cellSpacing=0;var d=this._dom;var colgroup=this.colgroup=document.createElement('colgroup');d.appendChild(document.createElement('thead'));d.appendChild(document.createElement('tbody'));var tbody=this.tbody=d.tBodies[0];var thead=this.thead=d.tHead;this._odd=false;this._fields=fields;this._dataProvider=[];this._dragDiv=document.createElement('div');this._dragDiv.className=this.styleName.DRAG_DIV;this._dragDiv.style.position='absolute';this._insertIcon=document.createElement('div');this._insertIcon.className=this.styleName.INSERT_ICON;this._insertIcon.style.position='absolute';this._sp=document.createElement('div');this._sp.className=this.styleName.DIVIDE_CURSOR;this._sp.style.position='absolute';this._sp.style.width='10px';this._spLine=document.createElement('div');this._spLine.className=this.styleName.DIVIDE_LINE;this._spLine.style.position='absolute';this._spLine.style.width='2px';thead.insertRow(0);this.sortOrder={};this.columeWidths=[];var s=this.sortOrder;var columes=this._fields.length;for(var k=0;k<columes;++k){colgroup.appendChild(document.createElement('col'));s[fields[k].dataField]=1;var _th=document.createElement('th');thead.rows[0].appendChild(_th);_th.innerHTML=this._fields[k].label;if(typeof(this._fields[k].className)!='undefined'){YEE.Dom.addClassName(_th,this._fields[k].className);}}
if(!!container){container.appendChild(this._dom);}
this._bindMethod();};org.youyee.controls.DataGrid.prototype._getLR=function(index){var th=this.thead.rows[0].getElementsByTagName('th')[index];var _x=YEE.Display.getX(th);var _width=YEE.Display.getWidth(th);return{'left':_x,'right':_x+_width};}
org.youyee.controls.DataGrid.prototype._bindMethod=function(){var dd=YEE.DragDrop;dd.initial();var _c=this.thead.rows[0].getElementsByTagName('th');var len=_c.length;var _handler;var ns=YEE.Event;var so=this.sortOrder;var _self=this;var Display=YEE.Display;var dg_x=Display.getX(_self._dom);var dg_y=Display.getY(_self._dom);var dg_width=Display.getWidth(_self._dom);ns.addEventListener(this._sp,ns.MOUSE_DOWN,function(evt){ns.preventDefault(evt);if(!_self._spLine.parentNode){document.body.appendChild(_self._spLine);}
_self._spLine.style.display='';var lr=_self._getLR(_self._spIndex);var lr2=_self._getLR(_self._spIndex+1);_self._spLine.style.top=dg_y+'px';_self._spLine.style.left=lr.right+'px';_self._spLine.style.height=Display.getHeight(_self._dom)+'px';dd.startDrag(_self._spLine,new YEE.geom.Rectangle(lr.left,dg_y,lr2.right-lr.left,0));_self._spDrag=true;_self._sp.style.height=_self._spLine.style.height;dd.onMouseMove=function(x,y){_self._sp.style.left=x-5;}
dd.onDragStop=function(x,y){_self._spLine.style.display='none';_self._spDrag=false;var _w=(x-lr.left>org.youyee.controls.DataGrid.MIN_COL_WIDTH)?(x-lr.left):org.youyee.controls.DataGrid.MIN_COL_WIDTH;var _ths=_self.thead.rows[0].getElementsByTagName('th');var _ws=[];var _thead_width=Display.getWidth(_self.thead.rows[0]);for(var i=0;i<_self._fields.length;++i){_ws[i]=Display.getWidth(_ths[i]);}
var _w2=_ws[_self._spIndex]+_ws[_self._spIndex+1]-_w;if(_w2<0){_w2=0;}
_ws[_self._spIndex]=_w;_ws[_self._spIndex+1]=_w2;for(i=0;i<_self._fields.length;i++){_ths[i].style.width=_ws[i]+'px';}
_self._odd=!_self._odd;_self.setDataProvider(_self._dataProvider);}});for(var i=0;i<len;++i){ns.addEventListener(_c[i],ns.MOUSE_OVER,(function(a,index){return function(evt){if(!_self._spDrag){if(!_self._sp.parentNode){document.body.appendChild(_self._sp);}
var lr,_index=index;if(_index==len-1){_index=index-1;}
lr=_self._getLR(_index);_self._spIndex=_index;_self._sp.style.left=(lr.right-5)+'px';_self._sp.style.top=dg_y+'px';_self._sp.style.height=Display.getHeight(_self._dom)+'px';}}})(_c[i],i));ns.addEventListener(_c[i],'click',(function(a,c){return function(evt){ns.removeEventListener(c,ns.MOUSE_MOVE,_handler);if(_self._drag){_self._drag=false;return;}
var _dfIndex=a;a_field=_self._fields[_dfIndex].dataField;_self.sortOrder[a_field]=-_self.sortOrder[a_field];_self._clearThead();YEE.Dom.addClassName(c,_self.sortOrder[a_field]>0?'aes_order':'desc_order')
_self.sortOn(a_field,_self.sortOrder[a_field]);YEE.Event.preventDefault(evt);return false;};})(i,_c[i]));ns.addEventListener(_c[i],YEE.Event.MOUSE_DOWN,(function(a,c,index){return function(evt){_handler=function(evt){ns.removeEventListener(c,ns.MOUSE_MOVE,_handler);var d=_self._dragDiv;if(!_self._dragDiv.parentNode){document.body.appendChild(_self._insertIcon);document.body.appendChild(d);}
var p=Display.getPosition(c);d.style.display='';d.innerHTML=c.innerHTML;d.style.left=p.x+'px';d.style.top=p.y+'px';d.style.width=Display.getWidth(c)+'px';d.style.height=Display.getHeight(c)+'px';Display.setOpacity(d,50);var _indexFromX;dd.startDrag(d);_self._drag=true;dd.onMouseMove=function(x,y){_indexFromX=_self._getTHeadIndexByX(x,index);if(_indexFromX!=-1&&typeof(_indexFromX)!='undefined'){_self._insertIcon.style.display='';_self._insertIcon.style.top=(YEE.Display.getY(_self._dom)-Display.getHeight(_self._insertIcon))+'px';var _idm=Display.getWidth(_self._insertIcon)/2;if(_indexFromX>index){_self._insertIcon.style.left=(Display.getX(_self.thead.rows[0].getElementsByTagName('th')[_indexFromX])+Display.getWidth(_self.thead.rows[0].getElementsByTagName('th')[_indexFromX])-_idm)+'px';}else{_self._insertIcon.style.left=(Display.getX(_self.thead.rows[0].getElementsByTagName('th')[_indexFromX])-_idm)+'px';}}else{try{_self._insertIcon.style.display='none';}catch(error){}}};dd.onDragStop=function(x,y){dd.onMouseMove=null;_self._drag=false;_self._insertIcon.style.display='none';var _ns=YEE.Display;if(_indexFromX!=-1&&typeof(_indexFromX)!='undefined'){_self._swapHead(index,_indexFromX);if(_indexFromX>index){for(var i=index;i<_indexFromX-1;i++){_self._swapHead(i,i+1);}}else{for(var i=index;i>_indexFromX+1;i--){_self._swapHead(i,i-1);}}
_self._odd=!_self._odd;_self.setDataProvider(_self._dataProvider);if(typeof(Tween)!='undefined'){var _pos0=_ns.getPosition(_self._dragDiv);var _posTarget=_ns.getPosition(_self.thead.rows[0].getElementsByTagName('th')[_indexFromX]);var _t1=new Tween(_self._dragDiv.style,'left',Tween.regularEaseOut,_pos0.x,_posTarget.x,0.3,'px');var _t2=new Tween(_self._dragDiv.style,'top',Tween.regularEaseOut,_pos0.y,dg_y,0.3,'px');_t1.onMotionFinished=function(){_self._dragDiv.style.display='none';}
_t1.start();_t2.start();}else{_self._dragDiv.style.display='none';}}else{if(typeof(Tween)!='undefined'){var _pos0=_ns.getPosition(_self._dragDiv);var _posTarget=_ns.getPosition(_self.thead.rows[0].getElementsByTagName('th')[index]);var _t1=new Tween(_self._dragDiv.style,'left',Tween.regularEaseOut,_pos0.x,_posTarget.x,0.3,'px');var _t2=new Tween(_self._dragDiv.style,'top',Tween.regularEaseOut,_pos0.y,dg_y,0.3,'px');_t1.onMotionFinished=function(){_self._dragDiv.style.display='none';}
_t1.start();_t2.start();}else{_self._dragDiv.style.display='none';}}};};ns.addEventListener(c,ns.MOUSE_MOVE,_handler);YEE.Event.preventDefault(evt);return false;};})(_self._fields[i].dataField,_c[i],i));}};org.youyee.controls.DataGrid.prototype._swapHead=function(index1,index2){var _cells=this.thead.rows[0].getElementsByTagName('th');var _w0=_cells[index1].style.width;var _w1=_cells[index2].style.width;var item=this._fields[index1];this._fields[index1]=this._fields[index2];this._fields[index2]=item;var cm=_cells[index1].className;_cells[index1].className=_cells[index2].className;_cells[index2].className=cm;_cells[index1].innerHTML=this._fields[index1].label;_cells[index2].innerHTML=this._fields[index2].label;_cells[index1].style.width=_w1;_cells[index2].style.width=_w0;}
org.youyee.controls.DataGrid.prototype._getTHeadIndexByX=function(x,index){var len=this.thead.rows[0].getElementsByTagName('th').length;var h=this.thead.rows[0].getElementsByTagName('th');var re=-1;for(var i=0;i<len;++i){var l=YEE.Display.getX(h[i]);var r=YEE.Display.getWidth(h[i])+l;var m=(l+r)/2;if(x<m&&i==0){re=0;break;}
if(x>r&&i==len-1){re=len-1;break;}
if(x>=l&&x<=r){if(i!=index){if(index>0&&index<len-1){if(index<i){if(x>m){re=i;}else{re=i-1;}}else{if(x<m){re=i;}else{re=i+1;}}}else if(index==0){if(x>m){re=i;}else{re=i-1;}}else{if(x<m){re=i;}else{re=i+1;}}}
break;}}
if(re==index){re=-1;}
return re;}
org.youyee.controls.DataGrid.prototype.setDataProvider=function(d){this.clear(true);var t=this.tbody;var l=this._fields.length;var dl=d.length;this._dataProvider=d;for(var i=0;i<dl;i++){t.insertRow(0);for(var j=0;j<l;j++){var _cell=t.rows[0].insertCell(0);var _d=d[dl-i-1][this._fields[l-j-1].dataField];if(typeof(this._fields[l-j-1].dataFunction)=='function'&&typeof(d[dl-i-1][this._fields[l-j-1].dataField+'_txt'])=='undefined'){d[dl-i-1][this._fields[l-j-1].dataField+'_txt']=_d=this._fields[l-j-1].dataFunction(d[dl-i-1]);}else if(typeof(d[dl-i-1][this._fields[l-j-1].dataField+'_txt'])!='undefined'){_d=d[dl-i-1][this._fields[l-j-1].dataField+'_txt']}
var v;if(typeof(this._fields[l-j-1].itemRender)!='undefined'){v=this._fields[l-j-1].itemRender.replace(/\{\%data\%\}/gm,_d);}else{v=_d;}
if(typeof(this._fields[l-j-1].className)=='string'){_cell.className=this._fields[l-j-1].className;}
t.rows[0].cells[0].innerHTML=v;t.rows[0].cells[0].style.width=this.thead.rows[0].getElementsByTagName('th')[l-j-1].style.width;}
if(this._odd){if(i%2){t.rows[0].className=this.styleName.ODD;}}else{if(i%2==0){t.rows[0].className=this.styleName.ODD;}}}
this._odd=!this._odd;this._dom.style.display='';};org.youyee.controls.DataGrid.prototype.sortOn=function(dataField,order){var d=this._dataProvider;d.sort(function(a,b){if(isNaN(a[dataField])&&isNaN(b[dataField])){a[dataField]=a[dataField].toString();b[dataField]=b[dataField].toString();}else{a[dataField]=Number(a[dataField]);b[dataField]=Number(b[dataField]);}
if(a[dataField]>b[dataField]){return order;}else if(a[dataField]<b[dataField]){return-1*order;}else{return 0;}});this.setDataProvider(d);};org.youyee.controls.DataGrid.prototype._clearThead=function(){var th=this.thead;var len=th.rows[0].cells.length;for(var i=0;i<len;i++){YEE.Dom.removeClassName(th.rows[0].cells[i],'desc_order');YEE.Dom.removeClassName(th.rows[0].cells[i],'aes_order');}};org.youyee.controls.DataGrid.prototype.clear=function(isHidden){var evt=YEE.Event;var _self=this;this._dom.style.display='none';var len=this.tbody.rows.length;for(var i=0;i<len;i++){this.tbody.deleteRow(0);}
if(!!isHidden){this._dom.style.display='';}};org.youyee.controls.DataGrid.MIN_COL_WIDTH=40;