﻿// Smart UI By Roy Zhang

//button
(function ($) {
    $.button = function (btnid, ops) { return ops.gethtm ? ictrcore.button.getHtml(btnid, ops.name, ops.text, ops.type, ops.props) : ictrcore.button(btnid, ops.name, ops.text, ops.type, ops.props); }
    $.fn.buttonSet = function (isEnable) {
        return this.each(function () {
            if (isEnable)
                $(this).removeAttr('disabled', 'disabled').removeClass('disabled'); else
                $(this).attr('disabled', 'disabled').addClass('disabled');
        });
    }
})(jQuery);

// modal win﻿
(function($){$.modalWin=function(options){var options=$.extend({id:null,title:$iconst.controls.modal.title,width:550,height:300,zindex:iconfig.modal.zindex,showtime:null,allowmove:true,css:'modalpanel',url:null,fnclose:null},options);var win=$("#"+options.id);if(win.length==0)
win=setContent($(document.createElement("div")),options).attr("id",options.id);var modalpanel=buildModal(options.id,'modalwin',options,'win');ictrcore.setCenter(modalpanel);ictrcore.modal();modalpanel.append(win).fadeIn('slow');ictrcore.loadPage(options.url,win);}
$.fn.dialog=function(options){var options=$.extend({title:$iconst.controls.modal.title,width:200,height:300,zindex:iconfig.modal.zindex,showtime:null,allowmove:true,css:'modalpanel',fnclose:null},options);var content=$(this);var id=content.attr('id');var dialog=$('#'+id+'_dialog');if(dialog.length==0){content.show();content=setContent(content,options);dialog=buildModal(id,id+'_dialog',options,'dialog');ictrcore.setCenter(dialog);content.appendTo(dialog);}
ictrcore.modal();dialog.fadeIn('slow');};function buildModal(id,modalid,options,type,addclose){var div=$(document.createElement('div'));var modalpanel=$('#'+modalid);if(modalpanel.length==0)
modalpanel=div.clone().addClass(options.css).attr('id',modalid).appendTo(document.body);modalpanel.css({'width':options.width+4,'height':(options.height?options.height+24:'auto'),'z-index':options.zindex})
var head=div.clone().addClass(options.css+'-head');var title=div.clone().addClass(options.css+'-title').text(options.title).appendTo(head);if(!hasValue(addclose)||addclose){var fnclose=options.fnclose;var close=$(document.createElement('a')).addClass(options.css+'-close').click(function(){$.modalPanelClose(id,type);if(fnclose)
fnclose();});head.append(div.addClass(options.css+'-tool').append(close));}
modalpanel.append(head);if(options.allowmove)
title.drag({handler:'#'+modalid});return modalpanel;}
function setContent(content,options){return content.addClass(options.css+'-content').css({'width':options.width,'height':options.height});}
$.modalPanelClose=function(id,type){switch(type){case"win":$('#modalwin').html('').empty().hide();break;case"dialog":$('#'+id+'_dialog').hide();break;case"msg":$('#'+(id||'modalmessage')).html('').empty().hide();break;}
ictrcore.modalClose();}
$.message=function(msg,options){var title;if(!options)
options={type:'alert'};if(options.type==='confirm')
title=$iconst.controls.message.confirm;else{title=getJsonValue($iconst.controls.message,options.showtype);if(!title)
title=$iconst.controls.message.normal;}
var id=options.type==='show'?'msg_'+parseInt(Math.random()*10000):'modalmessage';var settings=iconfig.message;settings.title=title;var message=setContent($(document.createElement("div")),settings).html(msg);var modalpanel=buildModal(null,id,settings,'msg',options.type==='show').append(message);if(options.type==='show'){ictrcore.setShow(modalpanel);modalpanel.fadeIn('slow');setTimeout(function(){$.modalPanelClose(id,'msg');},options.timeout||settings.timeout);}
else{var btnpanel=$(document.createElement('div')).addClass('btns'),fnok=options.fnok,btnok=$.button(null,{name:'ok'}).click(function(){if(fnok)fnok();$.modalPanelClose(null,'msg');});;btnpanel.append(btnok).appendTo(modalpanel);if(options.type==='confirm'){var fncancel=options.fncancel,btncanel=$.button(null,{name:'cancel'}).click(function(){if(fncancel)fncancel();$.modalPanelClose(null,'msg');}).appendTo(btnpanel);}
    ictrcore.setCenter(modalpanel); ictrcore.modal(); modalpanel.fadeIn('fast');
} 
} 
})(jQuery);

// Menu
(function($){$.fn.menu=function(datas,options){options=$.extend({container:iconfig.menu.menu.container,item:iconfig.menu.menu.item},options);this.each(function(){var menu=$(this),id=menu.attr('id'),timeout=false;if(datas)
bindMenu(id,menu,datas,options);bulidMenu(id,menu.children('ul').children('li'),null,timeout);});initSelected(this);};$.fn.accordion=function(datas,options){options=$.extend({container:iconfig.menu.accordion.container,item:iconfig.menu.accordion.item,menu:{container:iconfig.menu.menu.container,item:iconfig.menu.menu.item}},options);this.each(function(){var accordion=$(this),id=accordion.attr('id'),timeout=false;if(datas&&datas.length>0){var container=$(options.container).appendTo(accordion);ictrcore.teml(container,options.item,datas).each(function(i){var dd=$('<dd />').insertAfter(this);var data=datas[i];if(data&&data.rows)
bindMenu(id,dd,data.rows,options.menu);bulidMenu(id,dd.children('ul').children('li'),true,timeout);});}
accordion.find('dt > a').click(function(){var link=$(this);var item=link.parent().toggleClass("selected").next().slideToggle("slow");});})
initSelected(this,true);}
function bindMenu(menuid,menu,datas,options){if(datas&&datas.length>0){var container=$(options.container).appendTo(menu);ictrcore.teml(container,options.item,datas).each(function(i){var data=datas[i];if(data&&data.rows)
bindMenu(menuid,$(this),data.rows,options);});}}
function bulidMenu(menuid,items,isHorizontal,timeout){if(items.length>0){items.each(function(){var item=$(this),link=item.children('a'),child=item.children('ul');item.click(function(){$('#'+menuid+' li.selected').removeClass('selected');$(this).addClass('selected');});if(child.length>0){item.addClass('dir');item.hover(function(){show($(this),isHorizontal,timeout);},function(){close($(this),timeout);});bulidMenu(menuid,child.children('li'),true,timeout);}});}}
function show(menu,isHorizontal,timeout){if(timeout){clearTimeout(timeout);}
timeout=setTimeout(function(){menu.stop(true,true).show('fast');showChildMenu(menu,isHorizontal);},100);}
function close(menu,timeout){if(timeout){clearTimeout(timeout);}
timeout=setTimeout(function(){menu.children('ul').hide('fast');},100);}
function setMenuChild(ctr,child,isHorizontal){var position=ctr.position();if(isHorizontal)
position.left+=ctr.outerWidth();else
position.top+=ctr.outerHeight();return child.css({"z-index":iconfig.menu.css.zindex,'left':position.left,'top':position.top}).mouseleave(function(){$(this).hide('fast');});}
function showChildMenu(menu,isHorizontal){var child=menu.children('ul');setMenuChild(menu,child,isHorizontal);child.stop(true,true).show('fast');}
function initSelected(menu,isAccordion){var isSelected=false;var ui=$sw.globalParams.currentUI;if(ui){var selected=menu.find("a[ui='"+ui+"']");if(selected.length>0){isSelected=true;selected.parents('li').addClass('selected');if(isAccordion)
selected.parents('dd').show().prev().addClass('selected');}}else
menu.find("a:eq(0)").parents().addClass('selected');}})(jQuery);

