/*************************************************
AUTHOR: David Mingos
CONTACT: dmdesigns.com/contact
*************************************************/

function checkRegistration(form) {
   
   document.getElementById('submit-registration').disabled = true;

   var errorMessage = '';
   var errors = document.getElementById('errors');

   var members = parseInt(form.USER1.value);
   var member_children = parseInt(form.USER3.value)
   var non_members = parseInt(form.USER2.value);
   var non_member_children = parseInt(form.USER4.value);
   var total_registrants = members + member_children + non_members + non_member_children;

   if (!hasValue(form.NAME)) errorMessage += '<li>Your Name</li>';
   //if (!hasValue(form.COMMENT1)) errorMessage += '<li>Title</li>';
   //if (!hasValue(form.COMMENT2)) errorMessage += '<li>Organization</li>';
   if (!hasValue(form.ADDRESS)) errorMessage += '<li>Address</li>';
   if (!hasValue(form.CITY)) errorMessage += '<li>City</li>';
   if (!hasValue(form.STATE)) errorMessage += '<li>State</li>';
   if (!hasValue(form.ZIP)) errorMessage += '<li>Zip</li>';
   if (!hasValue(form.PHONE)) errorMessage += '<li>Phone</li>';
   if ((form.EMAIL.value.length > 0) && validateEmail(form.EMAIL.value)) {
      document.getElementById('lblEMAIL').className = '';
   } else {
      document.getElementById('lblEMAIL').className = 'error';
      errorMessage += '<li>Email</li>';
   }
   if (total_registrants == 0) errorMessage += '<li>You must register at least one person.</li>';

   form.DESCRIPTION.value = '2008 NFU Convention (' + members + ' members, ' + member_children + ' member-children, ' + non_members + ' non-members, ' + non_member_children + ' non-member-children)';
   
   if (errorMessage.length > 0) {
      errorMessage = 'Your registration could not be submitted because the following fields have errors:<ul>'+errorMessage+'</ul>';
      errors.innerHTML = errorMessage;
      errors.className = 'error';
   } else {
      errors.innerHTML = '';
      errors.className = '';
      if(confirm('You are registering for the ' + form.DESCRIPTION.value + '\n\nTotal Cost: $' + form.AMOUNT.value + '.')) {
         return true;
      }
   }

   document.getElementById('submit-registration').disabled = false;
   return false;

}

function updateRegistrationCost(form) {

   var members = parseInt(form.USER1.value);
   var member_children = parseInt(form.USER3.value)
   var non_members = parseInt(form.USER2.value);
   var non_member_children = parseInt(form.USER4.value);

   var totalCost = (members * 100) + (member_children * 50) + (non_members * 150) + (non_member_children * 100);   
   var total_registrants = members + member_children + non_members + non_member_children;

   form.AMOUNT.value = totalCost + '.00';
   document.getElementById('total').innerHTML = '$' + totalCost + '.00';
   fade('total');
}

function numbersOnly(evt) {
	var charCode = (evt.which) ? evt.which : evt.keyCode
	if (charCode > 31 && (charCode < 48 || charCode > 57))
		return false;
	return true;
}

function hasValue(field) {
   var isValid = (field.value.length > 0) ? true : false;
   if (!isValid && document.getElementById('lbl'+field.name)) {
      document.getElementById('lbl'+field.name).className = 'error';
   } else if (document.getElementById('lbl'+field.name)) {
      document.getElementById('lbl'+field.name).className = '';
   }
   return isValid;
}

function validateEmail(emailStr) {

   /** NOTE:
    * This returns true or false so not to confuse/annoy the user with 
    * overly-detailed reasons why the e-mail address was not valid.
    * This places the burden of handling required/optional checks and 
    * displaying error messages outside of this function.
    */

    if (emailStr == '') return true;

    var emailPat=/^(.+)@(.+)$/
    var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
    var validChars="\[^\\s" + specialChars + "\]"
    var quotedUser="(\"[^\"]*\")"
    var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
    var atom=validChars + '+'
    var word="(" + atom + "|" + quotedUser + ")"
    var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
    var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")

    var matchArray=emailStr.match(emailPat)

    if (matchArray==null) return false;

    var user=matchArray[1]
    var domain=matchArray[2]

    if (user.match(userPat)==null) return false;

    var IPArray=domain.match(ipDomainPat)
    if (IPArray!=null) {
        for (var i=1;i<=4;i++) {
	        if (IPArray[i]>255) {
	            return false;
	        }
        }
        return true;
    }

    var domainArray=domain.match(domainPat)
    if (domainArray==null) return false;

    var atomPat=new RegExp(atom,"g")
    var domArr=domain.match(atomPat)
    var len=domArr.length
    if (domArr[domArr.length-1].length<2 ||
        domArr[domArr.length-1].length>3) {
        return false;
    }

    if (len<2) return false;

    return true;
}

