/******************************************
Module name : Js Function file
Parent module : None
Date created : 
Date last modified : 
Author :  
Last modified by : 
Comments : The functions_hm.js file contains various functions related to the web directory project.
******************************************/	

/******************************************
Function name : getMasterString
Return type : boolean
Date created : 
Date last modified :
Author : 
Last modified by : 
Comments : Function will return the main string
User instruction : getMasterString()
******************************************/

function getMasterString()
{
	return "Sorry, we can not complete your request.\nKindly provide us the missing or incorrect information enclosed below.\n";
}


/******************************************
Function name : enableServices
Return type : 
Date created : 
Date last modified :
Author : 
Last modified by : 
Comments : Enable Services Listbox iin Search
User instruction : enableServices(elementID)
******************************************/
function enableServices(elementID)
{
	document.getElementById(elementID).disabled = false;
}


/******************************************
Function name : numbersonly
Return type : 
Date created : 
Date last modified :
Author : 
Last modified by : 
Comments : This Function is Used to allow the Textfield to enter only NUMERIC value
User instruction : numbersonly(myfield, e, dec)
******************************************/
function numbersonly(myfield, e, dec)
{
var key;
var keychar;

if (window.event)
   key = window.event.keyCode;
else if (e)
   key = e.which;
else
   return true;
keychar = String.fromCharCode(key);

// control keys
if ((key==null) || (key==0) || (key==8) || 
    (key==9) || (key==13) || (key==27) )
   return true;

// numbers
else if ((("0123456789").indexOf(keychar) > -1))
   return true;

// decimal point jump
else if (dec && (keychar == "."))
   {
   myfield.form.elements[dec].focus();
   return false;
   }
else
   return false;
}



/*****************************
Function name : validateSearch
Return type : none
Date created : 
Date last modified : 
Author : 
Last modified by : 
Comments : This function is used to validate search form
User instruction : validateSearch(formname)
************************************/

function validateSearch(formname)
{
	var ServiceValue = document.getElementById('service').value;
	var ZipCode = document.getElementById('zip').value;

	if(ServiceValue == '')
	{
		alert(getMasterString() + '\n - You must select any service');
		return false;
	}
	else if(ZipCode == '')
	{
		alert(getMasterString() + '\n - You must enter Zip Code.');
		return false;	
	}
	else
	{
		return true;
	}

}




/*****************************
Function name : validateUserLoginTop
Return type : none
Date created : 
Date last modified : 
Author : 
Last modified by : 
Comments : This function is used to validate the user login form.
User instruction : validateUserLoginTop(formname)
************************************/
function validateUserLoginTop(formname)
{ 
/////*
	if(document.getElementById('frmLoginUser').value!='email@email.com' && document.getElementById('frmLoginPassword').value!='111111')
	{
		if(validateForm(document.getElementById(formname).id,'frmLoginUser','Username (email)','RisEmail','frmLoginPassword','Password','RisSpace'))
		{	
			document.forms.frmMemberLogin.action = "login_action.php";
			document.forms.frmMemberLogin.submit();
			return true;
		} 
		else 
		{
			return false;
		}
	}
	else
	{
		alert(getMasterString() + '\n - You must enter User Name and Password.');
		return false;
	}
	
	////*/
	
	//alert('hai');
	//return false;
}



/*****************************
Function name : validateZipcodeChange
Return type : none
Date created : 
Date last modified : 
Author : 
Last modified by : 
Comments : This function is used to validate search form
User instruction : validateZipcodeChange(formname)
************************************/

function validateZipcodeChange()
{
	var ZipCode = document.getElementById('frmNewLocation').value;

	if(ZipCode == '')
	{
		alert(getMasterString() + '\n - You must enter Zip Code.');
		return false;	
	}
	else
	{
		//document.forms.frmSearchForm.action = "index.php?loc="+document.getElementById('frmNewLocation').value;
		document.forms.frmSearchForm.action = "index.php"
		document.forms.frmSearchForm.submit();
		return true;
	}

}





