// Grid﻿
(function($){var gridsetting={id:'_gird',tbheadid:'_tbhead',tbdataid:'_tb',tbhcss:'gridheader',thcss:'gridth',tbcss:'grid',trcss:'gridrow',altertrcss:'gridalterrow',tfcss:''};$.fn.gridview=function(options,datasource,totalrecord,fnpagechanged){var grid=this,id=grid.attr('id');options=$.extend({css:"gridview",width:iconfig.grid.width,height:iconfig.grid.height,sortable:true,usepager:true,showtoppager:false,columnresize:true,showseq:true,showchk:false,chkfield:'',showradio:false,radiofield:'',columns:[],sort:null,ajax:null,pagesize:iconfig.grid.pagesize,pageindex:1,totalrecord:0,fnBuilded:null,fnSorted:null},options);options.text=$.extend({seqtext:$iconst.controls.grid.seqtext,radiotext:$iconst.controls.grid.radiotext},options.text);var _tdwidth=0,_iscolmove,_tx,_clindex,_issort=true;grid=this.addClass(options.css);var header=$(document.createElement('div')).addClass('head');var headpanel=$('<div onselectstart="return false;" />').addClass('gridheadpanel').appendTo(header);var tbhead=$(document.createElement('table')).attr("id",id+gridsetting.tbheadid).addClass(gridsetting.tbhcss).width(10).appendTo(headpanel);var datapanel=$(document.createElement('div')).addClass('griddatapanel').width(options.width).height(options.height);var tb=$(document.createElement('table')).width(10).addClass(gridsetting.tbcss).attr("id",id+gridsetting.tbdataid);buildColumn(tbhead,datapanel);tb.appendTo(datapanel);grid.append(header).append(datapanel);if(parseInt(grid.css('width'))>options.width+20)
grid.width(options.width);if(!fnpagechanged&&options.ajax&&options.ajax.url)
fnpagechanged=function(pageindex,pagesize){pageChanged(null,id,pageindex,pagesize);};buildPager(grid,options,fnpagechanged);bindGrid(false,id,grid,datasource,totalrecord,{sort:options.sort?options.sort:'',ajax:options.ajax,pagesize:options.pagesize,pageindex:options.pageindex,fnBuilded:options.fnBuilded},fnpagechanged);return grid;function buildColumn(tbh,datapanel){var th=new StringBuilder();var tr=new StringBuilder();th.append('<thead><tr class="').append(gridsetting.thcss).append('">');tr.append('<tr class="{{if $itemindex %2 == 0 }}').append(gridsetting.altertrcss).append('{{else}}').append(gridsetting.trcss).append('{{/if}}">');var column;if(options.showseq){th.append('<th style="width:30px" class="seq">').append(options.text.seqtext).append('</th>');tr.append('<td class="seq">${$itemindex}</td>');}
if(options.showchk){th.append('<th style="width:30px"><input type="checkbox" id="').append(id).append('_chkAll"/></th>');tr.append('<td class="center"><input type="checkbox" class="').append(id).append('" value="${').append(options.chkfield).append('}"/></td>');}
if(options.showradio){th.append('<th style="width:40px">').append(options.text.radiotext).append('</th>');tr.append('<td class="center"><input type="radio" name="').append(id).append('" value="${').append(options.radiofield).append('}"/></td>');}
for(var i=0;options.columns[i];i++){column=options.columns[i];th.append('<th style="width:').append(column.width).append('" col="').append(i+'').append('"');if(options.sortable&&column.sort)
th.append(' class="thsort" cf="').append(column.sortfield||column.field).append('"><div class="sort">&nbsp;</div>');else
th.append('>');if(options.columnresize)
th.append('<div class="resizer">&nbsp;</div>')
th.append('<span class="thtext">').append(column.name).append('</span></th>')
tr.append('<td').append(' col="').append(i+'').append('"');tr=buildTr(column,tr);tr.append('</td>');}
th.append('</tr></thead>');tr.append('</tr>');$.templates(id,tr.toString());tbh.append(th.toString());setThEvent(tbh,datapanel);}
function buildTr(column,tr){var field,css;if(column.custom){css=column.type;field=column.custom;}else{if(column.type&&column.type.length>0){switch(column.type){case"int":css='right';break;case"num":css='right';field='toDecimal('+column.field+(column.format?','+column.format*1:'')+')';break;case"date":css='center';field='toDateStr('+column.field+',false'+(column.format?','+column.format*1:'')+')';break;case"datetime":css='center';field='toDateStr('+column.field+',true'+(column.format?','+column.format*1:'')+')';break;case"cur":css='cur';field='toDecimal('+column.field+(column.format?','+column.format*1:'')+')';break;case"enum":css='center';field='toEnum('+column.field+',"'+column.format+'")';break;case"bool":css='center';field='toBoolView('+column.field+',true)';break;case"hid":css='hid';break;}}
field=field?field:column.field;field='${'+field+'}';}
if(column.css)
css=column.css
css=css?' class="'+css+'"':'';tr.append(css).append('>').append(field);return tr;}
function setThEvent(tbh,datapanel){tbh.find('tr > th').each(function(){var th=$(this);if(options.columnresize){th.find('div.resizer').mousedown(function(e){var event=window.event||e;_tx=event.x||event.clientX;var td=$(this).parent();_tdwidth=parseInt(td.css('width'));_clindex=td.attr("col");_iscolmove=true;_issort=false;});$(document).mousemove(function(e){if(_iscolmove){var event=window.event||e;var th=$('#'+id+gridsetting.tbheadid+' th[col="'+_clindex+'"]');var width=_tdwidth+(event.x||event.clientX)-_tx;var textwidth=th.children('span.thtext').width()+16;th.css('width',textwidth>width?textwidth:width);}});$(document).mouseup(function(){if(_iscolmove){_tx=0;_iscolmove=false;$('#'+id+gridsetting.tbdataid+' tr:first td[col="'+_clindex+'"]').css('width',$('#'+id+gridsetting.tbheadid+' th[col="'+_clindex+'"]').css('width'));$('#'+id+gridsetting.tbheadid).css('margin-left',-parseInt($('#'+id+' .griddatapanel').attr('scrollLeft')));}});}
if(options.sortable){var sortname=th.attr('cf');if(strNotEmpty(sortname)&&th.hasClass('thsort')){if(options.sort){var startindex=options.sort.indexOf(sortname+' ');if(startindex>-1)
th.find('div.sort').addClass(options.sort.indexOf(sortname+' desc')>-1?'desc':'asc');}
var fnsort=options.fnSorted;th.click(function(){if(_issort){var th=$(this),divsort=th.find('div.sort'),_sort=divsort.hasClass('asc')?'desc':'asc';divsort.addClass('desc').removeClass('asc');th.parent().find('th > div.sort').attr('class','sort');divsort.addClass(_sort);var grid=$('#'+id),ops=grid.data('ops');ops.sort=th.attr('cf')+' '+_sort;if(fnsort)
fnsort(ops,grid);else
bindGrid(true,id,grid,null,null,ops);}
else
_issort=true;});}}
if(options.showchk)
tbh.find(':checkbox').click(function(){$('#'+id+" :checkbox."+id).attr("checked",this.checked);});});datapanel.scroll(function(){$('#'+id+gridsetting.tbheadid).css('margin-left',-parseInt($('#'+id+' .griddatapanel').attr('scrollLeft')));});}
function buildPager(container,ops,fnpagechange){if(ops.usepager){var pageops={pagesize:ops.pagesize,pageindex:ops.pageindex,totalrecord:ops.totalrecord};$(document.createElement('div')).pager(pageops,fnpagechange).appendTo(container);if(ops.showtoppager)
$(document.createElement('div')).pager(pageops,fnpagechange).prependTo(container);}}};$.fn.girdviewReload=function(options,datasource){var grid=this,id=grid.attr('id'),ops;if(options){ops=$.extend(grid.data('ops'),options);if(options.ajax&&options.ajax.url)
ops.ajax=$.extend(ops.ajax,options.ajax);}
else
ops=grid.data('ops');if(!options||!options.pageindex)
ops.pageindex=1;pageChanged(grid,id,null,null,datasource,ops);}
function bindGrid(isreload,id,grid,datas,totalrecord,ops,fnpagechanged){if(ops.ajax&&ops.ajax.url){ictrcore.loading(grid);ictrcore.GetDatas(ops.ajax.url,$sw.bulidSearchParam(ops.pageindex,ops.pagesize,ops.ajax.data,ops.sort),function(datas){if(datas)
buildGrid(isreload,id,grid,datas.rows,datas.total,ops,fnpagechanged);else
buildGrid(isreload,id,grid,null,0,ops,fnpagechanged);},function(){buildGrid(isreload,id,grid,null,0,ops,fnpagechanged);});}
else
buildGrid(isreload,id,grid,datas,totalrecord,ops,fnpagechanged);}
function buildGrid(isreload,id,grid,datas,totalrecord,ops,fnpagechanged){if(totalrecord)
ops.totalrecord=totalrecord;var tb=grid.find('#'+id+gridsetting.tbdataid);if(isreload)
tb.html('');grid.find('div.pager').pager({pagesize:ops.pagesize,pageindex:ops.pageindex,totalrecord:ops.totalrecord});if(datas!=null&&datas.length>0){var items=$.tmpl(id,datas,{startIndex:(ops.pageindex-1)*ops.pagesize}).appendTo(tb);if(ops.fnBuilded)
ops.fnBuilded(items,datas);}
setTr(grid.find('#'+id+gridsetting.tbheadid),tb);grid.data('ops',ops);ictrcore.loadingClose(grid);}
function pageChanged(grid,id,pageindex,pagesize,datasource,ops){if(!grid)
grid=$('#'+id);if(!ops)
ops=grid.data('ops');if(pagesize)
ops.pagesize=pagesize;if(pageindex)
ops.pageindex=pageindex;bindGrid(true,id,grid,datasource,null,ops)}
function setTr(tbh,tb){var tds=tb.find('tr:first td');var ths=tbh.find('th').each(function(i){tds.eq(i).css('width',$(this).css('width'));});}})(jQuery);

