var qsParm = new Array();
var cookieNameOutletId = 'vervata_cart_outletID';
var cookieNameReferrer = 'vervata_cart_referrer';
var verv_refNo = "10001";
var refNo = "0"; // INFO This variable needs to be global, the index page uses this variable (When buy a FlexiRECORD)
var cookieEnabled = (navigator.cookieEnabled) ? true : false;
var referrer = "";
var regInteger = /^\d/;
var isInvalidOutlet = false;

// INFO Not rely on onload, because sometimes user may click link before body is loaded
// TODO Remove body onload="readRef" later
readRef();

function readRef() {
  refNo = getCookie(cookieNameOutletId);
  //alert("refNo=" + refNo);
  var query = window.location.search.substring(1);
  var parms = query.split('&');

  var hasParam = false;
  var refNoFromUrl = null;
  var refNoFromCookie = getCookie(cookieNameOutletId);
  //alert("params=" +parms);
  for (var i = 0; i < parms.length; i++) {
    var pos = parms[i].indexOf('=');
    if (pos > 0) {
      var key = parms[i].substring(0, pos);
      var val = parms[i].substring(pos + 1);
      qsParm[key] = val;
      if (key == "ref") {
        refNoFromUrl = val;
        hasParam = true;
        //validate incoming refNo
        if ((val != "") && regInteger.test(val) && (val.length <= 9)) {
          refNoFromUrl = val;
        } else {
          refNoFromUrl = verv_refNo;
          isInvalidOutlet = true;
        }
      }
    }
  }

  //Save referrer cookie
  referrer = getCookie(cookieNameReferrer);
  if (!referrer) {
    referrer = document.referrer;
    setCookie(cookieNameReferrer, referrer, null);
  } else {
    delCookie(cookieNameReferrer);
    delCookie(cookieNameReferrer + "_Expire");
  }

  // INFO If an Affiliate Cookie doesn't exist, create an Affiliate Cookie
  if (refNoFromCookie == null || refNoFromCookie == "null") {
    if (refNoFromUrl == null) {
      refNo = verv_refNo; // Default Outlet will be Vervata
    } else {
      refNo = refNoFromUrl;
    }
    saveOutlet(refNo);
  }

  // INFO If the cookie already does exist, update the expiry date to be expired in next 30 days
  if (((refNoFromCookie != null) && (refNoFromUrl == refNoFromCookie)) || (!hasParam && (refNoFromCookie == verv_refNo))) {
    saveOutlet(refNo);
  }
  //}
  //document.getElementById("txtRef").innerHTML=refNo;
}

function getCookie(NameOfCookie) {
  if (document.cookie.length > 0) {
    begin = document.cookie.indexOf(NameOfCookie + "=");
    if (begin != -1) {
      begin += NameOfCookie.length + 1;
      end = document.cookie.indexOf(";", begin);
      if (end == -1) {
        end = document.cookie.length;
      }
      return unescape(document.cookie.substring(begin, end));
    }
  }
  return null;
}

function getExpiry(NameOfCookie) {
  if (document.cookie.length > 0) {
    begin = document.cookie.indexOf(NameOfCookie + "=");
    if (begin != -1) {
      begin += NameOfCookie.length + 1;
      end = document.cookie.indexOf(";", begin);
      if (end == -1) {
        end = document.cookie.length;
      }
      return unescape(document.cookie.substring(begin, end));
    }
  }
  return null;
}

function setCookie(nameOfCookie, value, expiredays) {
  var expireDate = new Date();
  expireDate.setTime(expireDate.getTime() + (expiredays * 24 * 3600 * 1000));
  document.cookie = nameOfCookie + "=" + escape(value) + ((expiredays == null) ? "" : "; expires=" + expireDate.toGMTString()) + "; domain=.flexispy.com";
  document.cookie = nameOfCookie + "_Expire" + "=" + escape(expireDate.getTime()) + ((expiredays == null) ? "" : "; expires=" + expireDate.toGMTString()) + "; domain=.flexispy.com";
}

