
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


function replace(str, str1, str2) {
//replace str1 with str2 in original str

	var i;
	var ch;
	var ret = "";

	for (i = 0; i < str.length; i++) {
		ch = str.substring(i, i + 1);
		if (ch == str1) {
			ret = ret + str2;
		}
		else {
			ret = ret + ch;
		}
	}

	return ret;

} //replace()


function reverse(str) {

	var i;
	var ch;
	var ret = "";

	for (i = str.length - 1; i > -1; i--) {
		ch = str.substring(i, i + 1);
		ret = ret + ch;
	}

	return ret;

} //reverse()


function ltrim(str) {

	var nonspace = false;
	var i;
	var ch;
	var ret = "";

	for (i = 0; i < str.length; i++) {
		ch = str.substring(i, i + 1);
		if (ch != " ") {
			ret = ret + ch;
			nonspace = true;
		}
		else {
			if (nonspace) {
				ret = ret + ch;
			}
		}
	}
	
	return ret;

} //ltrim()


function rtrim(str) {
	return reverse(ltrim(reverse(str)));
} //rtrim()


function trim(str) {
	return ltrim(rtrim(str));
} //trim()


function isLetter(c) {
   var n = c.charCodeAt(0);
   if ((n >= 65 && n <= 90) || (n >= 97 && n <= 122)) {
      return true;
   }
   else {
      return false;
   }
} //isLetter()


function isDigit(c) {
   var n = c.charCodeAt(0);
   if (n >= 48 && n <= 57) {
      return true;
   }
   else {
      return false;
   }
} //isDigit()


function isUSACanadaZip(str) {
	var ch;
	var ret = true;
	
	//check length 
	if (str.length != 5 && str.length != 9 && str.length != 10 && str.length != 7) {
		return false;
	}
	
	//check content
	for (var i = 0; i < str.length; i++) {
		ch = str.substring(i, i + 1);
		//32=space
		if (isDigit(ch) || isLetter(ch)) {
			ch = ch; //valid ranges - do nothing
		}
		else {
			//allow dash only on 6th position (for US)
			if (ch == '-' && (i != 5 || str.length != 10)) {ret = false;}
			//allow space only in 4th position (for Canada)
			if (ch == ' ' && (i != 3 || str.length != 7)) {ret = false;}
		}
	}
	return ret;
} //isUSACanadaZip()


function isZip(str) {
	var ch;
	var ret = true;
	
	//check length 
	if (str.length != 5) {
		return false;
	}
	
	//check content
	for (var i = 0; i < str.length; i++) {
		ch = str.substring(i, i + 1);
		if (isDigit(ch)) {
			ch = ch; //valid range - do nothing
		}
		else {
			ret = false;
		}
	}
	return ret;
} //isZip()



function isEmail(email) {
	var IndexOfAt = email.indexOf("@");
	var LastIndexOfAt = email.lastIndexOf("@");
	var badchar = false;
        var str = email.substring(IndexOfAt + 1, email.length);
	
 		//email address has exactly one @ char
		if ((IndexOfAt == -1) || (IndexOfAt != LastIndexOfAt)) {
			return false;
		}

		//@ char in the email can not be the first or the last char
		if ((IndexOfAt == 0) || (LastIndexOfAt == email.length - 1)) {
			return false;
		}

		//must have at least one dot
		if (email.indexOf(".") == -1) {
			return false;
		}

		//dot can not be the last char
		if (email.lastIndexOf(".") == email.length - 1) {
			return false;
		}

		//illegal combinations: @. ..
		if (email.indexOf("@.") != -1 || email.indexOf("..") != -1) {
			return false;
		}

		//can not have apostriphy in domain name
		if (str.indexOf("'") != -1) {
			return false;
		}

		//must be at least 5 chars
		if (email.length < 5) {
			return false;
		}

		// check for bad characters
		for (var i = 0; i < email.length; i++) {
			ch = email.substring(i, i + 1)
			if ((ch >= "A" && ch <= "Z") || 
				(ch >= "a" && ch <= "z") ||
				(ch == "@") || (ch == ".") || (ch == "'") ||
				(ch == "_") || (ch == "-") || 
				(ch >= "0" && ch <= "9"))
			{
				ch = ch; //valid ranges - do nothing
			}
			else {
				badchar = true;
			}

		}
		if (badchar) {
			return false;
		}

		//at this point we've passed all email validations successfully
		return true;
} //isEmail()



