/* The following string represents the pattern for matching all special
characters.  We don't want to allow special characters in the address. 
These characters include ( ) < > @ , ; : \ " . [ ] */

var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";

/* The following string represents the range of characters allowed in a 
username or domainname.  It really states which chars aren't allowed.*/

var validChars="\[^\\s" + specialChars + "\]";

/* The following pattern applies if the "user" is a quoted string (in
which case, there are no rules about which characters are allowed
and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
is a legal e-mail address. */

var quotedUser="(\"[^\"]*\")";

/* The following pattern applies for domains that are IP addresses,
rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
e-mail address. NOTE: The square brackets are required. */

var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;

/* The following string represents an atom (basically a series of non-special characters.) */z

var atom=validChars + '+';

/* The following string represents one word in the typical username.
For example, in john.doe@somewhere.com, john and doe are words.
Basically, a word is either an atom or quoted string. */

var word="(" + atom + "|" + quotedUser + ")";

// The following pattern describes the structure of the user

var userPat=new RegExp("^" + word + "(\\." + word + ")*$");

/* The following pattern describes the structure of a normal symbolic
domain, as opposed to ipDomainPat, shown above. */

var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");

/* Finally, let's start trying to figure out if the supplied address is valid. */

/* Begin with the coarse pattern to simply break up user@domain into
different pieces that are easy to analyze. */

var matchArray=emailStr.match(emailPat);

if (matchArray==null) {

/* Too many/few @'s or something; basically, this address doesn't
even fit the general mould of a valid e-mail address. */

alert("Email address seems incorrect (check @ and .'s)");
return false;
}
var user=matchArray[1];
var domain=matchArray[2];

// Start by checking that only basic ASCII characters are in the strings (0-127).

for (i=0; i<user.length; i++) {
if (user.charCodeAt(i)>127) {
alert("Ths username contains invalid characters.");
return false;
   }
}
for (i=0; i<domain.length; i++) {
if (domain.charCodeAt(i)>127) {
alert("Ths domain name contains invalid characters.");
return false;
   }
}

// See if "user" is valid 

if (user.match(userPat)==null) {

// user is not valid

alert("The username doesn't seem to be valid.");
return false;
}

/* if the e-mail address is at an IP address (as opposed to a symbolic
host name) make sure the IP address is valid. */

var IPArray=domain.match(ipDomainPat);
if (IPArray!=null) {

// this is an IP address

for (var i=1;i<=4;i++) {
if (IPArray[i]>255) {
alert("Destination IP address is invalid!");
return false;
   }
}
return true;
}

// Domain is symbolic name.  Check if it's valid.
 
var atomPat=new RegExp("^" + atom + "$");
var domArr=domain.split(".");
var len=domArr.length;
for (i=0;i<len;i++) {
if (domArr[i].search(atomPat)==-1) {
alert("The domain name does not seem to be valid.");
return false;
   }
}

/* domain name seems valid, but now make sure that it ends in a
known top-level domain (like com, edu, gov) or a two-letter word,
representing country (uk, nl), and that there's a hostname preceding 
the domain or country. */

if (checkTLD && domArr[domArr.length-1].length!=2 && 
domArr[domArr.length-1].search(knownDomsPat)==-1) {
alert("The address must end in a well-known domain or two letter " + "country.");
return false;
}

// Make sure there's a host name preceding the domain.

if (len<2) {
alert("This address is missing a hostname!");
return false;
}

// If we've gotten this far, everything's valid!
return true;
}

function valid_character(field,strAllowed)
    {
  	var strCheck = field.value;
  	var flag = 0;
  	for (var i = 0; i < strCheck.length; i++) {
  		if (strAllowed.indexOf(strCheck.substr(i,1)) == -1) {
  			flag = 1
  		}
  	}
  	if(flag==1)
  	{
  		return false;
  	}
  	else
  	return true;

    }


function checkenter(e,token){ 
	//e is event object passed from function invocation
	var characterCode; //literal character code will be stored in this variable

	if(e && e.which){ //if which property of event object is supported (NN4)
		e = e;
		characterCode = e.which; //character code is contained in NN4's which property
	}
	else{
		e = event;
		characterCode = e.keyCode; //character code is contained in IE's keyCode property
	}

	if(characterCode == 13){ //if generated character code is equal to ascii 13 (if enter key)
		if(token == 1) {
			fnvalidatepersonalinfo(); //submit the form
          		return false;
		} else if(token == 2) {
			fnauthenticate(); //submit the form
                      	return false;
		} if(token == 3) {
			fnprocced(); //submit the form
                      	return false;
		}
	}
	else{
		return true;
	}
}

// Radio Button Validation -->
function valButton(btn) {
    var cnt = -1;
    if(btn) {
       for (var i=0; i < btn.length; i++) {
        if (btn[i].checked) {cnt = i; i = btn.length;}
       }
    }   
    if (cnt > -1) return btn[cnt].value;
    else return null;
}
// End --> 

// return the value of the radio button that is checked
// return an empty string if none are checked, or
// there are no radio buttons
function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}



