function trim(str) {
	return str.replace(/^\s*|\s*$/g,"");
}
function so_clearInnerHTML(obj) {
	while(obj.firstChild) obj.removeChild(obj.firstChild);
}
/*  need to test for https server here and change url accordingly */
switch (window.location.protocol) {
	case "https:":
		path = "https://gold92.hostingbay.net/~mayan/includes/";
	break;
	case "http:":
		path = "http://www.mayancoffee.com.au/includes/";
	break;
}

var xmlreqs = new Array();

function CXMLReq(type, xmlhttp) {
  this.type = type;
  this.xmlhttp = xmlhttp;
}

function xmlreqGET(type, url) {
  var xmlhttp=false;
  if (window.XMLHttpRequest) { // Mozilla, etc.
    xmlhttp=new XMLHttpRequest();
    xmlhttp.onreadystatechange = xmlhttpChange;
    xmlhttp.open("GET",url,true);
    xmlhttp.send(null);
  } else if (window.ActiveXObject) { // IE
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    if (xmlhttp) {
      xmlhttp.onreadystatechange = xmlhttpChange;
      xmlhttp.open("GET",url,true);
      xmlhttp.send();
    }
  }
  var xmlreq = new CXMLReq(type, xmlhttp);
  xmlreqs.push(xmlreq);
}

function xmlreqPOST(url,data) {
  var xmlhttp=false;
  if (window.XMLHttpRequest) { // Mozilla etc.
    xmlhttp=new XMLHttpRequest();
    xmlhttp.onreadystatechange=xmlhttpChange;
    xmlhttp.open("POST",url,true);
    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xmlhttp.send(data);
  } else if (window.ActiveXObject) { // IE
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    if (xmlhttp) {
      xmlhttp.onreadystatechange=xmlhttpChange;
      xmlhttp.open("POST",url,true);
      xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      xmlhttp.send(data);
    }
  }
  var xmlreq = new CXMLReq('', xmlhttp);
  xmlreqs.push(xmlreq);
}

function xmlhttpChange(type) {
  if (typeof(window['xmlreqs']) == "undefined") return;
  for (var i=0; i < xmlreqs.length; i++) {
    if (xmlreqs[i].xmlhttp.readyState == 4) {
      if (xmlreqs[i].xmlhttp.status == 200 || xmlreqs[i].xmlhttp.status == 304) { // 200 OK
        response = xmlreqs[i].xmlhttp.responseText;
        type = xmlreqs[i].type;
        xmlreqs.splice(i,1);
        i--;
        handle_response(type, response);
      } else { // error
        xmlreqs.splice(i,1);
        i--;
        alert('some error happened');
      }
    }
  }
}

function getshipping(typeid){
	if (typeid==1) {
		return;
	}
	domID = del=='same' ? 'ordercountry' : 'delcountry';
	country = document.getElementById(domID).options[(document.getElementById(domID).selectedIndex)].value;
	if (country!=='-') {
		url = path+'internal_request.php?action=get_shipping&cid='+ country;
		xmlreqGET('handleshipping', url);
	} else {
		// reset totals to original values
		var tot = parseFloat(document.getElementById('nousetotal').value).toFixed(2);
		var ccfee = returnSurcharge(tot);
		document.getElementById('shipping').innerHTML="$ " + document.getElementById('nouseshipping').value;
		document.getElementById('total').innerHTML="$ " + tot;
		document.getElementById('tax').innerHTML="$ " + document.getElementById('nousetax').value;
	}
}

function handle_response(type, data){
  var response = data;

  switch (type) {
    case 'handleshipping':
      var oldtotal = document.getElementById('nousetotal').value;
      var oldtax = document.getElementById('nousetax').value;
      var oldship = document.getElementById('nouseshipping').value;
      var shiptax = (parseFloat(oldship/(100+10))*10).toFixed(2);
      var newtotal = (parseFloat(oldtotal)-parseFloat(oldship)+parseFloat(response)).toFixed(2);
      var newtax = ((oldtax-shiptax)+((response/(100+10))*10)).toFixed(2);
      var ccfee = returnSurcharge(newtotal);
      document.getElementById('shipping').innerHTML="$ " + (response*1).toFixed(2);
      document.getElementById('ccfee').innerHTML="$ " + ccfee;
      document.getElementById('total').innerHTML="$ " + (parseFloat(newtotal)+parseFloat(ccfee)).toFixed(2);
      document.getElementById('tax').innerHTML="$ " + newtax;
    break;
  }
}