﻿/////////////////////////////////////////////////////////////
//                Validator Functions
/////////////////////////////////////////////////////////////
function validateValue(obj){
	//trim
	var patn = /(^\s)|(\s$)/;
	if(patn.test(obj.value))	obj.value = obj.value.trim();
	//switcher
	var errorCode = -1;
	
	switch(getDatatype(obj)){
		case "loginid":
		//alert(obj);
			errorCode = validateUsername(obj);
			break;
		case "passwd":
			errorCode = validatePassword(obj);
			break;
		case "confirm_passwd":
			errorCode = validateSafePassword(obj);
			break;
		case "auth_code":
			errorCode =0;// validateAuthCode(obj);
			break;
		case "mainserver":
			errorCode = validateMainServer(obj);
			break;
		case "truename":
			errorCode = validateTruename(obj);
			break;
		case "email":
			errorCode = validateEmail(obj);
			break;
		case "website":
			errorCode = validateWebSite(obj);
			break;
		case "company":
			errorCode = validateCompany(obj);
			break;
		case "com_name":
			errorCode = validateCompany(obj);
			break;
		case "com_description":
			errorCode = validatecom_description(obj);
			break;
		case "mobile":
			errorCode = validateMobile(obj);
			break;
		case "address":
			errorCode = validateAddress(obj);
			break;
		case "postcode":
			errorCode = validatePostCode(obj);
			break;
		case "first_name":
			errorCode = validateFirstName(obj);
			break;
 		case "job":
			errorCode = validateJobTitle(obj);
			break;
		case "buykeyword":
			errorCode = validateKeyword(obj);
			break;	
		case "salekeyword":
			errorCode = validateKeyword(obj);
			break;	
		case "phone_country":
			errorCode = validatePhoneArea(obj);
			break;	
		case "phone_area":
			errorCode = validatePhoneArea(obj);
			break;	
		case "phone_number":
			errorCode = validatePhoneNumber(obj);
			break;	
		case "fax_country":
			errorCode = validateFaxArea(obj);
			break;	
		case "fax_area":
			errorCode = validateFaxArea(obj);
			break;	
		case "fax_number":
			errorCode = validateFaxNumber(obj);
			break;		
		default:
			errorCode = -1;
			break;
	}
	return errorCode;
}


function validateRetryAll(formObj){

	var obj,infobox,pass;
	pass = true;
	var x = formObj;
	if(!x) return;
	var y = x.getElementsByTagName("input");
	for (var i=0;i<y.length;i++){
		obj = y[i];		
		obj.value = obj.value.trim();
		infobox = getInfobox(y[i]);
		if(obj.type == 'text' ){
			if(!isRequired(obj) && obj.value == ""){
				continue;
			}
			if(isRequired(obj) && obj.value == ""){
				pass = false;
				obj.focus();
				showStatus(obj,"Error");
				infobox.className	= infoboxErrorClass;
				infobox.innerHTML	= requireErrorInfo + getErrorMsg(obj,0);
				if(isCombine(obj)) break;
				continue;
			}
			if(validateValue(obj)>0){
				pass = false;
				obj.focus();
				showStatus(obj,"Error");
				showInfo(obj,validateValue(obj),true);
				if(isCombine(obj)) break;
				continue;
			}
			if(validateValue(obj)==0){
			
		
			if(obj.id){
	
	if(eval(obj.id).c && document.getElementById(eval(obj.id).c)){
		if(document.getElementById(eval(obj.id).c).innerHTML.indexOf("IMG") < 0 && document.getElementById(eval(obj.id).c).innerHTML.indexOf("img") < 0 ){ 
		document.getElementById(eval(obj.id).c).innerHTML = "&nbsp;<img src=\"new_images/icon_right_19x19.gif\" width=\"19\" height=\"16\" align=\"absmiddle\"> " + document.getElementById(eval(obj.id).c).innerHTML;
		}
	}
	document.getElementById(eval(obj.id).i).className = 'note';
	document.getElementById(eval(obj.id).i).innerHTML = (eval(obj.id).e)[0];
	
	}
		
	
				//showStatus(obj,"Ok");
				//infobox.className	= infoboxHintClass;
				//infobox.innerHTML	= validatedInfo;
				continue;
			}
		}
	}
	return pass;

}

