function is_auto_email_ready(form) {
  if (isblank(form.contactname)){alert("Don't forget to give us your name!");form.contactname.focus();return false;}

  if (isblank(form.email)){alert("Don't forget to give us your email address!");form.email.focus();return false;}
  if (IsEmailValid(form.email)){alert("Not sure your email address is valid!");form.email.focus();return false;}

  if (isNotSelected(form.country)){alert("We would like your country Please !");form.country.focus();return false;}
  if (isblank(form.enquiry)){alert("Don't forget a message however short!");form.enquiry.focus();return false;}
}

function is_purchase_form_ready(form) {
  if (isblank(form.first_name)){alert("Don't forget to give us your first name!");form.first_name.focus();return false;}
  if (isblank(form.last_name)){alert("Don't forget to give us your last name!");form.last_name.focus();return false;}
  if (isblank(form.email)){alert("Don't forget to give us your email address!");form.email.focus();return false;}
  if (IsEmailValid(form.email)){alert("Not sure your email address is valid!");form.email.focus();return false;}
  if (isblank(form.address1)){alert("Don't forget to give us your address!");form.address1.focus();return false;}
  if (isblank(form.zip)){alert("Don't forget to give us your Postcode/Zip!");form.zip.focus();return false;}
}

function iswordOK(word) {
str = word.value;
if (str.length < 5){return true;}
for (var i = 0; i < str.length; i++)
  {
   if ((str.charAt(i) == " ")||
       (str.charAt(i) == "'")||
       (str.charAt(i) == "<")||
       (str.charAt(i) == ">")||
       (str.charAt(i) == "$")||
       (str.charAt(i) == "%")||
       (str.charAt(i) == "|")||
       (str.charAt(i) == "@"))
       {return true;}
  } // end for loop
  return false;
}

function isNotSelected(elm) {if (elm.options[0].selected) return true; else return false;}

