﻿	//全表单验证
function formValidation(destURL) {
		var i;
		var ElementItem, ElementItemFlag;
		var FlagStatus = true;
		for(i=0;i<jsondata.p.length-1;i++){
			ElementItemName = jsondata.p[i];									//填表项目名称
			//密码一致性检查
			if (ElementItemName.InputType.toLowerCase() == "password"){
				pwdConsistency(ElementItemName.ID);
			}
			itemValidation(ElementItemName.ID);	
			ElementItemFlag = getElement(ElementItemName.ID).Flag;	//填表项目标志
			if (ElementItemFlag!=-2) {
				FlagStatus &= (ElementItemFlag >= 1);
			};	//必选内容必须填写，可选内容必须写对。
		}
		if (FlagStatus){
			//验证通过后的处理函数
			postUserInfo();
		}
	}

	//表单单个项目验证
	function itemValidation(s){
		var Element = getElement(s);								//表单对象
		var ElementValue = Element.value	;									//待验证的元素值
		var ElementRegex = Element.Regex;										//验证用的正则表达式
		eval("ElementRegex = " + ElementRegex + ";");							//将正则表达式由String转换为Object
		var FlagStatus = true;
		if (Math.abs(Element.Flag)<=1){
			if (Element.Flag == -1){
				itemStatus(s, false);
			}else{
				FlagStatus = ElementRegex.exec(ElementValue);					//必选项判断合法性
				itemStatus(s,FlagStatus);
			}
		}else if((Math.abs(Element.Flag) == 2)||(Math.abs(Element.Flag) == 20)){
			if (Element.value == ""){
				itemStatusOptional(s,true);
				Element.Flag = -2;												//对于填写内容为空的项目，则不使用正则表达式验证
			}else{
				FlagStatus = ElementRegex.exec(ElementValue);					//可选项判断合法性
				itemStatusOptional(s,FlagStatus);
			}
		}
	}
	
	//密码一致性测试
	function pwdConsistency(s){
		var Element = getElement(s);								//表单对象
		var ElementTip = getElement('tip' + s + '2');				//表单对象
		var ElementValue = getElement(s).value	;					//待验证的元素值
		var ElementValue2 = getElement(s+"2").value	;			//待验证的元素值
		if (ElementValue == ElementValue2){
		    itemValidation(s);
			/*
			itemStatus(s, true)
			*/
			ElementTip.innerHTML = "&nbsp;";
			ElementTip.style.color = jsondata.general.validTipColor;
		}else{
			itemStatus(s, false)
			Element.Flag = -1;
			ElementTip.innerHTML = "两次输入不一致";
			ElementTip.style.color = jsondata.general.invalidTipColor;
		}
	}
	
	//设置条目验证结果
	function itemStatus(s,status){
		var Element = getElement(s);								//表单对象
		var ElementTip = getElement('tip' + s);					//表单对象
		if (status){
			//验证有效后的处理函数
			Element.Flag=1;
			ElementTip.style.color = jsondata.general.validTipColor;
			if (Element.InputType == "unique"){
				if (!uniqueCheck(Element.value)){
					alert(jsondata.unique.alerttxt);
					//验证失败后的处理函数
					Element.Flag=0;
					itemFat(s);
					ElementTip.style.color = jsondata.general.invalidTipColor;
				}
			}else{
				
			}
		}else{
			//验证失败后的处理函数
			Element.Flag=0;
			itemFat(s);
			ElementTip.style.color = jsondata.general.invalidTipColor;
		}
	}
	function itemStatusOptional(s,status){
		var Element = getElement(s);								//表单对象
		var ElementTip = getElement('tip' + s);					//表单对象
		if (status){
			//验证有效后的处理函数
			Element.Flag=2;
			ElementTip.style.color = jsondata.general.validTipColor;
		}else{
			//验证失败后的处理函数
			Element.Flag=-20;
			itemFat(s);
			ElementTip.style.color = jsondata.general.invalidTipColor;
		}
	}
	
	function selectAdd(jsonOptions, s){
		var Element = getElement(s);								//表单对象
		var OptionsCount = Element.length;										//预置选项数量
		for(i=0;i<OptionsCount;i++) {Element.remove(0);}						//清除原有选项
		OptionsCount = jsonOptions.Option.length;								//新选项数量
		for(i=0;i<OptionsCount;i++) {											//填充选项
			Element.options.add(new Option(jsonOptions.Option[i], jsonOptions.Option[i]));
		}
	}
	
	//Fade Anything Technology
	var jsonFat;
	function itemFat(ElementName){
		ElementDivName = "div" + ElementName;
		Fat.fade_element(ElementDivName, jsonFat.fps, jsonFat.FadeDuration, jsonFat.FadeColor , jsonFat.FinalColor );
	}

	//General
	function getElementValue(ElementId){ return getElement(ElementId).value;}
	function getElement(ElementId){return document.getElementById(ElementId)}

	// JSON 2 HTML
	function show(s) {
	    document.getElementById("regform").innerHTML += s;
	}
	
	function contentshow(jsondata, template) {
	    var x = jsonT(jsondata, template);
	    show(x);
	    jsonFat = jsondata.fat;
	}