function validateAll(formObj){
	var obj,infobox,pass;
	pass = true;
	var x = formObj;
	if(!x) return;
	var y = x.getElementsByTagName("input");
	for (var i=0;i<y.length;i++){
		obj = y[i];		
		obj.value = obj.value.trim();
		infobox = getInfobox(y[i]);
		if(obj.type == 'text' || obj.type == 'password'){
			if(!isRequired(obj) && obj.value == ""){
				continue;
			}
			if(isRequired(obj) && obj.value == ""){
				pass = false;
				obj.focus();
				showStatus(obj,"Error");
				infobox.className	= infoboxErrorClass;
				infobox.innerHTML	= "<h1>"+requireErrorInfo + getErrorMsg(obj,0) + "<\/h1>";
				//if(isCombine(obj)) break;
				continue;
			}
			if(validateValue(obj)>0){
				pass = false;
				obj.focus();
				showStatus(obj,"Error");
				showInfo(obj,validateValue(obj),true);
				//if(isCombine(obj)) break;
				continue;
			}
			if(validateValue(obj)==0){
				//showStatus(obj,"Ok");
				//infobox.className	= infoboxHintClass;
				//infobox.innerHTML	= validatedInfo;
				continue;
			}
		}
	}
	for(i = document.forms[0].pro_gro_id.length-1;i>0;i--){
		if(document.forms[0].pro_gro_id[i].value>0)
			document.forms[0].pro_gro_id[i].selected=true;
	};

	if(document.getElementById("loginid_info_check").innerHTML.indexOf("img") > 0 || document.getElementById("loginid_info_check").innerHTML.indexOf("IMG") > 0 || document.getElementById("loginid_info").className == 'noteawoke'){
//		alert("loginid_info error");
	document.getElementById("loginid_info").focus();
	pass= false;	
	}else if(document.getElementById("auth_code_info_check").innerHTML.indexOf("img") > 0 || document.getElementById("auth_code_info_check").innerHTML.indexOf("IMG") > 0 || document.getElementById("auth_code_info").className == 'noteawoke'){
//		alert("loginid_info error");
	document.getElementById("auth_code_info").focus();
	pass= false;	
	}else if(document.getElementById("email_info_check").innerHTML.indexOf("img") > 0 || document.getElementById("loginid_info_check").innerHTML.indexOf("IMG") > 0 || document.getElementById("email_info").className == 'noteawoke'){
//		alert("email_info error");
	document.getElementById("email_info").focus();
	pass= false;	
	}else if(document.forms[0].pro_gro_id.length <=1){
//		alert("pro_gro_id error");
		warning_check("pro_gro_id_info",'<h1>Products Catalogue is reqyested!<\/h1>');  
		document.getElementById("pro_gro_id").focus();
		pass = false;
/*	}else if(document.forms[0].country.value == ''){
		alert("city_info error");
		warning_check("city_info",'<h1>Please fill in the address of your company.<\/h1>');  
		document.getElementById("country").focus();
		pass = false;
*/	}else if(document.forms[0].com_description.value.length < 50){
//		alert("error here");
		warning_check("com_description_info",'<h1>Company info must more then 50 charsets<\/h1>');
//		alert("error here1");
		document.getElementById("com_description").focus();
//		alert("error here2");
		pass = false;
	}

return pass;
}


//functions for each particular datatype validation
function validateUsername(obj){
	var str = obj.value;
	var patn =   /^[a-zA-Z0-9]+$/; 
	//var patn = /^[^\s]*$/;
	if(!checkByteLength(str,6,20)) return 1;
	
	if(!patn.test(str)){
		return 1;
	}
	return 0; 
}
function validatePassword(obj){
	var str = obj.value;
	var patn = /.{6,16}/; 
	var patn1 =   /^[a-zA-Z0-9_]+$/;
	if(!patn.test(str) || !patn1.test(str) ) return 1;
	return 0; 
}
function validateSafePassword(obj){
	var str = obj.value;
	
	
	if(str != document.getElementById("passwd").value) return 1;
	
	return 0;
}
function validateEmail(obj){
	var str = obj.value;
	var patn = /^[_a-zA-Z0-9\-]+(\.[_a-zA-Z0-9\-]*)*@[a-zA-Z0-9\-]+([\.][a-zA-Z0-9\-]+)+$/;
	if(patn.test(str)){
		
		return 0;
	}else{
		return 1; //incorrect format
	}
}
function validateWebSite(obj){
	var str = obj.value;
	var patn = /http:\/\/[a-zA-Z0-9\-]+([\.][a-zA-Z0-9\-]+)+$/;
	if(patn.test(str)){
		
		return 0;
	}else{
		return 1; //incorrect format
	}
}
function validateNum(obj){
	var str = obj.value;
	var patn = new RegExp("\\d{"+getAttrValueByName(obj,"minlen")+","+getAttrValueByName(obj,"maxlen")+"}"); 
	if(patn.test(str)) return 0;
	return 1; 	
}

function validatePostCode(obj){
var str = obj.value;
var patn = /^[0-9]+$/;
if(patn.test(str)) return 0;
return 1; 	
}

function validateMobile(obj){
var str1 = obj.value;

var str = tot(str1); 
obj.value = str;

	
if(str.length > 16){
	
return 1;
}
if(str.length == 0){
return -1;

}

var patn = /^[0-9]+$/;
if(patn.test(str)) return 0;
return 2; 	
}

