﻿//表格数据格式
var tipMessImg='<img src="images/Ajaxframe/button/exclamation.gif" align="absmiddle" hspace="2" />';var G_ImgUrl='images/Ajaxframe/';var Gurl="";function form(a){Object.extend(this,a||{});this.initialize()}form.prototype={formName:'form1',formBtm:['SubmitsBtn'],loadData:false,columns:[],tipImg:tipMessImg,sn:0,fn:{},url:'',loadOpt:7,delOpt:4,opt:2,selectNode:'RS',enterEvent:false,fnOption:function(a){return Object.extend({backPost:'backPost',backloadData:null,backDel:null,beforPost:null,resetForm:'resetForm'},a||{})},columnsOptions:function(a){return Object.extend({domName:null,objType:"any",mustData:false,compare:false,url:null,opt:'6',arrayTips:[],textName:null,minLength:null,maxLength:50,scale:null,selOpt:null,changeEvent:null,showDefValue:true,defValue:null,parentName:null,selUrl:Gurl,selCallBack:null,selectNode:'RS',width:'',record:'item',obj:null},a||{})},initialize:function(){this.fn=this.fnOption(this.fn);this.setForm();this.getPostDataNow=false},setForm:function(){for(var i=0;i<this.formBtm.length;i++){var a=$(this.formBtm[i]);if(a!=null)a.onclick=this.checkForm.bind(this)}for(var i=0;i<this.columns.length;i++){this.columns[i]=this.columnsOptions(this.columns[i]);var b=getObj(this.columns[i].domName);var c=this.columns[i].objType;if(b!=null){if(c=="date"||c=="time"){var d=$("_"+b.name);if(d==null){d=document.createElement("img");d.src='/Ext/resources/images/default/shared/calendar.gif';d.border=0;d.id="_"+b.name;d.className="hand";b.parentNode.appendChild(d);var e=b;if(e.nextSibling!=null)e=e.nextSibling;b.parentNode.insertBefore(d,e)}if(this.columns[i].mustData==true){b.className='editor_input_date_require'}else{b.className='editor_input_date'}b.readOnly=true;d.onclick=this.checkDateType.bind(this,b,c);b.onblur=this.ckObjValue.bind(this,b,i)}else{if(c=="int"||c=="float"){CkIsNumber(b,c)}if(this.columns[i].selOpt!=null){if(c=="select"){if(this.columns[i].parentName!=null){if($(this.columns[i].parentName)==null)return alert("找不到"+this.columns[i].parentName+"元素")}this.columns[i].obj=new dropDownList(this.columns[i].domName,{opt:this.columns[i].selOpt,changeEvent:this.columns[i].changeEvent,defValue:this.columns[i].defValue=this.columns[i].defValue==null?"请选择"+this.columns[i].textName:this.columns[i].defValue,url:this.columns[i].selUrl,selectNode:this.columns[i].selectNode,record:this.columns[i].record,showDefValue:this.columns[i].showDefValue,selCallBack:this.columns[i].selCallBack,defalueData:this.loadData==true?false:true})}}b.onchange=this.ckObjValue.bind(this,b,i)}if(this.columns[i].defValue!=null)b.value=this.columns[i].defValue;if(b.nodeName!="TEXTAREA"){if(this.enterEvent==true){b.onkeypress=this.onKeyPressForm.bind(this)}}}}},formatScale:function(a,b){var c=a.substring(a.indexOf('.')+1);if(c.length>b)return false;return true},findField:function(a){for(var i=0;i<this.columns.length;i++){if(this.columns[i].domName==a){return this.columns[i].obj==null?this.columns[i]:this.columns[i].obj}}},checkDateType:function(a,b,e){if(!e)var e=window.event;var c=$("calmydate");if(c==null)return alertMess("时间控件还没有载入失败,无法使用,请重新刷新!");if(b=="date"){new Calendar().show(a,true)}else{new Calendar().show(a)}if(e==null)return;e.cancelBubble=true},onKeyPressForm:function(e){if(!e)var e=window.event;if(e==null)return;if(e.keyCode==13){this.checkForm();if(!isIE){e.preventDefault()}else{e.keyCode=null}}},checkForm:function(){this.checkAlldom='';var a=false;for(var i=0;i<this.columns.length;i++){var b=$(this.columns[i].domName);var c=this.columns[i].objType;try{if(b.id==null)return;if(this.columns[i].objType=="select"){if(this.columns[i].selOpt!=null){var d=$("sel_"+this.columns[i].domName);if(d.value.indexOf(this.columns[i].defValue)>-1){this.badmessTips(b,this.columns[i].textName+"是必填的!");return}}}if(this.ckObjValue(b,i,false)==false){if(a==false){b.focus();a=true}this.checkAlldom+="false-"+this.columns[i].textName+"|"}}catch(err){alert(this.columns[i].domName)}}this.checkSubmits()},checkSubmits:function(){var a=$(this.formBtm[0]);if(this.checkAlldom.indexOf('false')>-1)return;this.checkSame()},checkLoadTimeOut:function(){},checkSame:function(){for(var i=0;i<this.columns.length;i++){if(this.columns[i].compare==true){var a=$(this.columns[i].domName);if(a.getAttribute('ckdata')=='false'){this.badmessTips(a,this.columns[i].textName+"已经存在!");return}}}this.getPostData()},badmessTips:function(a,b){var c=new tip(0,0,a);var d=$("show_out_"+a.name);if(d==null)c.show_out_mess(a.name);c.init(d);c.showtext('<span class="bad_mess">'+this.tipImg+b+'</span>');c.show()},ckObjValue:function(d,e,f){var d=d;var g=new tip(0,0,d);var h=this.columns[e];var i=h.arrayTips;var j=h.objType;var k=h.maxLength;var l=h.minLength;var m=h.mustData;var n=h.compare;var o=BackArr(h.textName);var p=$(this.formBtm[0]);if(h.selOpt==null){if(h.changeEvent!=null)window[h.changeEvent](this,d.value)}h.check=true;if(m=="")return;var q=$("show_out_"+d.name);if(q==null){g.show_out_mess(d.name)}g.init(q);var r=BackArr(i[0]);var s=BackArr(i[1]);var t=BackArr(i[2]);var u=BackArr(i[3]);var v=this.tipImg;if(d.nodeName!="TEXTAREA"){d.value=d.value.trim()}if(m==true){if(d.value==""){getMess();return false}if(j=="select"){if(d.value=="0"||d.value==""){getMess();return false}}}function getMess(a){if(a==null)a="";if(s==""){g.showtext('<span class="bad_mess">'+v+o+'是必填的!'+a+'</span>')}else{g.showtext("<span class=\"bad_mess\">"+v+s+"</span>")}g.show()}if(d.value.length>0){if(l!=null){if(d.value.length<l){g.showtext('<span class="bad_mess">'+v+o+'不能小于'+l+'位字符!</span>');g.show();return false}}if(d.value.length>k){if(j!="date"||j!="time"||j!="select"){if(u==""){g.showtext('<span class="bad_mess">'+v+o+'不能大于'+k+'位字符!</span>')}else{g.showtext("<span class=\"bad_mess\">"+v+u+"</span>")}g.show();return false}}if(h.scale!=null){if(!this.formatScale(d.value,h.scale)){if(u==""){g.showtext('<span class="bad_mess">'+v+o+'小数点精度不能大于'+h.scale+'位字符!</span>')}else{g.showtext("<span class=\"bad_mess\">"+v+u+"</span>")}g.show();return false}}if((ck_type(d.value,j))==false){g.show();if(r==""){g.showtext("<span class=\"bad_mess\">"+v+o+"输入的格式不正确</span>")}else{g.showtext("<span class=\"bad_mess\">"+v+r+"</span>")}return false}if(n==true){if(f!=null)return true;g.showtext("<span style='color:Green;font-size:12px;'>"+v+o+"正在检测是否重复...</span>");if(h.url==null){h.url=this.url}g.show();var w='obj_id='+this.sn+'&opt='+h.opt+'&obj_name='+escape(d.name)+'&obj_value='+escape(d.value)+'&strTime='+new Date().getTime();new Ajax.Request(h.url,{method:'get',parameters:w,onComplete:checkInputData,onFailure:Failure})}}function checkInputData(a){var a=a;var b=a.responseText;var c=b.split("|");g.hide();if(c[0]=="true"||b==""){d.setAttribute('ckdata','true')}else{if(t==""){g.showtext("<span class=\"bad_mess\">"+v+o+"已经存在!</span>")}else{g.showtext("<span class=\"bad_mess\">"+v+t+"</span>")}g.show();d.setAttribute('ckdata','false')}}return true},setOptions:function(a){Object.extend(this,a||{})},setSN:function(a){this.sn=a},getSN:function(){return this.sn},setUrl:function(a){this.url=a},setOpt:function(a){this.opt=a},getOpt:function(){var a="obj_id="+this.sn+"&strTime="+new Date().getTime();return a=this.url.indexOf('?')>0?"&"+a:("?"+a)},getPostData:function(){showLoading();if(this.fn.beforPost!=null){if(window[this.fn.beforPost](this)==false)return}if(this.getPostDataNow)return;new Ajax.Request(this.url+this.getOpt()+"&opt="+this.opt,{method:'post',requestHeaders:['Content-Type','application/x-www-form-urlencoded'],postBody:Form.serialize(this.formName),onComplete:this.backUpdata.bind(this),onFailure:Failure});this.getPostDataNow=true},backUpdata:function(a){hideLoading();var b=a.responseText;this.getPostDataNow=false;var c="";var d=b.split("|");if(d[0]=="true"||b==""){if(this.sn==0){c=" 数 据 保 存 成 功 ！";if(this.fn.resetForm!=null)window[this.fn.resetForm](this,a)}else{c=" 数 据 更 新 成 功 ！"}if(d[1]!=null){if(isNaN(parseInt(d[1]))==false){c=d[1]}}if(isNaN(parseInt(c)))alertMess(c);if(this.fn.backPost!=null)window[this.fn.backPost](this,b,d)}else{alertMess("错误提示："+d[1])}},LoadData:function(a){if(a!=null){a=a.lastIndexOf('&')==a.length-1?a:("&"+a)}else{a=""};showLoading();new Ajax.Request(this.url+this.getOpt(),{method:'get',parameters:"opt="+this.loadOpt+a,onComplete:this.backDataForm.bind(this),onFailure:Failure})},backDataForm:function(a){hideLoading();if(a.responseText=="")return alertMess("出错了,没有任何数据!");var b=a.responseXML.getElementsByTagName(this.selectNode)[0];if(b==null||b.length==0)return alertMess("没有指定区域范围内的数据!");for(var i=0;i<b.childNodes.length;i++){if(b.childNodes[i].nodeName!=null){var c=b.childNodes[i].nodeName;var d=$(c);var e=childTextTrue(b.childNodes[i],"");if(d!=null){if(d.nodeName!="DIV"&&d.nodeName!="SPAN"&&d.nodeName!="LI"&&d.nodeName!="TD"){if(d.nodeName=="SELECT"){try{for(var j=0;j<d.length;j++){if(d[j].value==e||d[j].text==e)d[j].selected=true}}catch(err){}var f=$("sel_"+c);if(f==null){f=addNewInput(d,"sel_"+c,"0","hidden")}f.value=e}else{d.value=e;var g=$(this.formName);for(var r=0;r<g.length;r++){if(g[r].type=="radio")if(g[r].value==e)g[r].checked=true}}}else{d.innerHTML=e}}}}for(var o=0;o<this.columns.length;o++){if(this.columns[o].objType=="select"){if(this.columns[o].parentName!=null&&this.columns[o].selOpt!=null){this.columns[o].obj.setParentId($F('sel_'+this.columns[o].parentName))}else{if(this.columns[o].selOpt!=null)this.columns[o].obj.init()}}}if(this.fn.backloadData!=null)window[this.fn.backloadData](this,a)},delData:function(){var a;a=confirm("你确实要删除这条记录吗?");showLoading();if(a==true){new Ajax.Request(this.url+this.getOpt(),{method:'get',parameters:"opt="+this.delOpt,onComplete:this.backDel.bind(this),onFailure:Failure})}},backDel:function(a){hideLoading();var b=a.responseText;var c=b.split("|");if(b==""||c[0]=="true"){alertMess(" 数 据 删 除 成 功 !  ")}else{alertMess(c[1]);return}if(this.fn.backDel!=null)window[this.fn.backDel](this,a)},clearForm:function(){var a=$(this.formName);this.sn=0;a.reset();var b=a.getElementsByTagName("DIV");for(var i=b.length-1;i>=0;i--){if(b[i].id.indexOf("show_out_")>-1){b[i].style.display="none"}}}}


