// JavaScript Document

function cancel_item2()
{
	if(confirm("Are you sure?"))
	{
		window.history.back();
	}
}

function is_email(str)
{
  // are regular expressions supported?
  var supported = 0;
  if (window.RegExp)
  {
    var tempStr = "a";
    var tempReg = new RegExp(tempStr);
    if (tempReg.test(tempStr)) supported = 1;
  }
  if (!supported) 
    return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$");
  return (!r1.test(str) && r2.test(str));
}

function validate_email(form)
{
	if(is_email(form.Email.value) == true)
	{
		return true;
	}
	else
	{
		alert("Please enter a valid email address");
		form.Email.focus();
		return false
	}
}

function validate_jbe(form)
{
	var return_value = false;
	var role_type_count = 0;
	var sector_count = 0;
	var location_count = 0;
	
	if(form.role_types.length == undefined)
	{
		if(form.role_types.checked == true)
		{
			role_type_count++;
		}
	}
	else
	{
		for(i=0;i<form.role_types.length;i++)
		{
			if(form.role_types[i].checked == true)
			{
				role_type_count++;
			}
		}
	}
	
	if(form.sectors.length == undefined)
	{
		if(form.sectors.checked == true)
		{
			sector_count++;
		}
	}
	else
	{
		for(i=0;i<form.sectors.length;i++)
		{
			if(form.sectors[i].checked == true)
			{
				sector_count++;
			}
		}
	}
	
	if(form.locations.length == undefined)
	{
		if(form.locations.checked == true)
		{
			location_count++;
		}
	}
	else
	{
		for(i=0;i<form.locations.length;i++)
		{
			if(form.locations[i].checked == true)
			{
				location_count++;
			}
		}
	}
	
	if(form.Name.value == "")
	{
		alert("Please enter your name");
		form.Name.focus();
	}
	else if(is_email(form.Email.value) == false)
	{
		alert("Please enter a valid email address");
		form.Email.focus();
	}
	else if((form.Password.value == "") || (form.Password.value.length < 6) || (form.Password.value.length > 10))
	{
		alert("Please enter a password between 6 and 10 characters in length");
		form.Password.focus();
	}
	else if(form.Password.value != form.pass_conf.value)
	{
		alert("Your passwords do not match");
		form.Password.focus();
	}
	else if(role_type_count == 0)
	{
		alert("Please select at least one role type");
	}
	else if(sector_count == 0)
	{
		alert("Please select at least one sector");
	}
	else if(location_count == 0)
	{
		alert("Please select at least one location");
	}
	else
	{
		return_value = true;
	}
	
	return return_value;
}

function isblank(s)
{
    for(var i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if ((c != ' ') && (c != '\n') && (c != '\t')) return false;
    }
    return true;
}