function checkSearch() {
   var query = document.getElementById('s');
   if((query.value == query.alt) || (query.value == query.title) || (query.value == '')) {
      alert('You must enter something to search for.');
      query.focus();
      return false;
   }
   return true;
}

function swapShowcase(elid) {

   // Get the properties of the thumb clicked
   var thumbhref = document.getElementById(elid).href;
   var thumbalt = document.getElementById(elid+'thumb').alt;
   var thumbsrc = document.getElementById(elid+'thumb').src;
   var thumbpath = thumbsrc.substring(0, thumbsrc.lastIndexOf('/')+1);
   thumbsrc  = thumbsrc.substring(thumbsrc.lastIndexOf('/')+1);

   // Get the properties of the current showcase
   var shownhref = document.getElementById('showcaselink').href;
   var shownalt = document.getElementById('showcasephoto').alt;
   var shownsrc = document.getElementById('showcasephoto').src;
   var shownpath = shownsrc.substring(0, shownsrc.lastIndexOf('/')+1);
   shownsrc  = shownsrc.substring(shownsrc.lastIndexOf('/')+1);

   //set the showcase properties to the new values
   document.getElementById('showcasephoto').src = shownpath + thumbsrc;
   document.getElementById('showcaselink').href = thumbhref;
   document.getElementById('showcasephoto').alt = thumbalt;

   //set the thumb values to the old showcase values
   document.getElementById(elid+'thumb').src = thumbpath + shownsrc;
   document.getElementById(elid).href = shownhref;
   document.getElementById(elid+'thumb').alt = shownalt;

   // don't follow the link of the thumb unless they have js disabled
   return false;

}

function setSourceForIE(elid,iesrc) {
   var arVersion = navigator.appVersion.split("MSIE");
   var version = parseFloat(arVersion[1]);
   if ((version >= 5.5) && (document.body.filters) && (document.getElementById(elid))) {
      document.getElementById(elid).src = iesrc;
   }
}

function fixZipSubmit() {
      setSourceForIE('check','/wp-content/themes/nfu/images/go-ie.png');
}

function fixSearchSubmit() {
   var arVersion = navigator.appVersion.split("MSIE");
   var version = parseFloat(arVersion[1]);
   if ((version < 7) && (document.getElementById('go'))) {
      setSourceForIE('go','/wp-content/themes/nfu/images/go-ie.png');
   }
}

/******************************/


function setAnchors() {
   for (var i=0; i < document.links.length; i++) {
      if ((document.links[i].href == document.location) || (document.links[i].href == document.location + 'index.php')) {
			//alert(document.links[i].innerHTML+' is active');
         document.links[i].className = 'active';
         document.links[i].title = 'You are here.';
      }
	}
}

sfFocus = function() {
   var sfEls = document.getElementsByTagName("A");
   for (var i=0; i<sfEls.length; i++) {
      sfEls[i].onfocus=function() {
         this.className+=" sffocus";
      }
      sfEls[i].onblur=function() {
         this.className=this.className.replace(new RegExp(" sffocus\\b"), "");
      }
   }
}

sfHover = function() {
   var sfEls = document.getElementById("navigation").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"), "");
      }
   }
}

function restoreDefault(){
   if (!this.value){
      this.value=this.defaultValue;
   }
}

function clearDefault(){
   if (this.value==this.defaultValue){
      this.value='';
   }
}

function setHandlers() {
   for(var i=0;i<document.forms.length;i++){
      f=document.forms[i];
      for(var j=0;j<f.length;j++){
         c=f[j];
         if(c.type == 'text' || c.type == 'textarea'){
            c.onfocus=clearDefault;
            c.onblur=restoreDefault;
         }
      }
   }
}

