if (!window.Sany) window.Sany={};
Sany.$tabs=null;
function sanyEvent(){
	this.next=null;
	this.queue=new Array();
	this.addListen=function(func){
		this.queue.push(func);
	}
	this.trigger=function(){
		for(func in this.queue){
			this.queue[func]();
		}
	}
}
function showResponse(responseText, statusText)  { 
	eval(responseText);
	alert("上传成功!");
} 
function sanyPagerFormat(formid){
	//return ' <a href="#?_page_=__PAGER__&fi=__FI__">';
	var url=document.location.pathname;
	var reg=/\/(xx[c|s]\w+)\/([cn|en]\w+\/)?([\d|p]+)\/(\d+)\/(\d+)\/(.*)/;
	var needid;
	var format;
	var idchange=false;
	var curForm=Sany.control.getFormWithFormID(formid);
	var id=null;
	if(curForm!==null){
		id=curForm.getParam("id");
	}
	if(needid=reg.exec(url)){
		if(id===null){
			id=needid[4];
		}
		if(needid[2]){
			format='/'+needid[1]+'/'+needid[2]+'__PAGER__/'+id+'/'+needid[5]+'/'+needid[6];
		}
		else{
			format='/'+needid[1]+'/__PAGER__/'+id+'/'+needid[5]+'/'+needid[6];
		}
		if(curForm!==null){
			//curForm.setParam("_page_",null);
		}
	}
	else{
		var reg=/\/(x[c|s]\w+)\/([cn|en]\w+\/)?([\d|p]+)\/(\d+)\/(.*)/;
		var needid;
		if(needid=reg.exec(url)){
	//		alert(needid[1]+",2:"+needid[2]+",3:"+needid[3]+",4:"+needid[4]+",5:"+needid[5]);
			if(id===null){
				id=needid[4];
			}
			if(needid[2]){
				format='/'+needid[1]+'/'+needid[2]+'__PAGER__/'+id+'/'+needid[5];
			}
			else{
				format='/'+needid[1]+'/__PAGER__/'+id+'/'+needid[5];
			}
			if(curForm!==null){
				//curForm.setParam("_page_",null);
			}
		}
		else{
			return ' <a href="#?_page_=__PAGER__&fi=__FI__&dm=__DM__">';
		}
	}
	return ' <a href="'+format+'" class="outlink">';

	
}
function sanyPager(formid,key,start,rows,numfound,dm,vp,usrctrl){
	var	gstart=start;
	var	gpagesize=rows;
	var	gtotal=numfound;
	
	$("."+formid+'_'+key+"__pager").empty();
	p=Math.ceil(gtotal/gpagesize);
	if(gtotal==0) return "";
	var format=sanyPagerFormat(formid);
	gn=Math.floor(gstart/gpagesize);
	pager='';
	prev=gn-1;
	next=gn+1;
	if(next>p){
		next=p-1;
		prev=p-2;
	}
	if(prev<0){
		prev=0;
	}
	k=gn+10;
	s=gn-9;	
	if(k>p){
		k=p;
	}
	if(s<=0){
		s=1;
	}
	gend=(parseInt(gstart)+parseInt(gpagesize))>parseInt(gtotal)?parseInt(gtotal):(parseInt(gstart)+parseInt(gpagesize));
	pager+='No.'+(parseInt(gstart)+1)+'-No.'+gend+' 共'+gtotal+'个 '+p+' 页';
	
	if(prev||gn==1){
		//pager+=' <a href="#?fi='+key+'&_start_='+(prev*gpagesize)+'&_rows_='+gpagesize+'&_numfound_='+gtotal+'" >上一页</a>';	
		pager+=format.replace(/__PAGER__/g,(prev*gpagesize)+'p'+gpagesize+'p'+gtotal).replace(/__FI__/g,key).replace(/__DM__/g,dm)+'上一页</a>';	
	}
	var vppager='';
	dmpager='';
	pgpg='';
	for(var m=s-1;m<k;m++){
		if(m==gn){
			pager+=' <strong>'+(m+1)+'</strong>';
			if(vp!=null&&vp.indexOf("p")>-1){
				var pagesizearr=vp.split("p");
				vppager='<span class="view-by-page">每页显示数量: ';
				for(var pz in pagesizearr){
					v=pagesizearr[pz];
					if(v==gpagesize){
						vppager+='<strong>'+v+'</strong>';
					}else{
						vppager+='<a class="v_p" href="javascript:;" key="'+key+'" rows="'+v+'" numfound="'+gtotal+'" >'+v+'</a>';
					}
					if(pz!=(pagesizearr.length-1)){
						vppager+='<span> | </span>';
					}
				}
				vppager+='</span>';
			}
			if(dm!=null&&dm!="null"){
				switch(dm){
					case 2:
					case "2":
						dmpager='<a class="select-all" href="javascript:;" onclick="App.clearChk(\'on\');" >全选</a><a class="select-none" href="javascript:;" onclick="App.clearChk(\'off\');">清除</a><a class="auction_buy" href="javascript:;" onclick="App.do_patchbuyfav(\'PatchAdd\');">购买宝贝</span><a class="auction_fav" href="javascript:;" onclick="App.do_patchbuyfav(\'PatchFav\');" >收藏宝贝</a><a class="sort-list v_p" href="javascript:;" key="'+key+'" rows="'+gpagesize+'" numfound="'+gtotal+'" dm="1">列表显示</a><span class="sort-grid">图片展示</span>  ';	
						break;
					default:
						dmpager='<a class="select-all" href="javascript:;" onclick="App.clearChk(\'on\');" >全选</a><a class="select-none" href="javascript:;" onclick="App.clearChk(\'off\');">清除</a><a class="auction_buy" href="javascript:;" onclick="App.do_patchbuyfav(\'PatchAdd\');">购买宝贝</span><a class="auction_fav" href="javascript:;" onclick="App.do_patchbuyfav(\'PatchFav\');" >收藏宝贝</a><span class="sort-list">列表显示</span><a class="sort-grid v_p" href="javascript:;" key="'+key+'" rows="'+gpagesize+'" numfound="'+gtotal+'" dm="2">图片展示</a>  ';	
						break;
				}
			}
			pgpg=m*gpagesize;
		}
		else{
			//pager+=' <a href="#?fi='+key+'&_start_='+(m*gpagesize)+'&_rows_='+gpagesize+'&_numfound_='+gtotal+'" >'+(m+1)+'</a>';
			pager+=format.replace(/__PAGER__/g,(m*gpagesize)+'p'+gpagesize+'p'+gtotal).replace(/__FI__/g,key).replace(/__DM__/g,dm)+(m+1)+'</a>';	
		}
	}
	if(next&&p!=next){
		//pager+=' <a href="#?fi='+key+'&_start_='+(next*gpagesize)+'&_rows_='+gpagesize+'&_numfound_='+gtotal+'" >下一页</a>';	
		pager+=format.replace(/__PAGER__/g,(next*gpagesize)+'p'+gpagesize+'p'+gtotal).replace(/__FI__/g,key).replace(/__DM__/g,dm)+'下一页</a>';	

	}
	var poption='';
	if(vp!=null&&vp.indexOf("p")>-1){
		var pagesizearr=vp.split("p");
	}
	else{
		var pagesizearr=new Array(10,20,30,40,50,100,200);
		var v=null;
		poption+='<select  key="'+key+'" _numfound_="'+gtotal+'" >';
		for(var pz=0;pz<pagesizearr.length;pz++){
			v=pagesizearr[pz];
			poption+='<option value="'+v+'" ';
			if(v==gpagesize){
				poption+=' selected ';
			}
			poption+=' >'+v+'</option>';
		}
		poption+='</select>';
	}
	var uctrl='';
	if(usrctrl!=null&&usrctrl!="null"&&usrctrl!=0){
		uctrl=usrctrl;	
	}
	var	pagescroll='<div class="view-ctrl-setting" >'+uctrl+dmpager+vppager+'</div><div class="view-page-bar">'+pager+poption+'</div>';
	$("."+formid+'_'+key+"__pager").html(pagescroll);
			//var pagerhtml='<div class="'+_formid+key+'_pager pager" >'+pagescroll+'</div>';
			//$("#"+_formid+key).after(pagerhtml);
	$("#"+formid+' select[@key='+key+']').change(function(){
		var curForm=Sany.control.getFormWithFormID(formid);
		curForm.setParam("fi",$(this).attr("key"));
		//curForm.setParam("_numfound_",$(this).attr("_numfound_"));
		//curForm.setParam("_rows_",$(this).val());
		sval=$(this).val();
		if(Math.floor(gtotal/sval)<pgpg){
			pgpg=Math.floor(gtotal/sval);
		}
		vl=(pgpg*sval)+'p'+sval+'p'+gtotal;
		curForm.setParam("_page_",vl);
		if(curForm.baseaction=="search"){
			curForm.postJson();	
		}
		else{
			curForm.doJson();	
		}
	});	
	$("#"+formid+' .v_p').click(function(){
		var curForm=Sany.control.getFormWithFormID(formid);
		curForm.setParam("fi",$(this).attr("key"));
		sval=$(this).attr("rows");
		gtotal=$(this).attr("numfound");
		dm=$(this).attr("dm");
		curForm.setParam("_numfound_",gtotal);
		curForm.setParam("_rows_",sval);
		vl=pgpg+'p'+sval+'p'+gtotal;
		curForm.setParam("_page_",vl);
		if(dm){
			curForm.setParam("dm",dm);
		}
		if(curForm.baseaction=="search"){
			curForm.postJson();	
		}
		else{
			curForm.doJson();	
		}
	});	
	
}
function maFromUrl(url){
	var pairs=url.replace(/\?/g,"&").split("&");
	var model=null;
	var action=null;
	for(var i=0;i<pairs.length;i++)
	{
		var pair=pairs[i].split('=');
		if(pair[0]=="m"){
			model=pair[1];
			continue;
		}
		if(pair[0]=="a"){
			action=pair[1];
			continue;
		}
	
	}
	return new Array(model,action);
}