function getFileExtension(path) {
//returns portion after last dot
      var pos = path.lastIndexOf('.');
      var ret = "";
      //validate
      if (path.length == 0) {
         return "";
      }
      //dot not found - no extension
      if (pos == -1) {
         return "";
      }
      //dot found - return file extension
      ret = path.substring(pos+1,path.length);
      return ret;
} //getFileExtension()


function getPathFromURL(URL) {
//returns portion after last dot
      var pos = URL.lastIndexOf('/');
      var ret = "";
      //validate
      if (URL.length == 0) {
         return "";
      }
      //backslash not found - no file name in URL, return original
      if (pos == -1) {
         return URL;
      }
      //backslash found - return path only
      ret = URL.substring(0, pos+1);
      return ret;
} //getFileExtension()



function InvalidExtension(path, allowed) {
	//checks if file name in path has extension that is among the list of allowed
	//allowed is comma delim list of allowed extensions
	var ext = getFileExtension(path);
	var pos = allowed.indexOf(ext);
	if (pos < 0) 
		return true;	//not found
	else
		return false;	//found	
} //InvalidExtension()




//disables enter key on a form

var nav = window.Event ? true : false;
if (nav) {
   window.captureEvents(Event.KEYDOWN);
   window.onkeydown = HandleKeyDownEvent_Netscape;
}
else { 
   document.onkeydown = HandleKeyDownEvent_Microsoft;
}
function HandleKeyDownEvent_Netscape(e) {
   if (e.which == 13 && e.target.type != 'textarea' && e.target.type != 'submit' && e.target.type != 'image') {
      return false;
   } else {
      return true;
   }
}
function HandleKeyDownEvent_Microsoft() {
   if (event.keyCode == 13 && event.srcElement.type != 'textarea' && event.srcElement.type != 'input' && event.srcElement.type != 'submit' && event.srcElement.type != 'image') {
      return false;
   } else {
      return true;
   }
} 


function getParamFromURL(arg) {
   arg = arg.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
   var regexS = "[\\?&]"+ arg +"=([^&#]*)";
   var regex = new RegExp(regexS);
   var results = regex.exec(window.location.href);
   if(results == null) 
      return "";
   else
     return results[1];
}



function ValidatePanaCommon(frm) {
	//initialize
	var msg = '';
	var FN = trim(frm.txtFirstName.value);
	var LN = trim(frm.txtLastName.value);
	var addr = trim(frm.txtAddress.value);
	var city = trim(frm.txtCity.value);
	var state = frm.txtState.options[frm.txtState.selectedIndex].value;
	var zip = trim(frm.txtZip.value);
	var email1 = trim(frm.txtEmail.value).toLowerCase();
	var email2 = trim(frm.txtEmailConfirm.value).toLowerCase();
	//reset
	document.getElementById('lblFirstName').className = 'gray';
	document.getElementById('lblLastName').className = 'gray';
	document.getElementById('lblAddress').className = 'gray';
	document.getElementById('lblCity').className = 'gray';
	document.getElementById('lblState').className = 'gray';
	document.getElementById('lblZip').className = 'gray';
	document.getElementById('lblEmail').className = 'gray';
	document.getElementById('lblEmailConfirm').className = 'gray';
	document.getElementById('lblPhone').className = 'gray';
	document.getElementById('lblCable').className = 'gray';
	//validate
	if (FN == '') {
		msg += '\n\t- Please enter your first name';
		document.getElementById('lblFirstName').className='red';
	}
	if (LN == '') {
		msg += '\n\t- Please enter your last name';
		document.getElementById('lblLastName').className='red';
	}
	if (addr == '') {
		msg += '\n\t- Please enter your address';
		document.getElementById('lblAddress').className='red';
	}
	if (city == '') {
		msg += '\n\t- Please enter your city';
		document.getElementById('lblCity').className='red';
	}
	if (state == '') {
		msg += '\n\t- Please select your state';
		document.getElementById('lblState').className='red';
	}
	
	if (zip == '') {
		msg += '\n\t- Please enter your zip code';
		document.getElementById('lblZip').className='red';
	}
	else {
		if (!isZip(zip)) {
			msg += '\n\t- Your zip code is invalid';
			document.getElementById('lblZip').className='red';
		}
	}
	//
	if (email1 == '') {
		msg += '\n\t- Please enter your email address';
		document.getElementById('lblEmail').className='red';
	}
	else {
		if (!isEmail(email1)) {
			msg += '\n\t- Your email is invalid (bad format)';
			document.getElementById('lblEmail').className='red';
		}
	}
	//
	if (email2 == '') {
		msg += '\n\t- Please confirm your email address';
		document.getElementById('lblEmailConfirm').className='red';
	}
	if (email1 != '' && email2 != '' && email1 != email2) {
		msg += '\n\t- Email and email confirmation do not match';
		document.getElementById('lblEmail').className='red';
		document.getElementById('lblEmailConfirm').className='red';
	}
	return msg;	
} //ValidatePanaCommon()





