// JavaScript Document

//modified  by   : Srinivas
//Description  : Common js functions
//Dated        : 16-02-2008    

function loaddiv()
{
	// loading div
	window.scrollTo(0,0);
	var loading_box = document.createElement('div');
	//var loading_text = document.createTextNode('');
	loading_box.className = "map_loading";
	loading_box.id = "map_loading_box";
	
	//loading_box.appendChild(loading_text);
	loading_box.style.left = '0px';
	var width = "1000px";
	var height = "800px";
	
	if (navigator.appName=="Netscape") {
		if (document.body && typeof(document.body.offsetHeight) == 'number')
		{
		  height = document.body.offsetHeight;
		  width = document.body.offsetWidth;
		}
		else if (typeof(window.innerHeight) == 'number')
		{
		  height = window.innerHeight;
		  width = window.innerWidth;
		}
		width = width+'px';
  		height = height+'px';
	 }
	 else if (navigator.appName.indexOf("Microsoft")!=-1) {
 		width = (document.body.clientWidth)+'px';
		height = document.body.clientHeight+'px';
	 }
	 else if(navigator.appName == "Opera") {
   		width = (window.innerWidth)+'px';
		height = window.innerHeight+'px';
	}
	loading_box.style.width = width;
	loading_box.style.top = '0px';
	loading_box.style.height = height;
	loading_box.innerHTML = '<table width="'+width+'" align="center"><tr><td style="font-family: Arial, Verdana, Helvetica; color:#000000; FONT-WEIGHT: bold; FONT-SIZE: 25px;" valign="middle" align="center">&nbsp;</td></tr></table>';
	document.body.appendChild(loading_box);
	// end
}
//function to chk whether given given text field is empty or not
function isValidEntry(element,msg) 
{
  
   if(element.value.length == 0)
	{
		alert("Please enter the "+ msg);
		element.focus();
		return false;
	}
	return true;
} // closing the function isValidEntry()



//function to chk for valid URL
function isValidURL(element, msg, required)
{
	if(element.value == "")
	{
		var rval = trim(required);
		if (rval.toLowerCase() == "yes" || rval == 1)
		{
			alert("Please enter "+msg);
			element.focus();
			return false;
		}
	}
	if(element.value != "")
	{
		// if (!(/^[www]\w+([\.-]?\w+)*(\.\w{2,3}.*/i.test(element.value)))))
		var oRegExp = /[^:]+:\/\/[^:\/]+(:[0-9]+)?\/?.*/;
		if (!oRegExp.test(element.value))
		{
			alert('\r\n The URL you have entered is invalid.\n Please check it for accuracy.');
			element.focus();
			element.select();
			return false;
		}
	}
	return true;
}



//function to chk for valid email
function isValidEmail(VarEmail)
{
		if(VarEmail.value == "" || VarEmail.length == 0)
		{
			alert("Please enter Email Address");
			VarEmail.focus();
			return false;
		}	

		if(VarEmail.value!="")
        {

			if (!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(VarEmail.value)))
			{
				alert("Invalid Email address!")
				VarEmail.focus();
				return false;
			}
        } 
		return true;
}

function check_phonenum(e)/// validation to enter only numbers
{
  if(window.event)
  {
		if((e.keyCode > 1 && e.keyCode < 47 && e.keyCode!=8  && e.keyCode!=45) ||(e.keyCode > 58 && e.keyCode < 255) ) 
		return false;
  }
  else if(e.which)
   {
		if((e.which > 1 && e.which < 47 && e.keyCode!=8  && e.keyCode!=45) ||(e.which > 58 && e.which < 255) ) 
		return false;
   }
   return true;
}


function check_alpha1(e)/// validation to enter only numbers
{
  if(window.event)
  {
		if((e.keyCode > 1 && e.keyCode < 47 && e.keyCode!=8) ||(e.keyCode > 58 && e.keyCode < 255) ) 
		return false;
  }
  else if(e.which)
   {
		if((e.which > 1 && e.which < 47 && e.keyCode!=8) ||(e.which > 58 && e.which < 255) ) 
		return false;
   }
   return true;
}


function checknum(e)// validation to enter only alphabets
{
	if(window.event)
	{
		if((e.keyCode>32 && e.keyCode<=64) ||  (e.keyCode>=91 && e.keyCode<=95) 
		|| (e.keyCode==96) || (e.keyCode>=123 && e.keyCode<=127)) 
		return false;
	}//if
	else if(e.which)
	{
		if((e.which>32 && e.which<=64) ||  (e.which>=91 && e.which<=95) 
		|| (e.which==96) || (e.which>=123 && e.which<=127)) 
		return false;
	}//else if
	return true;
}
/*
3. SELECT VALIDATION

Usage:
Element  name of the control, like frm.firstname
Message  Field Name that we want to display in alert message.

if(!isValidSelect(frm.country,'Country'))
return;
*/
function isValidSelect(element,msg) 
{
	if(element.value == "-1" || element.value == "" || element.value == 0) 
	{
		alert("Please select "+msg+" from the list");
		element.focus();
		return false;
	}
	return true;
}


