function XHConn()
{
   var xmlhttp, bComplete = false;
   try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
   catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
   catch (e) { try { xmlhttp = new XMLHttpRequest(); }
   catch (e) { xmlhttp = false; }}}
   if (!xmlhttp) return null;
   this.connect = function(sURL, sMethod, sVars, fnDone)
   {
     if (!xmlhttp) return false;
     bComplete = false;
     sMethod = sMethod.toUpperCase();

     try {
       if (sMethod == "GET")
       {
         xmlhttp.open(sMethod, sURL+"?"+sVars, true);
         sVars = "";
       }
       else
       {
         xmlhttp.open(sMethod, sURL, true);
         xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");
         xmlhttp.setRequestHeader("Content-Type",
           "application/x-www-form-urlencoded");
       }
       xmlhttp.onreadystatechange = function(){
         if (xmlhttp.readyState == 4 && !bComplete)
         {
           bComplete = true;
           fnDone(xmlhttp);
         }};
       xmlhttp.send(sVars);
     }
     catch(z) { return false; }
     return true;
   };
   return this;
}

/*
    Written by Jonathan Snook, http://www.snook.ca/jonathan
    Add-ons by Robert Nyman, http://www.robertnyman.com
*/

function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}

/*
  http://www.mredkj.com/javascript/numberFormat.html#addcommas 
*/

function addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}

function sendMessage() {
	var myConn = new XHConn(); 
	if (!myConn) {return;} 
	var fnWhenDone=function(oXML){
		document.getElementById('sitemessage').innerHTML = oXML.responseText;
		document.getElementById('subject').value='';
		document.getElementById('message').value='';
	}				
	url="actions/send_message.php";			
	params="subject=" + document.getElementById('subject').value + "&contact=" + document.getElementById('contact').value + "&message=" + document.getElementById('message').value;
	myConn.connect(url,"POST",params,fnWhenDone);
}

function toggleDisplay(target,type) {
  target = document.getElementById(target) ? document.getElementById(target) : target;
  if (!type) type = 'block';
  target.style.display = (target.style.display=='none') ? type : 'none';
}

function visiblate(target,type) {
  target = document.getElementById(target) ? document.getElementById(target) : target;
  if (!type) type = 'block';
	target.style.display = type;
}

function invisiblate(target) {
  target = document.getElementById(target) ? document.getElementById(target) : target;
	target.style.display = 'none';
}

function removeFailure(target,oldClass) {
	if (target.className == oldClass+' required-fail') target.className = oldClass;
}

function checkForm() {
	var okay = true;
	var requiredInput = getElementsByClassName(document,'input','required');
	for (var i=0;i<requiredInput.length;i++) {
		if (requiredInput[i].value == '') {
			requiredInput[i].parentNode.className = 'dataset required-fail';
			okay = false;
		}
	}
	var requiredSelect = getElementsByClassName(document,'select','required');
	for (var i=0;i<requiredSelect.length;i++) {
		if (requiredSelect[i].options[requiredSelect[i].selectedIndex].value == '') {
			requiredSelect[i].parentNode.className = 'dataset required-fail';
			okay = false;
		}
	}
	if (!okay && document.getElementById('message')) {
		document.getElementById('message').innerHTML = '<div class="message error"<p>At least one required field is incomplete, marked in red.</p></div>';
		window.location = window.location + "#message";
	}
	return okay;
}


function getQuestion() {
	var myConn = new XHConn(); 
	if (!myConn) {return;} 
	var fnWhenDone=function(oXML){
		document.getElementById('content').innerHTML=oXML.responseText;
	};						
	url="actions/get_question.php";
	myConn.connect(url,"POST",params,fnWhenDone);
}

function submitAnswer(id) {
	var myConn = new XHConn(); 
	if (!myConn) {return;} 
	var fnWhenDone=function(oXML){
		document.getElementById('result').innerHTML=oXML.responseText;
		setTimeout("getQuestion()",3000);
	};						
	url="actions/submit_answer.php";
	params="id="+id;
	myConn.connect(url,"POST",params,fnWhenDone);
}

function toggleMobileRequired(originator) {
	if (originator.checked == true) {
		document.getElementById('phonecell').className = 'medium required';
		document.getElementById('label_phonecell').innerHTML = 'Mobile Number:*';
	} else {
		document.getElementById('phonecell').className = 'medium';
		document.getElementById('label_phonecell').innerHTML = 'Mobile Number:';
		removeFailure(document.getElementById('phonecell').parentNode,'dataset');
	}
}

function updateTotal(){
  var total = 0;
  var price = 0;
  var subttotal = '';
  var quantities = getElementsByClassName(document,'input','quantity');
  var size_quantities = quantities.length;
  for (var i = 0; i < size_quantities; i++) {
    var find_price = getElementsByClassName(quantities[i].parentNode.parentNode,'td','price');
    price = find_price[0].innerHTML.replace(',','');
    subtotal = (quantities[i].value * price)*1;
    total += subtotal;
  }
  document.getElementById('cart_total').innerHTML = addCommas(total);

  // Checking availability of points
  var postAction = document.getElementById('form_checkout').action;
  var points_available = document.getElementById('points_available').value;
  if (total > points_available) {
    document.getElementById('form_checkout').action = '';
    document.getElementById('button_checkout').disabled = true;
    document.getElementById('button_checkout').src = 'images_site/button_checkout_disabled.png';
    document.getElementById('sitemessage').innerHTML = '<div class="message error"><p>You don\'t have enough points to purchase all the items in your cart. Please reduce quantities or remove some items.</p></div>';
    visiblate('sitemessage');
  } else {
    document.getElementById('form_checkout').action = postAction;
    document.getElementById('button_checkout').disabled = false;
    document.getElementById('button_checkout').src = 'images_site/button_checkout.png';
    document.getElementById('sitemessage').innerHTML = '';
    invisiblate('sitemessage');
  }
}

function checkNewStore() {
  document.getElementById('store_same_yes').checked == true ? invisiblate('newstorenumber') : visiblate('newstorenumber');
}
