// VARIABLE DECLARATIONS

var digits = "0123456789";

var lowercaseLetters = "abcdefghijklmnopqrstuvwxyz"

var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

letters = lowercaseLetters + uppercaseLetters


var whitespace = " \t\n\r";


var decimalPointDelimiter = "."


var phoneNumberDelimiters = "0123456789()-+/ " + "\\";


var validZIPCodeChars = digits + letters + "()- "


var mPrefix = "Please enter "
var mSuffix = "."


var rPrefix = "Please ensure the string length in "
var rSuffix = " does not exceed the range "
var rRange 


var irPrefix = "The Value entered in "
var irSuffix = " should be between "
var irInffix = " and " 



var sName = "Name"
var slName = "Last Name"
var sUserAdd = "User Address"
var sUserCountry = "User Country"
var sUserState = "User State"
var sUserCity = "User City"
var sUserLocality = "User Locality"
var sUserEmail = "User Email"
var sUserZip = "User Zip"
var sUserPhone = "User Phone Number"
var sServiceType = "Service Type"

var sContactName = "Contact Person Name"
var sContactAdd = "Contact Person Address"
var sContactCountry = "Contact Person Country"
var sContactState = "Contact Person State"
var sContactCity = "Contact Person City"
var sContactLocality = "Contact Person Locality"
var sContactEmail = "Contact Person Email"
var sContactZip = "Contact Person Zip"
var sContactPhone = "Contact Phone Number"
var sContactFax = "Contact Fax Number"
var sContactMobile = "Contact Mobile Number"

var sBranchAdd = "Branch Address"
var sBranchCountry = "Country"
var sBranchState = "State"
var sBranchCity = "City"
var sBranchLocality = "Branch Locality"
var sBranchEmail = "Branch Email"
var sBranchZip = "Branch Zip"
var sBranchPhone = " Phone Number"
var sBranchFax = "Branch Fax Number"
var sBranchMobile = "Branch Mobile Number"

var sPropertyName = "Property Name"
var sPropertyAdd = "Property Address"
var sPropertyCountry = "Property Country"
var sPropertyState = "Property State"
var sPropertyCity = "Property City"
var sPropertyLocality = "Property Locality"
var sPropertyZip = "Property Zip"


var iStateCode = "This field must be a valid two character U.S. state abbreviation (like CA for California). Please reenter it now."
var iZIPCode = "Please enter a valid Zip/Pin code."
var iPhoneFaxMobile = "Please enter a valid Phone No. e.g., 91-80-2275336.  Please make sure not to use a comma (i.e. ‘,’) as a delimiter"
var iFax = "Please enter a valid Fax No. e.g., 91-80-2275336"
var iEmail = "This field must be a valid email address (like foo@bar.com). Please reenter it now."


var pEntryPrompt = "Please enter a "
var pStateCode = "2 character code (like CA)."
var pEmail = "valid email address (like foo@bar.com)."


var defaultEmptyOK = false



function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}



function isWhitespace (s)

{   var i;
	

    if (isEmpty(s)) return true;

    for (i = 0; i < s.length; i++)
    {   

        var c = s.charAt(i);

        if (whitespace.indexOf(c) == -1) return false;
    }


    return true;
}




function stripCharsInBag (s, bag)

{   var i;
    var returnString = "";

    for (i = 0; i < s.length; i++)
    {   

        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }

    return returnString;
}

function stripCharsNotInBag (s, bag)

{   var i;
    var returnString = "";


    for (i = 0; i < s.length; i++)
    {   

        var c = s.charAt(i);
        if (bag.indexOf(c) != -1) returnString += c;
    }

    return returnString;
}

function stripWhitespace (s)
{   return stripCharsInBag (s, whitespace)
}



function charInString (c, s)
{   for (i = 0; i < s.length; i++)
    {   if (s.charAt(i) == c) return true;
    }
    return false
}



function stripInitialWhitespace (s)

{   var i = 0;

    while ((i < s.length) && charInString (s.charAt(i), whitespace))
       i++;
    
    return s.substring (i, s.length);
}


function isLetter (c)
{   return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) )
}


function isDigit (c)
{   return ((c >= "0") && (c <= "9"))
}


function isLetterOrDigit (c)
{   return (isLetter(c) || isDigit(c))
}



function isInteger (s)

{   var i;

    if (isEmpty(s)) 
       if (isInteger.arguments.length == 1) return defaultEmptyOK;
       else return (isInteger.arguments[1] == true);

    for (i = 0; i < s.length; i++)
    {   

        var c = s.charAt(i);

        if (!isDigit(c)) return false;
    }

    return true;
}

function isPositiveInteger (s)
{   var secondArg = defaultEmptyOK;

    if (isPositiveInteger.arguments.length > 1)
        secondArg = isPositiveInteger.arguments[1];

    return (isSignedInteger(s, secondArg)
         && ( (isEmpty(s) && secondArg)  || (parseInt (s) > 0) ) );
}