///////////////////////////////////////



/******************************************

Function name : stripHTML
Return type : string
Date created : 
Date last modified :
Author : Vivek Avasthi
Last modified by : 
Comments : Function will return the main string after removing HTML tags
User instruction : stripHTML(str)
*****************************************/
function stripHTML(str){
      var re= /<\S[^><]*>(&nbsp;)*/g ;
      return str.replace(re, "") ;
}

/******************************************
Function name : ltrim
Return type : string
Date created : 
Date last modified : 
Author : 
Last modified by : 
Comments : Function will return the main string after removing white spaces from the left
User instruction : ltrim(str)
******************************************/
function ltrim(str) { 
	for(var k = 0; k < str.length && isWhitespace(str.charAt(k)); k++);
	return str.substring(k, str.length);
}

/******************************************
Function name : rtrim
Return type : string
Date created : 
Date last modified : 
Author : 
Last modified by : 
Comments : Function will return the main string after removing white spaces from the right
User instruction : rtrim(str)
******************************************/
function rtrim(str) {
	for(var j=str.length-1; j>=0 && isWhitespace(str.charAt(j)) ; j--) ;
	return str.substring(0,j+1);
}
/******************************************
Function name : trim
Return type : string
Date created : 
Date last modified : 
Author : 
Last modified by : 
Comments : Function will return the main string after removing white spaces from the right and left of the main string
User instruction : trim(str)
******************************************/
function trim(str) {
	return ltrim(rtrim(str));
}

/******************************************
Function name : isWhitespace
Return type : integer
Date created : 
Date last modified : 
Author : 
Last modified by : 
Comments : Function will return the index of white space encounter in the string.
User instruction : isWhitespace(charToCheck)
******************************************/
function isWhitespace(charToCheck) {
	var whitespaceChars = " \t\n\r\f";
	return (whitespaceChars.indexOf(charToCheck) != -1);
}


/******************************************

Function name : validator

Return type : boolean

Date created : 5th January 2008

Date last modified : 5th January 2008

Author : Vivek Avasthi

Last modified by : Vivek Avasthi

Comments : Function will return the true or error message after validating checkboxes

User instruction : validator(btnType)

******************************************/

function validateForm() 