// drag
(function($){var dragSetting={css:'tabs',csscontent:'tab-content',csscontentitem:'tab-content-item'};$.fn.drag=function(options){options=$.extend({handler:null,onMove:null,onDrop:null},options);return this.each(function(){var ctr=$(this).css({'cursor':'move'}),handler=options.handler||ctr,_ismove=false,_position;if(!options.handler)
options.handler=ctr;ctr.mousedown(function(e){var target=$(options.handler);_ismove=true;_position=$.getEventPosition(e);});$(document).mousemove(function(e){if(_ismove){var mPosition=$.getEventPosition(e),movectr=$(options.handler),padding=10,ctrposition=movectr.getPosition(),win=$(window),maxX=win.width()-movectr.width()-padding,maxY=win.height()-movectr.height()-padding,top=ctrposition.top+mPosition.y-_position.y,left=ctrposition.left+mPosition.x-_position.x;movectr.css({top:getRangeValue(top,padding,maxY),left:getRangeValue(left,padding,maxX)});_position=mPosition;if(options.onMove)
options.onMove(movectr,e);}}).mouseup(function(e){if(_ismove)
{_ismove=false;if(options.onDrop)
options.onDrop(e);}});});};function drag(){var dragData=e.data.dragData;dragData.target.css({left:dragData.left+e.pageX-dragData.offLeft,top:dragData.top+e.pageY-dragData.offTop});dragData.handler.css({cursor:'move'});dragData.onMove(e);}})(jQuery);

// datepicker
(function($){var calSetting={modalcal:'_modal',css:'cal',csshead:'cal-head',csstitle:'cal-title',cssnext:'cal-next',cssprev:'cal-prev',cssyear:'cal-year',cssmonth:'cal-month',cssselector:'cal-selector',cssyearlist:'cal-yearlist',cssmonthlist:'cal-monthlist',cssbody:'cal-body',cssdays:'cal-days',cssweeks:'cal-weeks',cssprev:'cal-prev',cssweek:'cal-week',cssoff:'cal-off',csssunday:'cal-sun',cssfocus:'cal-focus',cssdisabled:'cal-disabled',csscurrent:'cal-current',csstoday:'cal-today',csstools:'cal-tools'};var calisshow=false;$.fn.datepicker=function(options){options=$.extend({format:iconfig.format.date,selectors:true,showclear:true,yearRange:[-5,5],min:undefined,max:undefined,calid:'cal',fnselect:null},options);options.modal=$.extend({isInModal:false,cssModal:'modalpanel',modalId:null},options.modal);var labels=$iconst.date,dtNow=$sw.globalParams.currentDate,calid=options.calid;var cal=$("#"+calid);if(!cal.length){var sbHtml=new StringBuilder('<div class="');sbHtml.append(calSetting.csshead).append('"><a class="').append(calSetting.cssprev).append('" /><div class="').append(calSetting.csstitle).append('"><a class="').append(calSetting.cssyear).append('"/><a class="').append(calSetting.cssmonth).append('"/></div><a class="').append(calSetting.cssnext).append('" /></div><div class="').append(calSetting.cssbody).append('"><div class="').append(calSetting.cssdays).append('">');for(var d=0;labels.shortDays[d];d++){sbHtml.append('<span>').append(labels.shortDays[d]).append('</span>');}
sbHtml.append('</div><div class="').append(calSetting.cssweeks).append('"/></div>');cal=$(document.createElement('div')).attr('id',calid).addClass(calSetting.css).html(sbHtml.toString());if(options.showclear){var tools=$(document.createElement('div')).addClass(calSetting.csstools);var clear=$(document.createElement('a')).text($iconst.controls.datepicker.clear).click(function(){var cal=$('#'+calid),input=$('#'+cal.data('input'));input.val('');closeCal(cal,input);}).appendTo(tools);cal.append(tools);}
cal.appendTo(document.body);if(options.selectors){cal.find('.'+calSetting.cssmonth).click(function(){var months=$('#'+calid+' .'+calSetting.cssmonthlist);months.find('li.current').removeClass('current');months.find('li:[m="'+$(this).attr('m')+'"]').addClass('current');months.slideDown('normal');});var title=$(document.createElement('div')).text($iconst.controls.datepicker.monthSelect);var ul=$(document.createElement('ul'));$.each(labels.months,function(i,m){$(document.createElement('li')).text(m).attr('m',i).click(function(){changeCal(this,null,$(this).attr('m'));$(this).parents('.'+calSetting.cssmonthlist).slideUp('normal');}).appendTo(ul);});$(document.createElement('div')).addClass(calSetting.cssselector).addClass(calSetting.cssmonthlist).append(title).append(ul).appendTo(cal);cal.find('.'+calSetting.cssyear).click(function(){var years=$('#'+calid+' .'+calSetting.cssyearlist);years.find('li.current').removeClass('current');years.find('li:contains("'+$(this).text()+'")').addClass('current');years.slideDown('normal');});$(document.createElement('div')).addClass(calSetting.cssselector).addClass(calSetting.cssyearlist).append('<div>'+$iconst.controls.datepicker.yearSelect+'</div><span/><ul />').appendTo(cal);}
cal.find('div.'+calSetting.csshead+' a.'+calSetting.cssprev).click(function(){changeMonth(this,-1);});cal.find('div.'+calSetting.csshead+' a.'+calSetting.cssnext).click(function(){changeMonth(this,1);});cal.click(function(){calisshow=true;});}
this.each(function(){var input=$(this);if(!options.modal.isInModal&&!options.modal.modalid){var modal=input.parents('.'+options.modal.cssModal);if(modal.length){options.modal.isInModal=true;options.modal.modalId=modal.attr('id');}}
input.data('ops',options).attr('readOnly','readOnly').bind("click",function(){calisshow=true;show($(this),calid);});});};function show(input,calid){var cal=$('#'+calid),dtNow=$sw.globalParams.currentDate,value=input.val(),isHasValue=strNotEmpty(value);if(isHasValue){value=value.toDate();isHasValue=value?true:false;}
var date=isHasValue?value:dtNow,month=date.getMonth(),year=date.getFullYear(),ops=input.data('ops'),calops=cal.data('ops'),ctryear=cal.find('.'+calSetting.cssyear).text(year),ctrmonth=ctryear.next('a').text($iconst.date.months[month]).attr('m',month);if(ops&&ops.selectors){if(!calops||(ops.yearRange[0]!==calops.yearRange[0]||ops.yearRange[1]!==calops.yearRange[1])){var yearlist=cal.find(' .'+calSetting.cssyearlist),title=yearlist.children('span'),ul=title.next('ul').html(''),yearNow=dtNow.getFullYear();title.text((yearNow+ops.yearRange[0])+' - '+(yearNow+ops.yearRange[1]-1));for(var i=ops.yearRange[0],j=ops.yearRange[1];i<j;i++){$(document.createElement('li')).text(yearNow+i+'').click(function(){var year=$(this);changeCal(year,$(this).text(),null);year.parents('.'+calSetting.cssyearlist).slideUp('normal');}).appendTo(ul);}
if(!calops)
calops={};calops.yearRange=ops.yearRange;}
cal.data('ops',calops);}
var css=iconfig.datepicker.css,modalid;if(ops&&ops.modal.isInModal&&ops.modal.modalId)
modalid=ops.modal.modalId;ictrcore.upselector(input,cal,css,true,modalid);buildCal(cal,isHasValue?date:null,year,month);cal.data('input',input.attr('id'));cal.show('normal');}
function buildCal(cal,value,year,month){var now=$sw.globalParams.currentDate;var currentMonth=new Date(year,month,1);var begin=currentMonth.getDay();var weeks=cal.find("."+calSetting.cssweeks);days=getDayNum(year,month),prevDays=getDayNum(year,month-1),sbDays=new StringBuilder();for(var i=!begin?-7:0,j=(!begin?35:42),css='',num,date;i<j;i++){if(i%7===0){if(i>=0)
sbDays.append('</div>');css=calSetting.csssunday;sbDays.append('<div class="').append(calSetting.cssweek).append('">');}
if(i<begin){css=' '+calSetting.cssoff;num=prevDays-begin+i+1;date=new Date(year,month-1,num);}else if(i>=begin+days){css=' '+calSetting.cssoff;num=i-days-begin+1;date=new Date(year,month+1,num);}else{num=i-begin+1;date=new Date(year,month,num);if(isSameDay(value,date))
css=' '+calSetting.cssfocus;else if(isSameDay(now,date))
css=' '+calSetting.csscurrent;}
sbDays.append('<a');if(css.length>0){sbDays.append(' class="').append(css).append('"');css='';}
sbDays.append(' onclick="calSelect(this,').append(String(i-begin)).append(');">').append(String(num)).append('</a>');}
sbDays.append('</div>');weeks.html(sbDays.toString());cal.data('date',value);cal.data('cur',currentMonth);}
function changeCal(ctr,year,month){var cal=$(ctr).parents('div.cal');var calid=cal.attr('id');if(!year)
year=cal.find('.'+calSetting.cssyear).text();else
cal.find('.'+calSetting.cssyear).text(year)
if(!month)
month=cal.find('.'+calSetting.cssmonth).attr('m');else
cal.find('.'+calSetting.cssmonth).text($iconst.date.months[month*1]).attr('m',month);buildCal(cal,cal.data('date'),year*1,month*1);}
function changeMonth(ctr,monthchange){var cal=$(ctr).parents('div.cal'),calid=cal.attr('id'),ctryear=cal.find('a.'+calSetting.cssyear),ctrmonth=ctryear.next('a.'+calSetting.cssmonth),year=ctryear.text()*1,month=ctrmonth.attr('m')*1+monthchange;if(month>11){month=0;year+=1;}
else if(month<0){month=12;year-=1;}
ctrmonth.text($iconst.date.months[month]).attr('m',month);ctryear.text(year);buildCal(cal,cal.data('date'),year,month);}})(jQuery);function calSelect(selector,day){var cal=$(selector).parents('div.cal');if(cal.length){var inputid=cal.data('input'),input;if(inputid){input=$('#'+inputid);if(input.length){var date=cal.data('cur');if(date){date=new Date(date.getFullYear(),date.getMonth(),day+1);var ops=input.data('ops')||{};input.val(date.format(ops.format));if(ops.fnselect)
ops.fnselect(input,date);}}}
closeCal(cal,input);}}
function closeCal(cal,input){cal.hide('fast');cal.find('.cal-selector').hide();if(input)
input.focus();}

