 //Event.addBehavior({
     // "form.validate:submit" : function(event) { return checkRequiered(this); }
// });






/* Cookies */

var Cookie = {
	set: function(name,value,seconds){
		if(seconds){
			d = new Date();
			d.setTime(d.getTime() + (seconds * 1000));
			expiry = '; expires=' + d.toGMTString();
		}else
			expiry = '';
		document.cookie = name + "=" + value + expiry + "; path=/";
	},
	get: function(name){
		nameEQ = name + "=";
		ca = document.cookie.split(';');
		for(i = 0; i < ca.length; i++){
			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
	},
	unset: function(name){
		Cookie.set(name,'',-1);
	}
}




/* Form Functions */
 
function AjaxForm(formid){
	formid = $(formid);
	//Insertion.After(formid,'<div id="cover"></div>') // create dive to hold responce.
	var formsize = Element.getDimensions(formid);
	var pars = Form.serialize(formid);
	var url = formid.action;
	
	
	var myAjax = new Ajax.Updater(
			'cover', 
			url, 
			{
				method: 'post', 
				parameters: pars,
				onComplete: function() {
					//hideReg();
					window.setTimeout('hideReg()', 1200);
				}
			});
	
	formid.style.display="none"	;
	Position.clone($('cover'), formid)	;
	$('cover').style.height=formsize.height+"px";
	$('cover').style.display="block";
	return false;
}



function checkRequiered(formtocheck){
	//console.log("checking form");
	var readytosend = "true";
	var CCerror ="";

	fields = Form.getElements(formtocheck);
	fields.each(function(node){							
			if(Element.hasClassName(node, "required")){
					//console.log("checking Field:  "+ node.nodeName + ': ' + node.id);
				// Save values in Cookie if not a CC number;
				if (!Element.hasClassName(node, "ccardnumber")){
					if ($F(node) != ""){
						Cookie.set($(node).id, $F(node), "", "/");
					}
					//alert("setting c for "+node.id);
				}
					
				if(Element.hasClassName(node, "email")){
					//alert("Validate email address");
					// Validate email address;
					if($F(node)=="" || !isValidEmail($F(node))){
						highlightRequiered(node, "required")
						readytosend = "false"
					}
				}else if (Element.hasClassName(node, "ccardnumber")){
					//alert("Validate Visa Number");
					// Validate Visa Number 
					var cardtype = document.getElementsByClassName('cardtype');
					if(!validateCreditCardNumber($F(node),$F(cardtype[0]))){
						CCerror = "Credit Card appears to be invalid \n Please verify the number and card type are correct.";
						highlightRequiered(node, "required")
						readytosend = "false"
					}
					//alert("Validate "+ $F(cardtype[0])+ ' : '+ node.nodeName + ': ' + node.id);
				}else if (Element.hasClassName(node, "agree")){
					// Must Agree 
					if($F(node)!="yes"){
						CCerror += "You must agree to the Rules and Regulations ";
						//highlightRequiered(node, "required")
						readytosend = "false"
					}
					//alert("Must Agree "+$F(node));
				}else{
					// Higlight empty fields
					if($F(node)==""){
						highlightRequiered(node, "required")
						readytosend = "false"
					}
					//alert("check for empty "+ node.nodeName + ': ' + node.id);
				}
			}
		})
		
	//alert(readytosend);
		
	if(readytosend=="true"){
		//alert("OK all looks good");
		if($(formtocheck).hasClassName('ajax')){
	   		 AjaxForm(formtocheck);
			 return false;
		}else{
			return true;
		}

	}else{
		alert("Please verify that all required fields are completed \nRequired fields have been highlighted in yellow \n\n"+CCerror);
		return false;

	}

}


isValidEmail = function(val){
    var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
    if (!val.match(re)) {
        return false;
    } else {
        return true;
    }
}


isValidCC = function(cardNumber, cardType)
{
  var isValid = false;
  var ccCheckRegExp = /[^\d ]/;
  isValid = !ccCheckRegExp.test(cardNumber);

  if (isValid)
  {
    var cardNumbersOnly = cardNumber.replace(/ /g,"");
    var cardNumberLength = cardNumbersOnly.length;
    var lengthIsValid = false;
    var prefixIsValid = false;
    var prefixRegExp;

    switch(cardType)
    {
      case "mastercard":
        lengthIsValid = (cardNumberLength == 16);
        prefixRegExp = /^5[1-5]/;
        break;

      case "visa":
        lengthIsValid = (cardNumberLength == 16 || cardNumberLength == 13);
        prefixRegExp = /^4/;
        break;

      case "amex":
        lengthIsValid = (cardNumberLength == 15);
        prefixRegExp = /^3(4|7)/;
        break;

      default:
        prefixRegExp = /^$/;
        alert("Card type not found: "+cardType);
    }

    prefixIsValid = prefixRegExp.test(cardNumbersOnly);
    isValid = prefixIsValid && lengthIsValid;
  }

  if (isValid)
  {
    var numberProduct;
    var numberProductDigitIndex;
    var checkSumTotal = 0;

    for (digitCounter = cardNumberLength - 1; 
      digitCounter >= 0; 
      digitCounter--)
    {
      checkSumTotal += parseInt (cardNumbersOnly.charAt(digitCounter));
      digitCounter--;
      numberProduct = String((cardNumbersOnly.charAt(digitCounter) * 2));
      for (var productDigitCounter = 0;
        productDigitCounter < numberProduct.length; 
        productDigitCounter++)
      {
        checkSumTotal += 
          parseInt(numberProduct.charAt(productDigitCounter));
      }
    }

    isValid = (checkSumTotal % 10 == 0);
  }

  return isValid;
}


function SelectValueSet(SelectName, Value){
	SelectObject = $(SelectName);
	for(index = 0; index < SelectObject.length; index++){
		if(SelectObject[index].value == Value){
			SelectObject.selectedIndex = index;
		}
	}
}


function highlightRequiered(id, message){
	$(id).style.color = "black"
	$(id).value = message
	new Effect.Highlight(id,{afterFinish: function(){$(id).value="";$(id).style.color = "";$(id).style.background = "#EFF4AE";}})
}


function highlightinvalid(id, message){
	$(id).style.color = "black"
	var v = $(id).value
	$(id).value = message
	new Effect.Highlight(id,{afterFinish: function(){$(id).value=v;$(id).style.color = "";$(id).style.background = "#EFF4AE";}})
}