function isValidSelect1(element,msg) 
{
	if(element == "-1" || element == "" || element == 0) 
	{
		alert("Please select "+msg+" from the list");
		element.focus();
		return false;
	}
	return true;
}

function isValidSelect2(element,msg) 
{
		
	if(element.value == "-1") 
	{
		alert("Please select "+msg+" from the list");
		element.focus();
		return false;
	}
	return true;
}

/*

4. PHONE NUMBER VALIDATION
Usage: 
Element  name of the control, like frm.phone
Message  Field Name that we want to display in alert message.
Required  Set this to yes if the field is mandatory, otherwise no.

 if(!isValidPhone(frm.phone,'Phone Number','yes'))
 return;
*/
function isValidPhone(element, msg, required)
{	
	var VarPhone = element.value;
	if (VarPhone== "")
	{	
		var rval = trim(required);
		if (rval.toLowerCase() == "yes" || rval == 1)
		{
			alert("Please enter "+msg);
			element.focus();
			return false;
		}
	}
	if (VarPhone != "")
	{
		var Phno;
		Phno=VarPhone;
		var valid = "-0123456789()";
		var hyphencount = 0;
		for (var i=0; i < Phno.length; i++) 
		{
			temp = "" + Phno.substring(i, i+1);
			if (valid.indexOf(temp) == "-1")
			{
				alert("Invalid characters in your "+msg+". Please try again.");
				element.focus();
				return false;
			}
		}
     } 
	 return true;      
}


/// validation to enter only numbers and (.)period for price
function check_price(e)
{
  if(window.event)
  {
		if((e.keyCode > 1 && e.keyCode < 47 && e.keyCode!=8 && e.keyCode!=46) ||(e.keyCode > 58 && e.keyCode < 255) ) 
		return false;
  }
  else if(e.which)
   {
		if((e.which > 1 && e.which < 47 && e.which!=8 && e.which!=46) ||(e.which > 58 && e.which < 255) ) 
		return false;
   }
   return true;
}



//function to show the hand cursor for the image n buttons
//Page : ho_registration.php
function fnShowHand(frm,ctrl_id)
{
	var Cursor='hand';

	if (!document.all){ Cursor='pointer'; }
	
	//for mouseover
	
	document.getElementById(ctrl_id).style.cursor=Cursor;	
}


//function to show the hand cursor for the image
//Page : ho_registration.php
function fnRemoveHand(frm,ctrl_id)
{
	var Cursor='hand';

	if (!document.all){ Cursor='pointer'; }
	
	//for mouseout
	
	document.getElementById(ctrl_id).style.cursor='default';	
}

// function to trim leading & trailing spaces
function trim(strText) { 
    // this will get rid of leading spaces 
    while (strText.substring(0,1) == ' ') 
        strText = strText.substring(1, strText.length);

    // this will get rid of trailing spaces 
    while (strText.substring(strText.length-1,strText.length) == ' ')
        strText = strText.substring(0, strText.length-1);

   return strText;
} 


//Function to goto next when <ENTER> key is pressed
function fnGoto_Next(from_field,to_field,num_char)
{
	if(from_field.value.length == num_char)
		to_field.focus();
	return true;
}



