// eTarp Javascript Document

var SMALL_ORDER = 75; // if order is less than this
var SMALL_CHARGE = 10; // add this

function init() {
	if (document.getElementById('discount_cupons_applied').innerHTML != '') {
		document.getElementById('discount_form').innerHTML = '';
	}
}

function cuponLookup(discountAmount, subtotal, shipping) {
	var cupon_text = document.getElementById('cupon').value;

	if(cupon_text.length > 0) {
		$.post("check_cupon.php", {cupon_code: ""+cupon_text+""}, function(data){
			if(data.length >0) {
				if (data != 'Invalid discount code!' && data != 'No discount code specified!' && data != 'Discount code already used!') {
					document.getElementById('discount_cupons_applied').innerHTML = data + '<input type="button" name="remove_coupon" id="remove_coupon" value="Remove" onClick="remove_discount_coupons();">';
					document.getElementById('discount_form').innerHTML = '';
					
					recalc_prices(discountAmount, subtotal, shipping);
				}
				else {
					alert(data);
					document.getElementById('discount_cupons_applied').innerHTML = '';
				}
			}
			else {
				document.getElementById('discount_cupons_applied').innerHTML = '';
			}
		});
	}
	else {
		document.getElementById('discount_cupons_applied').innerHTML = '';
	}
}

function recalc_prices(discountAmount, subtotal, shipping) {
	discount_percent = getCookie('discount_percent');
	
	if (discountAmount != '') {
		if (subtotal < SMALL_ORDER) {
			discountAmount = discountAmount - (SMALL_CHARGE * discount_percent);
		}
		document.getElementById('discount_amount').innerHTML = '-' + sprintf("$%.2f", discountAmount);
	}
	else {
		discountAmount = subtotal * discount_percent;
		
		if (subtotal < SMALL_ORDER) {
			discountAmount = discountAmount - (SMALL_CHARGE * discount_percent);
		}
		
		document.getElementById('discount_amount').innerHTML = '-' + sprintf("$%.2f", discountAmount);
	}
	
	subtotal = ((subtotal - discountAmount) + parseFloat(shipping));
	
	document.getElementById('total').innerHTML = sprintf("$%.2f", subtotal);
	document.getElementById('discount_id').value = getCookie('discountid');
}

function clear_cookies() {
	eraseCookie('discount');
	eraseCookie('discount_percent');
	eraseCookie('discountid');
}

function remove_discount_coupons() {
	clear_cookies();
	
	window.location.reload();
}

function getCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1)
    {
    c_start=c_start + c_name.length+1;
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length;
    return unescape(document.cookie.substring(c_start,c_end));
    }
  }
return "";
}

function setCookie(c_name,value,expiredays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}

function eraseCookie(name) {
	setCookie(name,"",-1);
}

function sprintf()
{
   if (!arguments || arguments.length < 1 || !RegExp)
   {
      return;
   }
   var str = arguments[0];
   var re = /([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/;
   var a = b = [], numSubstitutions = 0, numMatches = 0;
   while (a = re.exec(str))
   {
      var leftpart = a[1], pPad = a[2], pJustify = a[3], pMinLength = a[4];
      var pPrecision = a[5], pType = a[6], rightPart = a[7];

      numMatches++;
      if (pType == '%')
      {
         subst = '%';
      }
      else
      {
         numSubstitutions++;
         if (numSubstitutions >= arguments.length)
         {
            alert('Error! Not enough function arguments (' + (arguments.length - 1)
               + ', excluding the string)\n'
               + 'for the number of substitution parameters in string ('
               + numSubstitutions + ' so far).');
         }
         var param = arguments[numSubstitutions];
         var pad = '';
                if (pPad && pPad.substr(0,1) == "'") pad = leftpart.substr(1,1);
           else if (pPad) pad = pPad;
         var justifyRight = true;
                if (pJustify && pJustify === "-") justifyRight = false;
         var minLength = -1;
                if (pMinLength) minLength = parseInt(pMinLength);
         var precision = -1;
                if (pPrecision && pType == 'f')
                   precision = parseInt(pPrecision.substring(1));
         var subst = param;
         switch (pType)
         {
         case 'b':
            subst = parseInt(param).toString(2);
            break;
         case 'c':
            subst = String.fromCharCode(parseInt(param));
            break;
         case 'd':
            subst = parseInt(param) ? parseInt(param) : 0;
            break;
         case 'u':
            subst = Math.abs(param);
            break;
         case 'f':
            subst = (precision > -1)
             ? Math.round(parseFloat(param) * Math.pow(10, precision))
              / Math.pow(10, precision)
             : parseFloat(param);
            break;
         case 'o':
            subst = parseInt(param).toString(8);
            break;
         case 's':
            subst = param;
            break;
         case 'x':
            subst = ('' + parseInt(param).toString(16)).toLowerCase();
            break;
         case 'X':
            subst = ('' + parseInt(param).toString(16)).toUpperCase();
            break;
         }
         var padLeft = minLength - subst.toString().length;
         if (padLeft > 0)
         {
            var arrTmp = new Array(padLeft+1);
            var padding = arrTmp.join(pad?pad:" ");
         }
         else
         {
            var padding = "";
         }
      }
      str = leftpart + padding + subst + rightPart;
   }
   return str;
}