function isNonnegativeInteger (s)
{   var secondArg = defaultEmptyOK;

    if (isNonnegativeInteger.arguments.length > 1)
        secondArg = isNonnegativeInteger.arguments[1];

    return (isSignedInteger(s, secondArg)
         && ( (isEmpty(s) && secondArg)  || (parseInt (s) >= 0) ) );
}



function isFloat (s)

{   var i;
    var seenDecimalPoint = false;

    if (isEmpty(s)) 
       if (isFloat.arguments.length == 1) return defaultEmptyOK;
       else return (isFloat.arguments[1] == true);

    if (s == decimalPointDelimiter) return false;


    for (i = 0; i < s.length; i++)
    {   

        var c = s.charAt(i);

        if ((c == decimalPointDelimiter) && !seenDecimalPoint) seenDecimalPoint = true;
        else if (!isDigit(c)) return false;
    }


    return true;
}



function isAlphabetic (s)

{   var i;
  
    if (isEmpty(s)) 
       if (isAlphabetic.arguments.length == 1) return defaultEmptyOK;
       else return (isAlphabetic.arguments[1] == true);


    for (i = 0; i < s.length; i++)
    {   

        var c = s.charAt(i);
		if (!isLetter(c))
        return false;
    }
	

    return true;
}

function isAlphanumeric (s)

{   var i;

    if (isEmpty(s)) 
       if (isAlphanumeric.arguments.length == 1) return defaultEmptyOK;
       else return (isAlphanumeric.arguments[1] == true);

    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);

        if (! (isLetter(c) || isDigit(c) ) )
        return false;
    }
    return true;
}



function isEmail (s)
{   if (isEmpty(s)) 
       if (isEmail.arguments.length == 1) return defaultEmptyOK;
       else return (isEmail.arguments[1] == true);
   

    if (isWhitespace(s)) return false;
    
    var i = 1;
    var sLength = s.length;


    while ((i < sLength) && (s.charAt(i) != "@"))
    { i++
    }

    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;


    while ((i < sLength) && (s.charAt(i) != "."))
    { i++
    }
	    while ((i < sLength) && (s.charAt(i) != "."))
		    { i++
		    }

	    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
	   else return true;
}


function isNumeric(s)
{ 
	alert(s) ; 
	 if (isEmpty(s)) 
       if (isNumeric.arguments.length == 1) return defaultEmptyOK;
       else return (isNumeric.arguments[1] == true);
    if (isWhitespace(s)) return false;    
    var count = 0; 
    while (count < s.Length)    
    {
		if (isInteger(s.charAt(count)) || s.charAt(count) == "." )
		
			return true ; 
		else 
			return false ; 
		
		count++ ; 	
		
    }
    
	
}


function checkNumeric (theField,length,emptyOK)
{ 
	if (isFloat(theField.value) == true)  
	{
		if (theField.length > length )
			return warnRange(theField, 1, length) ; 
		else 
			return true ; 
	}
	return true; 
	
}


function isIntegerInRange (s, a, b)
{  
	 if (isEmpty(s)) 
       if (isIntegerInRange.arguments.length == 3) return defaultEmptyOK;
    if (!isInteger(s, false)) return false;
    var num = parseInt (s);
    return ((num >= a) && (num <= b));
}


function prompt (s)
{   window.status = s
}


function promptEntry (s)
{   window.status = pEntryPrompt + s
}


function warnEmpty (theField, s)
{   theField.focus(); 
    alert(mPrefix + s + mSuffix); 
    return false; 
}


function warnInvalid (theField, s)
{   
	theField.focus()
    theField.select()
    alert(s)
    return false
}

function warnRange (theField, s, r)
{   theField.focus()
    theField.select()
    alert(rPrefix + s + rSuffix + r)
    return false
}

function warnIntegerRange (theField, s, r1,r2)
{   theField.focus()
    theField.select()
    alert(irPrefix + s + irSuffix + r1 + irInffix + r2)
    return false
}

function trim(str){
	str1 = "";
	for(i=0; i< str.length; i++) {
		chr = str.charAt(i)
		if (chr != " ") 
		{
			str1 = str1 + chr;
		}
	}
	return str1;
}

function checkString (theField, s,length, emptyOK)
{

 if (checkString.arguments.length == 2) 
		emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    if (theField.value.length > length) 
       return warnRange (theField,s,length);
    if (isWhitespace(theField.value) && (emptyOK != true)) 
       return warnEmpty (theField, s);
    else return true;
}

function checkaddrfield(addr_val)
{
if(addr_val.value=="")
{
alert("Please Enter the Address");
return false;
}
else
if(addr_val.length>255)
{
alert("Address cannot be greater than 255 characters");
return false;
}
else
return true;
}

function checkEmail (theField,length,emptyOK)
{   
	if (checkEmail.arguments.length == 1) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    else if (!isEmail(theField.value, false)) 
       return warnInvalid (theField, iEmail);
    else if (theField.value > length)
		return warnRange (theField,s,length);
    else return true;
}




