// quote form field validation functions
//var rowExists = false;
var newCell;
var cellValue = 1234;
var xmlHttp;
var quoteButton;
var services = "storage";
var storage = "onsite";

function quotePageInit() {
  //alert("init page...");
  //rowExists = false;
  //document.getElementById("storagelocationinput").checked = false;
  //document.getElementById("tozipcodeinput").checked = false;
  //document.getElementById("quotespinner").style.visibility = "hidden";
}

function form_validates( quote ) {
  var results = true;
  var alertText = "";

  // number of units
  var twelves = document.getElementById("12_foot_containers_needed").value;
  var sixteens = document.getElementById("16_foot_containers_needed").value;
  if( twelves == "0" && sixteens == "0" ) {
    alertText = "- No storage units selected\n";
    results = false;
  }

  // zipcode
  var zip = document.getElementById("zipcodefrom").value;
  if( isNaN(zip) || ( !isNaN(zip) && (zip.length < 5) ) ) {
    alertText += "- Initial Delivery Zip Code is not a number or too short.\n";
    results = false;
  }

  // moving to zipcode
  if( services == "moving" || services == "both" ) {
    var tozip = document.getElementById("zipcodeto").value;
    if( isNaN(tozip) || ( !isNaN(tozip) && (tozip.length < 5) ) ) {
      alertText += "- Moving to Delivery Zip Code is not a number or too short.\n";
      results = false;
    }
  }

  if( !quote ) {
    var tenantID = document.getElementById("tenantID").value;
    if( tenantID.length > 0 ) {
      if( isNaN(tenantID) ) {
	alertText += "- Tenant ID must be a number\n";
	results = false;
      }
    } else {
      // first & last name
      var fname = document.getElementById("namef").value;
      var lname = document.getElementById("namel").value;
      if( (fname.length == 0) || (lname.length == 0) || (fname.match("first") != null) || (lname.match("last") != null) ) {
	alertText += "- First or Last Name fields not filled in\n"; //+fname.match("first")+","+lname.match("last")+"\n";
	results = false;
      }
      
      // phone or email
      var phone = document.getElementById("phone").value;
      var email = document.getElementById("email").value;
      if( (phone.length == 0 && email.length == 0) ) { // || (phone.match("areacode+phone") != null && email.length == 0) ) {
	alertText += "- Phone and/or Email fields not filled in\n";
	results = false;
      } else {
	if( (phone.length > 0) && (phone.length < 10) ) {
	  alertText += "- Phone number must include areacode and number\n";
	  results = false;
	}
	if( email.length > 0 ) {
	  if( email.indexOf("@") == "-1" || email.indexOf(".") == "-1" || email.indexOf("@") == 0 ) {
	    alertText += "- Email address is not accepted, please re-enter\n";
	    results = false;
	  }
	}
      }
    }
  }

  //return( true );

  if( ! results ) {
    alert("Form not ready for submission.\n"+alertText);
  }
  return(results);
}
function clearQuote() {
  document.getElementById("quoteresults").style.visibility = "hidden";
  if( document.getElementById("quoteID") ) {
    var quoteid = document.getElementById("quoteID").value;
    document.getElementById("quoteresults").innerHTML = "<input type=\"hidden\" id=\"quoteID\" name=\"quoteID\" value=\""+quoteid+"\" />";
  } else {
    document.getElementById("quoteresults").innerHTML = "";
  }
}
function getaquote() {
  var argString="";
  var quoteid = "quoteId=";
  var i;

  if( document.getElementById("quoteID") ) {
    //alert("quoteID="+document.getElementById("quoteID").value);
    quoteid += document.getElementById("quoteID").value;
  }

  //quoteButton = document.getElementById("quotebutton").innerHTML;
  //document.getElementById("quotebutton").innerHTML = "<img src=\"ajax-loader-small.gif\">";
  
  if( form_validates(1) ) {
    //alert("form valid");
    //document.getElementById("quotespinner").innerHTML = "<img src=\"ajax-loader.gif\">";
    document.getElementById("quotespinner").style.visibility = "visible";
    argString = quoteid+"&twelves="+document.getElementById("12_foot_containers_needed").value;
    argString += "&sixteens="+document.getElementById("16_foot_containers_needed").value;

    switch( services ) {
    case "storage":
      argString += "&moving=no";
      argString += "&storage=yes";
      break;
    case "moving":
      argString += "&moving=yes";
      argString += "&storage=no";
      break;
    case "both":
      argString += "&moving=yes";
      argString += "&storage=yes";
      break;
    default:
      argString += "&moving=no";
      argString += "&storage=no";
    }

    switch( storage ) {
    case "onsite":
      argString += "&onsite=yes";
      argString += "&warehouse=no";
      break;
    case "warehouse":
      argString += "&onsite=no";
      argString += "&warehouse=yes";
      break;
    case "other":
      argString += "&onsite=yes";
      argString += "&warehouse=yes";
      break;
    default:
      argString += "&onsite=no";
      argString += "&warehouse=no";
    }

    argString += "&zipfrom="+document.getElementById("zipcodefrom").value;
    //if( moving )
      argString += "&zipto="+document.getElementById("zipcodeto").value;
      //else
      //argString += "&zipto=";

    //argString += "\n";

    argString += "&deliverdate="+document.getElementById("deliver_date").value;
    argString += "&months="+document.getElementById("months_needed").value;
    /*
    argString += "&fname="+document.getElementById("namef").value;
    argString += "&lname="+document.getElementById("namel").value;
    argString += "&email="+document.getElementById("email").value;
    argString += "&phone="+document.getElementById("phone").value;
    argString += "&calltime="+document.getElementById("calltime").value;
    */
    if( document.getElementById("military").checked ) argString += "&military=yes";
    else  argString += "&military=no";
    if( document.getElementById("senior").checked ) argString += "&senior=yes";
    else  argString += "&senior=no";
    if( document.getElementById("corporate").checked ) argString += "&corporate=yes";
    else  argString += "&corporate=no";
    argString += "&couponcode="+document.getElementById("coupon_code").value;

    var referringpage = document.getElementById("referrer").value;
    if( referringpage.length > 0 ) 
      argString += "&referrer="+referringpage;
    else
      argString += "&referrer=none";

    //alert(argString);
    clearQuote();
    sendQuoteRequest(argString);
  } else {
    document.getElementById("quotespinner").style.visibility = "hidden";
    //document.getElementById("quotespinner").innerHTML = "";
  }
}

