var xmlHttp;
var xID;
var digits = "0123456789";
var phoneNumberDelimiters = ".()- ";
var validWorldPhoneChars = phoneNumberDelimiters + "+";
var minDigitsInIPhoneNumber = 10;

function isBlank(info, id)
{
  if (info == "")
    document.getElementById(id).innerHTML="Field must not be emtpy.";
  else
    document.getElementById(id).innerHTML="";
}

function validateList()
{
  var rvalue = true;
  var first = document.joinlist.j_first.value;
  var last = document.joinlist.j_last.value;
  var phone1 = document.joinlist.j_phone1.value;
  var phone2 = document.joinlist.j_phone2.value;
  var phone3 = document.joinlist.j_phone3.value;
  var email = document.joinlist.j_email.value;
  var loc = document.joinlist.j_loc.value;
  var firstid = document.getElementById("first");
  var lastid = document.getElementById("last");
  var phoneid = document.getElementById("phone");
  var emailid = document.getElementById("email");
  var locid = document.getElementById("loc");
  
  if (first == "") {
    firstid.innerHTML="First name can not be blank";
    rvalue = false;
  }
  else
    firstid.innerHTML="";
  if (last == "") {
    lastid.innerHTML="Last name can not be blank";
    rvalue = false;
  }
  else
    lastid.innerHTML="";
    
  if (phone1 == "" || phone2 == "" || phone3 == "" || phone1.length != 3 || phone2.length != 3 || phone3.length != 4) {
    phoneid.innerHTML="Phone must be 10 digits long";
    rvalue = false;
  }
  else
    phoneid.innerHTML="";
  
  if (email == "") {
    emailid.innerHTML="Email can not be blank";
    rvalue = false;
  }
  else
    emailid.innerHTML="";
  if (loc == "") {
    locid.innerHTML="Location can not be blank";
    rvalue = false;
  }
  else
    locid.innerHTML="";

  if (!IsNumeric(phone1) || !IsNumeric(phone2) || !IsNumeric(phone3)) {
    phoneid.innerHTML="Phone must be 10 digits long";
    rvalue = false;
  }
  else
    phoneid.innerHTML="";
  if (!validateEmail(email)) {
    emailid.innerHTML="Email is not valid";
    rvalue = false;
  }
  else
    emailid.innerHTML="";
  return rvalue;
}

function validateEmail(email) {
   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
   if(reg.test(email) == false)
      return false;
   else
    return true;
}

function validateAddress(incoming) {
	var emailstring = incoming;
	var ampIndex = emailstring.indexOf("@");
	var afterAmp = emailstring.substring((ampIndex + 1), emailstring.length);
		// find a dot in the portion of the string after the ampersand only
	var dotIndex = afterAmp.indexOf(".");
		// determine dot position in entire string (not just after amp portion)
	dotIndex = dotIndex + ampIndex + 1;
		// afterAmp will be portion of string from ampersand to dot
	afterAmp = emailstring.substring((ampIndex + 1), dotIndex);
		// afterDot will be portion of string from dot to end of string
	var afterDot = emailstring.substring((dotIndex + 1), emailstring.length);
	var beforeAmp = emailstring.substring(0,(ampIndex));
		//old regex did not allow subdomains and dots in names
		//var email_regex = /^[\w\d\!\#\$\%\&\'\*\+\-\/\=\?\^\_\`\{\|\}\~]+(\.[\w\d\!\#\$\%\&\'\*\+\-\/\=\?\^\_\`\{\|\}\~])*\@(((\w+[\w\d\-]*[\w\d]\.)+(\w+[\w\d\-]*[\w\d]))|((\d{1,3}\.){3}\d{1,3}))$/;
	var email_regex = /^\w(?:\w|-|\.(?!\.|@))*@\w(?:\w|-|\.(?!\.))*\.\w{2,3}/ 
		// index of -1 means "not found"
	if ((emailstring.indexOf("@") != "-1") &&
		(emailstring.length > 5) &&
		(afterAmp.length > 0) &&
		(beforeAmp.length > 1) &&
		(afterDot.length > 1) &&
		(email_regex.test(emailstring)) ) {
		  return true;
	} else {
			return false;
	}
}

function testQuiz()
{
  var rvalue = true;
  var first = document.enterquiz.j_first.value;
  var last = document.enterquiz.j_last.value;
  var phone1 = document.enterquiz.j_phone1.value;
  var phone2 = document.enterquiz.j_phone2.value;
  var phone3 = document.enterquiz.j_phone3.value;
  var email = document.enterquiz.j_email.value;
  var firstid = document.getElementById("first");
  var lastid = document.getElementById("last");
  var phoneid = document.getElementById("phone");
  var emailid = document.getElementById("email");

  if (first == "") {
    firstid.innerHTML="Name can not be blank";
    rvalue = false;
  }
  else
    firstid.innerHTML="";
    
  if (last == "") {
    lastid.innerHTML="Name can not be blank";
    rvalue = false;
  }
  else
    lastid.innerHTML="";
    
  if (email == "") {
    emailid.innerHTML="Email can not be blank";
    rvalue = false;
  }
  else
    emailid.innerHTML="";
    
  
    
  if (phone1 == "" || phone2 == "" || phone3 == "" || !IsNumeric) {
    phoneid.innerHTML="Phone must be 10 digits long";
    rvalue = false;
  }
  else
    phoneid.innerHTML="";
  if (!IsNumeric(phone1) || !IsNumeric(phone2) || !IsNumeric(phone3)) {
    phoneid.innerHTML="Phone must be 10 digits long";
    rvalue = false;
  }
  else
    phoneid.innerHTML="";

  if (!validateAddress(email)) {
    emailid.innerHTML="Email is not valid";
    rvalue = false;
  }
  else
    emailid.innerHTML="";

  return rvalue;
}

