/*
	Copyright (C) 2004,2007 OA86.COM. All rights reserved.
	Written by 陈祥山
	Web: http://www.oa86.com.cn,http://www.oa86.cn/
	Email: chenxsh@gmail.com
*/

// JavaScript Document
//!!!实际应用中clientId和clientName在各个页面中初始化,Url正则表达式有变化!!!
var initCss = "msg_init";
var focusCss = "msg_focus";
var errCss = "msg_err";
var okCss = "msg_ok";
var msgAddId = "Msg"
var clientId = "";
//显示错误或者成功提示
function showMsg(oItem, mType){
	if(mType==-1){
		$(valMsg[oItem][0]).innerHTML=	valMsg[oItem][1];
		$(valMsg[oItem][0]).className=errCss;
	}else{
		$(valMsg[oItem][0]).innerHTML=	"Correct Filled";
		$(valMsg[oItem][0]).className=okCss;
	}
}
//初始化表单
function initForm(oNum){
	allFB(oNum);
	initCheck(oNum)
}
//所有表单元素聚焦或者离开时默认信息显示效果
function allFB(oNum){
	var tagArray = new Array("input","select","textarea");
	for (var i=0; i<tagArray.length; i++) {
		var oArray = document.forms[oNum].getElementsByTagName(tagArray[i]);
		for (var j=0; j<oArray.length; j++) {
			oArray[j].onfocus = function(){
				var oId = this.name;
				var fMsgId = oId.replace(clientId,"") + msgAddId;
				oFocus(fMsgId);
			}
			oArray[j].onblur = function(){
				var oId = this.name;
				var oMsgId = oId.replace(clientId,"") + msgAddId;
				oBlur(oMsgId);			
			}
		}
	}
}
//几个表单元素聚焦或者离开时所对应唯一的默认信息显示效果
function arrFB(oNameArr,mId){
	for (var i=0; i<oNameArr.length; i++) {
		var oArray = document.getElementsByName(clientId+oNameArr[i])
		for (var j=0; j<oArray.length; j++){
			oArray[j].onfocus = function(){oFocus(mId);}
			oArray[j].onblur = function(){oBlur(mId);}
		}
	}
}
//表单元素聚焦时显示效果
function oFocus(oId){
	oId = oId.replace(clientId,"");
	if ($(oId)!=null){
		with($(oId)){
			if (className == initCss)
				className = focusCss;
			else return;
		}
	}
	else return;
}
//表单元素离开时显示效果
function oBlur(oId){
	oId = oId.replace(clientId,"");
	if ($(oId)!=null){
		with($(oId)){
			if (className == focusCss)
				className = initCss;
			else return;
		}
	}
	else return;
}