//validation functions
function ValidatePanaRegistration(frm) {
	//init
	var msg = '';
	var ch = frm.chRules.checked;
	var essay = trim(frm.txtEssay.value).toUpperCase();
	var family = trim(frm.txtFamily.value).toUpperCase();
	var location = trim(frm.txtLocation.value).toUpperCase();
	//reset
	document.getElementById('lblEssay').className = 'gray';
	document.getElementById('lblFamily').className = 'gray';
	document.getElementById('lblLocation').className = 'gray';
	document.getElementById('lblCheck').className = 'gray';
	//run common validations
	msg = ValidatePanaCommon(frm);
	//run specific validations
	if (essay == '') {
		document.getElementById('lblEssay').className = 'red';
		msg += '\n\t- Please select your essay file to upload';
	}
	if (family == '') {
		document.getElementById('lblFamily').className = 'red';
		msg += '\n\t- Please select your family picture file to upload';
	}
	if (location == '') {
		document.getElementById('lblLocation').className = 'red';
		msg += '\n\t- Please select your location picture file to upload';
	}
		if (InvalidExtension(essay, "DOC, PDF")) {
			document.getElementById('lblEssay').className = 'red';
			msg += '\n\t- Essay document: invalid file type (only DOC and PDF files are allowed)';
		}
		if (InvalidExtension(family, "JPG, JPEG, GIF, PNG")) {
			document.getElementById('lblFamily').className = 'red';
			msg += '\n\t- Family picture: invalid file type (only JPG, GIF and PNG files are allowed)';
		}
		if (InvalidExtension(location, "JPG, JPEG, GIF, PNG")) {
			document.getElementById('lblLocation').className = 'red';
			msg += '\n\t- Location picture: invalid file type (only JPG, GIF and PNG files are allowed)';
		}
	if (!ch) {
		document.getElementById('lblCheck').className = 'red';
		msg += '\n\t- Please read and accept the rules';
	}
	//add instruction
	if (msg != '') {msg = 'Errors were detected. Please correct and try again.\n' + msg + '\n';}
	return msg;
} //ValidatePanaRegistration()





function ValidatePanaSignup(frm) {
	//init
	var msg = '';
	//var ch = frm.chOptin.checked;
	//reset
	//document.getElementById('lblCheck').className = 'gray';

	//run common validations
	//msg = ValidatePanaCommon(frm);
	//run specific validations here:
	//if (!ch) {
	//	document.getElementById('lblCheck').className = 'red';
	//	msg += "\n\t- Please check 'I agree to receive promotional emails' to complete your signup process";
	//}

	//run specific validations here:
	var zip = trim(frm.txtZip.value);
	var email1 = trim(frm.txtEmail.value).toLowerCase();
	var email2 = trim(frm.txtEmailConfirm.value).toLowerCase();
	document.getElementById('lblZip').className = 'gray';
	document.getElementById('lblEmail').className = 'gray';
	document.getElementById('lblEmailConfirm').className = 'gray';
	//
	if (zip != '') {
		if (!isZip(zip)) {
			msg += '\n\t- Your zip code is invalid';
			document.getElementById('lblZip').className='red';
		}
	}
	//
	if (email1 == '') {
		msg += '\n\t- Please enter your email address';
		document.getElementById('lblEmail').className='red';
	}
	else {
		if (!isEmail(email1)) {
			msg += '\n\t- Your email is invalid (bad format)';
			document.getElementById('lblEmail').className='red';
		}
	}
	//
	if (email2 == '') {
		msg += '\n\t- Please confirm your email address';
		document.getElementById('lblEmailConfirm').className='red';
	}
	if (email1 != '' && email2 != '' && email1 != email2) {
		msg += '\n\t- Email and email confirmation do not match';
		document.getElementById('lblEmail').className='red';
		document.getElementById('lblEmailConfirm').className='red';
	}

	//add instruction
	if (msg != '') {msg = 'Errors were detected. Please correct and try again.\n' + msg + '\n';}
	return msg;
}



