/**
 * nab-pzn-v3.0.0
 * 
 * NOTE Some functions rely on jquery-1.1
 */ 
 var isPZNEnabled = true; // Set to false to disable all calls to pzn init and containers
 var cookieNamePZN = "nab_pzn";
 var cookieNamePZNDO = "nab_pzn_od";
 var cookieNamePZNPV = "nab_pzn_pv";
 var cookieNamePZNTZ = "nab_pzn_tz";
 var cookieNamePZNOO = "nab_pzn_oo";
 var pznExpiryPeriod = 365 * 24 * 60 * 60 * 1000;
 var isLive = window.location.hostname.indexOf(".nab.com.au") > -1;
 var domain = isLive ? ".nab.com.au" : null;
 var trimPathName = "/wps/wcm/connect/nab";
 var isCookiesEnabled = pznIsCookiesEnabled();
 var maxCookieLength = 1024;
 var cookieListDelim = "||";
 // Set to 0 for no timeout
 var profileAjaxTimeout = isLive ? 1000 : 1000;
 var globalAjaxTimeout = isLive ? 4000 : 20000000;
 $.ajaxSetup({timeout: globalAjaxTimeout});
 var isProfileInitializationFinished = false;
 var pznCurPage = "";
 
 function pznRenderContentSpot(elementId, url) {
 	pznRenderContentSpot(elementId, url, null);	
 }
 
 function pznRenderContentSpotNoWait(elementId, url) {
 	// Dont wait for profile init
 	isProfileInitializationFinished = true;
 	pznRenderContentSpot(elementId, url, null);	
 }
 
 function pznRenderContentSpot(elementId, url, defaultElementId) {
 	if(isPZNEnabled && url != null && url != "") {
 		defaultElementId = defaultElementId == null ? "" : defaultElementId;
 		if(isProfileInitializationFinished) {
 			pznRenderContentSpotInternal(elementId, url, defaultElementId);
 		}
 		else {
 			var waitOn = setInterval(
 				function() {
 					if(isProfileInitializationFinished) {
 						clearInterval(waitOn);
 						pznRenderContentSpotInternal(elementId, url, defaultElementId);
 					}
 				}
 				,250);
 		}	
 	}
 	// PZN disabled, show default elem if exists
 	else if(!isPZNEnabled) {
 		pznShowDefaultElement(defaultElementId)
 	}
 }
  
 function pznRenderContentSpotInternal(elementId, url, defaultElementId) { 	
 	if(isProfileInitializationFinished) {
 		$.ajax({
  			url: pznPrepareURL(url),
  			cache: false,
  			complete: function(res, status){
  				if (status == "success") {
  					$("#" + elementId).attr("innerHTML", res.responseText).evalScripts();
    			}
    			else if(status == "error") {
 					pznShowDefaultElement(defaultElementId);
 				}
  			}
		}); 		 
 	}
 }
 
 function pznShowDefaultElement(elementId) {
 	if(elementId != null && elementId != "") {
 		var elem = document.getElementById(elementId);
 		if(elem != null) {
 			elem.style.display = "block";
 		}
 	}
 }
 
 function pznInitProfile(elementId, url) {
 	if(isPZNEnabled && url != null && url != "") {
 		url = pznPrepareURL(url);
 		if(document.referrer && document.referrer != "") {
 			var paramStart = (url.indexOf("?") < 0) ? "?" : "&";
 			url += paramStart + "ref=" + escape(document.referrer);
 		}
 		$.ajax({
  			url: url,
  			cache: false,
  			timeout: profileAjaxTimeout,
  			complete: function(res, status){
  				if (status == "success") {
  					isProfileInitialized = true;
    				$("#" + elementId).attr("innerHTML", res.responseText).evalScripts();
    			}
    			// Set to finished, regardless of success/error
    			isProfileInitializationFinished = true;
  			}
		}); 		 	
 	} 	 	
 }
    
 function pznPrepareURL(url) {
 	var paramStart = (url.indexOf("?") < 0) ? "?" : "&";
  	// Stop IE from caching AJAX GET requests in v6
  	url += paramStart + "pznC=" + new Date().getTime();
  	if(pznCurPage && pznCurPage != "") {
  		url += "&pznCurPage=" + escape(pznCurPage);	// PZN page tracking code
  	}
  	if(isCookiesEnabled == false) {
  		url += "&cookiesEnabled=false";
  	}
  	return url;
 }
  
 function pznIsCookiesEnabled() {
 	var cookieEnabled = (navigator.cookieEnabled) ? true : false
	//If not IE4+ nor NS6+
	if (typeof navigator.cookieEnabled=="undefined" && !cookieEnabled){ 
		document.cookie = "nab_pzn_cchk";
		cookieEnabled=(document.cookie.indexOf("nab_pzn_cchk")!= -1) ? true : false;
	}
	return cookieEnabled;
 }
 
 function pznRecordID(profileId) {
 	var expiryDate = new Date();
	expiryDate.setTime(expiryDate.getTime()+ pznExpiryPeriod);
	pznSaveCookieValue(cookieNamePZN, profileId, expiryDate, domain);
 }
 
 /**
  * deprecated from version 3.0
  */
 function pznRecordPageVisit() { }
 
 /**
  * deprecated from version 3.0
  */
 function pznClearPageVisits() { }
 
 function pznRecordDisplayedOffer(offerId) {
 	// As of version 3.0
 	var value = pznGetEscCookieValue(cookieNamePZNDO);
	value = (!value) ? "" : value;
	if(offerId != null && offerId != "") {
		var expiryDate = new Date();
		expiryDate.setTime(expiryDate.getTime()+ pznExpiryPeriod);
		var delim = escape(",");
		value += escape(offerId) + delim;
		pznSaveCookieValue(cookieNamePZNDO, pznTrimStart(value, maxCookieLength, delim), expiryDate, domain);
	}
 }
 
 function pznClearDisplayedOffers() {
 	var expiryDate = new Date();
	expiryDate.setTime(expiryDate.getTime()+ pznExpiryPeriod);
 	pznSaveCookieValue(cookieNamePZNDO, "", expiryDate, domain);
 }
 
 /**
  * deprecated from version 3.0
  */
 function pznRecordOptOutOffer(offerId) { }
 
 function pznRecordUserTimezone() {
 	var currentTZValue = pznGetEscCookieValue(cookieNamePZNTZ);
 	if(!currentTZValue || currentTZValue == "") {
 		var now = new Date();
   		if(now) {
   			var offsetInMinutes = now.getTimezoneOffset();
   			var offsetInHours = (offsetInMinutes == 0) ? 0 : offsetInMinutes/60;
   			pznSaveCookieValue(cookieNamePZNTZ, offsetInHours, null, domain);	
		}
	}
 } 
 
 function pznGetEscCookieValue(name) {
 	var dc = document.cookie;
  	var prefix = name + "=";
  	var begin = dc.indexOf("; " + prefix);
  	if (begin == -1) {
    	begin = dc.indexOf(prefix);
    	if (begin != 0) return null;
  	} 
  	else {
    	begin += 2;
    }
  	var end = document.cookie.indexOf(";", begin);
  	if (end == -1) {
    	end = dc.length;
    }
  	return dc.substring(begin + prefix.length, end);
 }
 
 function pznSaveCookieValue(name, escapedValue, expiryDate, domain) {
 	var cookieString = name + "=" + escapedValue + ";";
 	if(expiryDate) {
 		cookieString += (" expires=" + expiryDate.toGMTString() + ";");
 	}		
 	if(domain) {
 		cookieString += (" domain=" + domain + ";");
 	}
 	document.cookie = cookieString + " path=/;";
 }
 
 function pznTrimPathName(pathName) {
 	if(pathName && trimPathName) {
 		if(pathName.indexOf(trimPathName) == 0) {
 			pathName = pathName.substring(trimPathName.length, pathName.length);
 		}
 	}
 	return pathName;	
 }
 
 function pznTrimStart(s, maxLength, trimAtStr) {
	if(s && s.length > maxLength) {
		var i = s.indexOf(trimAtStr, (s.length - maxLength));
		if(i > 0)
			s = s.slice(i + trimAtStr.length);// Trim from next char
		else s = s.slice(s.length - maxLength);
	}
	return s;
 }
 
 function pznSetCurrentPage(pageCode) {
 	pznCurPage = pageCode;
 }

 function tagContentLinks(trackingContentCode, trackingContentString, divID) {
	var links = document.getElementsByTagName("a");
	for (i=0;i<links.length;i++) {
		if($(links[i]).parents(divID).length == 1) {
			if (links[i].href.indexOf("javascript") == -1) {
				if (links[i].href.indexOf("?") == -1) {		
					links[i].href += "?campaignID=" + trackingContentCode + "&WT.ac=" + trackingContentString + "&WT.seg_1=" + trackingContentCode + "&WT.seg_2=" + trackingContentString;
				} else {
					links[i].href += "&campaignID=" + trackingContentCode + "&WT.ac=" + trackingContentString + "&WT.seg_1=" + trackingContentCode + "&WT.seg_2=" + trackingContentString;
				}
				break;
			}
		}
	}
}

function tagMultiContentLinks(trackingContentCode, trackingContentString, divID) {
	var links = document.getElementsByTagName("a");
	for (i=0;i<links.length;i++) {
		if($(links[i]).parents(divID).length == 1) {
			if (links[i].href.indexOf("javascript") == -1) {
				if (links[i].href.indexOf("?") == -1) {		
					links[i].href += "?campaignID=" + trackingContentCode + "&WT.ac=" + trackingContentString + "&WT.seg_1=" + trackingContentCode + "&WT.seg_2=" + trackingContentString;
				} else {
					links[i].href += "&campaignID=" + trackingContentCode + "&WT.ac=" + trackingContentString + "&WT.seg_1=" + trackingContentCode + "&WT.seg_2=" + trackingContentString;
				}
			}
		}
	}
}
 
pznRecordUserTimezone();

