//////////////////////////////
// PREVENT SITE FROM BEING FRAMED
//////////////////////////////
if (top.frames.length!=0) {
    if (window.location.href.replace)
        top.location.replace(self.location.href);
    else
        top.location.href=self.document.href;
}



//////////////////////////////
// JAVA POPUP WINDOW //
//////////////////////////////
function remote(page){
    var windowprops = "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=0,width=500,height=300";
    openWindow = window.open(page, "javawindow", windowprops);
}



//////////////////////////////
//         COOKIES           //
//////////////////////////////
function setCookie (name, value, expires, path, domain, secure) {

	if ((name != null) && (value != null))	{
		document.cookie = name + '=' + escape (value)                    +
		((expires == null) ? '' : '; expires=' + expires) +
		((path    == null) ? '' : '; path='    + path)                   +
		((domain  == null) ? '' : '; domain='  + domain)                 +
		((secure  == null) ? '' : '; secure');

		return true;
	}
	return false;
}

function setCookieAndMove(name,value,move) {
	setCookie(name,value);
	window.location=' + move + ';
}

function getCookie (name) {
	var dc    = document.cookie;
  	var cname = name + '=';
  	var begin, end;

  	if (dc.length > 0)
    	if ((begin = dc.indexOf (cname)) != -1)	{
  		begin += cname.length;

      		if ((end = dc.indexOf (';', begin)) == -1)
        	end = dc.length;

      		return unescape (dc.substring (begin, end));
    	}

  	return '';
}

function crushCookie (name, path, domain) {
  if (getCookie (name) != '') {
    document.cookie = name + '='                   +
    ((path   == null) ? '' : '; path='   + path)   +
    ((domain == null) ? '' : '; domain=' + domain) +
    '; expires=' + (new Date (0)).toGMTString ();

    return true;
  }

  return false;
}


//MISC FUNCTIONS
function chkIsDigits(fld, nam, language)
{
	for (var i = 0; i<fld.value.length; i++) {
		var ch = fld.value.charAt(i);
		
		if ((ch < '0' || ch > '9') && (ch != '-' && ch != ' ')) {
			
			if (language == "FR"){
				e.addErrorMsg ('La valeur de  \'' + nam + '\' doit être numérique');
			}
			else{
				e.addErrorMsg ('The \'' + nam + '\' field must be numeric');
			}
			
			e.setError(fld)
			break;
		}
	}
}

function removeSpaces(string) {
	var newString = '';
	for (var i = 0; i < string.length; i++) {
		if (string.charAt(i) != ' ') newString += string.charAt(i);
	}
	return newString;
}

function newEM() {
	e = null;
	e = new ErrorMsgObj ();
	e.initErrMsgs ();
	e.errMsgArray = new Array ();
	e.errMsgIndex = 0;
	e.errMsgAdded = false;

}


function chkEmptyFld (fld, nam, language){
	if (fld.value.length == 0) {
		if (language == "FR"){
			e.addErrorMsg ('La valeur de \'' + nam + '\' est vide');
		}
		else{
			e.addErrorMsg ('The \'' + nam + '\' field is empty');
		}

		e.setError(fld)
		return;
	} 
	else if (fld.value == null){
		if (language == "FR"){
			e.addErrorMsg ('La valeur de \'' + nam + '\' est vide');
		}
		else{
			e.addErrorMsg ('The \'' + nam + '\' field is empty');
		}
		e.setError(fld)
		return;
	} 
	else{
		for (var i=0; i<fld.value.length; i++) {
			var ch = fld.value.charAt(i);
			if (ch != ' ' && ch != '\t') {
				break;
			}
			else {
				if ((i + 1) == fld.value.length){
					if (language == "FR"){
						e.addErrorMsg ('La valeur de \'' + nam + '\' est vide');
					}
					else{
						e.addErrorMsg ('The \'' + nam + '\' field is blank');
					}
					e.setError(fld);
					break;
				}
			}
		}
	}
}

//////////////////////////////
//   EMAIL VALIDATION   //
//////////////////////////////