{ 

	var i,p,q,nm,test,num,min,max,errors='',args=validateForm.arguments;

	j=0;

	//	/^([-a-zA-Z0-9._]+@[-a-zA-Z0-9.]+(\.[-a-zA-Z0-9]+)+)$/;

	var regEmail = /^[0-9a-z]+(([\.\-_])[0-9a-z]+)*@[0-9a-z]+(([\.\-])[0-9a-z-]+)*\.[a-z]{2,4}$/;

	var regBlank = /[^\s]/;

	//var regSpace = /[\s]/;

	var regSpace = /^([a-zA-Z0-9-/_!#@]+)$/;

	//var regAlphaNum = /^([a-zA-Z0-9-/_ :;#!@\n\r.,$*&%?^~`=+(){}\[\]\"\'\\]+)$/;

	var regAlphaNum = /^([a-zA-Z0-9_#@!]+)$/;

	 var regDate = /^([0-9_]+-[0-9][0-9]+-[0-9][0-9]+)$/; 

   var regChar = /^([a-zA-Z]+)$/;

	

	//alert (validateForm.arguments[1].name);

	//alert("sss--->"+document.forms[""+args[0]].elements[""+args[0]].value);

	for (i=1; i<(args.length-2); i+=3) 

	{	

		mesg=args[i+1];

		test=args[i+2]; 

		val=document.forms[""+args[0]].elements[""+args[i]];

		

		    if (val) 

			{	

				nm=mesg; 

				noVal = val;

				val = val.value;

				

			if(test=='BLNK')

			{

			 if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';

			 if (val<0) errors+='- '+nm+' must contain a number.\n';

			 }			

			 else if(test=='CHKURL' && val !="")

				{

					p=val.indexOf('http://');

					s=val.indexOf('.');

			        if (p<0 || p==(val.length-1))

					{

						errors+='- '+nm+' must be valid URL e.g. http://www.abc.com\n';

		

					}

					else if(s<p || s==(val.length-1))

					{

						errors+='- '+nm+' must be valid URL e.g. http://www.abc.com\n';

					}



				}

			 else

				{

			if(regBlank.test(val))

			{

				if(test.indexOf('isEqual')!=-1)

				{

					result = trim(val);



				if(result.length==0){

										

				errors += '- '+nm+' is required.\n'; 

				}else{

					

					equal_obj_val = test.substring(8,test.indexOf(":"));

					mesg_string =test.substring((test.indexOf(":")+1));



					if(val != document.forms[""+args[0]].elements[""+equal_obj_val].value)

					{ 

						errors+='- '+nm+' and '+mesg_string+' must be same.\n';

					}

				}

				}

				else if(test.indexOf('isAlphaNum')!=-1)

				{

				result = trim(val);

				if(result.length==0){

				errors += '- '+nm+' is required.\n'; 

				}else{

					if(!regAlphaNum.test(val))

					{

						errors += '- '+nm+' is not valid.\n';

						//errors+='- '+nm+': Only Alpha Numeric and "_ , . - ! @ # () {} [] " coma,  single cots and Chars Allowed.\n';

					}

				}

				

				}

				else if(test.indexOf('isSpace')!=-1)

				{

				result = trim(val);

				

				if(result.length==0)

				{

					errors += '- '+nm+' is required.\n'; 

				}

				else

				{

					if(!regSpace.test(val))

					{

						errors+='- '+nm+': Only Alpha Numeric and "_ - ! @ # " Allowed.\n';

						//errors += '- '+nm+' is not valid.\n';

					}

				}

				}

				else if (test.indexOf('isDate')!=-1) 

				{ 

					p=val.indexOf('-');

			       // alert(test.indexOf('isDate'));

			       	var sliptdate	= val.split("-");

					

					/*******************Added by rupesh Date is not before current date and month*********************/

					var today=new Date(),TY=today.getFullYear(),TM=today.getMonth(),TD=today.getDate(),TH=today.getHours();

					TM+=1;			

					if(TM<=9) 

					{	

						TM='0'+TM;

					}

					if(TD<=9)

					{

						TD='0'+TD;

					}

					/*******************Added by rupesh*********************/

					

					var sY=sliptdate[0];

					var sM=sliptdate[1];

					var sD=sliptdate[2];

					

					/*******************Added by rupesh*********************/

					//alert(TM);

					if(sY<TY ) {

						

						errors+='- '+nm+' should be greater than current date.\n';

					}

					else if(sM==TM && sD<TD && sY==TY) { 



						errors+='- '+nm+' should be greater than current date.\n';

						

					}

					else if(sM<TM && sY==TY) { 
						errors+='- '+nm+' should be greater than current date.\n';
					}
			     }

				else if (test.indexOf('isEmail')!=-1) 
				{ 
					p=val.indexOf('@');
					s=val.indexOf('.');
			        if (p<1 || p==(val.length-1))
					{
						errors+='- '+nm+' must contain an e-mail Address.\n';
					}
					else if(!regEmail.test(val))
					{
						errors+='- '+nm+' must contain a valid e-mail Address.\n';
					}
			     }
				else if (test.indexOf('isUrl')!=-1) 
				{ 
					p=val.indexOf('http://');
					s=val.indexOf('.');
			        if (p<0 || p==(val.length-1))
					{
						errors+='- '+nm+' must be valid URL e.g. http://www.abc.com\n';
					}
					else if(s<p || s==(val.length-1))
					{
						errors+='- '+nm+' must be valid URL e.g. http://www.abc.com\n';
					}
			     }
				 else if(test.indexOf('isMp3')!=-1)
				 {
					function reverse(val) 
					{	
						var length = val.length;
						var letters = new Array(length);
						var letters2 = new Array(length);
						var backword = "";

						for (i=0; i<=length-1; i++) 
						{
							letters[i] = val.substring(i, i+1);
						}
						f = 0

						for (j=i-1; j>=0; j--) 

						{

							letters2[f] = letters[j];

							f++;

						}

						for (h=0; h<=letters2.length-1; h++) 

						{

							backword +=letters2[h];

						}

					 	return backword;

					}

					var back = reverse(val);

					var ValExt	= back.split(".");

					var ValExt = reverse(ValExt[0]);

					

					if (ValExt == "mp3" || ValExt == "MP3") 

					{

						flag="yes";

					} 

					else 

					{

						flag="no";						

					} 

					if(flag=="no")

					{

						errors+='- '+nm+' must be (mp3).\n';						

					}

				 

				 }

				 else if (test.indexOf('isChar')!=-1) 

				 { 

					var first_char;

					

					if(val.match(regChar)==null)

					{

					 	errors+='- '+nm+' must contain a character.\n';

					}

			     }

				 else if(test.indexOf('isCheckbox')!=-1)//Check is check box is not checked generate error

				{	

					var valueCheckbox = noVal.checked;

					if(!valueCheckbox)

					{

						errors+='- '+'You must accept Privacy Policy and Terms of Use.\n';

					}

				}

	   			 else if (test!='R' || test=='Numbers') 

				 {

				 result = trim(val);

					if(result.length==0){

						

						if(errors.indexOf('Phone') == -1)

					errors += '- '+nm+' is required.\n'; 

					}

					

				    if (isNaN(val)) 

					{

					 if(errors.indexOf('Phone') == -1)

					 errors+='- '+nm+' must contain a number.\n';

					}

					else

					{

					if(test=='Numbers' && !isNaN(val))

					{

					var i1;

					var num1=0;

						for (i1 = 0; i1 < val.length; i1++)

						{   

							// Check that current character is number.

							var c = val.charAt(i1);

							if (((c < "0") || (c > "9"))) num1=1;

						}

						if(num1==1)

						{

							if(errors.indexOf('Phone') == -1)

							errors+='- '+nm+' can only contain numbers.\n';

						}

					}

				 }

					if (test.indexOf('inRange') != -1) 

					{ num = parseFloat(val);

						p=test.indexOf(':');

						min=test.substring(8,p); 

						max=test.substring(p+1);

						

						if (num<min || max<num) 

							if(min==max)

							{

							  if(min==1 && max==1 & num==0)

								{

							errors+='- '+nm+' should  be more than '+min+'.\n';

							    }

								if(min!=1 && max!=1 && min==max)

								{

							errors+='- '+nm+' should not be more than '+min+'.\n';

								}

							}				

							

						else

						{

						errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';

						}

					} 

					if (val.indexOf('-') != -1) 

					{ 

						errors='- '+nm+' must contain a number.\n';

					} 

					if (val.indexOf('+') != -1) 

					{ 

						errors='- '+nm+' must contain a number.\n';

					}

					

				}else if (test.charAt(0)=='R')

				{

				result = trim(val);

				if(result.length==0){

					

				errors += '- '+nm+' is required.\n'; 

				}

				} 

			}

			else if (test.charAt(0) == 'R' || test=='Numbers'){

				if(errors.indexOf('Phone') == -1 && test=='Numbers')

				{

				errors += '- '+nm+' is required.\n'; 

				}

				if (test.charAt(0) == 'R')

				{					

				errors += '- '+nm+' is required.\n'; 	

				}

			}

		}

			}

		if(errors !="")

		{	if(j<=0)

			{

				focusitem = document.forms[""+args[0]].elements[""+args[i]];

				j++;

			}	

		}

	} 

	

  if (errors)

  {

	var MasterString = getMasterString();

	alert(MasterString+'\n'+errors);

	focusitem.focus();

	return false;

   }

   else

	return true;



  document.MM_returnValue = (errors == '');

}