// chooser﻿
(function($){var choosersetting={container:' <div/>',choosercss:'chooser',chooserlistcss:'chooserlist',list:'<ul />',id:'_chooser',cssempty:'empty',item:'<li lv="${Key}">${Value}</li>',multiitem:'<li class="multi" lv="${Key}">${Value}</li>',valueattr:'lv',showinputint:'_txtshow',split:iconfig.common.valuesplit,multicssname:'ddlmulti',cssname:'ddl'};$.fn.chooser=function(options,datasource){options=$.extend({type:'ddl',ismulti:false,emptytype:'none',ajax:null,postdata:null,lazyload:true,cssname:null,item:null,fnSelected:null,isBindData:true},options);options.css=$.extend({zindex:iconfig.chooser.css.zindex,width:iconfig.chooser.css.width,height:iconfig.chooser.css.height,left:iconfig.chooser.css.left,top:iconfig.chooser.css.top,fixwidth:iconfig.chooser.css.fixwidth},options.css);options.text=$.extend({select:$iconst.controls.chooser.select,all:$iconst.controls.chooser.all,selectall:$iconst.controls.chooser.selectall},options.text);return this.each(function(){var chooser=$(this).attr("ctr",options.type),item;if(options.fnSelected)
chooser.data('fnSelected',options.fnSelected);if(options.item){item=options.item;chooser.data('item',item);}
else
item=options.ismulti?choosersetting.multiitem:choosersetting.item;if(options.type=='ddl'){var txt=chooser.clone(true).attr("id",chooser.attr("id")+choosersetting.showinputint).removeAttr("field").val('').addClass(options.ismulti?choosersetting.multicssname:choosersetting.cssname).attr("readonly",-1).click(function(){var input=$(this);if(input.data('ajax')){input.prev('#'+input.attr('id').Replace(choosersetting.showinputint,'')).chooserReload(input.data('ajax'));input.removeData('ajax');}
input.next('.'+choosersetting.choosercss).slideDown();});chooser.hide().after(txt);if(options.isBindData&&!datasource){txt.data('ajax',options.ajax);var lazyload=true;if(chooser.val().length>0||!options.lazyload)
lazyload=false;chooser_build(txt,item,null,lazyload);}
else
chooser_build(txt,item,datasource);}
else{chooser.hide();chooser_build(chooser,item,datasource);}
chooser.data('ismulti',options.ismulti);});function chooser_build(chooser,item,datas,lazyload){var chooserid=chooser.attr("id").Replace(choosersetting.showinputint,'');var id=chooserid+choosersetting.id,list=$(choosersetting.list);ddl=$(choosersetting.container).attr("id",id).attr("ctr",options.type);if(options.type=="ddl")
{ictrcore.upselector(chooser,ddl,options.css).addClass(options.cssname||choosersetting.choosercss);if(options.ismulti){var btn=$(document.createElement('a')).text(options.text.selectall).click(function(){var btn=$(this),items=btn.parent().next().children('li');if(btn.hasClass('chked')){items.removeClass('selected');$(chooserid+choosersetting.showinputint).val('');chooser_selected($(chooserid),'');}
else{var sbValus=new StringBuilder();var sbText=new StringBuilder();items.each(function(i){var select=$(this);value=select.attr(choosersetting.valueattr);if(value){sbValus.append(value);sbText.append(select.text());}
items.addClass('selected');})
$(chooserid+choosersetting.showinputint).val(sbText.toString(choosersetting.split)).focus();value=sbValus.toString(choosersetting.split);chooser_selected($(chooserid),value);}
btn.toggleClass('chked');});$(document.createElement('div')).addClass(choosersetting.cssempty).append(btn).appendTo(ddl);}
else
if(options.emptyitem!='none')
$(document.createElement('div')).addClass(choosersetting.cssempty).text(options.emptyitem=='all'?options.text.all:options.text.select).click(function(){$(chooserid).chooserSetValue('').nextAll(chooserid+choosersetting.id).fadeOut('fast');}).appendTo(ddl);}
else
ddl.addClass(options.cssname||choosersetting.chooserlistcss);chooserid='#'+chooserid;chooser.after(ddl.append(list));if(options.isBindData){if(datas)
chooser_bindselect(options.ismulti,chooserid,ictrcore.teml(list,item,datas),options.type);else{if(!lazyload){var ismulti=options.ismulti,type=options.type;bindByAjax(options.ajax,list,item,function(data,list){chooser_bindselect(ismulti,chooserid,list,type);});}}}}};function bindByAjax(ajax,list,item,fn){if(ajax&&ajax.url)
ictrcore.temlbyAjax(list,item,ajax.url,ajax.data,fn);}
function chooser_bindselect(ismulti,chooserid,items,type,chooser){if(ismulti)
chooser_mulititemselect(chooserid,items,type,chooser);else
chooser_itemselect(chooserid,items,type,chooser);}
function chooser_itemselect(id,items,type,chooser){items.click(function(){var item=$(this),isselected=item.hasClass("selected"),value='';item.parent().find('li.selected').removeClass("selected");if(!isselected){item.addClass("selected");value=item.attr(choosersetting.valueattr)||'';}
if(type=='ddl')
$(id+choosersetting.id).fadeOut('fast');$(id+choosersetting.showinputint).val(item.text()).focus();chooser_selected($(id),value);});setSelected(chooser,id,items,type);}
function chooser_mulititemselect(id,items,type,chooser){items.click(function(){var item=$(this);var isSelected=!item.hasClass("selected");item.toggleClass("selected",isSelected);var value;var select;var sbValus=new StringBuilder();var sbText=new StringBuilder();item.parent().find('li.selected').each(function(){select=$(this);value=select.attr(choosersetting.valueattr);if(value){sbValus.append(value);sbText.append(select.text());}});$(id+choosersetting.showinputint).val(sbText.toString(choosersetting.split)).focus();value=sbValus.toString(choosersetting.split);chooser_selected($(id),value);});setSelected(chooser,id,items,type);}
function chooser_selected(chooser,value){var fnSelected=chooser.data('fnSelected');if(fnSelected){var oldvalue=chooser.val();chooser.val(value);fnSelected(value,oldvalue,chooser);}
else
chooser.val(value);}
function setSelected(chooser,id,list,type){if(!chooser)
chooser=$(id);var strValue=chooser.val(),ishasvalue;if(list.length>0){list.filter('li.selected').removeClass('selected');if(strValue.length>0){var arrValues=strValue.split(choosersetting.split);if(arrValues.length>0){var sbFilter=new StringBuilder();for(var i=0;i<arrValues.length;i++){strValue=arrValues[i].trim();if(strValue.length>0){sbFilter.append("li.[lv ='").append(strValue).append("']").append(',');}}
if(sbFilter.strings.length>1){var selects=list.filter(sbFilter.removeLast().toString());if(selects.length>0){if(type=='list')
selects.addClass("selected");else{var sbText=new StringBuilder();selects.each(function(){var item=$(this);sbText.append(item.text()).append(choosersetting.split);item.addClass("selected");});$(id+choosersetting.showinputint).val(sbText.removeLast());}
ishasvalue=true;}}}}}
if(!ishasvalue){chooser.val('');if(type!=='list')
$(id+choosersetting.showinputint).val('');}}
$.fn.chooserSetValue=function(value){var id='#'+this.val(value).attr("id");setSelected(this,id,$(id+choosersetting.id+" > ul > li"),this.attr('ctr'));return this;}
$.fn.chooserReload=function(ajax,datas){var id='#'+this.attr("id");var list=this.siblings(id+choosersetting.id).children('ul');list.html('');var ismulti=this.data('ismulti'),type=this.attr('ctr'),item=this.data('item')||(ismulti?choosersetting.multiitem:choosersetting.item);if(datas)
chooser_bindselect(ismulti,id,ictrcore.teml(list,item,datas),type,this);else
bindByAjax(ajax,list,item,function(data,list){chooser_bindselect(ismulti,id,list,type);});return this;}})(jQuery);

