// Validator Object
	var valid = new Object();

// REGEX Elements
	
	valid.num = /[0-9]$/;

	valid.eng = /[a-zA-Z0-9]$/;
	
	// matches zip codes
	valid.zipCode = /\d{5}(-\d{4})?/;
	
	// matches $17.23 or $14,281,545.45 or ...
	valid.Currency = /\$\d{1,3}(,\d{3})*\.\d{2}/;

	// matches 5:04 or 12:34 but not 75:83
	valid.Time = /^(0[1-9]|1[0-9]|2[0-3]):[0-5][0-9]$/;

	//matches email
	valid.emailAddress = /[a-zA-Z0-9]+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;

	// matches phone ###-####-####
	valid.phoneNumber = /^\(?\d{3}\)?\s|-\d{3,4}-\d{4}$/;

	// International Phone Number
	valid.phoneNumberInternational = /^\d(\d|-){7,20}/;

	// IP Address
	valid.ipAddress = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;

	// Date xx/xx/xxxx
	valid.Date = /^\d{4}([-/])\d{1,2}\1\d{1,2}$/;

	// State Abbreviation
	valid.State = /^(AK|AL|AR|AZ|CA|CO|CT|DC|DE|FL|GA|HI|IA|ID|IL|IN|KS|KY|LA|MA|MD|ME|MI|MN|MO|MS|MT|NB|NC|ND|NH|NJ|NM|NV|NY|OH|OK|OR|PA|RI|SC|SD|TN|TX|UT|VA|VT|WA|WI|WV|WY)$/i;

	// Social Security Number
	valid.SSN = /^\d{3}\-\d{2}\-\d{4}$/;

	valid.jumin = /^\d{6}\-\d{7}$/;
		
function lenb(str){
	var chrcode;
	var leng=0;
	for (i=0;i<str.length;i++){
		chrcode=str.charCodeAt(i);
		if (chrcode<=127)
			leng++;
		else
			leng+=2;
	}
	return leng;
}
	
function validateForm(theForm)
{
	var elArr = theForm.elements; 
	
	for(var i = 0; i < elArr.length; i++) {
		with(elArr[i]) {
			var v = elArr[i].validator; 
			
			if(!v) continue;			
			if ((type=="radio" || type=="checkbox"))
			{
				var tmp=false;
				var a = document.all.item(name);
				if (a!=null) {
					if (a.length!=null) {
						for (j=0; j<a.length; j++) {
							if(a[j].checked){
								tmp=true;								
							}							
						}
					}
				} 
  
				if(!tmp){
					alert(kname + "Error.");
					return false;
				}
			}		  

			if (value=="")
			{
				alert(kname + "Error.");
				//elArr[i].select();
				elArr[i].focus();
				return false;
			}			
			
			if(elArr[i].getAttribute("maxlength")){
				if(lenb(value)>parseInt(elArr[i].getAttribute("maxlength"))){
					alert(kname + "上传的文件 " + elArr[i].getAttribute("maxlength") + "Byte超出. (只允许 "+lenb(value)+"byte)");
					return false;
				}
			}

			var thePat = valid[v];
			if(!thePat) continue;
			
			var gotIt = thePat.exec(value); 

			if(!gotIt){
				if(v=="eng"){
					alert(kname + "Error.");
				}else if(v=="num"){
					alert(kname + "Error.");
				}else{
					alert(kname + "Error.");
				}
				elArr[i].select();
				elArr[i].focus();
				return false;
			}
		}
	}
	return true;
}

function validateValue(pMode, pValue) {
	var thePat = valid[pMode];
	var gotIt = thePat.exec(pValue); 
	
	return gotIt;
}

function isNullString(str){
	return (str == "" || str == null);
}

function Jumin_chk(it) {
	IDtot = 0;
	IDAdd = "234567892345";
	
	for(i=0; i<12; i++) IDtot = IDtot + parseInt(it.substring(i, i+1), 10) * parseInt(IDAdd.substring(i, i+1), 10);
	IDtot = 11 - (IDtot%11);
	if (IDtot == 10) IDtot = 0;
	else if (IDtot == 11) IDtot = 1;
	if(parseInt(it.substring(12, 13), 10) != IDtot) return true;
}