function validate_form(f)
{
    var msg;
    var empty_fields = "";
	var overflow_fields = "";
    var errors = "";
	var focus_field = "";
	var form_data = "";
	var c = 0;

    // Loop through the elements of the form, looking for all 
    // text and textarea elements that don't have an "optional" property
    // defined.  Then, check for fields that are empty and make a list of them.
    // Also, if any of these elements have a "min" or a "max" property defined,
    // then verify that they are numbers and that they are in the right range.
    // Put together error messages for fields that are wrong.
    for(var i = 0; i < f.length; i++) {
        var e = f.elements[i];
		//alert(e.type);
		if (((e.type == "text") || (e.type == "textarea")) && !e.optional) {
            // chech if field should contain an email address
			if(e.isemail)
			{
				if(is_email(e.value) == false)
				{
					if (!e.description){
						if(empty_fields.indexOf((e.name)) == -1) {
							empty_fields += "\n          " + e.name;
						}
					}
					else {
						if(empty_fields.indexOf((e.description)) == -1) {
							empty_fields += "\n          " + e.description;
						}
					}
					if (focus_field == "") {
						focus_field = e;
					}
					continue;
				}
			}
			
			// first check if the field is empty
            if ((e.value == null) || (e.value == "") || isblank(e.value)) {
				if (!e.description){
					if(empty_fields.indexOf((e.name)) == -1) {
						empty_fields += "\n          " + e.name;
					}
//                	empty_fields += "\n          " + e.name;
				}
				else {
					if(empty_fields.indexOf((e.description)) == -1) {
						empty_fields += "\n          " + e.description;
					}
//					empty_fields += "\n          " + e.description;
				}
				if (focus_field == "") {
					focus_field = e;
				}
                continue;
            }

            // Now check for fields that are supposed to be numeric.
            if (e.numeric || (e.min != null) || (e.max != null)) { 
                var v = parseFloat(e.value);
                if (isNaN(v) || 
                    ((e.min != null) && (v < e.min)) || 
                    ((e.max != null) && (v > e.max))) {
                    errors += "- The field " + e.name + " must be a number";
                    if (e.min != null) {
                        errors += " that is greater than " + e.min;
						if (focus_field == "") {
							focus_field = e;
						}
					}
                    if (e.max != null && e.min != null) {
                        errors += " and less than " + e.max;
						if (focus_field == "") {
							focus_field = e;
						}
					}
                    else if (e.max != null) {
                        errors += " that is less than " + e.max;
						if (focus_field == "") {
							focus_field = e;
						}
					}
                    errors += ".\n";
                }
            }
        }
		if (((e.type == "text") || (e.type == "textarea")) && e.max_chars) {
			if (e.value.length > e.max_chars)
			{
				if (!e.description){
                	overflow_fields += "\n          " + e.name;
				}
				else {
					overflow_fields += "\n          " + e.description;
				}
			}
		}
		
		if (e.type == "checkbox") {
			var bOneChecked = false;
			
	        var aChecks = document.getElementsByName(e.name);
	        for (var j = 0; j < aChecks.length; j++) {
              if (aChecks[j].checked) bOneChecked = true;
			  break;
 	        }

    	     if (!bOneChecked) {
				 if (!e.description){
				 	if(empty_fields.indexOf((e.name)) == -1) {
                		empty_fields += "\n          " + e.name;
					}
				}
				else {
					if(empty_fields.indexOf((e.description)) == -1) {
						empty_fields += "\n          " + e.description;
					}
				}
				if (focus_field == "") {
					focus_field = e;
				}
			}
		}
		
		if (e.type == "radio") {
			var bOneChecked = false;
	        var aRadios = document.getElementsByName(e.name);
	        for (var j = 0; j < aRadios.length; j++) {
              if (aRadios[j].checked) bOneChecked = true;
			  break;
 	        }

    	     if (!bOneChecked) {
				 if (!e.description){
				 	if(empty_fields.indexOf((e.name)) == -1) {
                		empty_fields += "\n          " + e.name;
					}
				}
				else {
					if(empty_fields.indexOf((e.description)) == -1) {
						empty_fields += "\n          " + e.description;
					}
				}
				if (focus_field == "") {
					focus_field = e;
				}
			}
		}
		if (e.type == "select-one")
		{
			if(e.not_zero)
			{
				if (e.value == "0")
				{
					if (!e.description){
						if(empty_fields.indexOf((e.name)) == -1) {
							empty_fields += "\n          " + e.name;
						}
	//                	empty_fields += "\n          " + e.name;
					}
					else {
						if(empty_fields.indexOf((e.description)) == -1) {
							empty_fields += "\n          " + e.description;
						}
	//					empty_fields += "\n          " + e.description;
					}
					if (focus_field == "") {
						focus_field = e;
					}
					continue;
				}
			}
		}
    }

    // Now, if there were any errors, then display the messages, and
    // return true to prevent the form from being submitted.  Otherwise
    // return false
    if (!empty_fields && !errors && !overflow_fields) {
/*		for(var i = 0; i < f.length; i++) {
			var e = f.elements[i];
			if((e.type == "text") || (e.type == "textarea")) {
				if(!e.description) {
					form_data += e.name + "::" + e.value + "%%";
				}
				else {
					form_data += e.description + "::" + e.value + "%%";
				}
				c++;
			}
			else if((e.type == "radio") && (e.checked == true)) {
				if(!e.description) {
					form_data += e.name + "::" + e.value + "%%";
				}
				else {
					form_data += e.description + "::" + e.value + "%%";
				}
				c++;
			}	
		}
		f.form_data.value = form_data;
		f.element_count.value = c;*/
		return true;
		//return false;
	}

    msg  = "______________________________________________________\n\n"
    msg += "The form was not submitted because of the following error(s).\n";
    msg += "Please correct these error(s) and re-submit.\n";
    msg += "______________________________________________________\n\n"

    if (empty_fields) {
        msg += "- The following field(s) have not been completed correctly:" 
                + empty_fields + "\n";
    }
	if(overflow_fields)
	{
		msg += "\n- The following field(s) contain too many characters:"
			+ overflow_fields + "\n";
	}
	if(errors){
		msg += "\n"
			+ errors;
	}
    alert(msg);
	if (focus_field != "") {
		focus_field.focus();
	}
    return false;
}