// viewer﻿
var viewerSetting={id:'_viewer'};(function($){$.fn.viewer=function(options){options=$.extend({css:'viewer',csszoomfit:'zoomfit',bgcolor:'#eee',contentselector:null,fixheight:4,fixwidth:0},options);var bg=options.bgcolor,fixheight=options.fixheight,fixwidth=options.fixwidth,contentselector=options.contentselector;return this.each(function(){var ctr=$(this),id=ctr.attr('id');var tools=$(document.createElement('div')).attr('id',id+viewerSetting.id).addClass(options.css);$(document.createElement('a')).addClass(options.csszoomfit).click(function(){var btn=$(this),ctr=$('#'+id);if(!ctr.data('set'))
ctr.data('set',{width:ctr.width(),height:ctr.height(),bg:ctr.css('background-color')});btn.toggleClass('max');if(btn.hasClass('max')){var win=$(window);zoomStruct(ctr,9999,'absolute',win.width()+win.scrollLeft()-10,win.height()+win.scrollTop()-35,contentselector,bg,fixwidth,fixheight);btn.next().hide().next().hide();}
else{var set=ctr.data('set');zoomStruct(ctr,'','static',set.width,set.height,contentselector,set.bg,fixwidth,fixheight);btn.next().show().next().show();}}).appendTo(tools);ctr.prepend(tools);fixheight+=tools.getCss('height');var ctrheight=ctr.getCss('height');ctr.dblclick(function(){$('#'+$(this).attr('id')+viewerSetting.id+' > a').click();});if(ctrheight)
{ctr.css('height',ctrheight+fixheight);fixheight=ctrheight+fixheight-ctr.find(contentselector).getCss('height');}});};function zoomStruct(ctr,zindex,post,width,height,contentselector,bg,fixwidth,fixheight){ctr.css({"z-index":zindex,position:post,width:width,"height":height,'background-color':bg,left:0,top:0});if(contentselector)
ctr.find(contentselector).css({width:ctr.getCss('width')-fixwidth,height:ctr.getCss('height')-fixheight});}
$.viewerGetHeight=function(ctr){return ctr.children('#'+ctr.attr('id')+viewerSetting.id).height();}})(jQuery);

// validator
(function($){$.fn.initValid=function(options){return this.each(function(){var ctr=$(this);var ctrtype=ctr.attr("ctr");if(ctrtype){var id=ctr.attr('id');switch(ctrtype){case'ddl':$('#'+id+"_1").addClass("valid").blur(function(){var ctr=$(this);valid($('#'+ctr.attr("id").substring(0,ctrid.length-2)),ctr);});break;case'list':$('#'+id+"_chooser").addClass("valid").click(function(){var ctr=$(this);valid($('#'+ctr.attr("id").replace('_chooser','')),ctr);});break;case'file':$('#'+id+"_file").addClass("valid").change(function(){var ctr=$(this);valid(ctr,ctr);});break;}}
else
ctr.addClass("valid").blur(function(){valid($(this));});if(options){ctr.data("valid",options);if(options.group)
ctr.addClass(options.group)}});};function valid(ctr,showctr){var valid=ctr.data("valid");if(valid){var arrError=new Array;var value=ctr.val().trim();if(valid.required&&value.length==0)
arrError.push($iconst.validator.required)
if(value.length>0){if(showctr){if(valid.range)
checkChooserRange(value,valid,arrError);}
else{var type=ctr.attr("itype");if(type){switch(type){case"int":if(isInteger(value)){if(valid.range)
arrError=checkRange(value*1,valid,arrError,$iconst.validator.numberRange);}
else
arrError.push($iconst.validator.integerRule);break;case"num":case"cur":var fraction=valid.fraction||iconfig.format.decimalfraction;if(isFloat(value)){if(valid.range)
arrError=checkRange(value*1,valid,arrError,$iconst.validator.numberRange);}
else
arrError.push($iconst.validator.numberRule.format(fraction))
break;case"date":value=value.toDate();if(value){if(valid.range)
arrError=checkDateRange(value,valid,arrError);}
else
arrError.push($iconst.validator.dateRule);break;case"datetime":value=value.toDateTime();if(!value)
arrError.push($iconst.validator.datetimeRule);break;case"bool":break;}}
else{if(valid.range)
arrError=checkRange(value.length,valid,arrError,$iconst.validator.textRange);if(arrError.length==0&&valid.rule){if(ctr.attr('type')=='file')
value=getFileExtName(value).toLowerCase();var rule=getJsonValue(iconfig.validator.rules,valid.rule);if(rule&&!regTest(rule,value))
arrError.push(getJsonValue($iconst.validator.rules,valid.rule))}}
if(arrError.length==0&&valid.custrule&&valid.custrule.length>0&&valid.custrule[0]&&!regTest(valid.custrule[0],value))
arrError.push(valid.custrule.length>1?valid.custrule[1]:$iconst.validator.custrule);if(arrError.length==0&&valid.custfn&&valid.custfn.length>1&&!valid.custfn[0](ctr,value))
arrError.push(valid.custfn[1]);}}
if(arrError.length>0){bulidValidError(showctr||ctr,arrError);return false;}
else
closeValidError(showctr||ctr);}
return true;}
function checkRange(value,valid,arrerror,errortext){var min=valid.range[0],max=valid.range[1];if(value<min||value>max)
arrerror.push(errortext.format(min,max));return arrerror;}
function checkDateRange(value,valid,arrerror){if(valid.range.length>0){value=Date.parse(value)
var min=toDateNum(valid.range[0]),max=toDateNum(valid.range[1]),result=true;if(min&&value<min)
result=false;else if(max&&value>max)
result=false;if(!result){var msg='';if(min)
msg=$iconst.validator.greatthan.format(valid.range[0]);if(max)
msg+=(msg.length>0?$iconst.validator.and:'')+$iconst.validator.lessthan.format(valid.range[1]);arrerror.push($iconst.validator.dateRange.format(msg));}}
return arrerror;}
function checkChooserRange(value,valid,arrerror){if(valid.range.length>0){value=value.split(iconfig.common.valuesplit).length;var min=valid.range[0],max=valid.range[1],result=true;if(min&&value<min)
result=false;else if(max&&value>max)
result=false;if(!result){var msg='';if(min)
msg=$iconst.validator.greatthan.format(valid.range[0]);if(max)
msg+=(msg.length>0?$iconst.validator.and:'')+$iconst.validator.lessthan.format(valid.range[1]);arrerror.push($iconst.validator.ctrRange.format(msg));}}
return arrerror;}
function bulidValidError(ctr,errors){if(errors&&errors.length>0){var parent=ctr.parent();var errorpanel=parent.find('#'+ctr.attr('id')+'_validerror');if(errorpanel.length==0){errorpanel=$(document.createElement('div')).addClass("valid-error").attr('id',ctr.attr('id')+'_validerror');parent.append(errorpanel);}
else
errorpanel.html('');var sbError=new StringBuilder();var div=$(document.createElement('div')).addClass("valid-errortext");for(var i=0;errors[i];i++){sbError.append('<div class="valid-errortext">').append(errors[i]).append("</div>");}
errorpanel.html(sbError.toString());ictrcore.upTip(ctr,errorpanel,iconfig.validator.errorcss);errorpanel.show();sbError=null;errors=null;}}
function closeValidError(ctr){ctr.parent().find('#'+ctr.attr('id')+'_validerror').html('').remove();}
$.validArea=function(selector,group){var result=true;$((selector||'')+' .valid'+(group?'.'+group:'')).each(function(){var showctr,ctr=$(this),ctrtype=ctr.attr("ctr");if(ctrtype){var id=ctr.attr('id');switch(ctrtype){case'ddl':showctr=ctr;ctr=$('#'+id.substring(0,id.length-2));break;case'list':showctr=ctr;ctr=$('#'+id.replace('_chooser',''));break;case'file':showctr=ctr;break;}}
if(!valid(ctr,showctr)&&result)
result=false;});return result;}})(jQuery);