function postFunc(func,table,nid,nrows){
	var myForm=Sany.control.getCurForm;
	myForm.setParam("fn",func);
	var _formid=myForm.getData('_formid');
	if($("#"+_formid+" .tablesorter input[@name='"+nrows+"'][checked]").size()==0){
		alert("请选择一项");
		return false;
	}
	var gid=$("#"+_formid+" ."+nid+" option[selected]").val();
	myForm.setParam("_nid_",gid);
	var url='';
	$("#"+_formid+" .tablesorter input[@name='"+nrows+"'][checked]").each(function(){ url+="&nr[]="+$(this).val(); });
	myForm.setParamUrl(url);
	myForm.postJson();
}
function onPromptTimeout()
{
	myForm=Sany.control.timeout;
	if(myForm===Sany.control.getCurForm()){
		var id="dialogYES"+myForm.popup.config.addid;
		if(myForm.data.timeout-- >0){
			setTimeout("onPromptTimeout()",1000);
			$("#"+id).val("确定 ("+myForm.data.timeout+")");
		}
		else{
			$("#"+id).trigger("click");
//			Sany.control.removeCurForm();
			Sany.control.timeout=null;

		}
		
	}
}
function onConfirmTimeout()
{
	myForm=Sany.control.timeout;
	if(myForm===Sany.control.getCurForm()){
		var id="dialogOk"+myForm.popup.config.addid;
		if(myForm.data.timeout-- >0){
			setTimeout("onConfirmTimeout()",1000);
			$("#"+id).val("确定 ("+myForm.data.timeout+")");
		}
		else{
			$("#"+id).trigger("click");
//			Sany.control.removeCurForm();
			Sany.control.timeout=null;

		}
		
	}
}

