// JavaScript Document

var vldFlag = "";

var ipc=false;

function validate(elem, opt){
	
	//alert(elem.id);
	
	if(vldFlag!="" && vldFlag!=elem.id){return;}
	

	//var elem.id = elem.id;

	//if(ipc && elem.id=='State') {return;}
	//if((elem.id=='State' && $('ForeignZipCode').Length>0) || (elem.id=='mailingstate' && $('mailingzipcode').Length>0) 
	//|| (elem.id=='shippingstate' && $('shippingzipcode').Length>0) || (elem.id=='remittancestate' && $('remittancezipcode').Length>0)) {return;}
	
	
	vldFlag=elem.id;
	
	var mxLen = 1;
	var mnLen = 0;
	
	var strValue = $(elem.id).value;
	var lenValue = strValue.length;
	
		
	
	if(isNaN(opt.maxLen)==false){
		if(opt.maxLen > mxLen){ mxLen = opt.maxLen; }
		//alert('Huh Oh');
	}
	else
	{
		mxLen=lenValue;
	}
	
	if(isNaN(opt.minLen)==false) {
		if(opt.minLen > mnLen){ mnLen = opt.minLen; }
	}
	
	//alert(lenValue + "<" + mnLen + " || " + lenValue + ">" + mxLen);
	
	
	if(elem.id.substr(0,5)=='naics'){
		//alert('NAICS');
		if(strValue=='000000'){
			$(elem.id).style.border='solid 2px red';
			alert('000000 is an invalid Naics.\n\nThe Naics cannot be made up of all zeros.');
			$(elem.id).focus();
			return;
		}
		
		if(strValue.length>0){
			//user enter something so it has to be 6 chars in length
			if(strValue.length != 6){
				$(elem.id).style.border='solid 2px red';
				var dialogHT = 120;
				var title = "Attention!"
				var msg = opt.errMsg + "\n\nIf you don't know your NAICS code you can get more information here: <a href='http://www.census.gov/epcd/www/naicscod.htm'>NAICS Help</a>";
				var resp = window.showModalDialog("modalPrompt.cfm?msg="+msg+"&title="+title+"&accept=Close&h=" + dialogHT,"","dialogHeight:" + (dialogHT + 110) + "px; dialogWidth: 350px; edge: Raised; center: Yes; help: No; resizable: No; status: No; scroll: No;");
				$(elem.id).focus();
				return;
				
			}			
		}
	}
	
	if((lenValue < mnLen) || (lenValue > mxLen)){
		//alert(elem.id);
		$(elem.id).style.border='solid 2px red';
		alert(opt.errMsg);
		//alert(elem.id);
		setTimeout('$(' + elem.id + ').focus()',250);
		return false;
	}
	
	
	var valid = false;
	var express = '';
	
	if(opt.type==undefined) {vldFlag = ""; return;}
	
	if(mnLen==0 && lenValue==0) {vldFlag = ""; return;}
		
	switch(opt.type) {
	
		case "allphone":
			express = /[0-9\.\,\-\(\)\x20]*/
			valid = chkType(strValue, express);
			break;
	
		case "alpha":
			express = /[a-zA-Z]+/;
			valid = chkType(strValue, express);
			break;
	
		case "numeric":
			express = /[0-9]{2,6}/;
			valid = chkType(strValue, express);
			break;
		
		case "alphanumeric":
			express = /[0-9a-zA-Z\'\_\!\.\-\&\,\:\;\(\)\x20]+/;
			valid = chkType(strValue, express);
			break;
		
		case "ssn":
			express = /[0-9\-\x20]{8,11}/;
			valid = chkType(strValue, express);
			break;
	
		case "ubi":
			express = /[0-9a-zA-Z\-\x20]{6,11}/
			valid = chkType(strValue, express);
			break;
			
		case "duns":
			express = /[0-9]{2}-[0-9]{3}-[0-9]{4}/
			valid = chkType(strValue, express);
			break;
			
		case "ftid":
		express = /[0-9\-\x20]{8,11}/;
			valid = chkType(strValue, express);
			break;
			
		case "flname":
			express = /[a-zA-Z\'\_\.\-\,\x20]+/;
			valid = chkType(strValue, express);
			break;
	
		case "busname":
			express = /[0-9a-zA-Z\'\_\.\-\&\,\x20]+/;
			valid = chkType(strValue, express);
			break;
			
		case "date":
			express = /[0-9]{1,2}[\-\.\/][0-9a-zA-Z]{1,9}[\-\.\/][0-9]{2,4}/;
			valid = chkType(strValue, express);
			break;
			
		case "vcode":
			express = /[0-9]{4,6}/;
			valid = chkType(strValue, express);
			break;
	
		case "vsuffix":
			express = /[0-9]{1,2}/;
			valid = chkType(strValue, express);
			break;
		
		case "zipcode":
			express = /[0-9\-]{5,10}/;
			valid = chkType(strValue, express);
			//if(valid==true){lookupZip(elem);}
			break;
		
		case "postalcode":
			express = /[0-9a-zA-Z\-\x20]{5,10}/;
			valid = chkType(strValue, express);
			if(valid==true){ipc=true;}
			break;
			
		case "address":
			express = /[0-9a-zA-Z\'\_\.\-\,\x20]+/;
			valid = chkType(strValue, express);
			break;
	
		case "city":
			express = /[a-zA-Z\'\x20]+/;
			valid = chkType(strValue, express);
			break;
			
		case "state":
			express = /[a-zA-Z\'\x20]+/;
			valid = chkType(strValue, express);
			break;
			
		case "country":
			express = /[a-zA-Z\'\x20]+/;
			valid = chkType(strValue, express);
			break;
	
		case "url":
			express = "[0-9a-zA-Z_\.\-\?\&/]{1,128}.[0-9a-zA-Z_-\.\?\&]{1,128}.[a-zA-Z]{2,3}";
			valid = chkType(strValue, express);
			break;
		
		case "email":
			if(strValue=='N/A') {
				valid = true;	
			} else {
				express = /[0-9a-zA-Z_\.\-]{1,64}@[0-9a-zA-Z_\.\-]{1,128}\.[a-zA-Z]{2,3}/;
				valid = chkType(strValue, express);
			}
			break;
	}
	
	thisForm = document.getElementById("currentForm").value;
	
	//alert(valid);
	if(valid==false){
		$(elem.id).style.border='solid 2px red';
		alert(opt.errMsg);
		//alert(elem.id);
		$(elem.id).focus();
		return;
	}
	else{
		//alert(elem.id);
		updateSO(elem.id, thisForm);
		vldFlag = "";
	}
	

	//alert(elem.id);
	//if input field flagged invalid, reset	
	if($(elem.id).style.border.indexOf('red')>-1){
		//alert('end return');
		$(elem.id).style.border='solid 1px black';
		vldFlag = "";
		
		return;
	}
	
	vldFlag = "";
	
}

function chkType(strTest, regEx){
	
	 strTemp = strTest.match(regEx);
	 //alert(strTemp + "  :  " + strTest);
	 if(strTemp==strTest){
	 	return true;
	 }
     else {
		return false;
	 } 
}

function chkDate(strTest){

	 strTemp = strTest.match(regEx);
	 //alert(strTemp + "  :  " + strTest);
	 if(strTemp==strTest){
	 	return true;
	 }
     else {
		return false;
	 }
}

function setSectD(elem){
	//alert('setSectD - ' + elem.id + ' : ' + elem.value);	
	updateSO(elem.id, document.getElementById("currentForm").value);
	
}

function setBType(elem){
	//alert(elem.id + ' : ' + elem.value);	
	updateSO(elem.id, document.getElementById("currentForm").value);
	
}

function setTaxID(elem){
	//alert('1  ' + elem.id + ' : ' + elem.value);	
	updateSO(elem.id, document.getElementById("currentForm").value);
	
}

function setC_1099Exempt(elem){
	//alert('validate: ' + elem.id + ' : ' + elem.value);	
	updateSO(elem.id, document.getElementById("currentForm").value);
	
}

function getPostalCode(elem){
	
	//alert("from: " + curElem + "   to: " + elem.id);
	if(elem.id=='Zip_Code' && elem.value>''){
		validate(elem, {'type':'zipcode', 'maxLen':10, 'errMsg':'Invalid Postal Code'});
	} else if(elem.id=='ForeignZipCode' && elem.value>''){
		validate(elem, {'type':'postalcode', 'maxLen':10, 'errMsg':'Invalid Postal Code'});
	} else if($('Zip_Code').value=='' && elem.id!='ForeignZipCode'){
		alert('The Zip Code or Foreign Postal Code field is required.');
	} else if($('ForeignZipCode').value=='' && elem.id!='Zip_Code'){
		alert('The Zip Code or Foreign Postal Code field is required.');
	}
	
	/*
		validate(elem, {'type':'zipcode', 'maxLen':10, 'errMsg':'Invalid Zip Code'});
	} else if(elem.value.length > 5){
		validate(elem, {'type':'zipcode', 'maxLen':10, 'errMsg':'Invalid Postal Code'});
	} else {
		vldFlag = elem.id;
		alert('The Zip Code or Foreign Postal Code field is required.');
		//$('ZipCode').focus();
	} */
	
}

function setPopup(){
	
	var obj = $('popup');
	
	obj.style.visibility='';
	$('popupContent').innerHTML="<p>This is an alert!</p>";
	
}

function getElem(obj){

	curElem=obj.id;
	alert(curElem);
	
	
}