function is_valid_url(url){     return url.match(/^(ht|f)tps?:\/\/[a-z0-9-\.]+\.[a-z]{2,4}\/?([^\s<>\#%"\,\{\}\\|\\\^\[\]`]+)?$/);}

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

function checkjoined_emails(str) {
  var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
  var returnval = false;
  if (str.indexOf(";") > -1){
    var emailsarray = str.split(";");
	  var email1      = emailsarray[0];
	  var email2      = emailsarray[1];
	  if ((reg.test(email1) == false)||(reg.test(email2) == false)){returnval = true;}
  }
  else {
  	if ((reg.test(str) == false)||(str.length == 0)){returnval = true;}
  }
  return returnval;
}

function isblank(elm){if (elm.value =="") return true; else return false;}

function isnumber(elm){return (elm.value = parseInt( elm.value ));}

function isnotchecked(elm){if (elm.checked==false) return true; else return false;}

function isnotlengthbetween(elm,min,max) {if ( (elm.value.length < min) || (elm.value.length > max) ) return true; else return false;}

function iscolornotok(elm) {
	var str = "|" + elm.value + "|";
	var colors =  new Array ("aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen");
	var colstr = "|" + colors.join("|") + "|";
  if (colstr.indexOf(str)==-1) return true; else return false;
}


function setprice(){
  var n = document.pc.nocals;var p = document.pc.price;
  p1=12;p2=10;p3=5;pounds=0;dollars=0;
  if (n.value==1){pounds=(p1*n.value);dollars=(pounds*1.5);}
  else if ((n.value>1)&&(n.value<11)){pounds=((p2*(n.value-1))+p1);dollars=(pounds*1.5);}
  else if (n.value>10){pounds=((p3*(n.value-10))+(p2*9)+p1);dollars=(pounds*1.5);}
  p.value='£'+pounds;
}

function showLpopup(ULR){
 aWindow=window.open(ULR,"thewindow","width=540, height=550, scrollbars=1");
}

function validateUrl(url_elm){
var str = url_elm.value
for (var i = 0; i < str.length; i++)
  {
   if ((str.charAt(i) == " ")||
       (str.charAt(i) == "'")||
       (str.charAt(i) == "<")||
       (str.charAt(i) == ">")||
       (str.charAt(i) == "$")||
       (str.charAt(i) == "%")||
       (str.charAt(i) == "|")||
       (str.charAt(i) == "@"))
       {return true;}
}
if (url_elm.value == "http://"){return true;}
else if (url_elm.value == ""){return true;}
else {return false;}
}

function calc_amount_free(fm){
var c_p1 = 10;var c_p2 = 8;var c_p3 = 6;var c_p4 = 5;var no_upgrades = 1;var no_years = fm.years.value;var amt = 0;
var now = new Date();var minutes = now.getMinutes();var hour = now.getHours();var day = now.getDate();var month = now.getMonth();var year = now.getYear();
if (no_years==1){amt=parseFloat(c_p1)}else if (no_years==2){amt=parseFloat(c_p1+c_p2)}else if (no_years==3){amt=parseFloat(c_p1+c_p2+c_p3)}else {amt=parseFloat(c_p1+c_p2+c_p3+c_p4)}

if (no_upgrades < 1){
  alert("Error processing order ! Please select Calendar(s) to Upgrade");
  return false;
 }
 else if(fm.check.value == "UPGRADE"){
  fm.cartId.value = ("InstUG - m" + minutes + "h" + hour + "d" + day + month + year);
  var total = parseFloat(amt * no_upgrades);
   if (no_upgrades > 2){total = total - amt;} // discount for 4th calendar
   fm.amount.value = total;
  }
  else {alert("Error processing order !");return false;}
}

function strrev(str) {
   if (!str) return '';
   var revstr='';
   for (i = str.length-1; i>=0; i--)
       revstr+=str.charAt(i)
   return revstr;
}

function calc_amount_multiple(fm){
  var no_upgrades = 0;
  var p_ids="";var d = "";
  var cbs = document.getElementsByName("cals");
  var checkedcount = 0;
	for (var i = 0; i < cbs.length; i++){
		if (cbs[i].checked){
			checkedcount++;
			p_ids = p_ids + cbs[i].value + "|";
			d     = d     + cbs[i].value + " ";
		}
	}
  fm.Description.value = "Upgrade Availcheck Instant Calendars " + d;
  fm.propids.value = p_ids;
  if (checkedcount < 1){
    alert("Error processing order ! Please select Calendar(s) to Upgrade");
    return false;
  }
  else if (document.getElementById("security_code").value==""){
  	alert("Error processing order ! Please check your Security code is filled in correctly");
    return false;

  }
  else {return true;}
}

function calc_amount_paypal_multiple(fm){
  var no_upgrades = 0;
  var p_ids="";var d = "";
  var cbs = document.getElementsByName("cals");
  var checkedcount = 0;
	for (var i = 0; i < cbs.length; i++){
		if (cbs[i].checked){
			checkedcount++;
			p_ids = p_ids + cbs[i].value + "|";
			d     = d     + cbs[i].value + " ";
		}
	}
  fm.Description.value = "Availcheck: Enable Paypal addon for calendars " + d;
  fm.propids.value = p_ids;
  if (checkedcount < 1){
    alert("Error processing order ! Please select Calendar(s)");
    return false;
  }
  else if (document.getElementById("security_code").value==""){
  	alert("Error processing order ! Please check your Security code is filled in correctly");
    return false;
  }
  else {return true;}
}

function strrev(str) {
   if (!str) return '';
   var revstr='';
   for (i = str.length-1; i>=0; i--)
       revstr+=str.charAt(i)
   return revstr;
}

function calcprice(p,r){
 var returnval = 0;r+="";
 if (r.match("%")){
   r = r.substr(0,r.length-1);
   r = parseFloat(r);
   returnval=((r*p)/100);
 }
 else {
   r = parseFloat(r);
   returnval=r;
 }
 returnval = Math.round(returnval);
 return (returnval);
}

function getreductionstr(r,c){
 var returnval="";r+="";
 if (r.match("%")){returnval=r;}
 else {returnval=c+r;}
 return (returnval);
}

function not_divisible_by_seven(n){
 if ((n==7)||(n==14)||(n==21)||(n==28)||(n==35)||(n==42)){return false;}
  else {return true;}
}

function change_prices_view(si){
  if (si == 1) {
    document.getElementById('divdays').className = 'visibleDiv';
    document.getElementById('divtot').className = 'hide';
    document.getElementById('startday').selectedIndex = 0;
  }
  else {
    document.getElementById('divdays').className = 'hide';
    document.getElementById('divtot').className = 'visibleDiv';
  }
}

function doscript(counter,elem){
for (var i=1;i<=counter; i++) {
	if (document.getElementById("result" + i)){document.getElementById("result" + i).className = 'hiddenDiv';}
}
var val = elem.value;
var result = document.getElementById("result" + val);
 if (result){result.className = 'visibleDiv';}
}

function showdetailsnew(detailstr) {
  var mySplit   = detailstr.value.split("|");
	var buttonstr = mySplit[0];
	var pricestr  = mySplit[1];
	var details   = mySplit[2];
	var n         = mySplit[3];
	var e         = mySplit[4];
	var vm        = mySplit[5];vm = parseInt(vm);
  var c = parseInt(e) + parseInt(n);

if (buttonstr){
	for (var i = 0; i < document.getElementsByTagName("td").length; i++){
		if (document.getElementsByTagName("td")[i].className == "gridcell selected_st"){document.getElementsByTagName("td")[i].className = "gridcell availcol";}
    if (document.getElementsByTagName("td")[i].className == "gridcell selectedcol"){document.getElementsByTagName("td")[i].className = "gridcell availcol";}
    if (document.getElementsByTagName("td")[i].className == "gridcell selected_end"){document.getElementsByTagName("td")[i].className = "gridcell availcol";}
  }
  // fill info boxes
  if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){
    if (document.getElementById("showprice")){document.getElementById("showprice").textContent  = pricestr;}
      document.getElementById("shownights").textContent  = buttonstr;
  }
  else {
	  if (document.getElementById("showprice")){document.getElementById("showprice").innerText = pricestr;}
      document.getElementById("shownights").innerText = buttonstr;
  }
  document.getElementById("details").value  = details;
 // set class of booked days
  for (var i=e; i<c; i++){
 	  var tdclass = "t" + i;
 	  if ((vm) && (i==e)){if (document.getElementById(tdclass)){document.getElementById(tdclass).className = "gridcell selected_st";} 	  	}
 	  else {if (document.getElementById(tdclass)){document.getElementById(tdclass).className = "gridcell selectedcol";}}
 	  if ((vm) && (i==(c-1))){var tdclass = "t" + (i+1);if (document.getElementById(tdclass)){document.getElementById(tdclass).className = "gridcell selected_end";}}
  } // for
  if ((vm) && (n==1)){var tdclass = "t" + (c);if (document.getElementById(tdclass)){document.getElementById(tdclass).className = "gridcell selected_end";}}
}
}

function toggle_summary(){
	document.getElementById("toggle").innerHTML=(document.getElementById("toggle").innerHTML!= buttext + " +")? buttext + " +" : buttext + " -";
}

function prices_summary(propid,langu,session_id,buttext) {
	document.getElementById("toggle").innerHTML=(document.getElementById("toggle").innerHTML!= buttext + " +")? buttext + " +" : buttext + " -";

	if (document.getElementById("toggle").innerHTML == buttext + " -"){
  var url="http://localhost:81/cgi-bin/instant_cals/c_calls.cgi";
  var url="http://www.availcheck.com/cgi-bin/c_calls.cgi";

  url=url+"?p=" + propid + "&lang=" + langu + "&session_id=" + session_id;

  if (window.XMLHttpRequest){xmlhttp=new XMLHttpRequest();}
  else {xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
  xmlhttp.onreadystatechange=function(){
    if (xmlhttp.readyState==4 && xmlhttp.status==200){
    	document.getElementById("price_summary").className = "gridtitles scrollformat";
      document.getElementById("price_summary").innerHTML =  xmlhttp.responseText;
    }
  }
  xmlhttp.open("GET",url,true);
  xmlhttp.send();
}
else {
	document.getElementById("price_summary").className = "hiddenDiv";
	document.getElementById("price_summary").innerHTML="";}

}

function set_as_today(){
	var cd = new Date();
  document.getElementById("day").value = cd.getDate();
  document.getElementById("month").value = "m" + cd.getMonth();
  document.getElementById("year").value = cd.getFullYear();
}

function datechange(d,m,y,multiplier) {
  m = m.substr(1);
  var cd = new Date(y,m,d);
  multiplier = parseInt(multiplier);
  cd.setDate(cd.getDate() + multiplier);
  document.getElementById("day").value = cd.getDate();
  document.getElementById("month").value = "m" + cd.getMonth();
  document.getElementById("year").value = cd.getFullYear();
}


function showupgradeprice(){
	// altering code this will not change the final price so don't bother
	var p   = 0;
	var cbs = document.getElementsByName("cals");
	var elem = document.getElementById("years");
  var years = elem.options[elem.selectedIndex].value;
  var discounttext = "<br>";
  var cc = 0; // checked count
  for (var i = 0; i < cbs.length; i++){
  	if (cbs[i].checked){cc++}
  }
if (cc){
 	for (var i = 1; i <= cc; i++){
  	if (i <= 8){
  	  if (i % 4 != 0){
  	    if (years==3)     {p+=30}
        else if (years==2){p+=22}
        else              {p+=12}
  	  }
  	  else {discounttext = discounttext + "includes a 4 upgrades for 3 discount<br>"}
    }
    else if (i > 8){
  	  if (i % 2 != 0){
  	    if (years==3)     {p+=30}
        else if (years==2){p+=22}
        else              {p+=12}
  	  }
  	  else {discounttext = discounttext +  "includes a 2 upgrades for 1 discount<br>"}
    }
    document.getElementById("pricedisplay").innerHTML = "£" + p + discounttext;
  }
 }
 else {document.getElementById("pricedisplay").innerHTML = "Select calendar(s) to upgrade";}
}

function showpaypalprice(){
	// altering code this will not change the final price so don't bother
	var p   = 0;
	var price = 6;
	var cbs = document.getElementsByName("cals");

  var cc = 0; // checked count
  for (var i = 0; i < cbs.length; i++){
  	if (cbs[i].checked){cc++}
  }
if (cc){
 	p = price * cc;
  document.getElementById("pricedisplay").innerHTML = "£" + p;
}
else {document.getElementById("pricedisplay").innerHTML = "Select calendars";}
}

function showselectdetails(no_days,propid) {
  if (no_days){
    var url="http://localhost:81/cgi-bin/instant_cals/select.cgi";
    var url="http://www.availcheck.com/cgi-bin/select.cgi";
      url=url+"?no_days=" + no_days + "&propid=" + propid;
      if (window.XMLHttpRequest){xmlhttp=new XMLHttpRequest();}
      else {xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
      xmlhttp.onreadystatechange=function(){
        if (xmlhttp.readyState==4 && xmlhttp.status==200){
          document.getElementById("booking_results").innerHTML=xmlhttp.responseText;
          document.getElementById("booking_results").className = "notice";
    	    document.getElementById("submitbutton1").className = "";
    	    document.getElementById("submitbutton2").className = "";
        }
      }
    xmlhttp.open("GET",url,true);
    xmlhttp.send();
}
else {
	document.getElementById("booking_results").innerHTML = "";
	document.getElementById("booking_results").className = "hidden";
	document.getElementById("submitbutton1").className = "hidden";
	document.getElementById("submitbutton2").className = "hidden";
}
}

function toggle_visiblity(elm){
	e = document.getElementById(elm);
  if (e.className == "hide") {e.className = "infotext"}
  else {e.className = "hide"}
}

function validate_acct(){
	var error_results = document.getElementById("error_results");
  var errorstr = "";
	var returnval = true;
	var member_name = document.getElementById("member_name");
	var password1   = document.getElementById("password1");
	var password2   = document.getElementById("password2");
	var email       = document.getElementById("email");
	var hint_answer = document.getElementById("hint_answer");

	// member_name
	if (isnotlengthbetween(member_name,5,30)){
		member_name.className = "error";
		errorstr = errorstr + "Membership name should be 5 - 30 characters long<br>";
		returnval = false;
	}
	else {member_name.className = "";}

  // password1
	if (isnotlengthbetween(password1,5,8)){
		password1.className = "error";
		errorstr = errorstr + "Password must be 5 - 8 characters long<br>";
		returnval = false;
	}
	else {password1.className = "";}

  // password match
	if (password1.value != password2.value){
		password1.className = "error";
		password2.className = "error";
		errorstr = errorstr + "Passwords do not match<br>";
		returnval = false;
	}
	else {password1.className = "";password2.className = "";}

	// email
	if (IsEmailValid(email)){
		email.className = "error";
		errorstr = errorstr + "Not sure your email address is valid<br>";
		returnval = false;
	}
  else {email.className = "";}

	// hint answer
	if (isblank(hint_answer)){
		hint_answer.className = "error";
		errorstr = errorstr + "Please select a hint question and fill in an answer<br>";
		returnval = false;
	}
	else {hint_answer.className = "";}


	if (returnval == false) {
    error_results.className = "error";
	  error_results.innerHTML = "<b>Error processing form</b><br>" + errorstr;
  }
return returnval;
}


function validate_form(){
  var error_results = document.getElementById("error_results");
  var message = document.getElementById("message");
	var title = document.getElementById("title");
	var propname = document.getElementById("propname");
	var propemail = document.getElementById("propemail");
	var email_text = document.getElementById("email_text");
	var headertext = document.getElementById("headertext");
	var errorstr = "";
	var returnval = true;

	// title
	if (isnotlengthbetween(title,5,50)){
		title.className = "error";
		errorstr = errorstr + "Calendar Main heading should be 5 - 50 characters long<br>";
		returnval = false;
	}
	else {title.className = "";}

// propname
	if (isnotlengthbetween(propname,5,50)){
		propname.className = "error";
		errorstr = errorstr + "Calendar Sub heading should be 5 - 50 characters long<br>";
		returnval = false;
  }
  else {propname.className = "";}


// headertext
   if (isnotlengthbetween(headertext,0,500)){
		headertext.className = "error";
		errorstr = errorstr + "Headertext must be max 500 characters long including spaces (html and other characters may be removed)<br>";
		returnval = false;
	}
  else {headertext.className = "";}

  if (checkjoined_emails(propemail.value)){
		propemail.className = "error";
		errorstr = errorstr + "Not sure your email address is valid<br>";
		returnval = false;
	}
  else {propemail.className = "";}

	if (returnval == false) {
    error_results.className = "error";
	  error_results.innerHTML = "<b>Error processing form</b><br>" + errorstr;
	  message.className = "hidden";
  }
return returnval;
}
function selectcolor(s) {s.style.backgroundColor=s.options[s.selectedIndex].style.backgroundColor}