//uploader
(function($){$.fn.uploader=function(options){options=$.extend({handler:iconfig.handles.upload},options);var id=this.attr('id');var form=$('<form name="uploadform" method="post" enctype="multipart/form-data" />').attr('id',id+'_form').attr('name',id+'_form').attr('action',options.handler).attr('target',id+'_if');var file=$("<input type='file' name='"+id+"_file' />").attr('id',id+'_file').addClass('txt file').attr('contenteditable','false').appendTo(form);$("<input type='hidden' name='hidUPFName' />").attr('id',id+'_hid').attr('field','OldPath').appendTo(form);$("<iframe name='"+id+"_if' />").attr('id',id+'_if').hide().appendTo(form);file.blur(function(){var tfile=$(this),name=tfile.val();if(name.length>0){$('#'+tfile.attr('id').replace('_file','')).val(name);}});this.hide().after(form);return file;};})(jQuery);function upload_file(id,container,fn,param){if(param&&$(id+'_file').val().length>0){$(id+'_hid').val(param);if(container)
ictrcore.loading(container);$(id+'_if').load(function(){var result="0",doc=this.contentDocument||frames[this.id].document;if(doc.body)
result=doc.body.innerHTML;switch(result){case"0":$icontrol.alert($iconst.Common.upload);break;case"2":$icontrol.alert($iconst.Common.uploadsize);break;}
ictrcore.loadingClose(container);if(fn)
fn(result=="1");});$(id+'_form').submit();}
else if(fn)fn(true);}

// tree﻿
(function($){var treeSetting={cssfilter:'tree-filter',cssfiltertxt:'tree-filter-txt',cssfilterlist:'tree-filter-list',csscontent:'tree-content',valuesplit:iconfig.common.valuesplit,item:iconfig.tree.teml.item,itemmulit:iconfig.tree.teml.itemmulit};$.fn.tree=function(datas,options){options=$.extend({container:iconfig.tree.teml.container,item:null,showfilter:true,ismulit:false,fnselected:null,expanddept:0,css:'tree'},options);var tree=this.addClass(options.css),id=tree.attr('id'),fixheight=0;if(options.showfilter){var filter=$('<div/>').addClass(treeSetting.cssfilter);var txtfilter=$('<input />').addClass(treeSetting.cssfiltertxt).appendTo(filter);var btnfilter=$('<a />').text('Go').appendTo(filter)
var list=$('<div />').addClass(treeSetting.cssfilterlist).append('<ol />').appendTo(filter);filter.prependTo(tree);fixheight=filter.getCss('height');btnfilter.click(function(){treeFilter(id,txtfilter,list);});txtfilter.keydown(function(e){switch(e.keyCode){case 38:keySelect(list,$(this),true);break;case 40:if(list.css('display')=='none')
treeFilter(id,txtfilter,list);else
keySelect(list,$(this),false,true);break;case 13:if(list.css('display')=='none')
treeFilter(id,txtfilter,list);else
if(keySelect(list,$(this),false,false,true))
treeFilter(id,txtfilter,list);break;}});}
var treecontent,nodes;if(datas){treecontent=$('<div />').addClass(treeSetting.csscontent).css({width:tree.css('width'),height:tree.getCss('height')-fixheight}).appendTo(tree);bindTree(id,treecontent,datas,options,0);}
else{nodes=tree.children('ul');if(nodes.length){nodes.wrap(document.createElement('div'));treecontent=nodes.parent().addClass(treeSetting.csscontent)}
else
treecontent=tree.find('div.'+treeSetting.csscontent);if(treecontent.length){treecontent.css({width:tree.css('width'),height:tree.getCss('height')-fixheight});buildTree(true,id,treecontent.children('ul').children('li'),options.ismulit,options.fnselected,0,options.expanddept);}}
return tree;};function bindTree(id,root,datas,options,dept){if(datas.length>0){var container=$(options.container).appendTo(root);if(options.ismulit)
root.data('count',datas.length);var itemtemp=options.item||(options.ismulit?treeSetting.itemmulit:treeSetting.item);ictrcore.teml(container,itemtemp,datas).each(function(i){var data=datas[i],item=$(this);if(data&&data.rows)
bindTree(id,item,data.rows,options,dept+1);buildTree(false,id,item,options.ismulit,options.fnselected,dept,options.expanddept,datas.length==i+1);});}}
function buildTree(isbuildchild,treeid,items,ismulit,fnselected,dept,expanddept,isend){var length=items.length;if(length){length--;items.each(function(i){var item=$(this),node=item.children('a'),child=item.children('ul');item.addClass(dept?((hasValue(isend)?isend:length===i)?'end':(child.length?'dir':'')):'root');if(child.length){node.addClass('dir').click(function(){var node=$(this).toggleClass('opend');node.next('ul').toggle('fast');if(fnselected)
fnselected(node,true);});if(ismulit)
item.children('samp').attr('d',1).click(function(){dirCheck($(this));});if(isbuildchild){var childs=child.children('li');item.data('count',childs.length);buildTree(isbuildchild,treeid,childs,ismulit,fnselected,dept+1,expanddept);}
if(dept<expanddept){child.show();node.addClass('opend')}}
else{node.click(function(){$('#'+treeid+' a.selected').removeClass('selected');var node=$(this).addClass('selected');if(fnselected)
fnselected(node,false);});if(ismulit)
item.children('samp').click(function(){nodeCheck($(this));});}});}}
function keySelect(list,txt,isup,isdown,isenter){var item=list.find("li.selected");if(item.length){if(isenter)
item.click();else{var select=isdown?item.next('li'):item.prev('li');if(select.length){select.addClass("selected");item.removeClass("selected");}}}
else if(isdown){list.find("li:eq(0)").addClass("selected");}
else if(isenter)
return true;}
function treeFilter(treeid,txt,list){var text=txt.val();if(strNotEmpty(text)){if(txt.data('lastValue')!==text){var ol=list.children('ol');ol.html('');$('#'+treeid+' ul li a:contains('+text+')').each(function(){var item=$(this);$(document.createElement('li')).append(item.text()).appendTo(ol).click(function(){gotoNode(list,txt,item);});});ictrcore.upselector(txt,list,iconfig.tree.filtercss);txt.data('lastValue',text);}
list.show('fast');}}
function gotoNode(list,txt,node){node.parents('li').children('a.dir:not(.opend)').each(function(){$(this).click();});node.click();list.hide('fast');txt.focus();setTimeout(function(){ictrcore.gotoNode(node,node.parents('.'+treeSetting.csscontent));},500);}
function dirCheck(dir){var ischeck=!dir.hasClass('selected');dir.parent('li').find('ul li samp').attr('class',ischeck?'selected':'');dir.removeClass('had');nodeCheck(dir);}
function nodeCheck(node){node.toggleClass('selected');node.parent().parents('li').each(function(){setParent($(this));});}
function setParent(node,ischeck){var chk=node.children('samp');var checkednum=node.find(' > ul > li samp.selected').length;if(checkednum)
chk.attr('class',checkednum===node.data('count')?'selected':'had')
else{checkednum=node.find(' > ul > li samp.had').length;chk.attr('class',checkednum?'had':'');}}
$.treeGetValue=function(treeid,chkprop,valuesplit){if(!chkprop)
chkprop='v';var sbValues=new StringBuilder();$('#'+treeid+' ul li samp.selected:not([d])').each(function(){sbValues.append($(this).attr('v'));});if(sbValues.isNotEmpty())
return sbValues.toString(valuesplit||treeSetting.valuesplit);return'';}})(jQuery);