function isDup(id)
{
  if (id == "quiz")
    alert("Sorry, you may only enter the contest once.\nYou have already entered this months contest");
  if (id == "list")
    alert("Sorry, your email is already included in our mailing list.");
  if (id == "unsub")
    alert("The email you inputed is not on our mailing list.");
  if (id == "unsubgood")
    alert("You have been successfully removed from our mailing list.");
  if (id == "quizgood")
    alert("You have successfully entered our quiz\nA winner will be auto picked at the end of the month");
}

function testPhone(phone, id)
{
  var rvalue = true;
  if (checkInternationalPhone(phone) == false) {
    document.getElementById(id).innerHTML="Enter valid phone number";
    rvalue = false;
  }
  return rvalue;
}

function testEmail(email, id)
{
  if (email == "" || !validateAddress(email))
  {
    document.getElementById(id).innerHTML="Invalid Email Address.";
    return false;
  }
  else
  {
    document.getElementById(id).innerHTML="";
    return true;
  }
}

function activateJoin()
{
  if (document.joinlist.j_name.value!="" && validateAddress(document.joinlist.j_email.value))
    document.getElementById('submit').innerHTML="<input type=\"submit\" name=\"submit\" value=\"Join\" />";
  else
    document.getElementById('submit').innerHTML="<input type=\"submit\" name=\"submit\" disabled=\"disabled\" value=\"Join\" />";
    
}

function deleteScroll(sid, bid)
{
  if (confirm("Are you sure you want to delete this item?"))
  {
    xmlHttp=GetXmlHttpObject()
    if (xmlHttp==null)
    {
      alert ("Browser does not support HTTP Request")
      return
    }
    var url="includes/deletescroll.php?sid="+sid+"&bid="+bid
    xmlHttp.onreadystatechange=stateChanged
    xmlHttp.open("GET",url,true)
    xmlHttp.send(null)
    xID = "scroll"
  }
}

function stateChanged() 
{ 
  if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
  { 
    document.getElementById(xID).innerHTML=xmlHttp.responseText
  } 
} 

function GetXmlHttpObject()
{ 
  var objXMLHttp=null
  if (window.XMLHttpRequest)
  {
    objXMLHttp=new XMLHttpRequest()
  }
  else if (window.ActiveXObject)
  {
    objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
  }
  return objXMLHttp
} 

function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}
function trim(s)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not a whitespace, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (c != " ") returnString += c;
    }
    return returnString;
}
function stripCharsInBag(s, bag)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function checkInternationalPhone(strPhone){
var bracket=3
strPhone=trim(strPhone)
if(strPhone.indexOf("+")>1) return false
if(strPhone.indexOf("-")!=-1)bracket=bracket+1
if(strPhone.indexOf("(")!=-1 && strPhone.indexOf("(")>bracket)return false
var brchr=strPhone.indexOf("(")
if(strPhone.indexOf("(")!=-1 && strPhone.charAt(brchr+2)!=")")return false
if(strPhone.indexOf("(")==-1 && strPhone.indexOf(")")!=-1)return false
s=stripCharsInBag(strPhone,validWorldPhoneChars);
return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}

function IsNumeric(sText)

{
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;
   if (sText == "")
    IsNumber=false;
 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
   
   }
   
var isNN = (navigator.appName.indexOf("Netscape")!=-1);

function autoTab(input,len, e) {
  var keyCode = (isNN) ? e.which : e.keyCode; 
  var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
  if(input.value.length >= len && !containsElement(filter,keyCode)) {
    input.value = input.value.slice(0, len);
    input.form[(getIndex(input)+1) % input.form.length].focus();
  }

  function containsElement(arr, ele) {
    var found = false, index = 0;
    while(!found && index < arr.length)
    if(arr[index] == ele)
    found = true;
    else
    index++;
    return found;
  }

  function getIndex(input) {
    var index = -1, i = 0, found = false;
    while (i < input.form.length && index == -1)
    if (input.form[i] == input)index = i;
    else i++;
    return index;
  }
  return true;
}

function clickclear(thisfield, defaulttext) {
if (thisfield.value == defaulttext) {
thisfield.value = "";
}
}

function clickrecall(thisfield, defaulttext) {
if (thisfield.value == "") {
thisfield.value = defaulttext;
}
}

sfHover = function() {
	var sfEls = document.getElementById("nav").getElementsByTagName("LI");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className+=" sfhover";
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
		}
	}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);