//-------------------------Form  END----------------------------

function checkForm(b,c){var b=b;var d=new tip(0,0,b);var e=c.objType;var f=c.maxLength;var g=c.minLength;var h=c.mustData;var i=c.compare;var j=c.textName;var k=c.dataName;var l=$("show_out_"+b.name);if(l==null){d.show_out_mess(b.name)}d.init(l);if(b.nodeName!="TEXTAREA"||b.nodeName!="select"){b.value=b.value.trim()}if(h==true){if(b.value==""){getMess(j+"是必填的");return false}if(e=="int"||e=="float"||e=="select"){if(b.value=="0"){if(e=="select"){getMess(j+"是必填的")}else{getMess(j+"并且数值必须大于0!")}return false}}}if(b.value.length>0){if(g!=null){if(b.value.length<g){getMess(j+'不能小于'+g+'位字符!');return false}}if(b.value.length>f){if(e!="date"||e!="time"||e!="select"){getMess(j+'不能大于'+f+'位字符!');return false}}if((ck_type(b.value,e))==false){getMess(j+'类型格式不正确!');return false}if(i==true){return true}}function getMess(a){d.showtext('<span class="bad_mess">'+tipMessImg+a+'</span>');d.show()}return true}


function BackArr(str){
    if(str==null){return "";}else{return str;}
}


    
    //扩展完成
    //检查常用数据类型