/*****
  * return : boolean
  * ex) 111-11-11111
  *****/
function isBusinessNo(strCk1,strCk2,strCk3) {
	var strNumb = strCk1+strCk2+strCk3;
    strNumb = strNumb.replace("-","");
    if (strNumb.length != 10) {
        alert("Error.");
        return false;
    }
    sumMod = 0;
    sumMod += parseInt(strNumb.substring(0,1));
    sumMod += parseInt(strNumb.substring(1,2)) * 3 % 10;
    sumMod += parseInt(strNumb.substring(2,3)) * 7 % 10;
    sumMod += parseInt(strNumb.substring(3,4)) * 1 % 10;
    sumMod += parseInt(strNumb.substring(4,5)) * 3 % 10;
    sumMod += parseInt(strNumb.substring(5,6)) * 7 % 10;
    sumMod += parseInt(strNumb.substring(6,7)) * 1 % 10;
    sumMod += parseInt(strNumb.substring(7,8)) * 3 % 10;
    sumMod += Math.floor(parseInt(strNumb.substring(8,9)) * 5 / 10);
    sumMod += parseInt(strNumb.substring(8,9)) * 5 % 10;
    sumMod += parseInt(strNumb.substring(9,10));
    if (sumMod % 10 != 0) {
        alert("Error.");
        return false;
    }
    return true;
}

/** ------------------------------------------------------------------------------------------------
 ------------------------------------------------------------------------------------------------**/
function openWindowPoint(strURL, intWidth, intHeight, blnResize, blnScroll, windowName, intTop, intLeft)
{
	var left = (screen.width - intWidth) / 2;
	var top = (screen.height - intHeight) / 2;
	var settings = "width=" + intWidth;
		settings = settings + ", height=" + intHeight;
		settings = settings + ", left=" + intLeft;
		settings = settings + ", top=" + intTop;
		settings = settings + ", scrollbars=" + blnScroll;
		settings = settings + ", resizable=" + blnResize;
		settings = settings + ",status=yes"
	
	var win = window.open(strURL, windowName, settings);
	if (parseInt(navigator.appVersion) >= 4) { win.window.focus();win.opener.self; }
}

/** ------------------------------------------------------------------------------------------------
onAllCheck ()	| ex) onAllCheck(document.all.text)
 ------------------------------------------------------------------------------------------------**/
function onAllCheck(pObj){
	if(pObj){
		if(pObj.length){
			for(i=0; i<pObj.length; i++){
				pObj[i].checked = true;
			}
		}
		else{
			pObj.checked = true;
		}
	}
}

/** ------------------------------------------------------------------------------------------------
WindowReset ( Window Object )	| ex) WindowReset(this)
 ------------------------------------------------------------------------------------------------**/
function WindowReset(win){  
	var winBody = win.document.body; 

	var marginHeight = parseInt(winBody.topMargin)+parseInt(winBody.bottomMargin); 
	var marginWidth = parseInt(winBody.leftMargin)+parseInt(winBody.rightMargin); 

	//var wid = winBody.scrollWidth + (winBody.offsetWidth - winBody.clientWidth) + marginWidth-5; 
	var wid = winBody.scrollWidth + 10; 
	var hei = winBody.scrollHeight + (winBody.offsetHeight - winBody.clientHeight) + marginHeight+15; 

	win.resizeTo(wid, hei); 
}

function popupView (img_view) {
	//var img_view = this;
	var x = x + 20 ;
	var y = y + 30 ;
	htmlz = "<html><head><style>body{margin:0;cursor:hand;}</style></head><body scroll=auto><img src='"+img_view+"' onload='width1=this.width;if(width1>800)width1=800;height1=this.height;if(height1>600)height1=600;top.window.resizeTo(width1+30,height1+40);' onclick='top.window.close();' title='努腐窍矫搁 摧赛聪促.'></body></html>"
	imagez = window.open('', "image", "width="+ 100 +", height="+ 100 +", top=0,left=0,scrollbars=auto,resizable=1,toolbar=0,menubar=0,location=0,directories=0,status=0");
	imagez.document.open();
	imagez.document.write(htmlz)
	imagez.document.close();
}