function set_banner_pos()
{	//alert(window.innerWidth);
	if(typeof(window.innerWidth) != "undefined")
		var width = window.innerWidth;
	else
		var width = document.body.offsetWidth;
/*	if(width == "undefined")
		var width = document.body.offsetWidth;
	//alert("Width: " + width);*/
	
	if(width >= 770)
	{
		var position = ((width - 770) / 2) + 413;
	}
	else
	{
		var position = +413;
	}
	document.getElementById('topBanner').style.left = position;
}

// JavaScript Document

function updatePremium(form)
{
	var premium = 0;
	var basePrice = parseFloat(form.prod_price.value);
	var elem = form.elements;
	for(var i=0;i<elem.length;i++)
	{
		if(elem[i].type == "select-one")
		{
			var tmpOption = elem[i].value;
			if(tmpOption.search("::") >= 0)
			{
				var aTmp = tmpOption.split("::");
				var tmpPremium = parseFloat(aTmp[1]);
				premium = premium + tmpPremium;
			}
		}
	}
	var totalPrice = basePrice + premium;
	form.prod_premium.value = premium;
	totalPrice = totalPrice.toFixed(2);
	var strText = "&pound;" + totalPrice;
	//alert(strText);
	
	var newEm = document.createElement("em");
	var newText = document.createTextNode(strText);
	newEm.appendChild(newText);
	newEm.setAttribute("id","finalPrice");
	
	//var objContainer = document.getElementById("finalPrice");
	var oldEm = document.getElementsById("finalPrice").item(0);
	var replaced = document.replaceChild(newEm,oldEm);
}

function validate_product(form)
{
	for(var i = 0; i < form.elements.length; i++)
	{
		if(form.elements[i].type == "select-one")
		{
			if(form.elements[i].value == "0")
			{
				var attr_name = form.elements[i].name;
				attr_name = attr_name.replace("attr_","");
				attr_name = attr_name.replace(/_/g," ");
				alert("Please select a " + attr_name);
				form.elements[i].focus();
				return false;
			}
		}
		else if(form.elements[i].name == "qty")
		{
			if(!isNumeric(form.elements[i].value))
			{
				alert("Please enter a valid quantity");
				form.elements[i].focus();
				return false;
			}
		}
	}
	return true;
}

function update_qty(form)
{
	if(validate_basket(form) == true)
	{
		form.submit();
	}
}

function validate_basket(form)
{
	var return_value = true;
	var prod_count = form.prod_count.value;
	var error_index = 0;
	for(var i=1;i<=prod_count;i++)
	{
		var tmp_field = "qty_" + i;
		var tmp_value = document.getElementById(tmp_field).value;
		if(!isNumeric(tmp_value) || parseInt(tmp_value,10) < 1)
		{
			return_value = false;
			error_index = i;
			break;
		}
	}
	if(return_value == false)
	{
		alert("Please ensure that all quantities are whole numbers");
		var tmp_field = "qty_" + error_index;
		document.getElementById(tmp_field).focus();
	}
	return return_value;
}

function isNumeric(sText)
{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

   if(sText.length > 0)
   {
	   for (i = 0; i < sText.length && IsNumber == true; i++) 
		  { 
		  Char = sText.charAt(i); 
		  if (ValidChars.indexOf(Char) == -1) 
			 {
			 IsNumber = false;
			 }
		  }
   }
   else
   {
	   IsNumber = false;
   }
   return IsNumber;
   
}