function addEvent(obj, evType, fn, useCapture){
   if (obj.addEventListener){
      obj.addEventListener(evType, fn, useCapture);
      return true;
   } else if (obj.attachEvent){
      var r = obj.attachEvent("on"+evType, fn);
      return r;
   } else {
      // be silent
      // alert("Handler could not be attached");
   }
}

function removeEvent(obj, evType, fn, useCapture){
   if (obj.removeEventListener) {
      obj.removeEventListener(evType, fn, useCapture);
      return true;
   } else if (obj.detachEvent){
      var r = obj.detachEvent("on"+evType, fn);
      return r;
   } else {
      // be silent
      // alert("Handler could not be removed");
   }
}



// ***************************************************************************
// fade.js
// by i am jack's design (http://www.iamjacksdesign.com)
// last modified: 2/20/05
// ***************************************************************************

// THIS WORKS OFF OF RGB VALUES FOR IT'S BASE COLOR. 
// SET THE THREE VARIABLES BELOW TO THE RED, GREEN AND BLUE VALUES FOR YOUR 
// DESIRED BASE COLOR.

var FADE_RED = 254;
var FADE_GREEN = 254;
var FADE_BLUE = 207;

// THE THREE VARIABLES BELOW DEFINE THE MOVEMENT OF THE FADE:
//
// 		FADE_HOLD 	= Time (in milliseconds) that your base color lasts
//					  before the fade begins.
//		FADE_SPEED 	= Time (in milliseconds) that each color of the fade lasts
//		FADE_STEP	= Increase in the RGB value per color change

var FADE_HOLD = 500;
var FADE_SPEED = 100;
var FADE_STEP = 25;




// FOR BASIC FUNCTIONALITY, LEAVE EVERYTHING BELOW THIS POINT AS IS.
var fade_r = FADE_RED
var fade_g = FADE_GREEN
var fade_b = FADE_BLUE

function fade(container)
{
	if (fade_r == 0) fade_r == FADE_RED;
	if (fade_g == 0) fade_g == FADE_GREEN;
	if (fade_b == 0) fade_b == FADE_BLUE;
	
	if (fade_r + fade_g + fade_b != (255 * 3))
	{	
		document.getElementById(container).style.background = "rgb(" + fade_r + "," + fade_g + "," + fade_b + ")";
		
		if ((fade_r == FADE_RED) && (fade_g == FADE_GREEN) && (fade_b == FADE_BLUE))
		{
			setTimeout('fade("' + container + '")', FADE_HOLD)
		}
		else
		{	
			setTimeout('fade("' + container + '")', FADE_SPEED)
		}
		
		if ((fade_r >= 255) || (fade_r + FADE_STEP > 255)) fade_r = 255; else fade_r = fade_r + FADE_STEP;
		if ((fade_g >= 255) || (fade_g + FADE_STEP > 255)) fade_g = 255; else fade_g = fade_g + FADE_STEP;
		if ((fade_b >= 255) || (fade_b + FADE_STEP > 255)) fade_b  = 255; else fade_b = fade_b + FADE_STEP;
	}
	else
	{	
		document.getElementById(container).style.background = "rgb(" + fade_r + "," + fade_g + "," + fade_b + ")";
		fade_r = FADE_RED;
		fade_g = FADE_GREEN;
		fade_b = FADE_BLUE;
	}
}



/* \\\\\\
Style Sheet Switcher from A List Apart
http://www.alistapart.com/stories/alternate/
*/

function setActiveStyleSheet(title) {
  var i, a, main;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
      a.disabled = true;
      if(a.getAttribute("title") == title) a.disabled = false;
    }
  }
}

function getActiveStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
  }
  return null;
}

function getPreferredStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1
       && a.getAttribute("rel").indexOf("alt") == -1
       && a.getAttribute("title")
       ) return a.getAttribute("title");
  }
  return null;
}

function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}


window.onunload = function(e) {
  var title = getActiveStyleSheet();
  createCookie("style", title, 365);
}

var cookie = readCookie("style");
var title = cookie ? cookie : getPreferredStyleSheet();
setActiveStyleSheet(title);


/* ////// */


// if (window.attachEvent) window.attachEvent("onload", sfHover);
if (window.attachEvent) addEvent(window, 'load', sfHover);
addEvent(window, 'load', setAnchors);
addEvent(window, 'load', setHandlers);
addEvent(window, 'load', fixSearchSubmit);
addEvent(window, 'load', fixZipSubmit);