function onMovieView(pMovie)
{
	var strHTML = "";
	strHTML += "<object classid=\"clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95\"  codebase=\"http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701\" type=\"application/x-oleobject \" width=\"320\" height=\"240\" align=\"center\" standby=\"Loading Microsoft Windows Media Player components...\" id=\"MediaPlayer\" style=\"WIDTH:320px; HEIGHT: 240px; LEFT: 0px; TOP: 0px\">";
	strHTML += "<param name=\"animationatstart\" value=\"0\">";
	strHTML += "<param NAME=\"autostart\" value=\"1\">";
	strHTML += "<param NAME=\"AutoSize\" value=\"0\">";
	strHTML += "<param NAME=\"EnableContextMenu\" Value=\"0\">";
	strHTML += "<param NAME=\"playCount\" value=\"100\">";
	strHTML += "<param NAME=\"ShowStatusBar\" VALUE=\"0\">";
	strHTML += "<param NAME=\"ShowControls\" VALUE=\"0\">";
	strHTML += "<param NAME=\"ClickToPlay\" VALUE=\"0\">";
	strHTML += "<param NAME=\"TransparentAtStart\" VALUE=\"1\">";
	strHTML += "<param name=\"Filename\" value=\""+ pMovie +"\">";
	strHTML += "<embed src=\"0\" width=\"320\" height=\"240\" autostart=\"1\" align=\"center\" animationatstart=\"0\" autosize=\"0\" enablecontextmenu=\"0\" playcount=\"-1\" showstatusbar=\"0\" showcontrols=\"0\" clicktoplay=\"0\" transparentatstart=\"1\" filename=\"\">";strHTML += "</embed>"; 
	strHTML += "</object>";
	document.write(strHTML);
}

function onProjectList(pArea, pPID, pMode, pState){
	var objNodeList, root;
	var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.3.0");
	xmlDoc.async = false;
					
	xmlDoc.load("/sales/project_list_xml_proc.asp?mode="+ pMode +"&state="+ pState +"&area=" + pArea);
	root = xmlDoc.documentElement;
					
	if (xmlDoc.parseError.errorCode != 0)
	{
	   var myErr = xmlDoc.parseError;
	   alert("You have error " + myErr.reason);
	}
					
	var obj = document.all.project_list;

	for(var f_i=(obj.length-1); f_i>0; f_i--)
	{
		obj.remove(f_i);
	}
	obj.selectedIndex = 0;
					
	for(var f_i=0; f_i< xmlDoc.selectNodes("project/code").length; f_i++)
	{						
		var oOption = document.createElement("OPTION");
		obj.options.add(oOption);
		oOption.innerText = root.childNodes(f_i).getAttribute("name");
		oOption.value = root.childNodes(f_i).getAttribute("id");

		if(root.childNodes(f_i).getAttribute("id") == pPID)
			oOption.selected = true;
	}
}

function onProjectListSearch(pArea){	
	var f_mode, f_state;
	var f_arr = document.all.search_state.value.split("_");

	var objNodeList, root;
	var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.3.0");
	xmlDoc.async = false;
					
	xmlDoc.load("/sales/project_list_xml_proc.asp?mode="+ f_arr[0] +"&state="+ f_arr[1] +"&area=" + pArea);
	root = xmlDoc.documentElement;
					
	if (xmlDoc.parseError.errorCode != 0)
	{
	   var myErr = xmlDoc.parseError;
	   alert("You have error " + myErr.reason);
	}
					
	var obj = document.all.search_pid;

	for(var f_i=(obj.length-1); f_i>0; f_i--)
	{
		obj.remove(f_i);
	}
	obj.selectedIndex = 0;
					
	for(var f_i=0; f_i< xmlDoc.selectNodes("project/code").length; f_i++)
	{						
		var oOption = document.createElement("OPTION");
		obj.options.add(oOption);
		oOption.innerText = root.childNodes(f_i).getAttribute("name");
		oOption.value = root.childNodes(f_i).getAttribute("id");
	}
}