function chkValidEmail(fld, nam, language) {
	//disclaimer: not RFC822 compliant, and is tweaked to reject addresses known to flunk out of pipeline components.
	var address = fld.value;
	invalidChars = " \"/:,;";
	for (var i=0; i<invalidChars.length; i++) {
		var badChar = invalidChars.charAt(i);
		if (address.indexOf(badChar,0) > -1) {
			// an invalid character was found in the email address
			if (language == "FR"){
				e.addErrorMsg ('L\'adresse de E-mail ne semble pas être valide.');
			}
			else{
				e.addErrorMsg ('E-mail address does not appear to be valid.');
			}
			
			
			e.setError(fld);
			return;
		}
	}

	var atPos = address.indexOf('@',1)
	if (atPos == -1) {
		// we did't find an '@' after the first character, invalid
		if (language == "FR"){
			e.addErrorMsg ('L\'adresse de E-mail ne semble pas être valide.');
		}
		else{
			e.addErrorMsg ('E-mail address does not appear to be valid.');
		}
		e.setError(fld);
		return;
	} 
	else {
		// reject user.@aol.com
		var chX = address.charAt(atPos-1);
		//  the character immediately preceding the '@' 
		if (chX == '.' || chX == ')' || chX == '(' || chX == '<' || chX == '>')	{
			if (language == "FR"){
				e.addErrorMsg ('L\'adresse de E-mail ne semble pas être valide.');
			}
			else{
				e.addErrorMsg ('E-mail address does not appear to be valid.');
			}
			e.setError(fld);
			return;
		}

		// reject user.@aol..com (consecutive dots)
		var multiperiodPos = address.indexOf('..', 0)
		if (multiperiodPos > -1) {
			if (language == "FR"){
				e.addErrorMsg ('L\'adresse de E-mail ne semble pas être valide.');
			}
			else{
				e.addErrorMsg ('E-mail address does not appear to be valid.');
			}
			e.setError(fld);
			return;
		}

		// reject user@.aol.com
		var chZ = address.charAt(atPos+1);
		//  the character immediately following the '@' 
		if (chZ == '.' || chZ == '!' || chZ == '"' || chZ == ')' || chZ == '(' || chZ == '<' || chZ == '>') {
			if (language == "FR"){
				e.addErrorMsg ('L\'adresse de E-mail ne semble pas être valide.');
			}
			else{
				e.addErrorMsg ('E-mail address does not appear to be valid.');
			}
			e.setError(fld);
			return;
		}

		if (address.indexOf('@',atPos+1) > -1)	{
			// there is more than one '@', invalid
			if (language == "FR"){
				e.addErrorMsg ('L\'adresse de E-mail ne semble pas être valide.');
			}
			else{
				e.addErrorMsg ('E-mail address does not appear to be valid.');
			}
			e.setError(fld);
			return;
		}
		else {
			var periodPos = address.indexOf('.', atPos)
			if (periodPos == -1) {
				// didn't find a '.' after the '@', invalid
				if (language == "FR"){
					e.addErrorMsg ('L\'adresse de E-mail ne semble pas être valide.');
				}
				else{
					e.addErrorMsg ('E-mail address does not appear to be valid.');
				}
				e.setError(fld);
				return;
			}
			else {
				if (periodPos +3 > address.length) {
					// there wasn't at least 2 characters after the '.', invalid
					if (language == "FR"){
						e.addErrorMsg ('L\'adresse de E-mail ne semble pas être valide.');
					}
					else{
						e.addErrorMsg ('E-mail address does not appear to be valid.');
					}
					e.setError(fld);
					return;
				}
			}
		}
	}
}


//////////////////////////////
//   SIGNUP FUNCTIONS  //
//////////////////////////////
function checkNameEmail () {
    	var f = document.frmMailingList;
	e.initErrMsgs ();

	chkEmptyFld (f.first_name,      'Name');
	chkEmptyFld (f.e_address,      'E-mail');
	chkValidEmail (f.e_address,     'E-mail');

	if (e.errMsgAdded == true) {
		e.dispErrMsgs();
		e.focusFirst();
		return false;
	}
	else{
		return true;
	}
}

function checkSignup() {

    	var f = document.frmSignup;
	e.initErrMsgs ();

//	chkEmptyFld (f.e_address,      'E-mail');
//	chkValidEmail (f.e_address,     'E-mail');
	chkEmptyFld (f.email,      'E-mail');
	chkValidEmail (f.email,     'E-mail');

	if (e.errMsgAdded == true) {
		e.dispErrMsgs();
		e.focusFirst();
		return false;
	}
	else{
		return true;
	}

}