//tooltip
(function($){var tooltipSetting={id:'_tip'};$.fn.tooltip=function(options){options=$.extend({classname:'tooltip',cssctr:'ctrtip',tipprop:'title',content:null,activation:"hover"},options);options.css=$.extend({zindex:iconfig.tooltip.css.zindex,opacity:iconfig.tooltip.css.opacity,width:iconfig.tooltip.css.width,height:iconfig.tooltip.css.height,left:iconfig.tooltip.css.left,top:iconfig.tooltip.css.top},options.css);this.each(function(i){var ctr=$(this).addClass(options.ctrtip),timeout=false,isclose=true,tooltip;var id=ctr.attr("id");if(strNotEmpty(id)){id+=tooltipSetting.id;tooltip=ctr.parent().find('#'+id);}
else
id=null;if(!tooltip||!tooltip.length){tooltip=$(document.createElement('div')).attr('id',id).addClass(options.classname).appendTo(ctr.parent()).hover(function(){isclose=false;},function(){isclose=true;tooltipClose(tooltip)});if(options.activation==="hover")
ctr.hover(function(){tooltipShow($(this),tooltip,options.css);},function(){tooltipClose(tooltip);});else if(options.activation==="click")
ctr.click(function(){tooltipShow($(this),tooltip,options.css);});}
if(options.content)
tooltip.html(options.content);else{var tipcontent=ctr.attr(options.tipprop);if(strNotEmpty(tipcontent)){tooltip.html(tipcontent);ctr.removeAttr(options.tipprop);}
else{var herf=ctr.attr('href');if(strNotEmpty(herf)){$(herf).css('display','').appendTo(tooltip);ctr.removeAttr('href');}
else if(strNotEmpty(ctr.attr('url')))
tooltip.data('isajax',1);}}
function tooltipShow(ctr,tooltip,css){if(tooltip.data('isajax')){var url=ctr.attr('url');if(strNotEmpty(url))
ictrcore.loadPage(url,tooltip,ctr.attr('params'));tooltip.removeData('isajax');}
ictrcore.upTip(ctr,tooltip,css,false);if(timeout){clearTimeout(timeout);}
timeout=setTimeout(function(){tooltip.stop(true,true).fadeIn('normal');},100);}
function tooltipClose(tooltip){if(timeout){clearTimeout(timeout);}
timeout=setTimeout(function(){if(isclose)tooltip.fadeOut('fast');},100);}});};})(jQuery);

//tab
(function($){var tabSetting={css:'tabs',csscontent:'tab-content',csscontentitem:'tab-content-item'};$.fn.tabs=function(contents,datas,options){options=$.extend({tabs:iconfig.tabs.container,item:iconfig.tabs.item,ajaxcontent:null,selectIndex:0},options);var tabcontainer=this;if(datas&&datas.length>0){var tabs=$(options.tabs).addClass(tabSetting.css).appendTo(tabcontainer);ictrcore.teml(tabs,options.item,datas).each(function(i){setTabs($(this).children('a'),i);});}
else
setTabs(tabcontainer.find('ul.'+tabSetting.css+' > li > a'));$(contents).addClass(tabSetting.csscontent);if(hasValue(options.selectIndex))
$.tabSelect('#'+tabcontainer.attr('id'),options.selectIndex);function setTabs(items,index){var ajaxcontent=options.ajaxcontent;items.each(function(i){$(this).data('index',index||i).click(function(){var link=$(this),tab=$(this).parent('li');tab.siblings('.selected').removeClass('selected');tab.addClass('selected');$(contents+' .'+tabSetting.csscontentitem+':visible').hide();var targetid=link.attr('href'),ui=link.attr('ui'),target;if(strNotEmpty(ui)&&(!strNotEmpty(targetid)||targetid==='#')&&ajaxcontent)
targetid=ajaxcontent;if(strNotEmpty(targetid)&&targetid!=='#')
target=$(contents+' '+targetid);else{var index=link.data('index');if(hasValue(index))
target=$(contents+' .'+tabSetting.csscontentitem+':eq('+index+')');}
if(target&&target.length>0){if(ui)
ictrcore.loadPage(ui,target);target.show();}});});}};$.tabSelect=function(ctr,index){$(ctr+' ul.'+tabSetting.css+' li:eq('+index+') a').click();}})(jQuery);

//struct
(function($){var structSetting={css:'struct',csscontent:'struct-content',csstools:'struct-tools',csszoomfit:'zoomfit',csszoomout:'zoomout',csszoomin:'zoomin'};$.fn.struct=function(datas,options){if(datas){options=$.extend({container:iconfig.struct.teml.container,item:iconfig.struct.teml.item,showtools:true,fnselected:null,hlinewidth:4,deptforvertical:2},options);var struct=$(this),id=struct.attr('id'),structcontent,nodes;;structcontent=$('<div />').addClass(structSetting.csscontent).appendTo(struct);setStructcontent(struct,structcontent);bindTree(id,structcontent,datas,options,0);if(options.showtools)
struct.viewer({contentselector:'.'+structSetting.csscontent});}
return struct;};function bindTree(id,root,datas,options,dept){if(datas.length>0){var container=$(options.container).appendTo(root);root.data('count',datas.length);ictrcore.teml(container,options.ismulit?options.itemmulit:options.item,datas).each(function(i){var data=datas[i],item=$(this);if(data&&data.rows)
bindTree(id,item,data.rows,options,dept+1);buildStruct(dept,false,id,item,options);});}}
function buildStruct(dept,isbuildchild,structid,items,ops){if(items.length>0){items.each(function(){var item=$(this);if(!dept)
item.addClass('root');if(hasValue(ops.deptforvertical)&&dept>=ops.deptforvertical)
item.addClass('vertical');var node=item.children('a'),child=item.children('ul'),childs;if(child.length){if(isbuildchild){childs=child.children('li');buildStruct(dept+1,isbuildchild,structid,childs,ops);}}
else{}
setStructNode(item,child,childs,ops.hlinewidth);});}}
function setStructNode(node,child,childs,hlinewidth){if(!childs)
childs=child.children('li');if(childs.length){var width=0;childs.each(function(){width+=$(this).width();});if(node.width()<width)
node.width(width);}
var vline=$('<div class="vline"><div /></div>'),islast=childs.length==0,isroot=node.hasClass('root');if(islast){if(!isroot)
node.prepend(vline);}
else{var hline=$('<div class="hline"><div/></div>'),first=childs.eq(0),left=first.offset().left+first.width()/2,linewidth;if(childs.length>1)
var last=childs.eq(childs.length-1),linewidth=last.offset().left+last.width()/2-left+hlinewidth;hline.children('div').width(linewidth||hlinewidth).css('margin-left',left-node.offset().left-hlinewidth/2);if(isroot)
child.before(vline).before(hline);else{node.prepend(vline.clone());child.prepend(hline).prepend(vline);}}}
function setStructcontent(struct,content){content.css({width:struct.css('width'),height:struct.css('height')});}
var _ismove,_x,_y;function moveStruct(content){if($.browser.msie){content[0].onselectstart=content[0].ondrag=function(){return false;};}
content.mousedown(function(e){var event=window.event||e;_ismove=true;_x=event.x||event.clientX;_y=event.y||event.clientY;$(this).addClass('move');});content.mousemove(function(e){if(_ismove){var content=$(this);content.scrollLeft(content.scrollLeft()-(event.x||event.clientX)+_x);content.scrollTop(content.scrollTop()-(event.y||event.clientY)+_y);}});content.bind('mouseup mouseout',function(e){if(_ismove){_ismove=false;$(this).removeClass('move');}});}})(jQuery);