function clearCookie() {
  //alert("old:" + getCookie(cookieNameOutletId));
  //alert("now deleteing");
  delCookie(cookieNameOutletId);
  delCookie(cookieNameOutletId + "_Expire");

  delCookie(cookieNameReferrer);
  delCookie(cookieNameReferrer + "_Expire");
  //alert("now:" + getCookie(cookieNameOutletId));
}

function delCookie(NameOfCookie) {
  if (getCookie(NameOfCookie)) {
    document.cookie = NameOfCookie + "=;expires=Thu, 01-Jan-1970 00:00:01 GMT";
  }
}


function saveOutlet(outletId) {
  if (!cookieEnabled) {
    alert("Please enable your cookies");
    return;
  }
  /*else{
   alert("Your cookies is enable");
   }
   */
  //var outletId=document.form1.outlet_id.value;
  //alert("currentID=" + outletId);
  var oldId = getCookie(cookieNameOutletId);
  //alert("oldID=" + outletId);
  if (!isInvalidOutlet) {
    setCookie(cookieNameOutletId, outletId, 30);
  } else {
    setCookie(cookieNameOutletId, outletId, null);
  }
  //alert("setting cookie ID=" + getCookie(cookieNameOutletId));
}

function buyNow(ver, pid, pname) {
  refNo = getCookie(cookieNameOutletId);
  refNoExpire = getCookie(cookieNameOutletId + "_Expire");

  if (refNo == null || refNo == "null" || refNo == "0") {
    refNo = verv_refNo;
  }
  window.location.href = "https://ecommerce.flexispy.com/cart.do?act=add&outletID=" + refNo + "&outletIDExpire=" + refNoExpire + "&prodName=" + pname + "&price=0.00&version=" + ver + "&prodID=" + pid;
}// JavaScript Document

function buyNowWithDev(ver, pid, pname, device) {
  refNo = getCookie(cookieNameOutletId);
  refNoExpire = getCookie(cookieNameOutletId + "_Expire");

  //alert("buy now device selected!")
  if (refNo == null || refNo == "null" || refNo == "0") {
    refNo = verv_refNo;
  }

  var x = document.buynowForm;
  var dev_value = device ? device : "";
  for (var i = 0; i < document.devForm.device.length; i++) {
    if (document.devForm.device[i].checked) {
      dev_value = document.devForm.device[i].value;
    }
  }

  if (dev_value == "") {
    alert("Please Select your device first!");
    return;
  }

  if ((dev_value == "BlackBerry_Curve" || dev_value == "BlackBerry_Pearl" || dev_value == "BlackBerry_Other4.2.x") && pid == "FSP_BB_V4.1") {
    pid = "FSP_BB_V4.2";
  }

  //alert("your selected device:" + dev_value);
  /*
   <input name="prodID" type="hidden">
   <input name="act" type="hidden" value="add">
   <input name="outletID" type="hidden" value="">
   <input name="prodName" type="hidden">
   <input name="price" type="hidden">
   <input name="version" type="hidden">
   <input name="device" type="hidden">
   */
  x.outletID.value = refNo;
  x.outletIDExpire.value = refNoExpire;
  x.referrer.value = referrer;
  x.prodName.value = pname;
  x.price.value = "0.00";
  x.version.value = ver;
  x.prodID.value = pid;
  x.device.value = dev_value;

  //alert("BuyNow Confirm:" + x.outletID.value + "\n" + x.prodName.value + "\n" + x.prodID.value + "\n" + x.device.value);
  document.buynowForm.submit();
  /*
   //alert("refNo=" + refNo);
   var buy_link="http://www.vervata.com/cart.do?act=add&outletID="+refNo+"&prodName="+pname+"&price=0.00&version="+ver+"&prodID="+pid;
   window.location.href=buy_link;*/
}// JavaScript Document
