
/**
 * Copy-Paste from jb_util.js
 * TODO: Make a single Util script with such functions
 * cookie setting and getting functions 
 * adapted from http://techpatterns.com/downloads/javascript_cookies.php 
 **/
setCookie = function(name,value,b_custom,expires_ms,path,domain,secure){
  //name        = cookie name to set.
  //value         = cookie value to set.
  //b_custom      = optional boolean value which will allow custom settings
  //expires_ms    = optional milliseconds till cookie expires (#days * 1000 * 60 * 60 * 24).
  //path          = optional path.
  //domain        = optional domain.
  //secure        = optional secure setting.
  if(!b_custom){
      expires_ms=30 * 1000 * 60 * 60 * 24; //30 days
      path="/";
      var hp=parseUri(document.location).host.split('.');
      hp.reverse();
      domain="."+hp[1]+"."+hp[0];
      if (hp.length >= 3 && hp[2] != 'www' && hp[2] != 'stg')
          domain = "." + hp[2] + "." + hp[1] + "." + hp[0];
  }
  var today=new Date();
  var exdate=new Date(today.getTime()+(expires_ms));
  document.cookie=name+"="+escape(value)+
      ((expires_ms)?";expires="+exdate.toUTCString():"")+
      ((path)?";path="+path:"")+
      ((domain)?";domain="+domain:"") +
      ((secure)?";secure":"");
}


getCookie = function(check_name){
  var a_all_cookies=document.cookie.split(";");
  var a_temp_cookie="";
  var cookie_name="";
  var cookie_value="";
  var b_cookie_found=false;
  
  for(i=0;i<a_all_cookies.length;i++){
      a_temp_cookie=a_all_cookies[i].split("=");
      cookie_name=a_temp_cookie[0].replace(/^\s+|\s+$/g,"");
      if(cookie_name==check_name){
          b_cookie_found=true;
          if(a_temp_cookie.length>1){cookie_value=unescape(a_temp_cookie[1].replace(/^\s+|\s+$/g,""));}
          return cookie_value;
          break;
      }
      a_temp_cookie=null;
      cookie_name="";
  }
  if(!b_cookie_found){return null;}
}

function siteWideOffer(currentPath, promo, siteCode, curpage, dname) {

       var isOfferValid = null;
       isOfferValid = evalSiteWideResponse(getSiteWideResponse(currentPath + '.promoStatusNew.json?'));
       if (isOfferValid == null || isOfferValid[0] == null || isOfferValid[0].siteWideStatus != "true")
           isOfferValid = evalSiteWideResponse(getSiteWideResponse(currentPath + '.promoStatus.json?'));

       if ((promo == "null" || promo == "") && getCookie("promo") != null && getCookie("promo") != "null" && getCookie("promo") != "") {

                promo = getCookie("promo");
        }
        var siteWide =new Array();
        var keep_promo = false;


        if (isOfferValid && isOfferValid[0] && isOfferValid[0].siteWideStatus == "true") {
          
          if (isOfferValid[1] && isOfferValid[1].siteWideList != null) {
            var siteWideList = isOfferValid[1].siteWideList;        
            siteWide = siteWideList.split(",");         
         
            if (siteWide != null && siteWide.length > 0){
              for(var i=0;i<siteWide.length;i++) {
            	  var reg1 = new RegExp('^' + jQuery.trim(siteWide[i]) + '$');
            	  if (reg1.test(promo)) {
            		  keep_promo = true;
            	  }
                }
            }
        }   
       if (promo == "null" || promo == "" || !keep_promo) {
         if (isOfferValid[2] && isOfferValid[2].defaultPromo != null && isOfferValid[2].defaultPromo != "")
          promo = isOfferValid[2].defaultPromo;
         }
		 else { // Current promo is in excluded list. Get the promo based module..
			if (typeof(pageType)!="undefined" && pageType != null && pageType != "") {
				promoBasedOffer(promo, pageType, currentPath, siteCode);
			}
		 }

       }
	   else { // No Site wide offer. Get the promo based module..
			if (typeof(pageType)!="undefined" && pageType != null && pageType != "") {
				promoBasedOffer(promo, pageType, currentPath, siteCode);
			}
	   }

       
        /* END of SITE-WIDE PROMO STUFF */    
        if (promo != "null" && promo != "") {
        	setCookie("promo", promo);
        	setCookie("promo_eVar2", promo);
        }        
 }


function getSiteWideResponse(url) {
            //url = CQ.HTTP.externalize(url, true);


                var request = document.all ? new ActiveXObject("Microsoft.XMLHTTP") :
                              new XMLHttpRequest();
                try {
                    request.open("GET", url, false);
                    request.send(null);
                    var response = createSiteWideResponse();
                    response.body = request.responseText;
                    //response.headers[CQ.utils.HTTP.HEADER_STATUS] = request.status;
                    // set properties for backward compatibility (pre 5.3)
                    response.responseText = request.responseText;
                    response.status = request.status;

                    return response;
                } catch (e) {
                    //CQ.Log.error("CQ.utils.HTTP#get: failed to get {0}: {1}", [url, e.message]);
                    return null;
                }

        }


function evalSiteWideResponse(response) {
            if (typeof response != "object") {
                response = getSiteWideResponse(response);
            }
            try {

                return eval("(" + (response.body ? response.body :
                            response.responseText) + ")");
            } catch (e) {
            }
            return null;
        }


        var createSiteWideResponse = function() {
        var response = new Object();
        response.headers = new Object();
        response.body = new Object();
        return response;
    };