// repeat
(function($){$.fn.repeat=function(options,template,datasource,totalrecord,fnpagechanged){var rpt=this,ops=rpt.data('ops'),isreload=hasValue(ops),id=rpt.attr('id');ops=$.extend(ops||{usepager:true,showtoppager:false,simplepager:true,ajax:null,fnBuilded:null,pagesize:iconfig.grid.pagesize,pageindex:1,totalrecord:0},options);if(template)
$.templates(id,template);if(isreload)
rpt.html('');bindRepeater(isreload,id,rpt,datasource,totalrecord,ops,fnpagechanged);return rpt;};function bindRepeater(isreload,id,rpt,datas,totalrecord,ops,fnpagechanged){if(datas)
buildRepeater(isreload,id,rpt,datas,totalrecord,ops,fnpagechanged);else{ictrcore.loading(rpt);ictrcore.GetDatas(ops.ajax.url,$sw.bulidSearchParam(ops.pageindex,ops.pagesize,ops.ajax.data,ops.ajax.sort),function(datas){var rpt=$('#'+id);if(datas)
buildRepeater(isreload,id,rpt,datas.rows,datas.total,ops,isreload?null:function(pageindex,pagesize){pageChanged(id,pageindex,pagesize);});});}}
function buildRepeater(isreload,id,rpt,datas,totalrecord,ops,fnpagechanged){if(totalrecord)
ops.totalrecord=totalrecord;if(datas!=null&&datas.length>0){var items=$.tmpl(id,datas,{startIndex:(ops.pageindex-1)*ops.pagesize}).appendTo(rpt);if(ops.fnBuilded)
ops.fnBuilded(items,datas);}
if(isreload)
rpt.siblings('div.pager').pager({pagesize:ops.pagesize,pageindex:ops.pageindex,totalrecord:ops.totalrecord});else
buildPager(rpt,ops,fnpagechanged);rpt.data('ops',ops);ictrcore.loadingClose(rpt);}
function buildPager(container,ops,fnpagechange){if(ops.usepager){var pageops={pagesize:ops.pagesize,pageindex:ops.pageindex,totalrecord:ops.totalrecord,issimple:ops.simplepager};container.after($(document.createElement('div')).pager(pageops,fnpagechange));if(ops.showtoppager)
container.before($(document.createElement('div')).pager(pageops,fnpagechange));}}
function pageChanged(id,pageindex,pagesize,datasource,ops,rpt){if(!rpt)
rpt=$('#'+id);if(!ops)
ops=rpt.data('ops');if(pagesize)
ops.pagesize=pagesize;if(pageindex)
ops.pageindex=pageindex;rpt.html('');bindRepeater(true,id,rpt,datasource,null,ops);}
$.fn.repeatReload=function(options,datasource){var rpt=this,id=rpt.attr('id'),ops;if(options){ops=$.extend(rpt.data('ops'),options);if(options.ajax&&options.ajax.url)
ops.ajax=$.extend(ops.ajax,options.ajax);}
else
ops=rpt.data('ops');if(!options||!options.pageindex)
ops.pageindex=1;pageChanged(id,null,null,datasource,ops,rpt);}})(jQuery);

//rangeselector
(function($){$.fn.rangeselector=function(options){options=$.extend({type:'date',css:'txtrange'},options);this.hide();var parent=this.parent(),id=this.attr('id'),field=this.attr('field');this.removeAttr('field');var txt=$(document.createElement('input')).addClass(this.attr('class')).addClass(options.css).attr('id',id+'_Begin').appendTo(parent);switch(options.type){case'date':case'datetime':$icontrol.datepicker(txt);break;case'num':txt.bind('blur keyup',function(e){checkkey($(this));});break;}
$(document.createElement('span')).addClass('rangeto').text(' ').appendTo(parent);var txtEnd=txt.clone(true).attr('id',id+'_End').attr('field',field+'_End').appendTo(parent);txt.attr('field',field);};function checkkey(txt){txt.val(txt.val().replace(/[^0-9.]/g,''));}})(jQuery);

//pager
(function($){$.fn.pager=function(options,fnPageChanged){options=$.extend({pagesize:10,pageindex:1,totalrecord:0,pagesizes:iconfig.pager.pagesizes,issimple:false},options);options.text=$.extend({pagesize:$iconst.controls.pager.pagesize,pageindex:$iconst.controls.pager.pageindex,frist:$iconst.controls.pager.frist,prve:$iconst.controls.pager.prve,next:$iconst.controls.pager.next,last:$iconst.controls.pager.last,reload:$iconst.controls.pager.reload,total:$iconst.controls.pager.total},options.text);return this.each(function(){var pager=$(this);var pagerInf={};if(!pager.hasClass('pager')){pager.addClass("pager");pagerInf.pageNum=1;pagerInf.pageSize=options.pagesize;var id=pager.attr("id");var pgroup=$(document.createElement('div')).addClass('pgroup');var sbpagesize=new StringBuilder();for(var i=0;options.pagesizes[i];i++){var size=String(options.pagesizes[i]);sbpagesize.append('<option selected value="').append(size).append('">').append(size).append('</option>');}
var selPageSize=$(document.createElement('select')).addClass('psize').append(sbpagesize.toString()).val(options.pagesize).attr('title',options.text.pagesize).change(function(){pageChange(pager,1,fnPageChanged);});pgroup.clone().append(selPageSize).appendTo(pager);if(options.issimple){pager.addClass("pager_simple");selPageSize.hide();buildbtn(pager,'prev').text(options.text.prve).appendTo(pager);buildbtn(pager,'next').text(options.text.next).appendTo(pager);}
else{pgroup.clone().append(buildbtn(pager,'frist')).append(buildbtn(pager,'prev')).appendTo(pager);var txtIndex=$(document.createElement('input')).addClass('pindex').attr('title',options.text.pageindex).keydown(function(e){if(e.keyCode==13)pageChange(pager,parseInt(this.value),fnPageChanged);});pgroup.clone().append(txtIndex).append('<span>/</span><span class="ptotal">1</span>').appendTo(pager);pgroup.clone().append(buildbtn(pager,'next')).append(buildbtn(pager,'last')).appendTo(pager);pgroup.clone().append(buildbtn(pager,'reload')).appendTo(pager);pgroup.append($(document.createElement('span')).text(options.text.total)).append($(document.createElement('span')).addClass('ptotalrecord')).appendTo(pager);}}
else
pagerInf=pager.data('inf');if(options.totalrecord)
pagerInf.totalRecord=options.totalrecord;if(options.pageindex)
pagerInf.index=options.pageindex;setPager(pager,pagerInf,options.pageindex,options.pagesize);});function buildbtn(pager,name){var btn=$(document.createElement('a')).addClass('p'+name);switch(name){case'frist':btn.attr('title',options.text.frist).click(function(){pageChange(pager,1,fnPageChanged);});break;case'prev':btn.attr('title',options.text.prve).click(function(){pageChange(pager,pager.data('inf').index-1,fnPageChanged);});break;case'next':btn.attr('title',options.text.next).click(function(){pageChange(pager,pager.data('inf').index+1,fnPageChanged);});break;case'last':btn.attr('title',options.text.last).click(function(){pageChange(pager,pager.data('inf').pageNum,fnPageChanged);});break;case'reload':btn.attr('title',options.text.reload).click(function(){pageChange(pager,null,fnPageChanged);});break;}
return btn;}};$.fn.pagerChange=function(pageindex,fnPageChanged){pageChange($(this),pageindex,fnPageChanged);}
function setPager(pager,pagerInf,pageindex,pagesize){var ddlSize=pager.find('select.psize');if(pagesize)
ddlSize.val(pagesize);pagesize=ddlSize.val()*1;var pageNum=pagerInf.totalRecord>0?parseInt(pagerInf.totalRecord/pagesize)+(pagerInf.totalRecord%pagesize>0?1:0):1;var isChange=false;if(pageindex){if(pageindex>0&&pageindex<=pageNum&&(pagerInf.index!=pageindex||pagesize!=pagerInf.pageSize||pageNum!=pagerInf.pageNum)){pagerInf.pageSize=pagesize;pagerInf.index=pageindex;pagerInf.pageNum=pageNum;isChange=true;}}
else
isChange=true;pager.find('input.pindex').val(pagerInf.index);pager.find('span.ptotal').text(pageNum);pager.find('span.ptotalrecord').text(pagerInf.totalRecord);pager.data('inf',pagerInf);if(pagerInf.index<2&&pagerInf.index==pageNum){pager.hide();}
else{pager.show();var btns=pager.find('a');btns.filter('.not').removeClass('not');if(pagerInf.index==pageNum)
btns.filter('.pnext,.plast').addClass('not');else if(pagerInf.index<2)
btns.filter('.pfrist,.pprev').addClass('not');}
return isChange;}
function pageChange(pager,pageindex,fnPageChanged){if(pager.length>0){var pagerInf=pager.data('inf');if(pagerInf&&setPager(pager,pagerInf,pageindex)&&fnPageChanged)
fnPageChanged(pagerInf.index,pagerInf.pageSize,pager);}}})(jQuery);
