// ------------------------------------------------------------------------------------------
// Copyright AspDotNetStorefront.com, 1995-2009.  All Rights Reserved.
// http://www.aspdotnetstorefront.com
// For details on this license please visit  the product homepage at the URL above.
// THE ABOVE NOTICE MUST REMAIN INTACT. 
// ------------------------------------------------------------------------------------------

function makeHttpRequest(url, element, calltype) {
  var http_request = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType) {
      http_request.overrideMimeType('text/xml');
    }
  } else if (window.ActiveXObject) { // IE
    try {
      http_request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        http_request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }
  if (!http_request) {
    alert('Browser doesn\'t support Ajax. Site will NOT FULLY function properly.');
    return false;
  }
  http_request.onreadystatechange = function() {
    if (http_request.readyState == 4) {    
      if (http_request.status == 200) {            
        loadXML(http_request.responseXML,calltype);
      } else {
		  if(http_request.status!=0)
		  {
			alert('There was a problem with the request. (Code: ' + http_request.status + ')');
		  }
      }
    }    
  }
  //document.getElementById('ShipQuoter').innerHTML = url +" ";
  http_request.open('GET', url, true);
  http_request.send(null);
}

function loadXML(xml,calltype)
{
	if(calltype == 'shipping')
	{
		var string = '';
		var root = xml.getElementsByTagName('Shipping')[0];
		for (i = 0; i < root.childNodes.length; i++)
		{
    		var node = root.childNodes[i].tagName;
		    string += root.getElementsByTagName(node)[0].childNodes[0].nodeValue + "<br />";
		}				
		if (document.getElementById('ShipQuote')&& string.length>0 && string.indexOf("errorLg")<0)
		{
			document.getElementById('ShipQuote').innerHTML = string.replace("Online Shipping Quote","Freight Estimate");
			document.getElementById('ShipQuoter').innerHTML ="";
		}
		else if(string.indexOf("errorLg")>0)
		{
    		document.getElementById('ShipQuote').innerHTML="";
    		document.getElementById('ShipQuoter').innerHTML = "Contact us for Shipping Information.";		
		}
		else
		{   
		    document.getElementById('ShipQuote').innerHTML="";
		    document.getElementById('ShipQuoter').innerHTML += "Invalid zip code. Please check and re-enter";
		}
	}
	if(calltype == 'pricing')
	{
		var prnode = xml.getElementsByTagName('PriceHTML')[0];
		var variantnode = xml.getElementsByTagName('VariantID')[0];
		var NewPrice = "Not Found";
		var VariantID = "0";
		if(prnode != undefined)
		{
			NewPrice = xml.getElementsByTagName('PriceHTML')[0].firstChild.data
		}
		if(variantnode != undefined)
		{
			VariantID = xml.getElementsByTagName('VariantID')[0].firstChild.data
		}
		//alert("VariantID=" + VariantID + ", NewPrice=" + NewPrice);
		
		document.getElementById('New_Price').innerHTML = "Configured price: <br /><span style=\"font-size:16pt; font-weight:bold; color:#008000; margin-top:0; margin-bottom:5px\">"+ NewPrice.replace("&nbsp;","")+"</span>";
		document.getElementById('lblprice').innerHTML = "Base Price..."
	}
}

function getShipping(theForm)
{
	if(document.getElementById('Quantity') == undefined || document.getElementById('VariantID') == undefined)
	{
		return;
	}
	var VariantID = theForm.VariantID;//document.getElementById('VariantID');
	//alert(theForm.name+" "+VariantID.value);
	var Quantity = theForm.Quantity;//document.getElementById('Quantity');
  if(Quantity == '')
  {
   Quantity = '1';
  }
  var Country = '';
  if(document.getElementById('Country').length > 0)
  {
	  Country = document.getElementById('Country').options[document.getElementById('Country').selectedIndex].value;
  }
  else
  {
	  Country = document.getElementById('Country').value;
  }
 
  var PostalCode = document.getElementById('PostalCode');
  
  if (Country.length > 0) {
    
      if (PostalCode.value.length > 4) {
        if (Quantity.value > 0) {
          Cookies.create('countrycookie',Country,99);          
          Cookies.create('postalcookie',PostalCode.value,99);
          var url = "ajaxShipping.aspx?VariantID="+VariantID.value+"&Quantity="+Quantity.value+"&Country="+escape(Country)+"&PostalCode="+escape(PostalCode.value);
          //alert(url);
          document.getElementById('ShipQuote').innerHTML = "Please Wait...";
          makeHttpRequest(url,undefined,'shipping');
        } else {
          Cookies.erase('countrycookie');          
          Cookies.erase('postalcookie');
          Error('qty');
        }
      } else {
        Cookies.erase('countrycookie');        
        Cookies.erase('postalcookie');
        Error('postal');
      }    
  } else {
    Cookies.erase('countrycookie');    
    Cookies.erase('postalcookie');
    Error('country');
  }
}


function getPricing(ProductID,VariantID)
{
	//alert('VariantID=' + VariantID);
	if(ProductID == undefined || VariantID == undefined)
	{
		return;
	}

	var ChosenSize = "";
	var ChosenSizeList = document.getElementById('Size_'+ProductID);
	//var ChosenSizeList = document.getElementById('AddToCartForm_' + ProductID + '_' + VariantID).Size;
	if(ChosenSizeList != undefined)
	{
		ChosenSize = ChosenSizeList.options[ChosenSizeList.selectedIndex].text;
	}

	var ChosenColor = "";
	var ChosenColorList = document.getElementById('Color_'+ProductID);
	//var ChosenColorList = document.getElementById('AddToCartForm_' + ProductID + '_' + VariantID).Color
	if(ChosenColorList != undefined)
	{
		ChosenColor = ChosenColorList.options[ChosenColorList.selectedIndex].text;
	}

    var url = "ajaxPricing.aspx?ProductID=" + ProductID + "&VariantID=" + VariantID + "&size=" + escape(ChosenSize) + "&color=" + escape(ChosenColor);    
    //alert("Ajax Url=" + url);
    makeHttpRequest(url,undefined,'pricing');
}


function Error(type) {
  if (type == 'country') {
    document.getElementById('ShipQuote').innerHTML = "Select A Country";
  }  
  if (type == 'postal') {
    document.getElementById('ShipQuote').innerHTML = "Enter Postal Code";
  }
  if (type == 'qty') {
    document.getElementById('ShipQuote').innerHTML = "Enter A Quantity";
  }
}

var Cookies = {
  init: function () {
    var allCookies = document.cookie.split('; ');
    for (var i=0;i<allCookies.length;i++) {
      var cookiePair = allCookies[i].split('=');
      this[cookiePair[0]] = cookiePair[1];
    }
  },
  create: function (name,value,days) {
    if (days) {
      var date = new Date();
      date.setTime(date.getTime()+(days*24*60*60*1000));
      var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
    this[name] = value;
  },
  erase: function (name) {
    this.create(name,'',-1);
    this[name] = undefined;
  }
};
Cookies.init();