function validatePhoneArea(obj){
var str1 = obj.value;

var str = tot(str1); 
obj.value = str;
   
if(str.length == 0){
return -1;

}


var patn = /^[0-9]+$/;
if(!patn.test(str)) return 1;
return validatePhone(); 

}


function validateFaxArea(obj){
var str1 = obj.value;

var str = tot(str1); 
obj.value = str;

if(str.length == 0){
return -1;

return 
}


var patn = /^[0-9]+$/;
if(!patn.test(str)) return 1;
return validateFax(); 

}


function validateArea(obj){
var str1 = obj.value;

var str = tot(str1); 
obj.value = str;

if(str.length == 0){
return -1;

return 
}


var patn = /^[0-9]+$/;
if(!patn.test(str)) return 1;   

return 0; 

}


function validatePhone(){

if(validateArea(document.getElementById("phone_country")) == 0 && validateArea(document.getElementById("phone_area")) == 0 && validateNumber(document.getElementById("phone_number")) == 0){
return 0;
}else{

return -1
}

}


function validateFax(){

if(validateArea(document.getElementById("fax_country")) == 0 && validateArea(document.getElementById("fax_area")) == 0 && validateNumber(document.getElementById("fax_number")) == 0){
return 0;
}else{

return -1
}

}


function validateNumber(obj){
var str1 = obj.value;

var str = tot(str1); 
obj.value = str;
	

if(str.length == 0){
return -1;

}
var patn = /^[0-9-\/]+$/;
if(!patn.test(str)) return 1;
return 0;

}


function validatePhoneNumber(obj){
var str = obj.value;
	

if(str.length == 0){
return -1;

}
var patn = /^[0-9-\/]+$/;
if(!patn.test(str)) return 1;
return validatePhone(); 

}

function validateFaxNumber(obj){
var str = obj.value;
	

if(str.length == 0){
return -1;

}
var patn = /^[0-9-\/]+$/;
if(!patn.test(str)) return 1;
return validateFax(); 

}



function validateKeyword(obj){

var str = obj.value;
	
if(str.length > 40){
return 1;
}

if(str.length == 0){
return -1;

}

	var pass = true;
	var keyselected ='';
	for(i=0;i<document.form.business_role.length;i++){
 	 if(document.form.business_role[i].checked){
  	  keyselected = document.form.business_role[i].value;
  	  break;
	  }
	}
	
	if(keyselected == 'buyer'){
	if(document.form.J_z_Z_BuyKeywords.value == ''){
	pass = false;
	}
	
	}else if(keyselected == 'seller'){
	if(document.form.J_z_Z_SaleKeywords.value == ''){
	pass = false; 
	} 
	
	
	}else if(keyselected == 'both'){
	
	if(document.form.J_z_Z_SaleKeywords.value == '' || document.form.J_z_Z_BuyKeywords.value == ''){
	pass = false;
	}

        }
        
        
        if(pass){
        
        return 0;
        
        }



return -1;

}

function validateMainServer(obj){
	var str = obj.value;
	if(str.length > 4){
		return 0;
	}else{
		return 1;
	}
}
function validateTruename(obj){
	var str = obj.value;
	if(str.length >= 2){
		return 0;
	}else{
		return 1;
	}
}

function validateAuthCode(obj){
	var str = obj.value;
	if(str.length > 0){
		return 1;
	}
	if(str.length == 0){
		return -1;
	}
return 0;
}

function validatecom_description(obj){
var str = obj.value;
if(str.length >2000){
return 2;
}
if(str.length < 50){
return 1;
}
return 0;
}


function validateCompany(obj){
var str = obj.value;
	
if(str.length > 50){
return 1;
}

if(str.length == 0){
return -1;

}

return 0;

}
function validateJobTitle(obj){
var str = obj.value;
if(str.length > 16){

return 1;

}

if(str.length < 2){
return 2;
}

if(str.length == 0){
return -1;

}

return 0;
}

function validateFirstName(obj){

var str = obj.value;
	
if(str.length > 32){
return 1;
}

if(str.length == 0){
return -1;

}

return 0;

}


function validateAddress(obj){
var str = obj.value;

if(str.length <10){
	return 2;
}
	
if(str.length > 80){
return 1;
}

if(str.length == 0){
return -1;
}

return 0;


}

function validateCheckCode(obj){
	var str = obj.value;
	var patn = /^[0-9a-zA-Z]{4}$/;
	if(patn.test(str)) return 0;
	return 1;
}	

function checkByteLength(str,minlen,maxlen) {
	if (str == null) return false;
	var l = str.length;
	var blen = 0;
	for(i=0; i<l; i++) {
		if ((str.charCodeAt(i) & 0xff00) != 0) {
			blen ++;
		}
		blen ++;
	}
	if (blen > maxlen || blen < minlen) {
		return false;
	}
	return true;
}      



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;                               
}	      