function submit_login(form)
{
	if(validate_login(form) == true)
	{
		form.submit();
	}
}

function validate_login(form)
{
	var return_value = false;
	for(var i=0;i<form.lCusType.length;i++)
	{
		if(form.lCusType[i].checked == true)
		{
			var cusType = form.lCusType[i].value;
			break;
		}
	}
	if(form.lEmail.value == "")
	{
		alert("Please enter your email address");
		form.lEmail.focus();
	}
	else if(cusType == "Existing" && form.lPassword.value == "")
	{
		alert("Please enter your password");
		form.lPassword.focus();
	}
	else
	{
		return_value = true;
	}
	
	return return_value;
}

function submit_login(form)
{
	if(validate_login(form) == true)
	{
		form.submit();
	}
}

function validate_email(form)
{
	var return_value = false;
	if(form.lEmail.value == "")
	{
		alert("Please enter your email address");
		form.lEmail.focus();
	}
	else
	{
		return_value = true;
	}
	
	return return_value;
}

function submit_personal(form)
{
	if(validate_personal(form) == true)
	{
		form.submit();
	}
}

function validate_personal(form)
{
	var return_value = false;
	if(form.firstName.value == "")
	{
		alert("Please enter your first name");
		form.firstName.focus();
	}
	else if(form.lastName.value == "")
	{
		alert("Please enter your last name");
		form.lastName.focus();
	}
	else if(form.email.value == "")
	{
		alert("Please enter your email address");
		form.email.focus();
	}
	else if(form.password.value == "")
	{
		alert("Please enter a password");
		form.password.focus();
	}
	else if(form.password.value != form.password2.value)
	{
		alert("Your passwords do not match");
		form.password.focus();
	}
	else if(form.addr1.value == "")
	{
		alert("Please enter your address");
		form.addr1.focus();
	}
	else if(form.postcode.value == "")
	{
		alert("Please enter your postcode");
		form.postcode.focus();
	}
	else if(form.del_addr1.value == "" && form.use_billing.checked == false)
	{
		alert("Please enter your delivery address");
		form.del_addr1.focus();
	}
	else if(form.postcode.value == "" && form.use_billing.checked == false)
	{
		alert("Please enter your delivery postcode");
		form.del_postcode.focus();
	}
	else if(form.how_found.value == "" && form.user_id.value == 0)
	{
		alert("Please tell us how you found this website");
		form.how_found.focus();
	}
	/*else if(form.terms.checked == false)
	{
		alert('Please confirm that you have read and agree to our terms and conditions');
		form.terms.focus();
	}*/
	else
	{
		return_value = true;
	}
	
	return return_value;
}

function validate_registration(form)
{
	var return_value = false;
	var userId = parseInt(form.user_id.value);
	if(isNaN(userId))
	{
		userId = 0;
	}
	
	var termsChecked = true;
	var teamNameOK = true;
	if(userId == 0)
	{
		termsChecked = form.terms.checked;
		if(form.team_name.value == "" && form.user_team.checked == true)
		{
			teamNameOK = false;
		}
	}
	
	if(form.firstName.value == "")
	{
		alert("Please enter your first name");
		form.firstName.focus();
	}
	else if(form.lastName.value == "")
	{
		alert("Please enter your last name");
		form.lastName.focus();
	}
	else if(form.email.value == "")
	{
		alert("Please enter your email address");
		form.email.focus();
	}
	else if(form.password.value == "")
	{
		alert("Please enter a password");
		form.password.focus();
	}
	else if(form.password.value != form.password2.value)
	{
		alert("Your passwords do not match");
		form.password.focus();
	}
	else if(form.addr1.value == "")
	{
		alert("Please enter your address");
		form.addr1.focus();
	}
	else if(form.postcode.value == "")
	{
		alert("Please enter your postcode");
		form.postcode.focus();
	}
	else if(teamNameOK == false)
	{
		alert("Please enter your team name");
		form.team_name.focus();
	}
	else if(form.how_found.value == "" && form.user_id.value == 0)
	{
		alert("Please tell us how you found this website");
		form.how_found.focus();
	}
	else if(termsChecked == false)
	{
		alert('Please confirm that you have read and agree to our terms and conditions');
		form.terms.focus();
	}
	else
	{
		return_value = true;
	}
	
	return return_value;
}