function ck_type(a,b){switch(b){case'china':return(chcekType.isChinese.test(a));break;case'angle':return(chcekType.is_angle.test(a));break;case'en_num':return(chcekType.isEn_num.test(a));break;case'letter':return(chcekType.isLetter.test(a));break;case'url':return(chcekType.isUrl.test(a));break;case'zip':return(chcekType.isZip.test(a));break;case'qq':return(chcekType.isQQ.test(a));break;case'isInt':return(chcekType.isInt.test(a));break;case'date':return(chcekType.isDate.test(a));break;case'time':return(chcekType.isTime.test(a));break;case'float':return true;break;case'idcard':return(chcekType.isIdCard.test(a));break;case'phone':return(chcekType.isPhone.test(a));break;default:var c=/^\\\w+$/;if(c.test(b)){var d=$F(b.substring(1));if(a==d){return true}else{return false}}var e=/^\\(==|!=|>=|<=|>|<)/;if(e.test(b)){var f=RegExp.$1;var g=b.replace(e,'');var h=$F(g);return Compared_obj(f,a,h)}var i=/^@@/;if(i.test(b)){var j=new RegExp(b.substring(2),"g");return j.test(a)}return true;break}}function Compared_obj(a,b,c){var b=parseInt(b);var c=parseInt(c);switch(a){case'==':return(b==c);break;case'!=':return(b!=c);break;case'>=':return(b>=c);break;case'>':return(b>c);break;case'<':return(b<c);break;default:return false;break}}