//输入框必填判断
function inputVal(oId) {
	oId = clientId + oId;
	if ($(oId).value == "")
		return false;
	return true;
}
//列表框必选判断
function selectVal(oId) {
	oId = clientId + oId;
	if ($(oId).selectedIndex == 0)
		return false;
	return true;
}
//客户端列表框必选判断
function clientSelectVal(oId)
{	
	if($(oId).selectedIndex == 0)
	   return false;
	return true;
}
//选择框必选判断
function checkVal(oName){
	oName = clientName + oName;
	var oArray = document.getElementsByName(oName);
	for (var i=0; i<oArray.length; i++){
		if(oArray[i].checked)
			return true;
	}
	return false;
}
//两个值是否相同的有效性判断
function compareVal(oId,cId) {
	oId = clientId + oId;
	cId = clientId + cId;
	if ($(oId).value != $(cId).value)
		return false;
	return true;
}
//符合某一规则的有效性判断//!!!正则表达式待验证!!!
function testVal(oId,mType){
	oId = clientId + oId;
	var re, rp;
	switch(mType){
		case "ID":	//用户名
			re = /^[a-zA-Z]+[a-zA-Z0-9]+$/;
			break;
		case "PW":	//密码
			re = /^\w{6,20}$/;
			break;
		case "PC":	//国家区号
			re = /^\d{2,6}$/;
			break;
		case "PA":	//城市区号
			re = /^\d{2,6}$/;
			break;
		case "PN":	//电话号码
			re = /^[0-9,-]{5,30}$/;
			break;
		case "MP":	//手机
			re = /^\d{5,16}$/;
			break;
		case "Zip":	//邮编
			re = /^\d{6}$/;
			break;
		case "EM":	//电子邮箱
			re = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
			break;
		case "Url":	//网址
			re = /([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/;	//不包括"http://"
			//re = /http:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/;
			break;
		case "Date":
			re = /^(\d{4})-(\d{1,2})-(\d{1,2})$/;
			break;
		case "Num":	//
			re = /^[\+|-]{0,1}\d{1,10}$/;
			break;
		case "Money":
		    re = /^[0-9]+(.[0-9]{1,2})?$/;
		    break;
		case "Float":
		    re = /^[0-9]+(.[0-9]{1,10})?$/;
		    break;   
		default:
			alert("出错啦!");
			return;
	}
	$(oId).value=tot($(oId).value);
	rp = re.test($(oId).value);
	return (rp);
}
//字符长度的有效性判断,其中无最小值时minLength置为0,无最大值时maxLength置为<=0
function lengthVal(oId,minLength,maxLength){
	oId = clientId + oId;;
	with($(oId).value){
		if (maxLength > 0){
			if((length >= minLength)&&(length <= maxLength))
				return true;
			return false;
		}
		else{
			if(length >= minLength)
				return true;
			return false;
		}
	}
}
//溢出时弹出提示框并禁止输入
function maxChar(oId,sId,maxLength){
	oId = clientId + oId;
	$(oId).onkeypress = $(oId).onkeyup = function() {
		if (this.value.length > maxLength){
			alert("对不起，您最多可录入"+maxLength+"字，请删减！");
			this.value = this.value.substring(0, maxLength-1);
			this.focus();
		}
		if (sId!="")
			$(sId).value = this.value.length;
	}
}

//替换全角数字
function tot(mobnumber){                        
    while(mobnumber.indexOf("０")!=-1){           
    	mobnumber = mobnumber.replace("０","0");}                                               
    while(mobnumber.indexOf("１")!=-1){             
	   	mobnumber = mobnumber.replace("１","1");}       
    while(mobnumber.indexOf("２")!=-1){             
	   	mobnumber = mobnumber.replace("２","2");}       
    while(mobnumber.indexOf("３")!=-1){             
	   	mobnumber = mobnumber.replace("３","3");}       
    while(mobnumber.indexOf("４")!=-1){             
	   	mobnumber = mobnumber.replace("４","4");}       
    while(mobnumber.indexOf("５")!=-1){             
	   	mobnumber = mobnumber.replace("５","5");}       
    while(mobnumber.indexOf("６")!=-1){             
	   	mobnumber = mobnumber.replace("６","6");}       
    while(mobnumber.indexOf("７")!=-1){             
	   	mobnumber = mobnumber.replace("７","7");}       
    while(mobnumber.indexOf("８")!=-1){             
		mobnumber = mobnumber.replace("８","8");}       
   	while(mobnumber.indexOf("９")!=-1){             
   	mobnumber = mobnumber.replace("９","9");}       
    return mobnumber;                               
}


//表单元素是否可用
function checkEnabled (meId, oArray, isId) {
	var isDisabled = ($(meId).checked)?false:true;
	for (var i=0; i<oArray.length; i++) {
		if (isId!=false) {
			$(clientId+oArray[i]).disabled = isDisabled;
			$(clientId+oArray[i]).style.background = (isDisabled==true)?"#ccc":"#fff";
		}
		else {
			var o = document.getElementsByName(clientName+oArray[i]);
			for (var j=0; j<o.length; j++) {
				o[j].disabled = isDisabled;
				o[j].style.background = (isDisabled==true)?"#ccc":"#fff";				
			}
		}
	}
}

function submitVal(OBJs){
	var vS;vS=true;
	for(var i=0;i<OBJs.length;i++){
		if(OBJs[i].getAttribute("valtype")!=null){
			switch(OBJs[i].getAttribute("valtype")){
				case "STRING":	
					//验证文本框
					if(!lengthVal(OBJs[i].name,1,OBJs[i].getAttribute("maxlength"))){
						showMsg(OBJs[i].getAttribute("msgpos"),-1);
						vS=false;
					}else{
						showMsg(OBJs[i].getAttribute("msgpos"),1);
					}
					break;
				case "SELECT":
					//验证下拉框
					if(!selectVal(OBJs[i].name)){
						showMsg(OBJs[i].getAttribute("msgpos"),-1);
						vS=false;
					}else{
						showMsg(OBJs[i].getAttribute("msgpos"),1);
					}
					break;
				default:
					//默认验证
					if(!testVal(OBJs[i].name,OBJs[i].getAttribute("valtype"))){
						showMsg(OBJs[i].getAttribute("msgpos"),-1);
						vS=false;
					}else{
						showMsg(OBJs[i].getAttribute("msgpos"),1);
					}
					break;
			}
		}
	}
	return vS;
}

function initCheck(oNum){
	
	var objForm=document.forms[oNum];
	var oElements=objForm.elements;
	//表单验证
	objForm.onsubmit = function(){
		
		if(!ValidateAppplication() || submitVal(oElements)==false){
			if($("Submit"))$("Submit").value="　Not completed,go finish please!　";
			return false;
		}

		if($("Submit"))$("Submit").value="　Submitting，please wait...　";
		if($("Submit"))$("Submit").disabled=true;

		return true;
	}
	//验证代码初始化
	for(var i=0;i<oElements.length;i++){
		if(oElements[i].getAttribute("valtype")!=null){
			//增加默认验证信息
			if(typeof valMsg[oElements[i].getAttribute("msgpos")]=="undefined"){
				valMsg[oElements[i].getAttribute("msgpos")] = new Array(oElements[i].name+"Msg",$(oElements[i].name+"Msg").innerHTML,'');
			}
			oElements[i].onchange = function(){
				eval("var obj=this")
				switch(obj.getAttribute("valtype")){
					//验证文本框
					case "STRING":
						if(!lengthVal(obj.name,1,obj.maxlength)){
							showMsg(obj.getAttribute("msgpos"),-1);
							return false;	
						}
						showMsg(obj.getAttribute("msgpos"),1);
						break;
					//验证下拉框
					case "SELECT":
						if(!selectVal(obj.name)){
							showMsg(obj.getAttribute("msgpos"),-1);
							return false;	
						}
						showMsg(obj.getAttribute("msgpos"),1);
						break;
					//默认验证
					default:
						if(!testVal(obj.name,obj.getAttribute("valtype"))){
							showMsg(obj.getAttribute("msgpos"),-1);
							return false;
						}
						showMsg(obj.getAttribute("msgpos"),1);
						break;
				}
			}
		}
	}
}