function onConfirm()
{
	curForm=Sany.control.getCurForm();
	curForm.setData("_needconfirm",false);
	curForm.postJson();
	curForm.setData("_needconfirm",true);
}
function sanyForm(model,action){
	this.model=model;
	this.action=action;
	this.baseaction=null;
	this.istab=false;
	this.ispopup=false;
	this.prevpopup=null;
	this.popup=null;
	this.dirty=true;
	this.stopHash=true;
	this.param=new Array();
	this.data=new Array();
	this.data['width']=580;
	this.data['height']=400;
	this.setParam=function(key,val){
		var found=0;	
		for(k in this.param){
			if(k===key)	{
				if(this.param[key]==val){
					found=2;
				}
				else{
					this.param[key]=val;
					found=1;

				}
				break;
			}
		}
		if(found===0){
			this.param[key]=val;
		}
		this.toHash(key,val);

		return found;
	}
	this.getParam=function(key){
		for(k in this.param){
			if(k===key)	{
				return this.param[key];
			}
		}
		return null;
	}
	this.setData=function(key,val){
		var found=0;	
		for(k in this.data){
			if(k===key)	{
				this.data[key]=val;
				found=1;
				break;
			}
		}
		if(found===0){
			this.data[key]=val;
		}
	}
	this.getData=function(key){
		for(k in this.data){
			if(k===key)	{
				return this.data[key];
			}
		}
		return null;
	}
	this.getParamUrl=function(){
		var url="m="+this.model+"&a="+this.action;
		for(k in this.param){
			if(this.param[k]!=null){
				var value=this.param[k];
				
				url+="&"+k+"="+value;
				
				
			}
		}
		return url;
	}
	this.setParamUrl=function(url){
		var oldm=null;
		var olda=null;
		var retstring="";
		var dirty=false;
		var pairs=url.replace(/\?/g,"&").split("&");

		for(var i=0;i<pairs.length;i++)
		{
			var pair=pairs[i].split('=');
			if(pair[0]=="m"){
				continue;
			}
			if(pair[0]=="a"){
				continue;
			}
			if(typeof(pair[1])!="undefined"){
				if(this.param[pair[0]]!==pair[1]){
					var tmpval=encodeURIComponent(pair[1])
					this.param[pair[0]]=tmpval;
//					this.param[pair[0]]=pair[1];
					this.toHash(pair[0],tmpval);
					dirty=true;
				}
				
			}
		}
		this.dirty=dirty;
	}
	this.toHash=function(p,v){

		if(this.stopHash)return;
		if(v!=null && v.constructor==Array){
			v=v.join(";");
		}
		var hash=document.location.hash;
		hash=hash.slice(1,hash.length);
		var arrHash=hash.split(",");
		if(hash.length==0)arrHash=[];
		var exist=false;
		//如果该函数已经存在与hash地址中，则不用重新添加
		for(var i=0;i<arrHash.length;i++)
		{
			var pairs=arrHash[i].split("!");
			if(pairs[0]==p)
			{
				exist=true;
				arrHash[i]=p+'!'+v;
				break;
			}
		}
		if(!exist)arrHash.push(p+'!'+v);
		document.location.hash="#" + arrHash.join(",");  
	}

	
	this.setParamUrlXC=function(url){
		var reg=/\/xx[c|s]\w+\/([cn|en]\w+\/)?([\d|p]+)\/(\d+)\/(\d+)/;
		var needid;
		var idchange=false;
		if(needid=reg.exec(url)){
			if(needid[4]!=0){
				idchange=this.setParam("id",needid[4]);
			}
			this.setParam("entid",needid[3]);
			this.setParam("_page_",needid[2]);
		}
		else{
			var reg=/\/x[c|s]\w+\/([cn|en]\w+\/)?([\d|p]+)\/(\d+)/;
			var needid;
			if(needid=reg.exec(url)){
				if(needid[3]!=0){
					idchange=this.setParam("id",needid[3]);
				}
				this.setParam("_page_",needid[2]);	
			}
			else{
				return false;
			}
		}
		if(idchange){
			var notifyaction=Sany.control.getNotifyAction("id");
			this.setParam("_notify_",notifyaction);
			
		}
		return true;
	}
	this.setParamUrlXD=function(url){
		var reg=/\/xxd\w+\/([cn|en]\w+\/)?(\d+)\/(\d+)/;
		var needid;
		var idchange=false;
		if(needid=reg.exec(url)){
			if(needid[3]!=0){
				idchange=this.setParam("id",needid[3]);
			}
			this.setParam("entid",needid[2]);
		}
		else{
			var reg=/\/xd\w+\/([cn|en]\w+\/)?(\d+)/;
			var needid;
			if(needid=reg.exec(url)){
				if(needid[2]!=0){
					idchange=this.setParam("id",needid[2]);
				}
			}
			else{
				return false;
			}
		}
		if(idchange){
			var notifyaction=Sany.control.getNotifyAction("id");
			this.setParam("_notify_",notifyaction);
		}
		return true;
	}
	this.setParamOnLoaded=function(){
		var needstr=document.location.pathname;
		var hash1=document.location.hash;
		hash1=hash1.slice(1,hash1.length);
		var arrHash1=hash1.split(",");
		if(this.setParamUrlXC(needstr)||this.setParamUrlXD(needstr)){
		
		}
		else{
		
			this.setParamUrl(document.location.search.substr(1));
		}
		if(hash1.length==0)arrHash1=[];
		var dirty=false;
		for(var i=0;i<arrHash1.length;i++)
     	{
	     	var pair=arrHash1[i].split("!");
			
			if(pair[0]){
				val=pair[1];
				if(typeof(val)=="string"){
					val=val.split(";");
				}
			}
			if(this.setParam(pair[0],val)!=2){
				dirty=true;
			}
     	}
		//if(dirty){
//			this.dirty=true;
//		}
		this.dirty=dirty;


	}
	this.clearParam=function(){
		this.param=new Array();
	}
	this.getTabId=function(){
		var model=this.model;
		var action=this.action;
		var tabid=null;
		if(Sany.$tabs===null){
			return null;
		}
         $("li >a",Sany.$tabs).each(function (i){
				var liurl=$(this).data('load.tabs');
				if(typeof(liurl)=="string"){
					var ma=maFromUrl(liurl);
					if(model==ma[0]&&action==ma[1]){
						tabid=i;
					}
		 		}
		  })
		 return tabid;
	}
	this.showTabs=function(title){
		url="/ff.php?"+this.getParamUrl();
		if(this.istab===false){
			if(Sany.$tabs===null){
				alert("Add tabs while no tabs defined");
				return;
			}
			Sany.$tabs.tabs('add', url, title);
			this.istab=true;
		}
		else if(this.dirty===true){
			this.setTabsTitle(title);
			this.doJson();
		}
		var tabid=this.getTabId();
		if(tabid!==null){
			Sany.$tabs.tabs('select',tabid);
		}		
	}
	this.setTabsTitle=function(title){
		var tabid=this.getTabId();
		if(title!=undefined){
			$('li a', Sany.$tabs).eq(tabid).html('<span>'+title+'</span>');	
		}
	}
	this.load=function(url) { 
            model=this.model;
			action=this.action;
            var finish = function() {
                self.xhr = null;
            };
            var ajaxOptions =  {
                url: url,
                success: function(r, s) {
                    $("#"+model+action+"popup").html(r);
                    finish();
                }
            }
            if (this.xhr) {
                // terminate pending requests from other tabs and restore tab label
                this.xhr.abort();
                finish();
            }
            setTimeout(function() { // timeout is again required in IE, "wait" for id being restored
                self.xhr = $.ajax(ajaxOptions);
            }, 0);

        }
	this.showPopup=function(title){
		url=Sany.domain+"/ff.php?"+this.getParamUrl();
		this.setData("title",title);
		if(this.ispopup===false){
			w=this.getData("width");
			h=this.getData("height");

			this.popup = new Popup({contentType:2,scrollType:'no',isSupportDraging:true,isReloadOnClose:false,width:w,height:h});
			this.popup.setContents({'title':title,"contentHtml":'<div id="'+this.model+this.action+'popup"></div>',"overlay":Sany.control.nrpopup++});
			this.popup.build();
			this.popup.show();
			this.load(url);
			this.ispopup=true;
			this.prevpopup=Sany.control.curpopup;
			Sany.control.curpopup=this;
		}
		else if(this.dirty===true){
			this.doJson();
		}
	}
	this.showPopSelfDefine=function(){
		w=this.getData("width");
		h=this.getData("height");
		title=this.getData('title');
		html=this.getData('contenthtml');
		this.popup = new Popup({contentType:2,scrollType:'no',isSupportDraging:true,isReloadOnClose:false,width:w,height:h});
		this.popup.setContents({'title':title,"contentHtml":html,"overlay":Sany.control.nrpopup++});
		this.popup.build();
		this.popup.show();
		this.ispopup=true;
		this.prevpopup=Sany.control.curpopup;
		Sany.control.curpopup=this;
	}
	this.confirm=function(){
		var msg=this.getData('_confirm_msg');
		this.ispopup=true;
		var title=this.getData('title');
		if(this.popup!==null){
			this.popup.closepopup();
		}
		this.popup = new Popup({contentType:3,scrollType:'no',isSupportDraging:true,isReloadOnClose:false});
		this.popup.setContents({'title':title,'callBack':onConfirm,'confirmCon':msg,'overlay':Sany.control.nrpopup,'width':340,'height':80});
		this.popup.build();
		this.popup.show();
		this.setData("timeout",5);
		Sany.control.timeout=this;
		onConfirmTimeout();
    }
	this.prompt=function(){
		var msg=this.getData('_prompt_msg');

		this.ispopup=true;
		var title=this.getData('title');
		if(this.popup!==null){
			this.popup.closepopup();
		}
		if(title==null){
			title='确认信息';	
		}
		this.popup = new Popup({contentType:4,scrollType:'no',isSupportDraging:true,isReloadOnClose:false});
		this.popup.setContents({'title':title,'alertCon':msg,'overlay':Sany.control.nrpopup,'width':340,'height':80});
		this.popup.build();
		this.popup.show();
		var timeout=this.getData('_prompt_timeout');
		if(timeout!=null){
			Sany.control.timeout=this;
			this.setData("timeout",Math.round(timeout/1000))
			onPromptTimeout();
		}
		this.prevpopup=Sany.control.curpopup;
		Sany.control.curpopup=this;
	}
	this.alert=function(){
	
	}
	this.showInline=function(){
			
	}
	this.remove=function(){
		if(this.ispopup===true){
			this.ispopup=false;
			this.popup.closepopup();
			Sany.control.curpopup=this.prevpopup;
			Sany.control.nrpopup--;

		}
		if(this.istab===true){
			var tabid=this.getTabId();
			if(tabid!==null){
				Sany.$tabs.tabs('remove',tabid);
			}
		}
	}
	this.jsonInit=function(){
		curForm=Sany.control.getCurForm();
		curForm.setParam('fn','init');
		curForm.doJson();
	}
	this.onFormLoaded=function(baseaction){
		Sany.control.trigger("onformloaded");
		this.baseaction=baseaction;
		var _formid=this.getData("_formid");
		var _jsoninit=this.getData("_jsoninit");
		$("#"+_formid+" tr.expandable").click(function() {
			if($(this).next().css("display")=="none"){
				$(this).next().show();
				$(this).addClass("expanded");
			}
			else{
				$(this).next().hide();
				$(this).removeClass("expanded");
			}
		});
		$("input.x_bit_field").bind("click", function(){ 
			var name=$(this).attr("name");
			var readonly=$(this).attr("readonly");
			if(readonly=="true"){
				return false;
			}
			var bitflagval=0;
			$("#"+_formid+" input[@name=\""+name+"\"][@checked]").each(function(){bitflagval|=$(this).val();});
			var hidename=name.substring(0,name.length-7);
			$("#"+_formid+" input:hidden[@name="+hidename+"]").val(bitflagval);
		}); 
		
		$("#"+_formid).submit(function(){
			$('#'+_formid+' [@allowblank]').trigger("blur");
			if($("#"+_formid+" [@ttt='1']").size()) return false;
			url= $("#"+_formid).formSerialize();
			action=$("#"+_formid).attr("action");
			if($("#"+_formid+" [@name='file']").size()){
				$(this).ajaxSubmit({success:showResponse,type:'POST',dataType:'json'});
				return false;
			}
			url=decodeURIComponent(url);
			curForm=Sany.control.getFormWithFormID(_formid);
			curForm.setParamUrl(url);
			if(baseaction=="login"){
				curForm.postLogin();
			}
			else{
				curForm.postJson();	
			}
			return false;//can't header action
		});
		if(_jsoninit===true){
		//	this.jsonInit();	
			this.doJson();
		}
		else{
			switch(baseaction){
			case "add":
			case "search":
			case "login":
				break;
			case "modify":
			case "view":
			case "list":
				this.doJson();
				break;
			default:
				if(!this.getData("_buildin")){
					this.doJson();
				}
				else {
					if(this.dirty==true){
						this.doJson();
					}
					else{
						if(this.getData("_format")!=null){
							//this.doFormatJson();	
						}
						this.onJsonDone();
					}
				}
				//alert("unknown baseaction:"+baseaction);
				break;
			}
		}
		var _optionlist=this.getData("_optionlist");
		for(var i in _optionlist){
			o=_optionlist[i][0];
			m=_optionlist[i][1];
			a=_optionlist[i][2];		
			var optval=this.getParam(o);
			var myform=this;
			url="/do.php?m="+m+"&a="+a+"&_page_=0p1000";
			$.getJSON(url, function(json){
				switch(json.ret){					
					case 0:
						alert("failed");
						break;
					case 1:
						opt='<option></option>';
						if(json.lists>0){
							var col=json.list[0].cols;
							for (var k=0;k<json.list[0].val.length;k+=col) {
								opt+="<option value=\""+json.list[0].val[k]+"\">"+json.list[0].val[k+1]+"</option>";
								
							}
						}
						$("#"+o+"_optionlist_").append(opt); 
						if(optval){
							myform.setFormVal(o,optval);
						}
						
						break;
				}
			});
		}
		for(var key in this.param){
			this.setFormVal(key,this.param[key]);
		}
	}
	this.onJsonDone=function(){
		var _formid=this.getData("_formid");
		$("#"+_formid+" a.popup").click(function(){
			var url=$(this).attr("href");			
			var title=$(this).attr("title");
			if(url.indexOf('#?') != -1){
				var curForm=Sany.control.getFormWithFormID(_formid);
				curForm.setParamUrl(url.substr(url.indexOf('#?')));
				if(curForm.baseaction=="search"){
					curForm.postJson();	
				}
				else{
					curForm.doJson();	
				}
				return false;
			}
			else{
				var ma=maFromUrl(url);
				var myForm=Sany.control.getSingleton(ma[0],ma[1]);
				myForm.setParamUrl(url);
		//		myForm.setContents({'_needconfirm':true,'_confirm_msg':"sure"});
				myForm.showPopup(title);
				return false;
			}
 	    })
		$("#"+_formid+" a[href]").not($("#"+_formid+" a.popup")).not($("#"+_formid+" a.outlink")).not($("#"+_formid+" a[@target=_blank]")).click(function(){
			var url=$(this).attr("href");			
			var title=$(this).attr("title");

			if(url.indexOf('#?') != -1){
				var curForm=Sany.control.getFormWithFormID(_formid);
				if(curForm===null){
					alert("Can't get Form With Form ID:"+_formid);
				}
				curForm.setParamUrl(url.substr(url.indexOf('#?')));
				if(curForm.baseaction=="search"){
					curForm.postJson();	
				}
				else{
					curForm.doJson();	
				}
				return false;
			}
			else{
				openUrl(url,title);
				return false;
			}
 	    })
		
		try 
		{  
			if(typeof(eval(clipinit))=="function")  
			{
				 clipinit();
			}
			
		}
		catch(e)
		{
		//alert("not function"); 
		} 
		try 
		{  
			if(typeof(eval(on_img_loaded))=="function")  
			{
				 on_img_loaded();
			}
			
		}catch(e)
		{
		//alert("not function"); 
		} 
	}
	this.onSamePageAjax=function(){
		var urlprex=document.location.pathname;
		var curForm=this;
		var needid;
		var reg=/\/(x+[c|d|s]\w+)\//;
		if((needid=reg.exec(urlprex))!=null){
			$("#"+_formid+" a[href]").not($("#"+_formid+" a.popup")).not($("#"+_formid+" a.outlink")).not($("#"+_formid+" a[@target=_blank]"))
			
			$("a[@href*="+needid[1]+"]").not($("a.added")).click(function() {
				var url=$(this).attr("href");			
				if(curForm.setParamUrlXC(url)||curForm.setParamUrlXD(url)){
					curForm.doJson();
					return false;
				}
			});
			$("a[@href*="+needid[1]+"]").not($("a.added")).addClass("added");
		}
		this.stopHash=false;
	}
	this.showJsonList=function(json){
		
		var _titleField=this.getData("_titleField");
		var _formid=this.getData("_formid");
		var _bitflag=this.getData("_bitflag");
		var _optionlist=this.getData("_optionlist");
		
		for(var i = 0; i < json.lists; i++)
		{	
			var row = ""
			var cur = ""
			var col=json.list[i].cols;
			$("#"+_formid+"_"+json.list[i].key+"_ tbody").empty();
			var format=json.list[i].format;
			var key=json.list[i].key;			
			var fields=json.list[i].val;
			var showstyle=json.list[i].showstyle;
			if(typeof showstyle=="undefined" || showstyle==null || showstyle=="") showstyle="list";
			switch(showstyle){
				case "list":// list
					for (var k=0;k<fields.length;k+=col) {
						var rowdata =new Array(col);
						for(var z=0;z<col;z++){
							rowdata[z]=fields[k+z];
						}
						row+=listRow(key,rowdata,format);
					}
					break;
				case "listblock": // listBlock
					var format=eval(form+key+"_LISTBLOCK");
					row+='<tr><td>';
					for (var k=0,len=fields.length;k<len;k+=col) {
						var rowdata =new Array(col);
						for(var z=0;z<col;z++){
							rowdata[z]=fields[k+z];
						}
						row+=listBlockRow(key,rowdata,format);
					}
					row+='</td></tr>';
					break;
			}
			$("#"+_formid+"_"+json.list[i].key+"_ tbody").append(row);
			$("#"+_formid+"_"+json.list[i].key+"_").tablesorter({widgets: ["zebra"]});
/*
			var	gstart=json.list[i].start;
			var	gpagesize=json.list[i].rows;
			var	gtotal=json.list[i].numfound;
			p=Math.ceil(gtotal/gpagesize);
			if(gtotal==0) continue;
			gn=gstart/gpagesize;
			pager='';
			prev=gn-1;
			next=gn+1;
			if(next>p){
				next=p-1;
				prev=p-2;
			}
			if(prev<0){
				prev=0;
			}
			k=gn+10;
			s=gn-9;	
			if(k>p){
				k=p;
			}
			if(s<=0){
				s=1;
			}
			gend=(parseInt(gstart)+parseInt(gpagesize))>parseInt(gtotal)?parseInt(gtotal):(parseInt(gstart)+parseInt(gpagesize));
			pager+='No.'+(parseInt(gstart)+1)+'-No.'+gend+' 共'+gtotal+'个 '+p+' 页';
			
			if(prev||gn==1){
				pager+=' <a href="#?fi='+key+'&_start_='+(prev*gpagesize)+'&_rows_='+gpagesize+'&_numfound_='+gtotal+'" >上一页</a>';	
			}
			for(var m=s-1;m<k;m++){
				if(m==gn){
					pager+=' <b>'+(m+1)+'</b>';
				}
				else{
					pager+=' <a href="#?fi='+key+'&_start_='+(m*gpagesize)+'&_rows_='+gpagesize+'&_numfound_='+gtotal+'" >'+(m+1)+'</a>';
				}
			}
			if(next&&p!=next){
				pager+=' <a href="#?fi='+key+'&_start_='+(next*gpagesize)+'&_rows_='+gpagesize+'&_numfound_='+gtotal+'" >下一页</a>';	
			}
			var pagesizearr=new Array(10,20,30,40,50,100,200);
			var poption='';
			var v=null;
			for(var pz=0;pz<7;pz++){
				v=pagesizearr[pz];
				poption+='<option value="'+v+'" ';
				if(v==gpagesize){
					poption+=' selected ';
				}
				poption+=' >'+v+'</option>';
			}
			var pagescroll='<div id="'+_formid+key+'_pager" class="pager" >';
				pagescroll+=pager;
				pagescroll+='<select class="'+key+'pagesize" key="'+key+'" _numfound_="'+gtotal+'" >';
				pagescroll+=poption;
				pagescroll+='</select>';
				pagescroll+='</div>';
*/
			sanyPager(_formid,json.list[i].key,json.list[i].start,json.list[i].rows,json.list[i].numfound);

			//$("."+_formid+key+"_pager").html(pagescroll);
			//var pagerhtml='<div class="'+_formid+key+'_pager pager" >'+pagescroll+'</div>';
			//$("#"+_formid+key).after(pagerhtml);
			/*
			$("#"+_formid+' .'+json.list[i].key+'pagesize').change(function(){
				var curForm=Sany.control.getFormWithFormID(_formid);
				curForm.setParam("fi",$(this).attr("key"));
				curForm.setParam("_numfound_",$(this).attr("_numfound_"));
				curForm.setParam("_rows_",$(this).val());
				curForm.doJson(url);
	
			});
			*/
			
		}	
	}
    this.setFormVal=function(key,val){
		var _formid=this.getData("_formid");
		var _bitflag=this.getData("_bitflag");
		
		found=0;
		for (j=0; j < _bitflag.length; j++) {
			if (_bitflag[j] === key) {
			  found=1;
			  break;
			}
		}
		if(found==1){
			$("#"+_formid+" [@name=\""+key+"_flag[]\"]").each(function() {if($(this).val()&val){$(this).attr("checked",true)};});
			$("#"+_formid+" input:hidden[@name="+key+"]").val(val);
		}
		else{
			$("#"+_formid+" [@name="+key+"]").each(function(){
				if($(this).attr("type")!="radio"){
					$(this).val(val);
				}
				else if($(this).val()==val){
					$(this).attr("checked","true");
				}
			});
		}
	
		$('#'+_formid+'_'+key).html(val);	
		
	}
	this.showJson=function(json){
		json = json ||{len:0,lists:0,htmls:0,scripts:0,data:''};
		var _titleField=this.getData("_titleField");
		var _formid=this.getData("_formid");
		var _bitflag=this.getData("_bitflag");
		var _optionlist=this.getData("_optionlist");
		if(typeof json.len=='undefined' || json.len===null){
			json.len=0;	
		}
		if(typeof json.lists=='undefined' || json.lists===null){
			json.lists=0;	
		}
		if(typeof json.htmls=='undefined' || json.htmls===null){
			json.htmls=0;	
		}
		if(typeof json.scripts=='undefined' || json.scripts===null){
			json.scripts=0;	
		}
		for(var i = 0; i < json.len; i++)
		{	
			var itemval="";
			if(json[i].val){
				itemval=json[i].val.replace(/\n|\r/g,"");
			}
			this.setFormVal(json[i].key,itemval);
		}
		var jdata=json.data;
		if(!jdata){
			document.getElementById(_formid+'_list').innerHTML="<font color=red size=+2>&nbsp;&nbsp;&nbsp;&nbsp;没有相关的信息!</font>";		
		}
		var emptykey=json.emptykey;
		if(emptykey!=null && typeof(jdata)=="object"){
			for(ek in emptykey){
				ev=emptykey[ek];
				$('#'+_formid+'_'+ev).empty();
				$('.'+_formid+'_'+ev+'__pager').empty();
			}
		}
		if(jdata!=null && typeof(jdata)=="object"){
			for(key in jdata){
				if(typeof(jdata[key])=="string"){
					itemval=jdata[key].replace(/\n|\r/g,"");
				}
				else if(jdata[key]!==null && typeof(jdata[key])=="object"){
					var format=this.getData("_format")[key];
					if(typeof(json.pager)!="undefined"){
						if(typeof(json.pager.list.dm)!="undefined"&&json.pager.list["dm"]==2){
							var format=this.getData("_format")['grid'];
						}
					}
					var highlight=null;
					if(typeof json.highlight!='undefined' && json.highlight!==null){
						highlight=json.highlight[key];
					}
					if(typeof(format)!="string"){
						alert("format error for "+key+" _format:"+this.getData("_format"));
					}
					var row="";
					for(tk in jdata[key]){
						row+=listBlockRow("data",jdata[key][tk],format,highlight);
					}
				//	$('#'+_formid+'_'+key).html(row);	
					document.getElementById(_formid+'_'+key).innerHTML=row;	
					continue;
				}
				else{
					itemval="";
				}
				found=0;
				for (j=0; j < _bitflag.length; j++) {
					if (_bitflag[j] === key) {
					  found=1;
					  break;
					}
				}
				if(found==1){
					$("#"+_formid+" [@name=\""+key+"_flag[]\"]").each(function() {if($(this).val()&jdata[key]){$(this).attr("checked",true)};});
					$("#"+_formid+" input:hidden[@name="+key+"]").val(itemval);
				}
				else{
					$("#"+_formid+" [@name="+key+"]").each(function(){
						if($(this).attr("type")!="radio"){
							$(this).val(itemval);
						}
						else if($(this).val()==itemval){
							$(this).attr("checked","true");
						}
					});
				}
				$('#'+_formid+'_'+key).html(itemval);	
			}
		}
		if(typeof json.pager!='undefined' && json.pager!==null){
			for(pkey in json.pager){
				var pagerval=json.pager[pkey];
				if(typeof(pagerval.dm)=="undefined") pagerval.dm=null;
				if(typeof(pagerval.vp)=="undefined") pagerval.vp=null;
				if(typeof(pagerval.usrctrl)=="undefined") pagerval.usrctrl=null;
				sanyPager(_formid,pkey,pagerval.start,pagerval.rows,pagerval.numfound,pagerval.dm,pagerval.vp,pagerval.usrctrl);
			}
		}else{
			if(json.htmls||json.len||jdata!=null){

			}
			else{
				//alert(json.msg);
			if(typeof json.msg =="string"){
				alert(json.msg);			
			}
			if($(_formid+"_list").size()){
					document.getElementById(_formid+'_list').innerHTML="<font color=red size=+2>&nbsp;&nbsp;&nbsp;&nbsp;没有相关的信息!</font>";	
				}
				$('.'+_formid+'_list__pager').empty();	
			}
		}		
		for(var i = 0; i < json.htmls; i++)
		{	
			$('#'+_formid+'_'+json.html[i].key).html(json.html[i].val.replace(/\n|\r/g,"").replace(/\"/g,""));
			
		}
		for(var i = 0; i < json.emptys; i++)
		{	
			$("#"+_formid+json.emptykey[i]).empty();
			$("#"+_formid+json.emptykey[i]+"_pager").remove();
		}
		if(json.lists){
			this.showJsonList(json);
		}
		for(var i = 0; i < json.scripts; i++)
		{	
			eval(json.js[i]);
		}
		if((typeof json.ret!="undefined")&&(typeof json.invalid=="object")){
			for(var i in json.invalid){
				if($('#'+_formid+' [@name='+json.invalid[i].key+']').attr("type")=="hidden") continue;
				$('#'+_formid+' [@name='+json.invalid[i].key+']').addClass('x-form-invalid');
				if($('#'+json.invalid[i].key+'_msg').size()==0){
					$('#'+_formid+' [@name='+json.invalid[i].key+']').after('<div id="'+json.invalid[i].key+'_msg"></div>');
				}
				$('#'+json.invalid[i].key+'_msg').addClass("x-field-invalid");
				$('#'+json.invalid[i].key+'_msg').html(json.invalid[i].val);
			}
		}
		for(var i=0; i< json.inlines; i++){
			var m=json.inline[i].m;
			var a=json.inline[i].a;
			var inlineform=Sany.control.getInlineSingleton(m,a);
			inlineform.showJson(json.inline[i]._json);
		}
		if(typeof json._notify_json!='undefined' ){
			notify_json=json["_notify_json"];
			for(var formid in json["_notify_json"]){
				
				var inlineform=Sany.control.getFormWithFormID(formid);
				inlineform.showJson(json["_notify_json"][formid]);
			}
			this.onSamePageAjax();
		}
	}

	this.doJson=function(){
		var page=this.getParam("_page_");
		url=Sany.domain+"/do.php?"+this.getParamUrl()+'&jsoncallback=?';
		var model=this.model;
		var action=this.action;
		var myForm=this;
		$.getJSON(url,function(json){
			switch(json.ret){					
				case 0:
					doLogin("url");
					break;
				case 1:
					myForm.showJson(json);
					break;
				case 2:
					if(typeof json.msg =="string"){
						alert(json.msg);			
					}
					break;
				case 4:
					myForm.showJson(json);
					break;
				case 7:
					if(typeof json.warning =="string"){
						alert(json.warning);			
					}
					break;
				default:
					break;
			}
			myForm.dirty=false;
			myForm.onJsonDone();
		});
	}
	this.doFormatJson=function(){
		url=Sany.domain+"/do.php?"+this.getParamUrl()+'&jsoncallback=?';
		var model=this.model;
		var action=this.action;
		var myForm=this;
		$.getJSON(url,function(json){
			switch(json.ret){					
				case 0:
					doLogin("url");
					break;
				case 1:
					myForm.showFormatJson(json);
					break;
				case 2:
					if(typeof json.msg =="string"){
						alert(json.msg);			
					}
					break;
				case 4:
					myForm.showJson(json);
					break;
				default:
					break;
			}
			myForm.dirty=false;
			myForm.onJsonDone();

		});
	}
	this.showFormatJson=function(json){
		var format=this.getData("_format");
		var formid=this.getData("_formid");
		$("#"+formid+"_list").empty();
		var outhtml='';
		format=format.list;
		if(typeof(json.pager)!="undefined"){
			if(typeof(json.pager.list.dm)!="undefined"&&json.pager.list["dm"]==2){
				format=this.getData("_format")["grid"];
			}
		}
		if(typeof(json.data)!="undefined"&&json.data!=null){
			for(var i in json.data.list){
				row=json.data.list[i];
				outhtml+=listBlockRow("list",row,format,"");
			}
			document.getElementById(formid+"_list").innerHTML=outhtml;
		}
	}
	this.postJson=function(){
		
		url=Sany.domain+"/post.php?"+this.getParamUrl()+'&jsoncallback=?';
		var model=this.model;
		var action=this.action;
		var myForm=this;
		if(this.getData("_needconfirm")===true){
			this.confirm();
			return;
		}
		$.getJSON(url,function(json){
			switch(json.ret){					
				case 0:
					doLogin("url");
					break;
				case 1:
					myForm.showJson(json);
					break;
				case 2:
					if(typeof json.msg =="string"){
						alert(json.msg);			
					}
					myForm.setData("_prompt_msg","success");
					myForm.setData("_prompt_timeout",3000);
					myForm.prompt();
					var fi=myForm.getParam("_fi_");
					//Sany.control.removeCurForm();
					curForm=Sany.control.getNextForm();
					if(curForm!==null){
						if(fi!==null){
							var oldfi=curForm.getParam("fi");
							curForm.setParam("fi",fi);
							curForm.doJson();
							curForm.setParam("fi",oldfi);
						}
						else{
							curForm.doJson();
						}

					}
					break;
				case 4:
					myForm.showJson(json);
					break;
				default:
					break;
			}
			myForm.dirty=false;
			myForm.onJsonDone();
		});
	}
	this.postLogin=function(){
		url=Sany.domain+"/post.php?"+this.getParamUrl()+'&jsoncallback=?';
		var model=this.model;
		var action=this.action;
		var myForm=this;
		$.getJSON(url,function(json){
			switch(json.ret){					
				case 0:
					doLogin("url");
					break;
				case 1:
					myForm.showJson(json);
					break;
				case 2:
					var fi=myForm.getParam("_fi_");
		//			myForm.confirm('test',json.msg);
					Sany.control.removeCurForm();
					curForm=Sany.control.getCurForm();
					if(curForm!==null){
						if(fi!==null){
							var oldfi=curForm.getParam("fi");
							curForm.setParam("fi",fi);
							curForm.doJson();
							curForm.setParam("fi",oldfi);
						}
						else{
							curForm.doJson();
						}

					}
					break;
				case 4:
					myForm.showJson(json);
					break;
				default:
					break;
			}
			myForm.dirty=false;
			myForm.onJsonDone();
		});
	}
	this.setContent=function(a,b){
		this.setData(a,b);

	}
	this.setContents=function(a){
		if(null==a||
		{
		}
		==a)return;
		for(var b in a)this.setContent(b,a[b])
	}

}

function SanyControl(){
	this.forms=new Array();
	this.notifyforms=new Array();
	this.curpopup=null;
	this.timeout=null;
	this.nrpopup=0;
	this.nrnotify=0;
	this.eventFormLoaded=new sanyEvent();
	this.getSingleton=function(model,action,formid){
		var key=model+action;
		if(formid){
			key=formid;
		}
		for(k in this.forms){
			if(k===key){
				return this.forms[k];
			}
		}
		this.forms[key]=new sanyForm(model,action);
		return this.forms[key];
	}
	this.getInlineSingleton=function(model,action,formid){
		var key="inline_"+model+action;
		if(formid){
			key=formid;
		}
		for(k in this.forms){
			if(k===key){
				return this.forms[k];
			}
		}
		this.forms[key]=new sanyForm(model,action);
		return this.forms[key];
	}
	this.getFormWithFormID=function(formid){
		for(k in this.forms){
			if(k===formid){
				return this.forms[k];
			}
		}
		return null;
	}
	this.bindNotifyAction=function(formid,param){
		this.notifyforms[formid]=param;
		
	}
	this.getNotifyAction=function(param){
		var retarr=new Array();
		for(var formid in this.notifyforms){
			var paramarr=this.notifyforms[formid];
			var found=0;
			for(var ai in paramarr){
				if(paramarr[ai]==param){
					found=1;
					break;
				}
				
			}
			if(found==1){
				retarr[retarr.length]=formid;
			}
		}
		return retarr;
	}
	this.bindOnFormLoaded=function(func){
		this.eventFormLoaded.addListen(func);
	}
	this.trigger=function(e){
		switch(e){
			case "onformloaded":
				this.eventFormLoaded.trigger();
				break;
			default:
				alert("unknown event:"+e);
				break;
		}
	}
	
	this.remove=function(model,action){
		var key=model+action;
		newarray=new Array();
		for(k in this.forms){
			if(k!==key){
				newarray[k]=this.forms[k];
			}
			else{
				this.forms[k].remove();
				this.forms[k]=null;
			}
		}
		this.forms=newarray;
	}
	this.removeFromUrl=function(url){
		var ma=maFromUrl(url);
		return this.remove(ma[0],ma[1]);
	}
	
	this.getCurForm=function(){
		if(this.curpopup!==null){
			return this.curpopup;
		}
		if(Sany.$tabs!==null){
			var n=Sany.$tabs.data('selected.tabs');	
			var liurl=$("li >a",Sany.$tabs).eq(n).data('load.tabs');
			if(typeof(liurl)=="string"){
				var ma=maFromUrl(liurl);
				return this.getSingleton(ma[0],ma[1]);
			}
		}
		var tmplen=0;
		for(var k in this.forms){
			tmplen++;
			if(this.forms[k].data['_default_action_'])
				return this.forms[k];
		}
		if(tmplen==0) return null;
		return this.forms[k];
		return null;
	}
	this.getNextForm=function(){
		if(this.curpopup!==null && this.curpopup.prevpopup!==null){
			return this.curpopup.prevpopup;
		}
		if(Sany.$tabs!==null){
			var n=Sany.$tabs.data('selected.tabs');	
			var liurl=$("li >a",Sany.$tabs).eq(n).data('load.tabs');
			if(typeof(liurl)=="string"){
				var ma=maFromUrl(liurl);
				return this.getSingleton(ma[0],ma[1]);
			}
		}
		for(k in this.forms) return this.forms[k];
		return null;
	}
	this.removeCurForm=function(){
		myForm=this.getCurForm();
		this.remove(myForm.model,myForm.action);
	}
	this.refreshCurForm=function(){
		myForm=this.getCurForm();
		myForm.dirty=true;
		myForm.onFormLoaded(null);
	}
}
function validOnFormLoaded()
{
	curForm=Sany.control.getCurForm();
	if(curForm==null) return false;
	form=curForm.getData("_formid");
	$('#'+form+' [@allowblank]').blur( function() {
		if($(this).attr("type")=="hidden"){
			return false;
		}
		var arrtype,value,vtype,allowblank,exps1,exps2,mintype,maxtype,msgtype,msg;
		value=$(this).val();
		vtype=$(this).attr("vtype");
		type=$(this).attr("type");
		allowblank=$(this).attr("allowblank");
		name=$(this).attr("name");
		exps1= /\w+\(([\d|\w|:|\-]+)\,([\d|\w|:|\-]+)\)/;
		exps2= /\([\d|\w|:|\-]+\,[\d|\w|:|\-]+\)/;
		if(vtype==null){
			vtype="true";	
		}
		var vtypearr=vtype.split("|");
		var checkflag=0;
		var checkmsg=[];
		for(var i in vtypearr){
			vtype=vtypearr[i];
			arrtype = vtype.match(exps1);
			if(arrtype == null){
			
			}
			else if(arrtype.length){
				mintype=arrtype[1];
				maxtype=arrtype[2];
				vtype = vtype.replace(exps2,"");
			}
			if(allowblank=="false"||(allowblank=="true"&&value)){
				switch(vtype){
					case "digits":
					case "int":
					case "email":
					case "alnum":
					case "alpha":
					case "time":
					case "url":
					case "postcode":
						if(!RegExps[vtype].test(value)) {
							checkmsg.push(rulemsg[vtype]);
							checkflag++;
						}
						break;
					case "length":
						if(value.length < mintype){
							checkmsg.push('内容长度不能少于'+mintype);
							checkflag++;
						}
						else if(value.length > maxtype && null !== maxtype){
							checkmsg.push('内容长度不能大于'+maxtype);
							checkflag++;
						}
						break;
					case "date":
					case "datetime":
						valuetime =	  new   Date(value.replace(/-/g,   "/"))
						mintype1   =   new   Date(mintype.replace(/-/g,   "/"));   
						maxtype1   =   new   Date(maxtype.replace(/-/g,   "/"));  
						if(Date.parse(valuetime)- Date.parse(mintype1) < 0){
							checkmsg.push('日期不能小于'+mintype);
							checkflag++;
						}
						else if(Date.parse(valuetime)- Date.parse(maxtype1) > 0){
							checkmsg.push('日期不能大于'+maxtype);
							checkflag++;
						}
						break;
					default:
						if(allowblank=="false"){
							if(type=="radio"||type=="checkbox"){
								if($('[@name='+name+'][@checked]').size()==0){
									checkmsg.push(rulemsg['notNull']);
									checkflag++;
								}
							}
							else{
								if(value==""){
									checkmsg.push(rulemsg['notNull']);
									checkflag++;
								}
							}
						}
						break;
				} // end switch
			} //end if
		}//end for
		if($('#'+name+'_msg').size()==0){
			$("[@name="+name+"]").parent().append('<div id="'+name+'_msg"></div>');
		}
		if(checkflag==vtypearr.length){
			$(this).addClass("x-form-invalid");
			$('#'+name+'_msg').addClass("x-field-invalid");
			$('#'+name+'_msg').html(checkmsg.join(rulemsg.or));
			$(this).attr("ttt","1");
		}
		else{
			$(this).removeClass("x-form-invalid");
			$('#'+name+'_msg').removeClass("x-field-invalid");
			$('#'+name+'_msg').empty();
			$(this).removeAttr("ttt");
			if($(this).attr("outcheck")=="true"){
				_seURL=Sany.domain+"/do.php?m="+curForm.model+"&a=Uc&_field_="+name+"&q="+encodeURIComponent(value);					
				$.getJSON(_seURL,function(json){
					switch(json.ret){
						case 0:
							doLogin("url");
							break;
						case 1:	
							$('#'+name+'_msg').html(json.data);
							$('#'+name+'_msg').css("width",180);
							break;
						case 2:								
							$('#'+name+'_msg').html(json.msg);
							break;
						default:
							break;								
					}
				});
			}
		}
		return false;
	});			
}
Sany.control=new SanyControl();
function selectall(name)
{
	_formid=Sany.control.getCurForm().getData('_formid');
	$("#"+_formid+" .tablesorter input[@name='"+name+"'][@type='checkbox']").each(function(){this.checked=true;});		
}
function selectnone(name)
{	
	_formid=Sany.control.getCurForm().getData('_formid');
	$("#"+_formid+" .tablesorter input[@name='"+name+"'][@type='checkbox']").each(function(){this.checked=false;});		
}
function insertFlash(elm, url, w, h,transparent) {
	
	if (!document.getElementById(elm)) return;
	var str = '';
	var T = '';
	str += '<object width="'+ w +'" height="'+ h +'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0">';
	str += '<param name="movie" value="'+ url +'">';
	str += '<param name="wmode" value="opaque">';
	str += '<param name="quality" value="autohigh">';
	if (transparent) {str+=' <param name="wmode" value="transparent"/>';T='wmode="transparent"'}

	str += '<embed width="'+ w +'" height="'+ h +'" src="'+ url +'" quality="autohigh" wmode="opaque" '+T+' type="application/x-shockwave-flash" plugspace="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed>';
	str += '</object>';
	document.getElementById(elm).innerHTML = str;
}
function insertBannerFlash(elm,url,w,h,transparent,pics,links,texts){
	if (!document.getElementById(elm)) return;
	var str = '';
	var T = '';
	str += '<object width="'+ w +'" height="'+ h +'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0">';
	str += '<param name="movie" value="'+ url +'">';
	str += '<param name="wmode" value="opaque">';
	str += '<param name="quality" value="autohigh">';
	str += '<param name="FlashVars" value="pics='+pics+'&links='+links+'&texts='+texts+'&borderwidth='+w+'&borderheight='+h+'">';
	if (transparent) {str+=' <param name="wmode" value="transparent"/>';T='wmode="transparent"'}
	str += '<embed width="'+ w +'" height="'+ h +'" src="'+ url +'" quality="autohigh" wmode="opaque" '+T+' type="application/x-shockwave-flash"  FlashVars="pics='+pics+'&links='+links+'&texts='+texts+'&borderwidth='+w+'&borderheight='+h+'" plugspace="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed>';
	str += '</object>';
	document.getElementById(elm).innerHTML = str;
}
function listRow(fi,rowdata,format){
	var row='<tr>';
	var col=rowdata.length;
	if(typeof format=="undefined" || format==null) format="";
	if(format!=""){
		tmprow=format;
		for(var k=0;k<col;k++){
			rd=rowdata[k];
			if(rd==null) rd="";
			if(typeof(rd)!="string"){
				rd=rd.toString();
			}
			tmprow=eval('tmprow.replace(/__'+k+'__/g,\''+rd.replace(/\'/g,"\\'").replace(/\n/g,"__#N__").replace(/\r/g,"__#R__")+'\')');
			//tmprow=eval('tmprow.replace(/__'+k+'__/g,\''+rd.replace(/\'/g,"\\'")+'\')');

		}
		tmprow=eval('tmprow.replace(/__fi__/g,\''+fi+'\')');
		row+=tmprow;
	}
	else{
		for(var k=0;k<col;k++){
			
			row +=(rowdata[k]==null)? "<td>&nbsp;</td>" : "<td>"+rowdata[k]+"</td>";	
		}
	}
	row+='</tr>';
	return row.replace(/__#N__/g,"\n").replace(/__#R__/g,"\r");
}
function matchBracket(str)
{
	var len=str.length;
	var found=0;
	for(var i=0;i<len;i++){
		if(str.charAt(i)=='('){
			found++;
		}
		if(str.charAt(i)==')'){
			if(found==0){
				
				return str.substr(0,i);
			}
			found--;
		}
	}
	alert("no match ) found");
	return "";
}
function listBlockRow(fi,rowdata,format,highlight)
{
	var col=rowdata.length;
	var temprow='';
	if(typeof format=="undefined" || format==null) format="";
	if(format!=""){
		for(var lk=0;lk<col;lk++){
			var rd=rowdata[lk];
			if(rd!=null && typeof(rd)=="object"){
				var idx=format.indexOf("__LIST"+lk+"__");
				if(idx==-1){
					alert("format error, need __LIST"+lk+"__");
				}
				var subformat=matchBracket(format.substr(idx+10));
				var subrow="";

				for(var sk=0;sk<rd.length;sk++){
					var srd=rd[sk];
					subrow+=listBlockRow(fi,srd,subformat,highlight);
				}
				var newformat=format.substr(0,idx).concat(subrow).concat(format.substr(idx+11+subformat.length));
				format=newformat;
			}
			else{
				var idx=format.indexOf("__LIST"+lk+"__");
				if(idx!=-1){
					var subformat=matchBracket(format.substr(idx+10));
					var newformat=format.substr(0,idx).concat(format.substr(idx+11+subformat.length));
					format=newformat;
				}
			}
			
		}
		var tmprow=format;
		for(var lk=0;lk<col;lk++){
			var rd=rowdata[lk];
			if(rd!=null && typeof(rd)=="object")continue;
			if(rd==null) rd="";
			if(-1==tmprow.indexOf("__"+lk+"_"))continue;
			if(typeof(rd)!="string"){
				rd=rd.toString();
			}
			var rdval=rd.replace(/\'/g,"\\'").replace(/\r/g,"__#R__").replace(/\n/g,"__#N__");
			//var rdval=rd.replace(/\'/g,"\\'");
			
			
			tmprow=eval('tmprow.replace(/__'+lk+'__/g,\''+rdval+'\')');
			
			if(-1==tmprow.indexOf("__"+lk+"_H"))continue;
			for(var hidx in highlight){
				var highword=highlight[hidx];
			//	var hiwd=highword.replace('/','\/');
			//	rdval=eval('rdval.replace(/'+hiwd+'/g,\'<span class="key">'+highword+'</span>\')');
				rdval=rdval.replace(highword,'<span class="key">'+highword+'</span>');
			}
			tmprow=eval('tmprow.replace(/__'+lk+'_H_/g,\''+rdval+'\')');


		}
		tmprow=eval('tmprow.replace(/__fi__/g,\''+fi+'\')');

		temprow+=tmprow;
	}
	
	return temprow.replace(/__#N__/g,"\n").replace(/__#R__/g,"\r");
}
function img_resize(ImgD,maxwidth,maxheight){  
	var image=new Image(); 
	image.src=ImgD.src;  
	if(image.width>0 && image.height>0){  
		flag=true;  
		if(image.width/image.height>=maxwidth/maxheight){  
			if(image.width>maxwidth){    
				ImgD.width=maxwidth;  
				ImgD.height=(image.height*maxwidth)/image.width;  
			}
			else{  
				ImgD.width=image.width;    
				ImgD.height=image.height;  
			}  
		}
		else{  
			if(image.height>maxheight){    
				ImgD.height=maxheight;  
				ImgD.width=(image.width*maxheight)/image.height;       
			}
			else{  
				ImgD.width=image.width;    
				ImgD.height=image.height;  
			}  
		}  
	}  
}
function on_refresh()
{
	 var hash1=document.location.hash;
     hash1=hash1.slice(1,hash1.length);
     var arrHash1=hash1.split(".");
     if(hash1.length==0)arrHash1=[];
     for(var i=0;i<arrHash1.length;i++)
     {
     //调用注册的脚本这里是关键
      bmf.actions[arrHash1[i]]();
     }
}