/*
2. NUMBER VALIDATION
Usage:
Element  name of the control, like frm.number
Message  Field Name that we want to display in alert message.
Required  Set this to yes if the field is mandatory, otherwise no.

 if(!isValidNumber(frm.num,'Roll Number','yes'))
 return;
*/
function isValidNumber(element, msg, required)
{  
	var VarNumber = element.value;
	if(VarNumber == "")
	{
		var rval = trim(required);
		if (rval.toLowerCase() == "yes" || rval == 1)
		{
			alert("Please enter "+msg);
			element.focus();
			return false;
		}
	}
	if (VarNumber != "")
	{
		var Num;
		Num=VarNumber;
		var valid = "0123456789";
		var hyphencount = 0;
		
		for (var i=0; i < Num.length; i++) 
		{
			temp = "" + Num.substring(i, i+1);
			if (valid.indexOf(temp) == "-1")
			{
			  alert("Invalid characters in your "+msg+".  Please try again.");
			  element.focus();
			  return false;
			}
	   } // end for loop
	   
		if(VarNumber < 1)
		{
			alert(msg+" is not a valid number");
			element.focus();
			return false;
		}
    }   // end if
    return true; 
}  // end function
//zip code
function isValidZip(element, msg, required)
{  
	var VarNumber = element.value;
	if(VarNumber == "")
	{
		var rval = trim(required);
		if (rval.toLowerCase() == "yes" || rval == 1)
		{
			alert("Please enter "+msg);
			element.focus();
			return false;
		}
	}
	if (VarNumber != "")
	{
		var Num;
		Num=VarNumber;
		var valid = "0123456789";
		var hyphencount = 0;
		
		for (var i=0; i < Num.length; i++) 
		{
			temp = "" + Num.substring(i, i+1);
			if (valid.indexOf(temp) == "-1")
			{
			  alert("Invalid characters in your "+msg+".  Please try again.");
			  element.focus();
			  return false;
			}
	   } // end for loop
	  
		if(VarNumber.length < 3)
		{
			alert(msg+" is not a valid Zip");
			element.focus();
			return false;
		}
		if(VarNumber.length > 5)
		{
			alert(msg+" is not a valid Zip");
			element.focus();
			return false;
		}
		
    }   // end if
    return true; 
}  // end function
//enter only digits
function check_alpha1(e)/// validation to enter only numbers
{
  if(window.event)
  {
		if((e.keyCode > 1 && e.keyCode < 47 && e.keyCode!=8) ||(e.keyCode > 58 && e.keyCode < 255) ) 
		return false;
  }
  else if(e.which)
   {
		if((e.which > 1 && e.which < 47 && e.which!=8) ||(e.which > 58 && e.which < 255) ) 
		return false;
   }
   return true;
}

                                         
//function to allow only alphanumeric values
function checknum(e)
{
	if(window.event)
	{
		if((e.keyCode>32 && e.keyCode<=64) ||  (e.keyCode>=91 && e.keyCode<=95) 
		|| (e.keyCode==96) || (e.keyCode>=123 && e.keyCode<=127)) 
		return false;
	}//if
	else if(e.which)
	{
		if((e.which>32 && e.which<=64) ||  (e.which>=91 && e.which<=95) 
		|| (e.which==96) || (e.which>=123 && e.which<=127)) 
		return false;
	}//else if
	return true;
}



//Purpose : validate the job posting by home owner
//Page : recv_free_est.php
function fnValidate_PostJob(frm)
{
	var msg = "";
	var ctrl_id = "";
	
	//MainCat
	if(frm.job_cat_id.value == -1)
	{
		msg+= "Please select job category\n";	
		ctrl_id = "job_cat_id";
	}
	
	//SubCat
	if(frm.job_scat_id.value == -1)
	{
		if(msg == "")
			ctrl_id = "job_scat_id";
		msg+= "Please select service required\n";	

	}


	//Project budget
	if(frm.job_proj_budget.value == -1)
	{
		if(msg == "")
			ctrl_id = "job_proj_budget";
		msg+= "Please select project budget\n";	
	}


	//chk whether first name no. is entered or not	
	if(frm.ho_fname.value == ""  || frm.ho_fname.value.length==0)
	{
		if(msg == "")
			ctrl_id = "ho_fname";
		msg+= "Please enter your first name\n";	
	}


	//chk whether last name no. is entered or not	
	if(frm.ho_lname.value == ""  || frm.ho_lname.value.length==0)
	{
		if(msg == "")
			ctrl_id = "ho_lname";
		msg+= "Please enter your last name\n";	
	}


	//chk whether address is entered or not	
	if(frm.txtAddr1.value == ""  || frm.txtAddr1.value.length==0)
	{
		if(msg == "")
			ctrl_id = "txtAddr1";
		msg+= "Please enter your contact address\n";	
	}

	//chk whether city is entered or not	
	if(frm.ho_city.value == ""  || frm.ho_city.value.length==0)
	{
		if(msg == "")
			ctrl_id = "ho_city";
		msg+= "Please enter your city name\n";	
	}
	
	//select State
	if(frm.ho_state.value == -1)
	{
		if(msg == "")
			ctrl_id = "ho_state";
		msg+= "Please select your state\n";	
	}

	//Postal Code
	if(frm.ho_postalcode.value == ""  || frm.ho_postalcode.value == "0" || frm.ho_postalcode.value.length==0)
	{
		if(msg == "")
			ctrl_id = "ho_postalcode";
		msg+= "Please enter postal code\n";	
	}

	//chk whether email is entered or not	
	if(frm.ho_email.value == ""  || frm.ho_email.value.length==0)
	{
		if(msg == "")
			ctrl_id = "ho_email";
		msg+= "Please enter your email address\n";	
	}
	
	//chk whether valid email is entered or not
	if(frm.ho_email.value!="")
	{
		if (!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(frm.ho_email.value)))
		{
			if(msg == "")
				ctrl_id = "ho_email";
			msg+="Invalid Email address!\n";
		}
	}//end of validating email id
	
	//chk whether first phone no. is entered or not	
	if(frm.txtDPhone1.value == "" || frm.txtDPhone1.value == 0 || frm.txtDPhone1.value.length==0)
	{
		if(msg == "")
			ctrl_id = "txtDPhone1";
		msg+= "Please enter area code for your Phone no.\n";	
	}
		
	//chk whether 2nd phone no. is entered or not	
	if(frm.txtDPhone2.value == "" || frm.txtDPhone2.value == 0 || frm.txtDPhone2.value.length==0)
	{
		if(msg == "")
			ctrl_id = "txtDPhone2";
		msg+= "Please enter prefix for your Phone no.\n";	
	}
		
	//chk whether 3rd phone no. is entered or not	
	if(frm.txtDPhone3.value == "" || frm.txtDPhone3.value == 0 || frm.txtDPhone3.value.length==0)
	{
		if(msg == "")
			ctrl_id = "txtDPhone3";
		msg+= "Please enter last 4 digits for your Phone no.\n";	
	}

	//Terms
	if(frm.chkTerms.checked==false)
	{
		if(msg == "")
			ctrl_id = "chkTerms";
		msg+= "Please check the Terms";	
	}
	
	if(msg!= "")
	{
		alert(msg);
		frm.elements[ctrl_id].focus();
		return false;
	}
	else
	{
		frm.est_act.value = "post_job"	
		frm.submit();
	}

}
//to validate URL
function isValidURL(url){ 
    var RegExp = /^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/; 
    if(RegExp.test(url)){ 
        return true; 
    }else{ 
        return false; 
    } 
} 