function getRadioButtonValue (radio)
{   for (var i = 0; i < radio.length; i++)
    {   if (radio[i].checked) { break }
    }

    return radio[i].value
}


function PasswordValidation(thePasswdField , againPasswdField){
	if (thePasswdField.value != againPasswdField.value){
		alert("The Passwords dont match, please enter them properly");
		againPasswdField.focus;
		return false;
	}
	return checkString(thePasswdField,"password",10);
	return checkString(againPasswdField,"Password Again",10);
	return true
}

function CSCLValidation(theSelectField , theOtherField,length ,s ){
	if ((theSelectField.options[theSelectField.options.selectedIndex].value == "Select" ) && theOtherField.value=="")
		return warnEmpty (theOtherField, s);
	else if ((theSelectField.options[theSelectField.options.selectedIndex].value != "Select" ) && theOtherField.value!="" && !isWhitespace(theOtherField.value))	
		return warnInvalid(theOtherField, s);
	else if ((theSelectField.options[theSelectField.options.selectedIndex].value == "Select" ) && theOtherField.value != "")
		{	
			if (theOtherField.value.length > length)
			{
				return warnRange(theOtherField,s,length);
			}
			
			else return true;	 
		}		
	else return true;	
}

function checkPhoneNumber(theField,s)
{
 
	if (theField.value=="") 
	{		
		return warnInvalid(theField,"Enter "+s)
	}
	else
	{
	var strNotValid = stripCharsInBag(theField.value , phoneNumberDelimiters)	
	if (strNotValid.length != 0){
		return warnInvalid(theField,iPhoneFaxMobile);
		}
	else if(theField.value.length > 30)
		return warnRange (theField,s,30);
	else
	
		return true;	
	}
}

function checkFaxNumber(theField,s)
{
	var strNotValid = stripCharsInBag(theField.value , phoneNumberDelimiters)
	if (strNotValid.length != 0){
		return warnInvalid(theField,iFax);
		}
	else if(theField.value.length > 30)
		return warnRange (theField,s,30);
	else
		return true;	
}

function checkZip(theField,s)
{
	var strNotValid = stripCharsInBag(theField.value , validZIPCodeChars)
	if (strNotValid.length != 0){
		return warnInvalid(theField,iZIPCode);
		}
	if(theField.value.length > 12)
		return warnRange (theField,s,12);
	else
		return true;	

}

function LogoValidation(theField,radioField) {
	var Logo = stripInitialWhitespace(theField.value)
	if (radioField.value != g && Logo != "")
		return warnInvalid(theField,"Cant post a logo for Silver Listing type");

}

function checkSelect(theField,s){
	if (theField.value == "Select")
		return warnEmpty(theField,s);
	else 
		return true;

}
function fnImageType(s) 
{
	
	var str = s.value ; 
	var strFiletype = ""; 
	var counter = 0 ; 
	var strDot ; 
	
	for (count=0; count < str.length ; count++)
	{
		if (str.charAt(count) == "." )
		{
			counter = count + 1 ; 
			strDot = true ; 
		}
		if (strDot == true)
		{
			for (counter; counter<str.length; counter++)
			{
				strFiletype = strFiletype + str.charAt(counter); 
			}	
		}			
	}
	if (strDot == true)
	{
		if ((strFiletype.toLowerCase() == 'jpeg') || (strFiletype.toLowerCase() == 'jpg') || (strFiletype.toLowerCase() == 'gif'))
			return true ; 
		else 
		{
			alert("Please enter a file of type 'jpg' or 'jpeg' or 'gif' only") ; 
			s.focus() ; 
		}
	}
	else
		return true ; 	
	
}

function checkInteger(theField,range1,range2,s,emptyOK)
{
	if (checkInteger.arguments.length == 4) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    else if ((emptyOK == false) && (isEmpty(theField.value))) 
		return warnEmpty(theField,s);
    if (!isIntegerInRange(theField.value,range1,range2,false)) 
    {
       return warnIntegerRange (theField, s, range1,range2);
    }   
    else return true;
	
}

function checkRange(theField,length,emptyOK)
{
	if (checkRange.arguments.length == 2) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    else if ((emptyOK == false) && (isEmpty(theField.value))) 
		return warnEmpty(theField,s);
    if (theField.value.length > length) 
    {
       return warnRange (theField,s,length);
    }   
    else return true;
	
}

function ImageValidate(theField,s){
	var arrFileExtension,strFileExtension
	var arrFileName,strFileName
	arrFileExtension=(theField.value).split(".")
	strFileExtension=arrFileExtension[arrFileExtension.length-1]
			
	if(strFileExtension=="gif" ||strFileExtension=="jpg" ||strFileExtension=="bmp" || strFileExtension==""){
		//getting the file name and storing it into hidden variables
				
		arrFileName=(theField.value).split("\\")
		strFileName=arrFileName[arrFileName.length-1]
				
		return true;
	}
	else
		return warnInvalid (theField, "Please ensure that the image in " + s + " a valid jpeg, gif or a bmp");
				
}