function optionAdd(a,b,c){var b=b.trim();if(c!=null)c=c.trim();var d=document.createElement("option");d.appendChild(document.createTextNode(b));if(arguments.length==3)d.setAttribute("value",c);a.appendChild(d);return d}

/*获得下拉菜单
--------------调用方法 dropDownList(DomName,options参数)
*/
function dropDownList(a,b){this.options=Object.extend({url:Gurl,opt:0,defValue:'请选择数据',showDefValue:true,selectNode:'RS',record:'item',parentId:0,selCallBack:null,changeEvent:null,asynchronous:true,defalueData:true},b||{});this.obj=a;this.selInput=$("sel_"+this.obj);if(this.selInput==null){this.selInput=addNewInput(this.obj,"sel_"+this.obj,"0","hidden")}if(this.options.changeEvent!=null){EventUtil.addEventHandler($(this.obj),'change',this.fileEvent.bind(this))}if(this.options.defalueData==true){this.init()}}dropDownList.prototype={init:function(){var a=getObj(this.obj);this.LoadPic=$("_"+this.obj);if(this.LoadPic!=null){this.LoadPic.style.display=""}else{this.LoadPic=NewPicDom(this.obj,G_ImgUrl+"spinner.gif")}var b='obj_id='+this.options.parentId+'&opt='+this.options.opt+'&strTime='+new Date().getTime();new Ajax.Request(this.options.url,{method:'get',parameters:b,onComplete:this.backSelectData.bind(this),onFailure:Failure,asynchronous:this.options.asynchronous})},getObj:function(){return this.menuInput},getDefValue:function(){return this.defValue},setUrl:function(a){this.options.url=a},fileEvent:function(){window[this.options.changeEvent](this,$(this.obj).value)},setParentId:function(a){this.options.parentId=a},backSelectData:function(a){$("_"+this.obj).style.display="none";var a=a.responseXML.getElementsByTagName(this.options.selectNode)[0];var b;if(a!=null)b=a.getElementsByTagName(this.options.record);var c=getObj(this.obj);c.innerHTML="";this.defValueDom=optionAdd(c,this.options.defValue,"0");this.defValueDom.selected=true;for(var i=0;i<b.length;i++){var d=childTextTrue(b[i].getElementsByTagName('value')[0],i);var e=childTextTrue(b[i].getElementsByTagName('text')[0],i);var f=optionAdd(c,e,d);if(!this.options.showDefValue){if(b.length==1){f.selected=true;this.fileEvent()}}else{if(d==this.selInput.value){f.selected=true;if(this.options.changeEvent!=null){this.fileEvent()}}}}if(this.options.selCallBack!=null)window[this.options.selCallBack](c);c.style.display='block'}}