function show_hide_delivery(doc)
{
	var cbx = doc.getElementById('use_billing');
	
	if (cbx.checked == false)
	{
		doc.getElementById('spanDeliveryDetails').style.display = 'block';
	}
	else
	{
		doc.getElementById('spanDeliveryDetails').style.display = 'none';
	}
}

function submit_ch_billing(form)
{
	if(validate_ch_billing(form) == true)
	{
		form.submit();
	}
}

function validate_payment(form)
{
	var return_value = false;
	
	if(form.card_name.value == "")
	{
		alert("Please enter your name");
		form.card_name.focus();
	}
	else if(form.card_type.value == 0)
	{
		alert("Please select a card type");
		form.card_type.focus();
	}
	else if(cardval(form.card_number.value) == false)
	{
		alert("Please enter a valid card number");
		form.card_number.focus();
	}
	else if(form.end_month.value == 0)
	{
		alert("Please select an end date");
		form.end_month.focus();
	}
	else if(form.end_year.value == 0)
	{
		alert("Please select an end date");
		form.end_year.focus();
	}
	else if(form.card_security_code.value == "")
	{
		alert("Please enter your card security number");
		form.card_security_code.focus();
	}
	else if(form.terms_read.checked == false)
	{
		alert("Please confirm that you have read and agree to our terms and conditions");
		form.terms_read.focus();
	}
	else
	{
		return_value = true;
	}
	
	//alert(return_value);
	//return false;
	return return_value;
}


function cardval(s) {
// remove non-numerics
var v = "0123456789";
var w = "";
for (i=0; i < s.length; i++) {
x = s.charAt(i);
if (v.indexOf(x,0) != -1)
w += x;
}
// validate number
j = w.length / 2;
if (j < 6.5 || j > 9 || j == 7) return false;
k = Math.floor(j);
m = Math.ceil(j) - k;
c = 0;
for (i=0; i<k; i++) {
a = w.charAt(i*2+m) * 2;
c += a > 9 ? Math.floor(a/10 + a%10) : a;
}
for (i=0; i<k+m; i++) c += w.charAt(i*2+1-m) * 1;
return (c%10 == 0);
}

function repeat_order(order_id)
{
	if(confirm("Are you sure? Any items currently in your basket will be removed"))
	{
		var strUrl = 'order_details.cfm?oid=' + order_id + '&REPEAT';
		window.location=strUrl;
	}
}

function validate_contact(form)
{
	var return_value = false;
	if(form.yourName.value == "")
	{
		alert("Please enter your name");
		form.yourName.focus();
	}
	else if(form.contactEmail.value == "")
	{
		alert("Please enter your email address");
		form.contactEmail.focus();
	}
	else if(form.enquiry.value == "")
	{
		alert("Please enter some comments");
		form.enquiry.focus();
	}
	else
	{
		return_value = true;
	}
	return return_value;
}

function openLargeImage(imgUrl)
{
	var features = "height=500,width=500,left=50,top=50,menubar=no,location=no,resizable=no,scrollbars=yes,status=no,toolbar=no";
	
	var new_win = window.open(imgUrl,"imgLArge",features);
}

// Global variable to store image details
var newImage = document.createElement("img");
function swapImage(filename)
{
	clearImage();
	newImage = document.createElement("img");
	var img_path = filename;
	newImage.setAttribute("src", img_path);
	newImage.setAttribute("onLoad", setTimeout("insertImage()",0));
}

function clearImage()
{
	newImage = document.createElement("img");
	var holderDiv = document.getElementById('mainImageHolder');
	var oldImage = document.getElementById('mainImage');
	var removed = holderDiv.removeChild(oldImage);
}

function insertImage()
{
	var holderDiv = document.getElementById('mainImageHolder');
	var oldImage = document.getElementById('loadingImage');
	newImage.setAttribute("id", "mainImage");
	holderDiv.appendChild(newImage,oldImage);
}

