var doc = "document.";
var alphabets= /[a-zA-Z]/;
var nameFilter= /^[a-zA-Z\'\-\s]+$/;
var startNameFilter = /^[a-zA-Z]$/;
var nameGenFilter = /^[0-9a-zA-Z\-\s\'\!\@\#\$\%\^\&\*\(\)\-\_\+\?\.\:\;\[\]\/\,\"\=]+$/;
var startGenNameFilter = nameGenFilter;
var phoneFilter = /^[0-9\-\(\)\s\+]+$/;
var startPhoneFilter = /^[0-9\+\(]$/;
var numberFilter = /^[0-9]+$/;
//var emailFilter=/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/
var emailFilter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i ;
var unameFilter = /^[0-9a-zA-Z\-\_\.]+$/;
var stringFilter = /^[a-zA-Z\s]+$/;

// Checking a field whether it is blank after trimming the white spaces at the ends.
function checkBlank(formName,fieldName,fieldNameString){
 var inputVal = Trim(eval(doc+formName+"."+fieldName+".value"));
 if(inputVal.length == 0){
   return errorAlert(formName,fieldName, "The field \""+fieldNameString+"\" should have a valid content.");
 }
 return true;
}
//check the existance of alphabets
function checkAlpha(formName,fieldName,fieldNameString){
 var inputVal = Trim(eval(doc+formName+"."+fieldName+".value"));
 if(!alphabets.test(inputVal)){
   return errorAlert(formName,fieldName,"Invalid \""+fieldNameString+"\"");
 }
 return true;
}
//check the existance of alphabets
function checkNumber(formName,fieldName,fieldNameString){
 var inputVal = Trim(eval(doc+formName+"."+fieldName+".value"));
 if(!numberFilter.test(inputVal)){
   return errorAlert(formName,fieldName,"Invalid \""+fieldNameString+"\"");
 }
 return true;
}
// Check for a valid name.
function checkName(formName,fieldName,fieldNameString){
 if(!checkBlank(formName,fieldName,fieldNameString)){
   return false;
 }
 if(!regName(formName,fieldName,fieldNameString)){
   return false;
}
 var inputVal = Trim(eval(doc+formName+"."+fieldName+".value"));
 if(findUniqueChars(inputVal).length <= 1){
   return errorAlert(formName,fieldName, "The \""+fieldNameString+"\" you entered does not seem to be valid.");
 }
 return true;
}
function checkLastName(formName,fieldName,fieldNameString){
 if(!checkBlank(formName,fieldName,fieldNameString)){
   return false;
 }
 if(!regName(formName,fieldName,fieldNameString)){
   return false;
}
 return true;
}
// Check Any other Names like company-name etc.
function checkGenName(formName,fieldName,fieldNameString){
 if(!checkBlank(formName,fieldName,fieldNameString)){
   return false;
 }
 if(!regGenName(formName,fieldName,fieldNameString)){
   return false;
}
 var inputVal = Trim(eval(doc+formName+"."+fieldName+".value"));
 if(numberFilter.test(inputVal)){
   return errorAlert(formName,fieldName,"Invalid \""+fieldNameString+"\"");
 }
 if(!checkAlpha(formName,fieldName,fieldNameString)){
   return false;
 }
 return true;
}
function checkPhone(formName,fieldName,fieldNameString){
 if(!checkBlank(formName,fieldName,fieldNameString)){
   return false;
 }
 var inputVal = Trim(eval(doc+formName+"."+fieldName+".value"));
 if(!phoneFilter.test(inputVal) || !startPhoneFilter.test(inputVal.charAt(0))){
   return errorAlert(formName,fieldName,"Invalid \""+fieldNameString+"\"");
 }
 if(findUniqueChars(inputVal).length <= 1 || inputVal.length < 6){
   return errorAlert(formName,fieldName, "The \""+fieldNameString+"\" you entered does not seem to be valid.");
 }
 return true;
}
function checkZip(formName,fieldName,fieldNameString){
 if(!checkBlank(formName,fieldName,fieldNameString)){
   return false;
 }
 var inputVal = Trim(eval(doc+formName+"."+fieldName+".value"));
 if(!numberFilter.test(inputVal)){
   return errorAlert(formName,fieldName,"Invalid \""+fieldNameString+"\"");
 }
 return true;
}
function checkEmail(formName,fieldName,fieldNameString){
 if(!checkBlank(formName,fieldName,fieldNameString)){
   return false;
 }
 var inputVal = Trim(eval(doc+formName+"."+fieldName+".value"));
 if(!emailFilter.test(inputVal)){
   return errorAlert(formName,fieldName,"Invalid \""+fieldNameString+"\"");
 }
 if(!validateEmail(inputVal,true,true)){
   return false;
 }
 return true;
}
function checkUname(formName,fieldName,fieldNameString){
 if(!checkBlank(formName,fieldName,fieldNameString)){
   return false;
 }
 var inputVal = Trim(eval(doc+formName+"."+fieldName+".value"));
 if(!unameFilter.test(inputVal)){
   return errorAlert(formName,fieldName,"Invalid \""+fieldNameString+"\"");
 }
 if(inputVal.length < 5){
   return errorAlert(formName,fieldName,"Username should have at least 5 characters.");
 }
 return true;
}
function checkPasswords(formName,fieldName1,fieldName2,passMinLen,passMaxLen){
 if(!checkBlank(formName,fieldName1,"Password")){
   return false;
 }
 var inputVal1 = Trim(eval(doc+formName+"."+fieldName1+".value"));
 var inputVal2 = Trim(eval(doc+formName+"."+fieldName2+".value"));
 if(inputVal1 != inputVal2){
   return errorAlert(formName,fieldName1,"The passwords do not match. Please try again.");
 }
 if(!checkPasswordLength(formName,fieldName1,passMinLen,passMaxLen)){
   return false;
 }
 return true;
}
function checkCountry(formName,fieldName,fieldNameString){
 if(!checkBlank(formName,fieldName,fieldNameString)){
   return false;
 }
 var inputVal = Trim(eval(doc+formName+"."+fieldName+".value"));
 if(!stringFilter.test(inputVal)){
   return errorAlert(formName,fieldName,"Invalid \""+fieldNameString+"\"");
 }
 return true;
}
// Supporting Functions.
// check a general name.
function checkPasswordLength(formName,fieldName,passMinLen,passMaxLen){
var inputVal = Trim(eval(doc+formName+"."+fieldName+".value"));
 if(inputVal.length < passMinLen || inputVal.length > passMaxLen){
    return errorAlert(formName,fieldName,"The password string should have a length between "+passMinLen+" and "+passMaxLen);
 }
 return true;
}
function regGenName(formName,fieldName,fieldNameString){
 var inputVal = Trim(eval(doc+formName+"."+fieldName+".value"));
 if(!nameGenFilter.test(inputVal)){
   return errorAlert(formName,fieldName,"Invalid Characters in the field \""+fieldNameString+"\"");
 }
 if(!startGenNameFilter.test(inputVal.charAt(0))){
   return errorAlert(formName,fieldName, "The \""+fieldNameString+"\" you entered does not seem to be valid.");
 }
 if(findUniqueChars(inputVal).length <= 1){
   return errorAlert(formName,fieldName, "The \""+fieldNameString+"\" you entered does not seem to be valid.");
 }
 return true;
}
// check for a valid name
function regName(formName,fieldName,fieldNameString){
 var inputVal = Trim(eval(doc+formName+"."+fieldName+".value"));
 if(!nameFilter.test(inputVal)){
   return errorAlert(formName,fieldName,"Invalid Characters in the field \""+fieldNameString+"\"");
 }
 if(!startNameFilter.test(inputVal.charAt(0))){
   return errorAlert(formName,fieldName, "The \""+fieldNameString+"\" you entered does not seem to be valid.");
 }
 return true;
}
/*
function findUniqueChars(str){
 arrChars = str.split('');
 alert(arrChars);
 var countArr = 0;
 var checkArr = [];
 for(ii=0; ii<arrChars.length; ii++){
   if(checkArr.indexOf(arrChars[ii]) == -1){
      checkArr[countArr] = arrChars[ii];
      countArr++;
   }
 }
 return checkArr;
}*/

function findUniqueChars(str){
 arrChars = str.split('');
 checkArr = unique(arrChars);
// alert(checkArr);
 return checkArr;
}
function unique(a) {
    tmp = new Array(0);
    for(i=0;i<a.length;i++){
        if(!contains(tmp, a[i])){
            tmp.length+=1;
            tmp[tmp.length-1]=a[i];
        }
    }
    return tmp;
}
function contains(a, e) {
    for(j=0;j<a.length;j++)if(a[j]==e)return true;
    return false;
}
// Error Alerter.
function errorAlert(formName,fieldName, msg){
 alert(msg);
 eval(doc+formName+"."+fieldName+".focus()")
 return false;
}
// Trim Function. Function to trim the starting and ending white spaces of a string.
function Trim(str) {
 return LTrim(RTrim(str));
}
function LTrim(str) { 
 for (var ii=0; ii<str.length && str.charAt(ii)<=" " ; ii++) ;
 return str.substring(ii,str.length);
}
function RTrim(str) {
 for (var ii=str.length-1; ii>=0 && str.charAt(ii)<=" " ; ii--) ;
 return str.substring(0,ii+1);
}

function validateEmail(addr,man,db) {
if (addr == '' && man) {
   if (db) alert('email address is mandatory');
   return false;
}
if (addr == '') return true;
var invalidChars = '\/\'\\ ";:?!()[]\{\}^|';
for (i=0; i<invalidChars.length; i++) {
   if (addr.indexOf(invalidChars.charAt(i),0) > -1) {
      if (db) alert('email address contains invalid characters');
      return false;
   }
}
for (i=0; i<addr.length; i++) {
   if (addr.charCodeAt(i)>127) {
      if (db) alert("email address contains non ascii characters.");
      return false;
   }
}

var atPos = addr.indexOf('@',0);
if (atPos == -1) {
   if (db) alert('email address must contain an @');
   return false;
}
if (atPos == 0) {
   if (db) alert('email address must not start with @');
   return false;
}
if (addr.indexOf('@', atPos + 1) > - 1) {
   if (db) alert('email address must contain only one @');
   return false;
}
if (addr.indexOf('.', atPos) == -1) {
   if (db) alert('email address must contain a period in the domain name');
   return false;
}
if (addr.indexOf('@.',0) != -1) {
   if (db) alert('period must not immediately follow @ in email address');
   return false;
}
if (addr.indexOf('.@',0) != -1){
   if (db) alert('period must not immediately precede @ in email address');
   return false;
}
if (addr.indexOf('..',0) != -1) {
   if (db) alert('two periods must not be adjacent in email address');
   return false;
}

var ext_string=addr.substring(atPos);
var ext=ext_string.split('.');
//alert(ext);alert();
if(ext.length != unique(ext).length ){
    alert('repeated  primary domains in email address');
    return false;
}
for(var i=1;i<ext.length;i++){
    var suffix = ext[i];
    /*if(ext.indexOf(suffix)!= ext.lastIndexOf(suffix)){
    alert('repeated  primary domains in email address');
    return false;
    }*/
    if (suffix.length != 2 && suffix != 'com' && suffix != 'net' && suffix != 'org' && suffix != 'edu' && suffix != 'int' && suffix != 'mil' && suffix != 'gov' & suffix != 'arpa' && suffix != 'biz' && suffix != 'aero' && suffix != 'name' && suffix != 'coop' && suffix != 'info' && suffix != 'pro' && suffix != 'museum') {
    if (db) alert('Invalid primary domain in email address');
    return false;
    }
}
// var suffix = addr.substring(addr.lastIndexOf('.')+1);
// if (suffix.length != 2 && suffix != 'com' && suffix != 'net' && suffix != 'org' && suffix != 'edu' && suffix != 'int' && suffix != 'mil' && suffix != 'gov' & suffix != 'arpa' && suffix != 'biz' && suffix != 'aero' && suffix != 'name' && suffix != 'coop' && suffix != 'info' && suffix != 'pro' && suffix != 'museum') {
//    if (db) alert('invalid primary domain in email address');
//    return false;
// }
return true;
}

function validatePhone(fld) {

    var error = "";
    var stripped = fld.value.replace(/[\(\)\.\-\ ]/g, '');    

   if (fld.value == "") {
        alert("You didn't enter a phone number.\n");
        fld.style.background = 'Yellow';return false;
    } else if (isNaN(parseInt(stripped))) {
        alert("The phone number contains illegal characters.\n");
        fld.style.background = 'Yellow';return false;
    } else if (!(stripped.length == 10)) {
       alert("The phone number is the wrong length. Make sure you included an area code.\n");
        fld.style.background = 'Yellow';return false;
    }
    
}

function checkUser(formName){
	
	var user_fname = document.getElementById('user_fname').value;
	var user_name = document.getElementById('user_name').value;
	var user_password = document.getElementById('user_password').value;
	var phone = document.getElementById('phone').value;
	var email = document.getElementById('email').value;
	var user_level = document.getElementById('user_level').value;
	var user_status = document.getElementById('user_status').value;
	//alert("hiiiii");
	if(checkName(formName,"user_fname","Full Name") == false)return false;
	if(checkGenName(formName,"user_name","User Name") == false)return false;
	if(checkGenName(formName,"user_password","Password") == false)return false;
// 	if(phone != null || phone !=''){
// 		if(checkPhone(formName,"phone","phone") == false)return false;
// 	}
// 	if(!(checkBlank(formName,"email","Email"))){
// 		if(checkEmail(formName,"email","Email") == false)return false;
// 	}
	else{
		return true;
	}	
}

function checkPlayer(formName){

	var player_name = document.getElementById('player_name').value;
	var player_pass = document.getElementById('player_pass').value;
	var site_name = document.getElementById('site_name').value;
	var per_bet = document.getElementById('per_bet').value;
	var per_match = document.getElementById('per_match').value;
	var credit = document.getElementById('credit').value;
	var money_share = document.getElementById('money_share').value;
	var remarks = document.getElementById('remarks').value;

	if(checkGenName(formName,"player_name","Name") == false)return false;
	if(checkGenName(formName,"player_pass","Password") == false)return false;
	if(checkBlank(formName,"site_name","Site Name") == false)return false;
// 	if(checkBlank(formName,"per_bet","Per Bet") == false)return false;
// 	if(checkBlank(formName,"per_match","Per Match") == false)return false;
// 	if(checkBlank(formName,"credit","Credit") == false)return false;
	if(checkBlank(formName,"money_share","Money Share") == false)return false;
//	if(checkBlank(formName,"remarks","Remarks")  == false)return false;
	else{
		return true;
	}
}

function confirmPass(){
		var user_password = document.getElementById('user_password').value;
		var confirm_password = document.getElementById('confirm_password').value;
		if(user_password == confirm_password){
			return true;
		}else{
			alert("Password do not match!!! Try Again!!!");
			return false;
		}
}