var chcekType={isEmail:/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,isUrl:/^http[s]?:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/,isInteger:/^[\d\.]+$/,isChinese:/^[\u4e00-\u9fa5]+$/,is_angle:/^[\uFF00-\uFFFF]+$/,isEn_num:/^[\W]+$/,isLetter:/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,isPhone:/^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/,isMobile:/^((\(\d{2,3}\))|(\d{3}\-))?(13|15)\d{9}$/,isIdCard:/(^\d{15}$)|(^\d{17}[0-9Xx]$)/,isMoney:/^\d+(-\+\.\d+)?$/,isZip:/^[1-9]\d{5}$/,isQQ:/^[1-9]\d{4,10}$/,isInt:/^[-\+]?\d+$/,isDate:/^\d{4}-[0-1][0-9]-[0-6][0-9]$/,isTime:/^\d{4}-[0-1][0-9]-[0-6][0-9]\s\d{1,2}:\d{1,2}$/};

//弹出提示定义
function tip(x,y,obj){
    var o ="";//保存节点
    this.show_out_mess=function(str_id){
      o =document.createElement("div");
      o.style.display = "none";
      o.id="show_out_"+str_id;
      if(obj==""){ document.body.appendChild(o);}else{obj.parentNode.appendChild(o); }
    }
	
	this.showtext=function(text){ o.innerHTML = text;}
	
	this.init = function(obj){
		if(obj){o=obj;}
		if(x!=0 && y!=0){
		    o.className = "info";
		    o.style.zindex="100px";		
		}else{
		  o.className = "info_div";
		}
        o.style.display = "none";
	}
	this.show = function(){
		o.style.display = "";
	}
	this.hide = function(){
		o.style.display = "none";
	}
}