function isValidEmail_2(element, required)

{

	var VarEmail = element.value;

	if(VarEmail == "")

	{

		var rval = trim(required);

		if (rval.toLowerCase() == "yes" || rval == 1)

		{
			
			alert("Please enter Email Address");

			element.className = "chcolor";
			VarEmail.focus();

			return false;

		}

	}	

	if(VarEmail != "")

	{

		var emailStr = VarEmail;

		 

		var emailPat=/^(.+)@(.+)$/

		var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"

		var validChars="\[^\\s" + specialChars + "\]"

		var firstChars=validChars

		var quotedUser="(\"[^\"]*\")"

		var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/

		var atom="(" + firstChars + validChars + "*" + ")"

		var word="(" + atom + "|" + quotedUser + ")"

		var userPat=new RegExp("^" + word + "(\\." + word + ")*$")

		var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")

		var matchArray=emailStr.match(emailPat)

		if (matchArray==null) 

		{

			 alert("Email address seems to be incorrect (check @ and .'s)");

			 element.className = "chcolor";
			 VarEmail.focus();

			 return false;

		}

		var user=matchArray[1]

		var domain=matchArray[2]

		if (user.match(userPat)==null) 

		{

			alert("The Email doesn't seem to be valid.");

			element.className = "chcolor";
			VarEmail.focus();

			return false;

		}

		var IPArray=domain.match(ipDomainPat)

	

		if (IPArray!=null) 

		{

			for (var i=1;i<=4;i++) 

			{

				if (IPArray[i]>255) 

				{

					 alert("Destination IP address is invalid!");

					 element.className = "chcolor";
					 
					 VarEmail.focus();

					 return false;

				}

			}

		}

		var domainArray=domain.match(domainPat)

		if (domainArray==null) 

		{

			alert("The domain name doesn't seem to be valid.");

			element.className = "chcolor";
			
			VarEmail.focus();

			return false;

		}

		var atomPat=new RegExp(atom,"g");

		var domArr=domain.match(atomPat);

		if (!isNaN(domArr[1]))

		{
			alert("The domain name doesn't seem to be valid and hostname and category (like .gov, .mil, .org).");

			element.className = "chcolor";
			
			VarEmail.focus();

			return false;

		}

		if( domArr[1] != 'gov' &&  domArr[1] != 'mil' && domArr[1] != 'org')
		{
			alert("The domain name doesn't seem to be valid and hostname and category (like .gov, .mil, .org).");

			element.className = "chcolor";
			
			VarEmail.focus();

			return false;

		}
		

		var len=domArr.length;

		if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) 

		{

		   var errStr = "The address must end in a three-letter domain, or two letter country.";

		   document.getElementById("errormsg").innerHTML = errStr;

		   element.className = "chcolor";

		   return false;

		}

		if (domArr[domArr.length-1].length==2 && len<3) 

		{

			var errStr = "This address ends in two characters, which is a country";

			errStr    += " code.  Country codes must be preceded by ";

			errStr	  += "a hostname and category (like gov, mll, org)";

			document.getElementById("errormsg").innerHTML = errStr;

			element.className = "chcolor";

			return false;

		}

		if (domArr[domArr.length-1].length==3 && len<2) 

		{

			 var errStr="This address is missing a hostname!";

			 document.getElementById("errormsg").innerHTML = errStr;

			 element.className = "chcolor";

			 return false;

		}

	}

	return true;

}
//