function fnregister() {
if (document.registrationform.firstname.value=="null" || document.registrationform.firstname.value=="") {
	alert('Please enter your first name');
	document.registrationform.firstname.focus();
	return false;
} else if(!(valid_character(document.registrationform.firstname,"abcdefghijklmnopqrstuvwxyz'ABCDEFGHIJKLMNOPQRSTUVWXYZ")) ) {
	alert("Please enter a valid first name");
	document.registrationform.firstname.focus();
	return false;
} else if (document.registrationform.lastname.value=="null" || document.registrationform.lastname.value=="") {
	alert('Please enter your last name');
	document.registrationform.lastname.focus();
	return false;
} else if(!(valid_character(document.registrationform.lastname,"abcdefghijklmnopqrstuvwxyz'ABCDEFGHIJKLMNOPQRSTUVWXYZ")) ) {
	alert("Please enter a valid last name");
	document.registrationform.lastname.focus();
	return false;
} else if (document.registrationform.emailaddress.value=="null" || document.registrationform.emailaddress.value==""){
	alert('Please enter your email address.');
	document.registrationform.emailaddress.focus();
	return false;
} else if(!emailCheck(document.registrationform.emailaddress.value)) {
	document.registrationform.emailaddress.value ==""
	document.registrationform.emailaddress.focus();
	return false;
} else if(document.registrationform.address.value == null || document.registrationform.address.value =="null" || document.registrationform.address.value =="") {
	alert("Please enter your address");
	document.registrationform.address.focus();
	return false;
} else if(document.registrationform.address.value!=null && document.registrationform.address.value!="null" && document.registrationform.address.value!="" && !(valid_character(document.registrationform.address,"1234056789 abcdefghijklmnopqrstuvwxyz'ABCDEFGHIJKLMNOPQRSTUVWXYZ,-")) ) {
	alert("Please enter a valid address");
	document.registrationform.address.focus();
	return false;
} else if(document.registrationform.city.value==null || document.registrationform.city.value=="null" || document.registrationform.city.value=="") {
	alert("Please enter your city");
	document.registrationform.city.focus();
	return false;
} else if(document.registrationform.city.value!=null && document.registrationform.city.value!="null" && document.registrationform.city.value!="" && !(valid_character(document.registrationform.city,"abcdefghijklmnopqrstuvwxyz'ABCDEFGHIJKLMNOPQRSTUVWXYZ")) ) {
	alert("Please enter a valid city");
	document.registrationform.city.focus();
	return false;
} else if(document.registrationform.state && document.registrationform.state.value==null || document.registrationform.state.value=="null" || document.registrationform.state.value=="" || document.registrationform.state.value=="-1") {
	alert("Please select your state");
	document.registrationform.statename.focus();
	return false;
} else if((document.registrationform.country.value=="US" && document.registrationform.state.value=="-1" && document.registrationform.statename) && (document.registrationform.statename.value==null || document.registrationform.statename.value=="null" || document.registrationform.statename.value=="")) {
	alert("Please enter your state");
	document.registrationform.statename.focus();
	return false;
} else if(document.registrationform.statename && document.registrationform.statename.value!=null && document.registrationform.statename.value!="null" && document.registrationform.statename.value!="" && !(valid_character(document.registrationform.statename,"abcdefghijklmnopqrstuvwxyz'ABCDEFGHIJKLMNOPQRSTUVWXYZ")) ) {
	alert("Please enter a valid state");
	document.registrationform.statename.focus();
	return false;
} else if(document.registrationform.zip.value==null || document.registrationform.zip.value=="null" && document.registrationform.zip.value=="") {
	alert("Please enter your zip code");
	document.registrationform.zip.focus();
	return false;
} else if(document.registrationform.zip.value!=null && document.registrationform.zip.value!="null" && document.registrationform.zip.value!="" && !(valid_character(document.registrationform.zip,"0123456789")) ) {
	alert("Please enter a valid zip code");
	document.registrationform.zip.focus();
	return false;
} else if(document.registrationform.phone.value!=null && document.registrationform.phone.value!="null" && document.registrationform.phone.value!="" && !(valid_character(document.registrationform.phone,"0123456789")) ) {
	alert("Please enter a valid phone number");
	document.registrationform.phone.focus();
	return false;
}
	document.registrationform.action="/register.do";
	document.registrationform.method="post";
	document.registrationform.submit();
}


function showState() {
    if(document.registrationform.country.value=="US") {
        if(navigator.appName.indexOf("Netscape")>-1) {   
            document.getElementById('spnShow').style.display='inline';
            document.getElementById('spnShow1').style.display='none';
        }
        else {
            document.all.spnShow.style.display ='inline';
            document.all.spnShow1.style.display ='none';
        }
    } else {
        if(navigator.appName.indexOf("Netscape")>-1) {   
            document.getElementById('spnShow').style.display='none';
            document.getElementById('spnShow1').style.display='inline';
        } else {
            document.all.spnShow.style.display ='none';
            document.all.spnShow1.style.display ='inline';
        }
    }
}

function fnnewsletter() {
	if (document.newsform.emailid.value=="null" || document.newsform.emailid.value==""){
		alert('Please enter your email address.');
		document.newsform.emailid.focus();
		return false;
	} else if(!emailCheck(document.newsform.emailid.value)) {
		document.newsform.emailid.value ==""
		document.newsform.emailid.focus();
		return false;
	}
	document.newsform.action="enewsletter.jsp";
	document.newsform.method="post";
	document.newsform.submit();
}

function fnsearch() {
        if (document.newsform.terms.value=="null" || document.newsform.terms.value==""){
                alert('Please enter a term for your search.');
                document.newsform.terms.focus();
                return false;
        }
        document.newsform.action="http://"+window.location.host+"/dyna/search.jsp";
        document.newsform.method="post";
        document.newsform.submit();
}

function pagecounters(pagenumber, keyword) {
	document.searchform.PAGENUMBER.value = pagenumber;
	document.searchform.KEYWORD.value = keyword;
	document.searchform.action="http://"+window.location.host+"/dyna/search.jsp";
        document.searchform.method="post";
        document.searchform.submit();
}

function setFocus(fieldname) {
	if (fieldname.name == "terms" && window.event &&  window.event.keyCode == 13) {
		if (fnsearch()) {
			return true;
		} else {
			return false;
		}	
	} else if (fieldname.name == "emailid" && window.event &&  window.event.keyCode == 13){
		return fnnewsletter();
	}
}
