// JavaScript Document
var do_alert = false;
var alert_msg = "";

function field_check_all(e)
{
	//alert(e.name);
	//checkEnter(e);
	var a = eval('document.'+e.name);
	var temp_id;
	var return_holder = false;
	alert_msg = "";
	do_alert = false;
	
	for(i=0; i<a.elements.length; i++)
	{
		//document.write("The field name is: " + a.elements[i].name + " and it's value is: " + a.elements[i].value + ".<br />");
		temp_id = a.elements[i].getAttribute("field_valid_id",2);
		//if (temp_id != null) document.write(temp_id);
		if (temp_id != null) field_check_new(a.elements[i]);
		if (a.elements[i].getAttribute("field_valid",2) == "0") return_holder = true;
	}
	//document.write("<br /><br />do_alert:"+do_alert);
	if (do_alert)
	{
		alert(alert_msg);
		return false;
	}	
	if (return_holder)
	{
		return false;
	}
	return true;
}
function field_check_new(oDiv)
{	
	//calculate_totals();
	//alert('here');
	var field_valid = 1;
	var oDivVisual = oDiv;
	field_type = oDiv.getAttribute("field_type",2);
    field_parameters = oDiv.getAttribute("field_parameters",2);	
    field_notification_type = oDiv.getAttribute("field_notification_type",2);
    field_error_msg = oDiv.getAttribute("field_error_msg",2);
    //FieldType = oDiv.getAttribute.setAttribute("class", "className");
	//alert('field_type:'+field_type);
	//alert('field_parameters:'+field_parameters);
     
    // - name has to be at least 2 characters
    if (field_type == 'text')
    {
        if(oDiv.value.length < 3)
        {
           field_valid = 0;
        }
    }  
	// - name has to be at least 2 characters
    if (field_type == 'cvv')
    {
        if(oDiv.value.length < 3)
        {
           field_valid = 0;
        }
		
		s = oDiv.value;
		var v = "0123456789-";
		for (i=0; i < s.length; i++) {
		x = s.charAt(i);
		if (v.indexOf(x,0) == -1)
			field_valid = 0;
		}
    } 
    // - Zip needs 5 characters
    if (field_type == 'zip')
    {
        if((oDiv.value.length < 5)||(oDiv.value.length > 10))
        {
            field_valid = 0;
        }
        
        s = oDiv.value;
		var v = "0123456789-";
		for (i=0; i < s.length; i++) {
		x = s.charAt(i);
		if (v.indexOf(x,0) == -1)
			field_valid = 0;
		}
    }
	// - State needs 2 characters
    if (field_type == 'state')
    {
        if(oDiv.value.length < 2)
        {
           field_valid = 0;
        }
		//calculate_totals();
    }
	
	if (field_type == 'pull_down')
    {
        if(oDiv.value.length < 2)
        {
           field_valid = 0;
        }
    }
	
    // - phone no less than 9, no greater than 17, with character validation
    if (field_type == 'phone')
    {
        if((oDiv.value.length < 10)||(oDiv.value.length > 17))
        {
            field_valid = 0;
        }
        
        s = oDiv.value;
		var v = "0123456789-() ";
		for (i=0; i < s.length; i++) {
		x = s.charAt(i);
		if (v.indexOf(x,0) == -1)
			field_valid = 0;
		}
    }
	
	// - date with xx/xx/xx validation where x is a number
    if (field_type == 'date_field')
    {
        // - check length
		if((oDiv.value.length < 8)||(oDiv.value.length > 10))
        {
            field_valid = 0;
        }	
        // - validate character and replace invalid separators
        s = oDiv.value;
		var v = "0123456789/";
		var w = "-.:";
		for (i=0; i < s.length; i++) 
		{
			x = s.charAt(i);
			if (v.indexOf(x,0) == -1)
			{
				field_valid = 0;
				if (w.indexOf(x,0) == -1)
				{
					oDiv.value = oDiv.value.replace(x,"");
				}
				else
				{
					oDiv.value = oDiv.value.replace(x,"/");
				}
			}
		}		
		// - check first slash location 
		p=oDiv.value.indexOf('/');
		if (p<1 || p>2)
		{
		    field_valid = 0;
		}
		// - check 2nd slash location
		q=oDiv.value.indexOf('/',p+1);
		if (q<p || q>(oDiv.value.length-5))
		{
		    field_valid = 0;
		}
		// - check to see if there are two numbers in the last section
		if (oDiv.value.length - q >5)
		{
		    field_valid = 0;
		}
		// - validate date is greater than today
		var a = new Date();
        var m = a.getMonth();
        var y = a.getFullYear();
        var d = a.getDate();
        m = m + 1;
		//if (y > 100) y= y-100;
		// - parse out the day month year
		date_elements = oDiv.value.split("/");
        // - check the year       
		if (date_elements[2] < y) field_valid = 0;
		if ((date_elements[2] == y)&&(date_elements[0] < m)) field_valid = 0;
        if ((date_elements[2] == y)&&(date_elements[0] == m)&&(date_elements[1] < d)) field_valid = 0;
    }
	
    // - email no less than 5, with character validation for '@' and '.'
    if (field_type == 'email')
    {
        if(oDiv.value.length < 5)
        {
            field_valid = 0;
        }
        // - check where '@' is at
        p=oDiv.value.indexOf('@');
        d=oDiv.value.indexOf('.',p);
		if (p<1 || p==(oDiv.value.length-2))
		{
		    field_valid = 0;
		}
		// - check where '.' is at        
		if (d<1 || d>(oDiv.value.length-3))
		{
		    field_valid = 0;
		}
		// - make sure '@' is before '.'
		if (d<p)
		{
		    field_valid = 0;
		}
    }
    // - currency
    if (field_type == 'currency')
    {
        // - check size
        if(oDiv.value.length < 1)
        {
            field_valid = 0;
        }
        // - check where '$' is at
        p=oDiv.value.indexOf('$');
        d=oDiv.value.indexOf('.');
		if ((p > 0)||(p==oDiv.value.length-1))
		{
		    field_valid = 0;
		}
		// - check where '.' is at        
		if ((d!=oDiv.value.length-3)&&(d!=-1))
		{
		    field_valid = 0;
		}
		// - make sure '$' is before '.',ignor if '.' not exist
		if ((d<p)&&(d!=-1))
		{
		    field_valid = 0;
		}
		// - validate characters
		s = oDiv.value;
		var v = "0123456789$.";
		for (i=0; i < s.length; i++) {
		x = s.charAt(i);
		if (v.indexOf(x,0) == -1)
			field_valid = 0;
		}
    }
    // - qty
    if (field_type == 'qtyA')
    {
        var base_price = document.getElementById('base_price');
        var oDivPrev = document.getElementById(ElementId-1);
        var multiplier = 0;
        // - validate characters
		s = oDivPrev.value;
		var v = "0123456789";
		for (i=0; i < s.length; i++) {
		x = s.charAt(i);
		if (v.indexOf(x,0) == -1)
			//field_valid = 0;
			oDivPrev.value = oDivPrev.value.replace(x,"");
		}
        // - check qty type
        if ((oDivPrev.value == "")||(oDivPrev.value == "0"))
        {
            field_valid = 0;            
        }
        else
        {
            multiplier = oDivPrev.value;
            var base_price = parseFloat(base_price.value);
            var multiplier = parseFloat(multiplier);
            var total_cost = base_price;
            change_array(oDivPrev,ElementId-1,field_valid);
            oDiv.value = '$'+base_price*multiplier+'.00';    
        }    
    }
	if (field_type == 'qty')
    {
        //var base_price = document.getElementById('base_price');
        //var oDivPrev = document.getElementById(ElementId-1);
        //var multiplier = 0;
        // - validate characters
		s = oDiv.value;
		var v = "0123456789";
		for (i=0; i < s.length; i++) {
		x = s.charAt(i);
		if (v.indexOf(x,0) == -1)
			//field_valid = 0;
			oDiv.value = oDiv.value.replace(x,"");
		}  
		
		if (oDiv.value.length < 1)
		{
			field_valid = 0;
		} 
    }
    // - creditcard
    if (field_type == 'creditcard')
    {
		loop_ctr = 0;
		var form_val = document.reservation_form
		for (var i=0; i < form_val.Reservations_PaymentOption.length; i++)
		{
		 	//alert(i+':'+document.reservation_form.Transactions_PaymentType[i].checked);
			if (form_val.Reservations_PaymentOption[i].checked == true)
			{
			  	loop_ctr += 1;
				if (loop_ctr >30) return;
				var oDivPrev = form_val.Reservations_PaymentOption[i];	
				
				// - check cc type
				if (oDivPrev.value == null)
				{
					field_valid = 0;
				}
				//change_array(ElementId-1,field_valid,field_type,FieldLocation);
				//check the cc number
				//field_valid = 1;
				// - if dash or space remove it
				p=oDiv.value.indexOf('-');
				d=oDiv.value.indexOf(' ');
				if ((p>0)||(d>0))
				{
					//alert("Please do not use '-', Thank you.");
					oDiv.value = oDiv.value.replace('-',"");
					oDiv.value = oDiv.value.replace(' ',"");
				}
				// - validate characters
				s = oDiv.value;
				if (s.length > 0)
				{
				  var v = "0123456789";
				  for (i=0; i < s.length; i++) 
				  {
				    x = s.charAt(i);
				    if (v.indexOf(x,0) == -1) {field_valid = 0;}
				  }
				}
				// - check first value and match with cc type
				f = oDiv.value.substring(0,1);
				//alert(f+':'+oDivPrev.value);
				if (((oDivPrev.value == 'Mastercard')&&(f != 5))||((oDivPrev.value == 'Visa')&&(f != 4))||((oDivPrev.value == 'Discover Card')&&(f != 6))||	((oDivPrev.value == 'American Express')&&(f != 3)))
				{
					field_valid = 0;
				}
				
				// - between 13 and 16 characters
				if((oDiv.value.length < 13)||(oDiv.value.length > 16))
				{
					field_valid = 0;
				}
			}
		 }
    }
    // - date
    if ((field_type == 'date_month')||(field_type == 'date_year'))
    {
		oDivVisual = document.getElementById(field_parameters);
		//alert(oDivVisual.getAttribute("field_type",2));
		var d = new Date();
        var m = d.getMonth();
        var y = d.getFullYear();
        m = m + 1;
		
		var a = oDiv.form;
		//var a = document.forms[0];
		//alert(field_parameters);
		//oDivVisual = document.getElementById(field_parameters);
		//oDivVisual = document.getElementById('Reservations_cc_date_visual');
		//alert(oDivVisual.getAttribute("field_type",2));
		for(i=0; i<a.elements.length; i++)
		{
			if (a.elements[i].getAttribute("field_type",2) == "date_month")
			{
				var exp_month = a.elements[i].value;
			}
			if (a.elements[i].getAttribute("field_type",2) == "date_year")
			{
				var exp_year = a.elements[i].value;
			}
			
			if ((exp_month == "")||(exp_year == ""))
			{
				field_valid = 0;
			}       
			if (((exp_year == y)&&(exp_month < m))||(exp_year < y))
			{
				field_valid = 0;
			}
		}
    }
	// - shipping
	if (field_type == 'radio')
    {
		field_valid = 0;
		//var a = document.forms[1];
		oDivVisual = document.getElementById(field_parameters);
		//oDivVisual.style.border="2px solid lightgreen";
		for(i=0; i<a.elements.length; i++)
		{
			if (a.elements[i].name == oDiv.name)
			{
				//alert(a.elements[i].name+'|'+a.elements[i].checked+'|'+field_notification_type);
				if (a.elements[i].checked) field_valid = 1;
			}
		}
    }

    //change_array(ElementId,field_valid,field_type,FieldLocation);
	oDiv.setAttribute('field_valid',field_valid);
	
	//alert(oDivVisual.name);
    if (field_notification_type == 'borders')
	{
		if(field_valid == 1)
		{
		   oDivVisual.style.border="2px solid lightgreen"; 
		}
		else
		{
		   oDivVisual.style.border="2px solid red";
		}
	}
	else if (field_notification_type == 'alert')
	{
		if(field_valid == 0)
		{
			do_alert = true;
			if (alert_msg.length == 0)
			{
				alert_msg = field_error_msg;
			}
			else
			{
				alert_msg = alert_msg + '\n' + field_error_msg;
			}
		}
	}
}
