// ==========JS 函数库==========
//   Author:CatSeven @ 临沂万网 
// =  Form通用JS库  Data:JSON  =
var FormTpl="<dl><dt>$text</dt><dd>$input</dd></dl>";
var $XMLHttpRequest;
var VaidatorNum=0;VaidatorTXT="";

function $GET(str,obj){
	var obj=$(obj);
	PostUrl="/API/Local.php?API="+str+"&data=json";
	if(!$XMLHttpRequest)CreateXMLHttpRequest();
	$XMLHttpRequest.open("GET", PostUrl, true);
    $XMLHttpRequest.onreadystatechange = function(){ 
        if ($XMLHttpRequest.readyState == 4 && $XMLHttpRequest.status == 200){ 
            eval("j="+$XMLHttpRequest.responseText+";");
			switch(obj.tagName){
				case "INPUT":
					if(obj.type=="hidden"){
						obj.value="";
						$(obj.id+"Box").value="请选择";
						$(obj.id+"List").innerHTML=_CreateOption(j,obj.id.replace("form",""));
					}
					break;
				default:
					;
			}
        }
	}
    $XMLHttpRequest.send(null); 
}

function CreateXMLHttpRequest(){
    try {
        $XMLHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try {
            $XMLHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
            $XMLHttpRequest = false;
        }
    }
    if (!$XMLHttpRequest && typeof XMLHttpRequest!='undefined') {
        $XMLHttpRequest = new XMLHttpRequest();
    }
}

function __LoadFormJson(j,f){
	var outHTML="";
	for(var p in j){
		outHTML+=__insert(_CreateInput(j[p]),FormTpl);
	}
	outHTML+="<div class=\"Submit\"><input type=\"submit\" value=\"提交\" class=\"submit\"/><input type=\"reset\" value=\"重填\" class=\"reset\"/></div>"
	outHTML="<div id=\"outError\"></div><form id="+f+" action=Post.php rel=/API/Local.php?api=Registry."+f+"&data=json method=post>"+outHTML+"</form>";
	document.writeln(outHTML);
	_CreateEvent(j,f);
}

function __insert(p,t){
	return t.replace("$input",p.input).replace("$text",p.text);
}

function _CreateInput(p){
	switch(p.type){
		case "text":
			var outText=p.text;
			var outValue=p.value;
			var inputTpl="<input name=\"$name\" value=\"$value\" id=\"form$name\" $Tpl/>";
			break;
		case "select":
			var outText=p.text;
			var outValue=_CreateOption(p.value,p.name);
			var inputTpl="<input id=\"form$nameBox\" onclick=\"_SelectOpenBox(this);\" value=\"请选择\" readonly><input id=\"form$name\" name=\"$name\" type=\"hidden\" /><ul id=\"form$nameList\" onclick=\"this.style.display='none';\" class=\"select\">$value</ul>";
			break;
		case "textarea":
			var outText=p.text;
			var outValue=p.value;
			var inputTpl="<textarea name=\"$name\" id=\"form$name\">$value</textarea>";
			break;
	}
	if(!outValue)outValue="";
	outInput=inputTpl.replace(/\$name/ig,p.name).replace(/\$value/ig,outValue);
	return {input:outInput,text:outText};
}

function _SelectOpenBox(o){
	$(o.id.replace("Box","List")).style.display="block";
}

function _CreateOption(j,p){
	var outHTML="";
	if(!j)return "";
	switch(typeof(j)){
		case "string":
			outHTML="<li>"+j+"</li>";
			break;
		case "object":
			for(var q in j){
				q=j[q];
				outHTML+="<li onclick=\"$('form"+p+"Box').value='"+q.name+"';$('form"+p+"').value='"+q.id+"';\">"+q.name+"</li>";
			}
			break;
		default:
			outHTML="";
	}
	return "<li class=\"tit\">友情提示：找不到符合条件的选项？Ctrl+F查找试试</li>"+outHTML;
}

function _CreateEvent(j,f){
	f=$(f);
	f.onreset=function(){return confirm("您真的要重新填写吗？重新填写将会清空您已经填写的所有的数据。");}
	f.onsubmit=function(){
		VaidatorNum=0;
		VaidatorTXT="";
		for(var q in j){
			p=j[q];
			if(p.validator){
				var validator=p.validator.split(";");
				for(var i=0;i<validator.length;i++){
					if(validator[i]!="")
						eval("Vaidator_"+validator[i].replace("(","($(\"form"+p.name+"\").value,\""+p.text+"\"")+";");
				}
			}
		}
		$("outError").innerHTML="<strong>出错了~</strong><ul class=\"Error\">"+VaidatorTXT+"</ul>";
		$("outError").style.display="block";
		$("outError").onclick=function(){this.style.display="none";}
		if(VaidatorNum!=0)return false;
		f.action=f.rel;
	}
	for(var q in j){
		p=j[q];
		if(p.onclick){
			$("form"+p.name).rel=p.onclick;
			$("form"+p.name).onclick=___form_Event;
		}else if(p.onkeyup){
			$("form"+p.name).rel=p.onkeyup;
			$("form"+p.name).onkeyup=___form_Event;
		}else if(p.onmouseout){
			$("form"+p.name).rel=p.onmouseout;
			$("form"+p.name).onmouseout=___form_Event;
		}else if(p.onchange){
			$("form"+p.name).rel=p.onchange;
			__FireFox_onpropertychange($("form"+p.name));
		}
	}
}

function ___form_Event(){
	eval(this.rel);
}


//Vaidator
function Vaidator_Null(v,n){if(v!="")return true;VaidatorNum++;VaidatorTXT+="<li>"+VaidatorNum+"、"+n+"不能为空！</li>";}
function Vaidator_len(v,n,s,e){if(v.length>=s&&v.length<=e)return true;VaidatorNum++;VaidatorTXT+="<li>"+VaidatorNum+"、"+n+"的长度必须大于等于"+s+"并且小于等于"+e+"！</li>";}
function Vaidator_Num(v,n){if(!isNaN(v)&&v!="")return true;VaidatorNum++;VaidatorTXT+="<li>"+VaidatorNum+"、"+n+"必须为数字！</li>";}
function Vaidator_Select(v,n,t){switch(t){case "num":if(!isNaN(v)&&v!="")return true;break;case "null":if(v!="")return true;break;default:return true;}VaidatorNum++;VaidatorTXT+="<li>"+VaidatorNum+"、"+n+"必须选择！</li>";}

//Firefox Plus
var __FireFox_onPC_D=new Array()
function __FireFox_onpropertychange(o){
	__FireFox_onPC_D[o.id]=o.value;
	timers=setInterval("__FireFox_onPC('"+o.id+"')",100);
}
function __FireFox_onPC(o){
	var o=$(o);
	if(__FireFox_onPC_D[o.id]!=o.value){
		__FireFox_onPC_D[o.id]=o.value;
		eval(o.rel);
	}
}