function serviceSelect(selected) {
  clearQuote();
  services = selected;
}

function storageSelect( selected ) {
  clearQuote();
  storage = selected;
}

function corporatechecked() { 
  clearQuote();

  if( document.getElementById("corporate").checked ) {
    document.getElementById("corpdiscountnotice").style.visibility = "visible";
    document.getElementById("military").checked = false;
    document.getElementById("senior").checked = false;
  } else {
    document.getElementById("corpdiscountnotice").style.visibility = "hidden";
  }
}
function closecorporatenotice() {
  document.getElementById("corpdiscountnotice").style.visibility = "hidden";
}
function militarychecked() {
  clearQuote();

    document.getElementById("corporate").checked = false;
    document.getElementById("senior").checked = false;
 }
function seniorchecked() {
  clearQuote();

    document.getElementById("corporate").checked = false;
    document.getElementById("military").checked = false;
}
function unitcalculate( which ) {
  clearQuote();

  switch( which ) {
  case "on":
    document.getElementById("unitcalculator").style.visibility = "visible";
    break;
  case "off":
    document.getElementById("unitcalculator").style.visibility = "hidden";
    break;
  }
}

function numberofunits() {
  var locationfactor = 1;
  var sizefactor = 1;
  var twelves = "";
  var newHTML = new String();
  var size = document.getElementById("squarefeet").value;
  var rooms = document.getElementById("rooms").selectedIndex + 1;
  var garage = document.getElementById("garage").checked;
  var basement = document.getElementById("basement").checked;
  var result = document.getElementById("calculatedresult");

  switch ( document.getElementById("locationtype").value ) {
  case "house":
    locationfactor = 1;
    break;
  case "business":
    locationfactor = 1.5;
    break;
  case "apartment":
    locationfactor = 1.2;
    break;
  default:
    locationfactor = 1;
  }

  // using UNITS Storage Space Estimator
  // 12' unit is 720ft3 and holds up to 1,200ft2 house or 1-2 bedrooms  
  // 16' unit is 960ft3 and holds up to 1,500-1,800ft2 house or 3 bedrooms  
  var largeunits =  new Number (0);
  var smallunits = new Number(0);
  if( size > 0 ) {
    // use square feet instead of rooms
    size *= locationfactor;
    if( garage ) size += 400; 
    if( basement ) size += 500;
    if( size > 1200 ) {
      // start calculating
      largeunits = size / 1200;
      smallunits = largeunits - Math.floor(largeunits);
      largeunits = Math.floor(largeunits);
      if( smallunits >= .75 ) {
	largeunits += 1;
	smallunits = 0;
      }
      if( smallunits > .1 ) smallunits = Math.ceil(smallunits);
      else smallunits = 0;
    } else {
      // at least 1-12'
      smallunits = 1;
      largeunits = 0;
    }
  } else if( rooms > 0 ){
    // use rooms
    if( rooms < 3 ) {
      largeunits = 0;
      smallunits = 1;
    } else if( rooms >=3 && rooms <4 ) {
      largeunits = 1;
      smallunits = 0;
    } else if( rooms >=4 && rooms <5 ) {
      largeunits = 1;
      smallunits = 1;
    } else {
      largeunits = 3;
      smallunits = 0;
    }
    if( garage && basement ) smallunits += 1;
  } else {
    smallunits = 0;
    largeunits = 0;
  }

  newHTML = "You need: <br />";
  if( largeunits > 0 ) newHTML += largeunits + " - 16' UNITS<br />";
  if( smallunits > 0 ) newHTML += smallunits + " - 12' UNITS";
  result.innerHTML = newHTML;
  document.getElementById("12_foot_containers_needed").selectedIndex = smallunits;
  document.getElementById("16_foot_containers_needed").selectedIndex = largeunits;
  
}
function sendQuoteRequest(str) { 
  xmlHttp = GetXmlHttpObject();
  if (xmlHttp==null) {
    alert ("Browser does not support HTTP Request");
    return;
  }
  var url = "http://"+location.hostname+"/quote-units/code/buildQuote.php";
  url = url + "?q=quoterequest&" + str;
  url = url + "&sid=" + Math.random();
  //alert("sendThis: "+url);
  xmlHttp.onreadystatechange = checkResult;
  xmlHttp.open("GET",url,true);
  //xmlHttp.open("GET",url,false); //waits for response before continuing
  xmlHttp.send(null);
  //alert("Your message is being processed...");
}

