$.util  = {
    navisPopupWindowHandle : null,
    enableNavisPushToTalk : function() {
	if ($.util.navisAccountId !== null && $.util.navisDefaultPhone !== null) {
	    var campaignPhone = $.util.getCampaignPhone($.util.getCampaignCookieName());
	    //console.log(campaignPhone);
	    if (campaignPhone !== "" && campaignPhone !== null) {
		campaignPhone = campaignPhone.replace(/[^0-9]/g, "");
	    }
	    $("a.push-to-talk").each(function(index, el) {
		    var navisUrl = $(el).attr("href");
		    if (campaignPhone !== null && campaignPhone !== "") {
			navisUrl = navisUrl.replace(/DNIS=[0-9]{10}/i, "DNIS=" + campaignPhone);
			$(el).attr("href", navisUrl);
		    }
		    $(el).click(function(evt) {
			    if ($.util.navisPopupWindowHandle === null || $.util.navisPopupWindowHandle.closed) {
				$.util.navisPopupWindowHandle = $.util.openNewWindow(navisUrl, "Push2Talk", "toolbar=0,scrollbars=0,location=0,width=700,height=500");
			    } else {
				$.util.navisPopupWindowHandle.focus();
			    }
			    return false;
			});
		});
	}
    },
    openNewWindow : function(url, handle, settings) {
	return window.open(url, handle, settings);
    },
    lookupMarketingCampaign : function() {
        if (!$.util.isSecureRequest() && $.util.navisKeywordPresentInFragment()) {
            $.getJSON("/Marketing.mvc/Cookie", { u:location.href, r:document.referrer }, $.util.processCampaignCookieCallback );
        } else {
            $.util.setCampaignPhone($.util.getCampaignCookieName());
	    $.util.enableNavisPushToTalk();
        }
    },
    lookupMarketingCampaignJsonp : function(domain) {
        var settings =
            {
                url: "http://" + encodeURIComponent(domain) + "/Marketing.mvc/JsonpCookie",
                data: { u:location.href, r:document.referrer },
                type: "GET",
                dataType: "jsonp",
                jsonpCallback: "$.util.processCampaignCookieCallback"
            }
        $.ajax(settings);
    },
    processCampaignCookieCallback : function(response) {
        $.util.createCampaignCookie(response.cookieData);
        $.util.setCampaignPhone($.util.getCampaignCookieName());
	$.util.enableNavisPushToTalk();
    },
    createCampaignCookie : function(cookieData) {
        if (cookieData !== null) {
            var expiresDate =  $.util.deserializeDate(cookieData.Expires);
            $.cookie(cookieData.Name, cookieData.Value, { expires:expiresDate, domain:cookieData.Domain, path:cookieData.Path, secure:cookieData.Secure });
        }
    },
    getCampaignPhone : function(cookieName) {
        if ($.cookie(cookieName) !== null) {
            var cookieValue = decodeURIComponent($.cookie(cookieName));
            if (cookieValue !== null) {
                var parts = cookieValue.split("|");
                if (parts.length == 2) {
                    return parts[1];
                }
            }
        }
        return null;
    },
    setCampaignPhone : function(cookieName) {
        var phone = $.util.getCampaignPhone(cookieName);
        if (phone !== null && phone !== "") {
            $(".tollfreenumber").text(phone).html();
        }
    },
    deserializeDate : function(serializedDate) {
        return eval("new" + serializedDate.replace(/\//g, " "));
    },
    isSecureRequest : function() {
        return location.protocol === "https:";
    },
    getCampaignCookieName : function() {
        if ($.util.isSecureRequest()) {
            return "MCPH_S";
        }
        return "MCPH";
    },
    navisKeywordPresentInFragment : function() {
        return location.hash !== "" && location.hash.toLowerCase().indexOf("nck=") >= 0;
    }
};