function checkResult() { 
  if ( xmlHttp.readyState == 4 || xmlHttp.readyState == "complete" ) { 
    if( xmlHttp.responseText.search("noprice") != -1 ) {
      document.getElementById("quoteresults").innerHTML = xmlHttp.responseText;
      document.getElementById("quoteresults").style.visibility = "visible";
      submitQuote();
    } else {
      document.getElementById("quoteresults").style.visibility = "visible";
      document.getElementById("quoteresults").innerHTML = xmlHttp.responseText;
      //alert(xmlHttp.responseText);
      //document.getElementById("txtHint").innerHTML=xmlHttp.responseText ;
      document.getElementById("quotespinner").style.visibility = "hidden";
      //document.getElementById("quotespinner").innerHTML = "";
      //document.getElementById("quotebutton").innerHTML = quoteButton;
    }
  }
}

function GetXmlHttpObject() {
  var xmlHttp = null;
  try {
    // Firefox, Opera 8.0+, Safari
    xmlHttp = new XMLHttpRequest();
  }
  catch (e) {
    //Internet Explorer
    try {
      xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e) {
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
  return xmlHttp;
}  

function orderOnline() {
  if( form_validates(0) ) {
    document.getElementById("theForm").action = "price-extras.html";
    document.getElementById("theForm").submit();
  }
}  

function submitQuote() {
  if( form_validates(1) ) {
    //document.getElementById("theForm").action = "quote-thank-you.html";
    document.getElementById("theForm").action = "quote-info.html";
    document.getElementById("theForm").submit();
  }
}

