function containsWhiteSpace(text) {
	var containsWhiteSpaceTester=new RegExp(/^\s+$/);
	return text==null || text==="" || containsWhiteSpaceTester.test(text);
}
var defaultAvoidParams=["pageopt","s_kwcid","pid","email","password","refresh","logout","postValue"];
function getUrlWithout(avoidArray) {
	var reloadUrl=new lzUrl(window.location.href);
	return newUrl=reloadUrl.getUrlWithout(avoidArray?avoidArray.concat(defaultAvoidParams):defaultAvoidParams);
}
function reloadpage(avoidArray) {
	var newUrl=getUrlWithout(avoidArray);
	window.location=newUrl+(newUrl.indexOf("?")>0?"&":"?")+"refresh="+new Date().getTime();
}
function getNotNullString(prefix, text, subfix) {
	var result = text;
	if (text&&result.length>0) {
		if (prefix && prefix.length>0) {
			result=prefix+result;
		}
		if (subfix && subfix.length>0) {
			result+=subfix;
		}
	}
	return text?result:"";
}
function saveParamToCookie(name, value) {
	var cookieName = globalCookieInfo.name;
	var cookieValue = lzcookie.readCookie(cookieName);
	var params=new lzParameter(cookieValue?cookieValue:"");
	params.setParameter(name,value);
	lzcookie.createCookie(cookieName, params.getParamsString(), 365, globalCookieInfo.path, globalCookieInfo.domain?globalCookieInfo.domain:null);
}
function loadParamFromCookie(name) {
	var cookieName = globalCookieInfo.name;
	var cookieValue = lzcookie.readCookie(cookieName);
	var params=new lzParameter(cookieValue?cookieValue:"");
	return params.getParameter(name);
}
function trim(str, chars) {   
	return ltrim(rtrim(str, chars), chars);   
}   
function ltrim(str, chars) {   
	chars = chars || "\\s";   
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");   
}   
function rtrim(str, chars) {   
	chars = chars || "\\s";   
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");   
}
function isNumeric(value) {
	return value.toString().match(/^[-]?\d*\.?\d*$/); 
}
function validEmail(email) {
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars="\[^\\s" + specialChars + "\]"
	var quotedUser="(\"[^\"]*\")"
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	var matchArray=email.match(emailPat)
	if (matchArray==null) {
		return false
	}
	var user=matchArray[1]
	var domain=matchArray[2]

	if (user.match(userPat)==null) {
	    return false
	}
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
		  for (var i=1;i<=4;i++) {
		    if (IPArray[i]>255) {
			return false
		    }
	    }
	    return true
	}
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
	    return false
	}
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	if (domArr[domArr.length-1].length<2 || 
	    domArr[domArr.length-1].length>6) {
	   return false
	}
	if (len<2) {
	   return false
	}
	return true;
}
function autoFadeOut(node, duration) {
	if (!duration) {
		duration = 2000;
	}
	setTimeout(function(){autoFadeOutExecuteEvent(node)},duration);
}
function autoFadeOutExecuteEvent(node) {
	$(node).fadeOut(1000, function () {
			$(this).remove();
		});
}
function createHintNode(hint, isSuccessful, prefix, suffix) {
	var childNode = document.createElement("span");
	childNode.className="fadeouthint fadeouthint-"+(isSuccessful?"success":"error");
	childNode.innerHTML=getNotNullString(prefix, "<strong class=\""+(isSuccessful?"successMessage":"errorMessage")+"\">"+hint+"</strong>", suffix);
	return childNode;
}
function AutoRunManager() {
	this.queue=[];
	this.addTask=function(fun) { 
		this.queue.push(fun);
	}
	this.getTasks=function() {
		return this.queue;
	}
}
var autoRunManager=new AutoRunManager();
$(document).ready(function () {
	var tasks = autoRunManager.getTasks();
	for (var no in tasks) {
		tasks[no]();
	}
});
function showSimplePopup(title, text, callback, callbackParams) {
	$('#module-popup-dialog .button-simplemodal-proceed').hide();
	$('#module-popup-dialog .button-simplemodal-close').hide();
	_displayConfirmPopup(title, text, callback, callbackParams);	
}
function showConfirmPopup(title, text, callback, callbackParams) {
	$('#module-popup-dialog .button-simplemodal-proceed').show();
	$('#module-popup-dialog .button-simplemodal-close').show();
	_displayConfirmPopup(title, text, callback, callbackParams);
}
function showInfoPopup(title, text, callback, callbackParams) {
	$('#module-popup-dialog .button-simplemodal-proceed').show();
	$('#module-popup-dialog .button-simplemodal-close').hide();
	_displayConfirmPopup(title, text, callback, callbackParams);
}
function _displayConfirmPopup(title, text, callback, callbackParams) {
	if (title) {
		$('#module-popup-dialog .module-header').show();
		$('#module-popup-dialog .module-header .heading').html(title).show();
	} else {
		$('#module-popup-dialog .module-header').hide();
	}
	$('#module-popup-dialog .module-content .popuptext').html(text);
	$('#module-popup-dialog').modal({'containerId': (text && text.length>900?'simplemodal-terms':'simplemodal-confirm'), 'position': ['20%',]});
	$('#module-popup-dialog .button-simplemodal-proceed').click(function () {
		if (callback) {
			if (callbackParams) {
				callback(callbackParams);
			} else {
				callback();
			}
		} else {
			$.modal.close();
		}
		return false;
	});	
}
function getPageCanonicalUrl() {
	var result = null;
	var linkTags=document.getElementsByTagName("head")[0].getElementsByTagName("link");
	for (var no in linkTags) {
		if (linkTags[no].getAttribute("rel")=="canonical") {
			result=linkTags[no].href;
			break;
		}
	}
	return result;
}
function loadRemoteAdvOffer(offerId, callback, nooffercallback) {
	if (offerId) {
		getRemoteData("offer.adv","id="+offerId,function(result) {
			if (result.length===0) {
				nooffercallback();
			} else {
				callback(result[0]);
			}
		});
	} else {
		nooffercallback()
	}
}
function loadRemoteAdvOfferAndLink(offerId, newlink, callback, nooffercallback) {
	if (offerId) {
		getRemoteData("offer.adv","id="+offerId,function(result) {
			if (result.length===0) {
				nooffercallback();
			} else {
				callback(result[0]);
			}
			window.location=newlink;
		});
	} else {
		nooffercallback();
		window.location=newlink;
	}
}	
function addFavouriteRetailer(retailerId, linkNode) {
	if (globalUserInfo.login) {
		var query="com=addFavouriteRetailer&retailerId="+retailerId+"&userId="+globalUserInfo.id+"&user="+lzcookie.readCookieNoEncode(lzCookieName.user);
		getRemoteData("userprofile",query,function(result) {
			if (result.done) {
				linkNode.innerHTML="View Favourites";
				linkNode.onclick=lztools.returntrue;
			} else {
				showInfoPopup("",result.hint);
			}
		});
	} else {		
		userLoginPopup();
	}
}
function initCategoryDropDownList(selectField, parentCategoryId, defaultValue, defaultText, defaultOption) {
	lzhtml.removeAllChildNodes(selectField);
	getRemoteData("loader.categories",parentCategoryId?"id="+parentCategoryId:"",function(categories) {
    	if (defaultText != null) {
			var div = document.createElement('option'); 	
			div.value=defaultValue;
			div.innerHTML=defaultText;
			if (defaultOption == div.value) {
				div.selected = true;
			}
			selectField.appendChild(div);
		}
		for(var no in categories) {	 
			var option = document.createElement('option'); 	
			option.value = categories[no].id;
			option.innerHTML = categories[no].name;
			if (defaultOption == option.value) {
				option.selected = true;
			}
			selectField.appendChild(option);
		}		
	});		
};
function openNewPageWithoutTopSection(newLocation) {
	var form = document.topSectionLinkForm;
	if (form) {
		form.action=newLocation;
		form.submit();
	} else {
		window.location.href=newLocation;
	}
}
function hideTopSectionLinkReplacement() {
	$("a.hideTopSecLink").click( function () {
		openNewPageWithoutTopSection(this.href);
		return false;
	});
}
$(document).ready(function () {
	$("a.button-link-terms").click(function () {
		loadRemoteAdvOffer(this.rel, function(offer) {
			var content="";
			if (offer.offerTc && offer.offerTc.toLowerCase()!="yes" && offer.offerTc.toLowerCase()!="no") {
				content+="<p>"+offer.offerTc+"</p>";
			}
			if (offer.catalogueTc) {
				content+="<p><strong>Catalogue Terms & Conditions</strong></p>"
				content+="<p>"+offer.catalogueTc+"</p>";
			}
			trackingOfferInteraction(offer,"viewT&C");
			showInfoPopup("Terms and Conditions",content);
		});
		return false;
	});
	$("a.otherLoginButton").click(function () {
		showOtherAccountLoginPopop(this.rel);
		return false;
	});
	if (globleActionName=="offer") {
		var pageUrl=new lzUrl(window.location.href);
		var printCurrentPage=pageUrl.parameters.getParameter("source");
		if (printCurrentPage=="print") {
			window.print();
		}
	}
});
function showReportErrorPopup(currentLink) {
	var form = document.reportErrorForm;
	if (globalUserInfo && globalUserInfo.login) {
		$(".reportErrorEmailArea").hide();
		form.email.value=globalUserInfo.email;
	} else {
		$(".reportErrorEmailArea").show();
		form.email.value="";
	}	
	form.url.value=currentLink;
	form.message.value="";
	$(".module-report-error-error").html("");
	$('#module-report-error').modal({'containerId': 'simplemodal-content-2'});
}
function onSubmitReportError(form) {
	var email = form.email.value;
	var message = form.message.value;
	var errorMessages = [];
	if(!email){
		errorMessages.push("Please enter your email");
	} else if (!validEmail(email)) {
		errorMessages.push("Please provide a valid email address");
	}
	if(!message){
		errorMessages.push("Please enter what error your found");
	}
	if (errorMessages.length>0) {
		$(".module-report-error-error").html(errorMessages.join("<br/>"));
	} else {
		$(".module-report-error-error").html("Processing...");
		var currentUrl=form.url.value;
		var userId;
		if (globalUserInfo.login&&globalUserInfo.id) {
			userId=globalUserInfo.id;
		}
		var query="email="+encodeURIComponent(email)+"&message="+encodeURIComponent(message)+"&pageUrl="+encodeURIComponent(currentUrl)
			+"&userId="+encodeURIComponent(userId)+"&refer=reportError";	
		getRemoteData("user.feedback.message",query,function(result) {
			if (result.done) {
				closeModalPopop(function () {showInfoPopup(null, result.hint)});
			} else {
				$(".module-report-error-error").html(result.hint);
			}
		});			
		$(".module-report-error-error").html("");
	}
}
//share
function toFacebookShare(currentlink) {
	window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(currentlink),'sharer','toolbar=0,status=0,width=626,height=436');
	//t=document.title;
	//'&t='+encodeURIComponent(t)
}
var bitLyDefaults = {
	    version:    '2.0.1',
	    login:      'lasoo',
	    apiKey:     'R_0f6d324f9c0bcf419fdf6b51134127a9',
	    history:    '0',
	    longUrl:    ''
	  };
	  
function toTwitterShare(currentlink) {
	var daurl = "http://api.bit.ly/shorten?"
	    +"version="+bitLyDefaults.version
	    +"&longUrl="+encodeURIComponent(currentlink)
	    +"&login="+bitLyDefaults.login
	    +"&apiKey="+bitLyDefaults.apiKey
	    +"&history="+bitLyDefaults.history
	    +"&format=json&callback=?";
    // Utilize the bit.ly API
    $.getJSON(daurl, function(data){
    	currentlink = data.results[currentlink].shortUrl;
    	var message = "Check out this deal " + currentlink +  "#" + window.location.hostname; // " #Lasoo.com.au";
    	window.open('http://twitter.com/home?status='+encodeURIComponent(message),'sharer','toolbar=0,status=0,width=626,height=436');
    });
}

function toBuzzShare(currentlink) {
	var daurl = "http://api.bit.ly/shorten?"
	    +"version="+bitLyDefaults.version
	    +"&longUrl="+encodeURIComponent(currentlink)
	    +"&login="+bitLyDefaults.login
	    +"&apiKey="+bitLyDefaults.apiKey
	    +"&history="+bitLyDefaults.history
	    +"&format=json&callback=?";
    // Utilize the bit.ly API
    $.getJSON(daurl, function(data){
    	currentlink = data.results[currentlink].shortUrl;
    	window.open('http://www.google.com/reader/link?url='+currentlink + '&title=' + document.title + '&srcURL=http://'+window.location.hostname,'sharer','toolbar=0,status=0,width=626,height=436');
    });
}

function toULasooShare(offerId,offerLink) {
	if (offerId && offerLink) {
		loadRemoteAdvOffer(offerId, function(offer) {
			var form=document.uLasooPostForm;
			form.url.value=offerLink;
			form.t.value=offer.title;
			form.desc.value=offer.description?offer.description.replace(/(<([^>]+)>)/gi, ""):"";
			form.Expiry.value=lzDate.getDateFormatFromJSON(offer.expiryDate,"yyyy-MM-dd");
			form.p.value=offer.price;
			form.r.value=offer.retailer.name;
			form.ti.value=offer.offerimage.path;
			showConfirmPopup("Confirm","Clicking confirm will post this item to u.Lasoo, the Lasoo Social shopping engine.",doToULasooShare,offer);
		});
	}
}

function toULasooShare2(offerId,offerLink,node) {
	if (offerId && offerLink) {
		loadRemoteAdvOffer(offerId, function(offer) {
			var form=document.uLasooPostForm;
			form.url.value=offerLink;
			form.t.value=offer.title;
			form.desc.value=offer.description?offer.description.replace(/(<([^>]+)>)/gi, ""):"";
			form.Expiry.value=lzDate.getDateFormatFromJSON(offer.expiryDate,"yyyy-MM-dd");
			form.p.value=offer.price;
			form.r.value=offer.retailer.name;
			form.ti.value=offer.offerimage.path;
			var params=[];
			for (var no=0;no<form.elements.length;no++) {
				params.push(encodeURIComponent(form.elements[no].name)+"="+encodeURIComponent(form.elements[no].value));
			}
			var actionLink=form.action+(form.action.indexOf('?')==-1?'?':'&')+params.join('&');
			postRemoteData("loader.remote.text","url="+encodeURIComponent(actionLink),function(result) {
				if (result.indexOf("http://")===0) {
					omUlasooTracking(offer);
					node.style.display='none';
					var viewNode=document.createElement("a");
					viewNode.innerHTML="view";
					viewNode.href=result;
					node.parentNode.appendChild(viewNode);
				} else {
					window.location=actionLink;
				}
			});
			//showConfirmPopup("Confirm","Clicking confirm will post this item to u.Lasoo, the Lasoo Social shopping engine.",doToULasooShare,offer);
		});
	}
}

function doToULasooShare(offer) {
	omUlasooTracking(offer);
	var form=document.uLasooPostForm;
	form.submit();
}
function getUrlFromAHref(aTagNode) {
	return aTagNode.href.indexOf("#")!=-1?getUrlWithout():aTagNode.href;
}
function initShareButtons(parentClassName) {
	var preClassFilter = (parentClassName?"."+parentClassName+" ":"");
	$(preClassFilter+"a.button-facebook-share").click(function () {
		toFacebookShare(getUrlFromAHref(this));
		loadRemoteAdvOffer(this.rel,omFacebookTracking,omFacebookTracking);
		return false;
	});
	$(preClassFilter+"a.button-twitter-share").click(function () {
		toTwitterShare(getUrlFromAHref(this));
		loadRemoteAdvOffer(this.rel,omTwitterTracking,omTwitterTracking);
		return false;
	});
	$(preClassFilter+"a.button-buzz-share").click(function () {
		toBuzzShare(getUrlFromAHref(this));
		loadRemoteAdvOffer(this.rel,omTwitterTracking,omTwitterTracking);
		return false;
	});	
	$(preClassFilter+"a.button-ulasoo-share").click(function () {
		var offerId=this.rel;
		toULasooShare2(offerId,getUrlFromAHref(this),this);
		return false;
	});
	$(preClassFilter+"a.button-email-a-friend").click(function() {
		showEmailFriendPopup(getUrlFromAHref(this),this.rev,this.title,this.rel,null);
		return false;
	});	
}
$(document).ready(function () {
	initShareButtons();
	$("a.buying-pref-selection").click(function() {
		omBuyingPrefSelectTracking(this.rev);
	});
	$("a.button-report-error").click(function() {
		showReportErrorPopup(getUrlFromAHref(this));
		return false;
	});	
});
// end of share
// wizard
function initArticleWizard(wizardNodeClass) {
	var wizardNodes=lzhtml.getElementsByClassPrefix(wizardNodeClass,null,"div");
	for (var no in wizardNodes) {
		var pageLinks=lzhtml.getElementsByClassPrefix("lz_wizard_page_",wizardNodes[no]);
		for (var lno in pageLinks) {
			var pageNo = parseInt(lzhtml.getClassSubfixByPrefix(pageLinks[lno],"lz_wizard_page_"));
			if (pageNo) {
				pageLinks[lno].pageNo=pageNo;
				pageLinks[lno].wizardNodeClass=wizardNodeClass;
				pageLinks[lno].onclick=changeArticleWizardPageEvent;
			}
		}
	}
}
function changeArticleWizardPageEvent() {
	var pageNo=this.pageNo;
	var wizardNodeClass=this.wizardNodeClass;
	var wizardNodes=lzhtml.getElementsByClassPrefix(wizardNodeClass,null,"div");
	for (var no in wizardNodes) {
		var containerNo=parseInt(lzhtml.getClassSubfixByPrefix(wizardNodes[no],wizardNodeClass+"_"));
		wizardNodes[no].style.display=(containerNo && containerNo==pageNo)?"block":"none";
	}
	return false;
}
// end of wizard
// catalogue list record
autoRunManager.addTask(function () {
	var tagClass="featuredCatalogueTag";
	var searchClass='.panel-tabs .'+tagClass
	var tagObj=$(searchClass);
	if (tagObj.length>0) {
		var tabId=loadParamFromCookie(tagClass);
		if (tabId) {
			tagObj.tabs('select',tabId)
		}
	}
	$('.panel-tabs .featuredCatalogueTag ul.panel-header a').click(function() {
		if(this.hash && this.hash.length>1) {
			var tabId = this.hash.substring(1);
			saveParamToCookie("featuredCatalogueTag",tabId);
		}
	});
});
// end of catalogue list record
// emailFriend
function showEmailFriendPopup(currentLink,refer,title,offerId,params) {
	var form = document.emailFriendForm;
	if (globalUserInfo && globalUserInfo.login) {
		form.userName.value=globalUserInfo.screenName;
		form.userEmail.value=globalUserInfo.email;
		form.userEmail.readOnly=true;
	} else {
		form.userName.value="";
		form.userEmail.value="";
		form.userEmail.readOnly=false;
	}	
	form.shareLink.value=currentLink;
	form.friendName.value="";
	form.friendEmail.value="";
	form.message.value="";
	form.refer.value=refer;
	form.title.value=title;
	form.offerId.value=offerId;
	form.params.value=params===null?"&&no&&":params;
	$("#module-email-friend-error").html("");
	$('#module-email-a-friend').modal({'containerId': 'simplemodal-content-2'});
}
function onSubmitEmailFriend(form) {
	var messages=[];
	var userName = form.userName.value;
	var userEmail = form.userEmail.value;
	var friendName = form.friendName.value;
	var friendEmail = form.friendEmail.value;
	var message = form.message.value;
	var refer = form.refer.value;
	var offerId = form.offerId.value;
	if (!userEmail){
		messages.push("Please enter Your Email Address");
	} else if (!validEmail(userEmail)) {
		messages.push("Please provide a valid email address for yourself");
	}
	if (!friendEmail){
		messages.push("Please enter Your Friend's Email Address");
	} else if (!validEmail(friendEmail)) {
		messages.push("Please provide a valid email address for your friend!");
	}
	$("#module-email-friend-error").html("");
	if(messages.length>0){
		$("#module-email-friend-error").html("<label>"+messages.join("<"+"/label><br/><label>")+"<"+"/label>");
	}else{
		$("#module-email-friend-error").html("Processing...");
		var uri;
		var params;
		var currentUrl=form.shareLink.value;
		var questionPos = currentUrl.indexOf("?");
		uri=questionPos>=0?currentUrl.substring(0,questionPos):currentUrl;
		if (form.params.value=="&&no&&") {
			params=questionPos>=0?currentUrl.substring(questionPos+1):"";
		} else {
			params=form.params.value;
		}
		var userId;
		if (globalUserInfo.login&&globalUserInfo.id) {
			userId=globalUserInfo.id;
		}
		var query="userName="+encodeURIComponent(userName)+"&userEmail="+encodeURIComponent(userEmail)
					+"&friendName="+encodeURIComponent(friendName)+"&friendEmail="+encodeURIComponent(friendEmail)	
					+"&message="+encodeURIComponent(message)+"&refer="+encodeURIComponent(refer)	
					+"&uri="+encodeURIComponent(uri)+"&params="+encodeURIComponent(params)
					+"&title="+encodeURIComponent(form.title.value)+"&userId="+encodeURIComponent(userId);	
		if (offerId) {
			query += "&offerId="+encodeURIComponent(offerId);	
		}
		getRemoteData("emailfriend",query,function(result) {
			if (result.done) {
				closeModalPopop(function () {showInfoPopup(null, result.hint)});
				loadRemoteAdvOffer(offerId, omEmailFriendTracking, omEmailFriendTracking);
			} else {
				$("#module-email-friend-error").html(result.hint);
			}
		});			
		$("#module-email-friend-error").html("");
	}
}
// end of emailFriend
// login
function loginpopupSubmit(form) {
	lzFunction.processUserlogin(form.email.value, form.password.value, function(user, errors) {
		var errorPanel = document.getElementById("module-user-login-error");
		if (user) {
			errorPanel.innerHTML="";
			if (form.followinglink.value.length>0) {
				window.location=form.followinglink.value;
			} else {
				reloadpage();
			}
		} else {
			var errorMessages=[];
			for (var no in errors) {
				var error=errors[no];
				if ("EMAIL_NULL"==error) {
					errorMessages.push("<label>Please enter email address</label>");
				} else if ("EMAIL_INVALID"==error) {
					errorMessages.push("<label>Please enter a valid email address</label>");
				} else if ("EMAIL_LARGE"==error) {
					errorMessages.push("<label>Please enter email address which has less than 255 characters</label>");
				} else if ("PW_NULL"==error) {
					errorMessages.push("<label>Please enter password</label>");
				} else if ("PW_LARGE"==error) {
					errorMessages.push("<label>Please enter password which has less than 255 characters</label>");
				} else if ("ACCESS_DENIED"==error) {
					errorMessages.push("<label>Your username or password was not recognised. Please try again</label>");
				} 
			}
			errorPanel.innerHTML=errorMessages.join("<br/>");
		}
	});
}
function sendForgetPasswordEmail() {
	var form=document.moduleUserLoginForm;
	var errorPanel = document.getElementById("module-user-login-error");
	if (form.email.value.length>0) {
		errorPanel.innerHTML="Processing..."
		var query="email="+form.email.value;
		getRemoteData("user.sendforgetpasswordemail", query, function (result) {
			errorPanel.innerHTML=result.hint;
		});
	} else {
		errorPanel.innerHTML="Please enter email address";
	}
}
// end of login
// search
function changeSortOption(sortOption) {
	var url=getUrlWithout(["sort"]);
	if (sortOption) {
		url+=(url.indexOf("?")>=0?"&":"?")+"sort="+encodeURIComponent(sortOption);
	}
	window.location=url;
}
function validSearchWithIn(form, escapeValue) {
	var term = form.term.value;
	var pass=term && term!=escapeValue;
	if (!pass) {
		showInfoPopup(null, "Please enter a term for search");
	}
	return pass;
}
function PriceRangeRefinement() {
	this.priceRangeList=[['Less than $10',0,9],['$10 - $20',10,20],['$21 - $30',21,30],['$31 - $50',31,50],['$51 - $100', 51,100],['$101 - $150',100,150],['$151 - $200',151,200],['$201 - $300', 201,300],['$301 - $400',301,400],['$401 - $500', 401, 500],['$501 - $1000', 501,1000],['$1001 - $1500', 1001,1500],['$1501 - $2000', 1501,2000],['$2001 - $2500', 2001,2500],['$2501 - $3000', 2501, 300],['$3001 - $3500', 3001,3500] ,['$3501 - $4000', 3501,4000],['$4001 - $4500',4001,4500],['$4501 - $5000',4501,5000],['More than $5000',5001,10000]];
	this.offerCountList=[];
	this.maxBarHeight=0;
	this.minValue=0;
	this.maxValue=10000;
	this.getCount=function(value){
		var count = this.offerCountList[this.priceRangeList[value][0]]; 
		return count?count:0;
	}
	this.getMinPrice=function(value){
		var count = this.priceRangeList[value][1]; 
		return count?count:0;
	}										
	this.getMaxPrice=function(value){
		var count = this.priceRangeList[value][2]; 
		return count?count:0;
	}										
	this.updateTotalCount=function(u1, u2) {
		var total =0;
		for (var i=u1;i<=u2;i++) {
			total += this.getCount(i);
		}
		this.minValue = this.getMinPrice(u1);
		this.maxValue = this.getMaxPrice(u2);
		$('#priceoffercount').text(total);
		$('#priceRangeLow').text('$' + this.minValue);
		$('#priceRangeHigh').text('$' + this.maxValue);
	}
	this.addPriceRangeFilter=function() {
		var currentUrl=getUrlWithout(["priceRange", "startNo"]);
		var newLocation=currentUrl+(currentUrl.indexOf('?')>=0?"&":"?")+'priceRange=between+' + this.minValue + '+' + this.maxValue;
		openNewPageWithoutTopSection(newLocation);
	}
	this.init=function(offerCounts, minValue, maxValue) {
		for (var i=0; i < this.priceRangeList.length; i++){
			this.offerCountList[this.priceRangeList[i][0]] = 0;
		}
		for (var no in offerCounts) {
			this.offerCountList[offerCounts[no].name]=offerCounts[no].value;
			if (this.maxBarHeight<offerCounts[no].value) {
				this.maxBarHeight=offerCounts[no].value;
			}			
		}
		var sliderContext = $('.module-refine-price');
		var control=this;
		var minDefault = 0;
		var maxDefault = this.priceRangeList.length-1;
		if (minValue || maxValue) {
			for (var i=0; i < this.priceRangeList.length; i++) {
				if (minValue && this.getMinPrice(i)<=minValue && this.getMaxPrice(i)>=minValue) {
					minDefault=i;
				}
				if (maxValue && this.getMinPrice(i)<=maxValue && this.getMaxPrice(i)>=maxValue) {
					maxDefault=i;
				}
			}
		}
		$("#slider-range", sliderContext).slider({
			range: true,
			min: 0,
			max: control.priceRangeList.length-1,
			values: [minDefault, maxDefault],
			slide: function(event, ui) {
				$('.bar-graph li', sliderContext).each(function (index) {
					if (index < ui.values[0] || index > ui.values[1]) {
						$(this).addClass('inactive');
					} else {
						$(this).removeClass('inactive');
					}
				});
				control.updateTotalCount(ui.values[0], ui.values[1]);
			}
		});
		var barGraph=document.getElementById("priceRefinementBarGraph");
		var graphList=[];
		for(var i=0; i<this.priceRangeList.length; i++){
			var count = this.getCount(i);
			// check if we need to scale graph also need to check with Rob for image its only 80 px
			if(this.maxBarHeight > 80) {
				count = Math.round((count * 80)/ this.maxBarHeight) ;
			}
			graphList.push('<li><span style="height:'+ count + 'px"></span></li>');
		}
		barGraph.innerHTML=graphList.join("");
		this.updateTotalCount(minDefault,maxDefault);
	}
}
function searchMultiRefinement(form) {
	var selectedValues=[];
	if (form.refine.value && form.refine.checked) {
		selectedValues.push(form.refine.value);
	} else if (form.refine.length) {
		for (var i=0; i<form.refine.length; i++) {
			if (form.refine[i].checked) {
				selectedValues.push(form.refine[i].value);
			}
		}
	}
	if (selectedValues.length===0) {
		showInfoPopup("Error","Please select at least one item for refinement");
	} else {
		var reloadUrl=new lzUrl(window.location.href);
		var refine=reloadUrl.parameters.getParameter("refine");
		var newUrl=reloadUrl.getUrlWithout(["refine"].concat(defaultAvoidParams));
		newUrl+=(newUrl.indexOf("?")==-1?"?":"&")+"refine="+(refine?refine+"+":"")+selectedValues.join("+");
		if ($(form).is(".hideTopSecLink")) {
			openNewPageWithoutTopSection(newUrl);			
		} else {
			window.location=newUrl;
		}
	}
}
function switchBuyingPreference(buyInStore, buyOnline) {
	var buyPrefArray=[];
	//TODO: remove hardcode cookie name. It should be from CookieSessionParameter.getCookieName()
	var cookieName = "separamsv2"
	var cookieValue = lzcookie.readCookie(cookieName);
	var params=new lzParameter(cookieValue?cookieValue:"");
	if (buyInStore) {
		buyPrefArray.push("buypref=store");
		params.setParameter("prefStore",1);
	} else {			
		params.setParameter("prefStore",0);
	}			
	if (buyOnline) {
		buyPrefArray.push("buypref=online");
		params.setParameter("prefOnline",1);
	} else {			
		params.setParameter("prefOnline",0);
	}
	if (buyInStore && buyInStore) {
		buyPrefArray.push("pid=search-filter-all");
	} else if (buyInStore) {
		buyPrefArray.push("pid=search-filter-offline");
	} else if (buyOnline) {
		buyPrefArray.push("pid=search-filter-online");
	}
	lzcookie.createCookie(cookieName, params.getParamsString(), -1, globalCookieInfo.path, globalCookieInfo.domain?globalCookieInfo.domain:null);

	var currentUrl=getUrlWithout(["buypref","startNo"]);
	var newLocation=currentUrl+(currentUrl.indexOf('?')>=0?"&":"?")+buyPrefArray.join("&");
	openNewPageWithoutTopSection(newLocation);	
}
function setBuyingPreference(form) {
	var buyInStore = form.buyInStore.checked;
	var buyOnline = form.buyOnline.checked;
	if (!buyInStore && !buyOnline) {
		showInfoPopup("Error","Please select at least one buying preference");
	} else {
		switchBuyingPreference(buyInStore, buyOnline);
	}
}
function aggregatedOfferListingInit(button, expansionId) {
    $(button).removeClass('button-expand').addClass('button-collapse').children('span').text('Collapse All');
    $('#' + expansionId).slideDown();

	$(button).toggle(function() {
        $(this).removeClass('button-collapse').addClass('button-expand').children('span').text('Expand All');
        $('#' + expansionId).slideUp();
    }, function () {
        $(this).removeClass('button-expand').addClass('button-collapse').children('span').text('Collapse All');
        $('#' + expansionId).slideDown();
    });
}
function loadSearchAggregatedRecords(productModel, repOfferId, expansionButton) {
	var expansionId = "aggregateList"+repOfferId;
	if ($(expansionId).length==0) {
		var nextPageUrl=getUrlWithout(["startNo", "fragment", "productModel"]);
		nextPageUrl=nextPageUrl+(nextPageUrl.indexOf("?")>=0?"&":"?")+"fragment=productModel"+"&productModel="+encodeURIComponent(productModel);
		$(expansionButton).children('span').text('Loading...');
		$.get(nextPageUrl, function(html) {
			var expansionNode = $(expansionId);
			if (expansionNode.length==0) {
				var uniqueClassName="lzAGG"+Math.ceil(Math.random()*100000000);
				var newNode = document.createElement("div");
				newNode.id=expansionId;
				newNode.className=uniqueClassName+" aggregate";
				newNode.innerHTML=html;
				var repModuleNode=document.getElementById("aggregateItem"+repOfferId);
				if (repModuleNode) {
					if (repModuleNode.nextSibling) {
						repModuleNode.parentNode.insertBefore(newNode, repModuleNode.nextSibling);
					} else {
						repModuleNode.parentNode.appendChild(newNode);
					}
					//alert(html);
					expansionButton.onclick=lztools.returnfalse;
					aggregatedOfferListingInit(expansionButton, expansionId);
					gridInit(uniqueClassName);
					lightboxInit(uniqueClassName);
				} else {
					$(expansionButton).children('span').text('Loading Failed');
				}
			}
		});
	}
}
function SearchDynamicController(startNo, pageSize, maxNo) {
	this.pageNoOffset = 0;
	this.startNo = startNo;
	this.pageSize = pageSize;
	this.maxNo = maxNo;
	this.loading=false;

	this.getNextPageStartNo=function() {
		return this.startNo+this.pageSize*(this.pageNoOffset+1);
	};
	
	this.hasNextPage=function() {
		return this.getNextPageStartNo()<=maxNo;
	};

	this.getNextPageUrl=function() {
		var nextPageUrl=getUrlWithout(["startNo", "fragment"]);
		return nextPageUrl+(nextPageUrl.indexOf("?")>=0?"&":"?")+"startNo="+this.getNextPageStartNo()+"&fragment=offer";
	};

	this.loadNextPage=function() {
		if (!this.loading) {
			this.loading=true;
			var controller = this;
			var nextPageUrl = this.getNextPageUrl();
			$.get(nextPageUrl, function(html) {
				var containers = lzhtml.getElementsByClass("lzSearchMoreOfferListContainer");
				var uniqueClassName="lzSMO"+Math.ceil(Math.random()*100000000);
				var newNode=null;
				for (var no in containers) {
					newNode = document.createElement("div");
					newNode.className=uniqueClassName;
					newNode.innerHTML=html;
					containers[no].appendChild(newNode);
//					containers[no].innerHTML=containers[no].innerHTML+"<div class='"+uniqueClassName+"'>"+html+"</div>";
				}
				if (newNode) {
					omGlobalTracking.products="";
					var trackingDataNode=lzhtml.getFirstElementsByClass("offerTrackingData", newNode, "div");
					if (trackingDataNode) {
						var trackingData = eval(lzhtml.unescapeHTML(trackingDataNode.innerHTML));
						for (var no in trackingData) {
							var offer=trackingData[no];
							trackingAddOfferProducts(offer.offerId,offer.retailerCode,offer.catalogueId,offer.retailerId,"searchResult");
						}
						submitFinalTracking(omGlobalTracking);
					}
				}
				gridInit(uniqueClassName);
				lightboxInit(uniqueClassName);
				alertsAddInit(uniqueClassName);
				initShareButtons(uniqueClassName);
				var newStartNo = controller.getNextPageStartNo();
				var newEndNo = newStartNo+ controller.pageSize-1;
				if (newEndNo>=controller.maxNo) {
					newEndNo = controller.maxNo;
					$(".lzSearchMoreOfferButtonArea").hide();
				}
				var infos = lzhtml.getElementsByClass("lzSearchMoreOfferInfoContainer");
				for (var no in infos) {
					lzhtml.setValueToNodes(newEndNo, infos[no], "lzSearchMoreOffer_", controller.setOfferInfoValue);
				}
				controller.pageNoOffset++;
				controller.loading=false;
			});
		}
	};
	this.setOfferInfoValue=function(newEndNo, node, control, cparas) {
		if (control == "endNo") {
			lzhtml.setText(node, newEndNo);
		} 
	};	
}
// end of search
// add alert popup
function initAlertPopupCriteria(alertValue, additionalCriteria) {
	var form=document.moduleAddAlertForm;
	if (alertValue.name) {
		form.name.value=alertValue.name;
		$("#addAlertFormNameField").hide();
	} else {
		form.name.value="";
		$("#addAlertFormNameField").show();
	}
	if (alertValue.displayName) {
		$("#addAlertFormDisplayName").html(alertValue.displayName);
	}
	var criteria;
	if (alertValue.criteria && additionalCriteria) {
		criteria = additionalCriteria+"&"+alertValue.criteria;
	} else if (additionalCriteria) {
		criteria = additionalCriteria;
	} else {
		criteria = alertValue.criteria
	}
	form.criteria.value=criteria;
	form.type.value=alertValue.type;
	if (alertValue.params) {
		form.params.value=alertValue.params;
	} else {
		form.params.value="";
	}
}
function submitAddAlert() {
	var form=document.moduleAddAlertForm;
	var errorMessage=[];
	var alertName=trim(form.name.value);
	var email=trim(form.email.value);
	if (alertName===0) {
		errorMessage.push("Please enter the Alert name");
	}
	if (email.length===0) {
		errorMessage.push("Please enter your email address");
	} else if (email.length>255) {
		errorMessage.push("Your email address can not have more than 255 characters");
	} else if (!validEmail(email)) {
		errorMessage.push("Please enter a valid email address");
	}
	if (errorMessage.length>0) {
		$("#module-alerts-add-error").html("<label>"+errorMessage.join("</label><br/><label>")+"<"+"/lable>");
	} else {
		$("#module-alerts-add-error").html("Processing ...");
		var query="name="+encodeURIComponent(alertName)+"&";
		query+=globalUserInfo.login?"userId="+globalUserInfo.id+"&user="+lzcookie.readCookieNoEncode(lzCookieName.user):"email="+encodeURIComponent(email)+"&loc="+lzcookie.readCookieNoEncode("locationsv2");
		query+="&criteria="+encodeURIComponent(form.criteria.value)+"&alerttype="+encodeURIComponent(form.type.value)+(form.params.value?"&"+form.params.value:"");
		getRemoteData("alert.add",query,function(result) {
			if (result.done) {
				closeModalPopop(function () {showInfoPopup(null, result.hint)});
				omAddAlertTracking(form.type.value);
			} else {
				$("#module-alerts-add-error").html(result.hint);
			}
		});		
	}
}
// end of add alert popup
//wishlist
// callback(result, hintPanel);
function addOfferToWishList(offerId, hintPanel, retailerCode, catalogueId, callback) {
	var userId=globalUserInfo.id;
	if (userId) {
		var query = "userId="+userId+"&com=addwishlist&offerId="+offerId+"&user="+lzcookie.readCookieNoEncode(lzCookieName.user);
		getRemoteData("userprofile",query,function(result) {
			if (!result.done && result.hint.indexOf("Please log")>=0) {
				userLoginPopup(null, true);
			} else {
				$(hintPanel).children(".fadeouthint").hide();
				if (hintPanel) {
					if (result.done) {
						var omTracking=new lzOminiture();
						omTracking.setPageName(":Add to list");
						omTracking.setOneToThreeValues();
						omTracking.setEVar(23, "Add to list");
						omTracking.setHier1("home|add to list");
						omTracking.appendEvents("event30");
						omTracking.setProducts(offerId,retailerCode,catalogueId);
	//					lzOminitureTools._checkProdViewEvent(omTracking);
						lzOminitureTools.submitRequest(omTracking, 2);
						loadRemoteAdvOffer(offerId, function(offer) {
							trackingOfferInteraction(offer, "Wishlist");
						});						
					}
					if (callback) {
						callback(result, hintPanel);
					} else {
						var hint=result.hint;
						var customDone=result.done;
						if (result.done || result.hint.indexOf("is in your list already")>=0) {
							hint="Added | <a class=\"blue\" href=\""+contentPath+"portal/membershipjoin?mode=lists"+"\">View My List</a>";
							customDone=true;
						} 
						var hintNode = createHintNode(hint, customDone , "&nbsp;&nbsp;");
						hintPanel.appendChild(hintNode);
						autoFadeOut(hintNode, 600000);
					}
				} else {
					showInfoPopup("", result.hint);
					//showResultInModalPopup(result.hint);
				}
			}
		});
	} else {
		userLoginPopup(null, true);
	}
	return false;
}
// end of wishlist
//autolocation
function lzAutoLocation(form,defaultText,maxLines,maxWidth) {
	this.defaultText=defaultText?defaultText:"Suburb or Postcode";
	this.form=form;
	this.maxLines = maxLines?maxLines:10;
	this.maxWidth = maxWidth;
	this.valid = false;
	this._processSubmit=function() {
		if (this.form.location.value==this.defaultText) {
			this.form.location.value='';
		}
	}
	this._onFormSubmit=function() {
		this.process._processSubmit();
		return true;
	}
	this._onBlurEvent=function() {
		var me=this.form.process;
		if (this.value=='') {
			this.value=me.defaultText;
		}
	}
	this._onFocusEvent=function() {
		var me=this.form.process;
		if (this.value==me.defaultText) {
			this.value="";
		} else {
			this.select();
		}
	}
	this._onKeyupEvent=function(e) {
		var form=this.form;
		if (!e) {
			e=event;
		}
		if (e.keyCode==13) {
			if (form.process.valid) {
				form.onsubmit();
			}
		} else {
			form.process._autolocation();
		}
	}
	this._autolocation=function() {
		var form=this.form;
		var inputValue=form.location.value;
		if (inputValue && inputValue.length>=3) {
			getRemoteData("location.match","location="+escape(inputValue),function(result) {
				form.process.valid=result.vaild;
				form.process._createBox(inputValue, result.locations, form.location);
			});
		} else {
			form.process.valid=false;
			this._hideAutoBox();
		}
	}
	this._hideAutoBox=function() {
		lzAutoLocation.hidePopup();
	}
	this.getElementX=function(element){
		var targetLeft = 0;
		if (element.offsetParent) {
			while (element.offsetParent) {
				targetLeft += element.offsetLeft;
	            element = element.offsetParent;
			}
		} else if (element.y) {
			targetLeft += element.x;
	    }
		return targetLeft;
	};
	this.getElementY=function(element){
		var targetTop = 0;
		if (element.offsetParent) {
			while (element.offsetParent) {
				targetTop += element.offsetTop;
	            element = element.offsetParent;
			}
		} else if (element.y) {
			targetTop += element.y;
	    }
		return targetTop;
	};
	this._createBox=function(inputValue, locations, inputField) {
		var box = document.getElementById("lzAutoBox");
		if (!box) {
			box=document.createElement("div");
		    box.id='lzAutoBox';
		    box.className='autobox';
		    box.style.zIndex="200";
		    box.style.position='absolute';
		    box.style.border='2px solid #ebebeb';
		    //box.style.backgroundColor='#FFFFEE';
		    box.style.backgroundColor='#FFFFFF';
		    //box.style.margin='30px 0 0 0';
		    document.body.appendChild(box);			
		}
		box.process=this;
	    var html = '<ul style="list-style: none;">';
	    var termText=inputValue.toUpperCase();
	    var maxWidth = 0;
//	    if (data[0]=='true') {
//		    ajax.autocomplete.enableButton(ajax.autocomplete.currentInputField.id, true);
//	    } else {
//		    ajax.autocomplete.enableButton(ajax.autocomplete.currentInputField.id, false);
//	    }
	    for(var no in locations) {
	        html+='<li onclick="lzAutoLocationSelectOption(\'';
	        html+=locations[no].displayName+'\');">';
	        html+='<a href="#" onclick="return false;" style="display: block;padding: 0px">';
	        var formatedData = locations[no].displayName.replace( termText, '<strong>'+termText+'</strong>');
	        html+=formatedData.replace(',', ', ');
	        html+='</a></li>';
	        var dataLength = (locations[no].displayName.length + 7) * 7;
	        if (maxWidth < dataLength) {
	        	maxWidth = dataLength;
	        }
	    }
	    html+="</ul>";
	    if (inputField.offsetWidth > maxWidth) {
	    		maxWidth = inputField.offsetWidth;
	    }
	    //alert(html);
	    box.style.display="block";
	    var boxHeight = locations.length * 17;
	    if (this.maxWidth && maxWidth>this.maxWidth) {
	    	maxWidth = this.maxWidth;
	    }
	    box.style.width=maxWidth + 'px';
	
	    box.style.top=this.getElementY(inputField) +20 +'px';
	    box.style.left=this.getElementX(inputField) +'px'; 
	    if (locations.length > this.maxLines) {
		    box.style.overflowX='hidden';
		    box.style.overflowY='auto';
	        box.style.height=(17*this.maxLines)+'px';
	    } else {
	    	box.style.overflow='';
	        box.style.height=boxHeight + 3 + 'px';
	    }			
	    if (locations.length > 0) {
	        box.innerHTML=html;
	    } else{
	        box.innerHTML = "Your location is not recognised. Please re-enter your suburb or postcode";	
	        box.style.height='50px';
	        box.style.width='150px';
	        box.style.color='#cc0000';
	    }
	    box.style.display="block";		
	}
	this._init=function() {
		this.form.process=this;
//		this.form.onsubmit=this._onFormSubmit;
		this.form.location.onblur=this._onBlurEvent;
		this.form.location.onfocus=this._onFocusEvent;
		this.form.location.onkeyup=this._onKeyupEvent;
		if (this.form.location.value==="") {
			this.form.location.value=this.defaultText;
		}
	}
	this._init();
}
lzAutoLocation.hidePopup=function() {
	var box = document.getElementById("lzAutoBox");
	if (box) {
		box.style.display="none";
	}
};
function lzAutoLocationSelectOption(value) {
	var box = document.getElementById("lzAutoBox");
	var inputField=box.process.form.location;
	inputField.value=value;
	inputField.focus();
	box.style.display="none";
}
//end of autolocation
// set location
function displayChangeLocationForm(form, panelId) {
	lzAutoLocation.hidePopup();
	form.location.value='';
	$(".setlocation-setmylocation-"+panelId).show();
	$(".setlocation-mylocationlist-"+panelId).hide();
}
// end of set location
// catalogue view
function DelayTimer(delay, timeoutFunction) {
	this.timer = null;
	this.delay = delay;
	this.timeoutFunction = timeoutFunction;
	this.start=function() {
		this.stop();
		this.timer=setTimeout(this.timeoutFunction, this.delay); 
	}
	this.stop=function() {
  	    if (this.timer) {
  			clearTimeout(this.timer);
  			this.timer = null;
  		}
	}
}
function catalogueMapAreaClick(repository,e,offerId,imageTag,objPosition,imgMapCoordsArray,callback,callbackParameters) {
	initAndDisplayOfferPopup(e,repository,offerId, imageTag, objPosition, imgMapCoordsArray);
}
function initAndDisplayOfferPopup(e,repository,offerId, imageTag, objPosition, imgMapCoordsArray) {
	offerPopupTimer.stop();

	var props=document.offerPopupPropsForm;
	if (offerId!=props.offerId.value) {
		initCataloguePopup();
		renderOfferPopup(null, offerPopupNode);
	}
	// calc position
	var winSize = lzview.getWindowSize();
	var pX = winSize.scrollX + e.clientX;
	var pY = winSize.scrollY + e.clientY;
//	alert(pX+"-"+pY);
	var browseContainerPosition = lzview.findPos(document.getElementById("site"));
//	alert(browseContainerPosition[0]+":"+browseContainerPosition[1]+"  "+browseContainerPosition.width);
	var popupPosX=pX;
	var popupPosY=pY;
	var isLeft=false;
	popupPosX = objPosition[0] + imgMapCoordsArray[2] + 20;
	popupPosY = objPosition[1] + imgMapCoordsArray[1] + parseInt((imgMapCoordsArray[3] - imgMapCoordsArray[1]) / 2) - 80;
	if ((imageTag.height-imgMapCoordsArray[1] - parseInt((imgMapCoordsArray[3] - imgMapCoordsArray[1]) / 2))<240) {
		popupPosY-=80;
		$(offerPopupNode).addClass("module-catalogue-popup-bottom");
	} else {
		$(offerPopupNode).removeClass("module-catalogue-popup-bottom");
	}
	if (imageTag.width>500) {
		var spaceLeft = imgMapCoordsArray[0];
		var spaceRight = imageTag.width - imgMapCoordsArray[2];
		if (spaceLeft > spaceRight) {
			isLeft=true;			
			if(imgMapCoordsArray[0] < 300) {
				popupPosX = objPosition[0] - 40;
			} else {
				popupPosX = objPosition[0] + imgMapCoordsArray[0] - 345;
			}
		}
		else if (spaceRight >= spaceLeft) {
			if(imgMapCoordsArray[2] > 380) {
				popupPosX = objPosition[0] + imageTag.width - 305;
			}
		}		
	} else if (objPosition[0]-browseContainerPosition[0] > 470) {
		isLeft=true;
		popupPosX = objPosition[0] + imgMapCoordsArray[0] - 345;
	}		
	if (isLeft) {
		$(offerPopupNode).addClass("module-catalogue-popup-alternate");
	} else {
		$(offerPopupNode).removeClass("module-catalogue-popup-alternate");
	}
	$(offerPopupNode).css({
  		left: popupPosX + "px",
  		top: popupPosY + "px"
	});
			
	$(offerPopupNode).show();
	if (offerId!=props.offerId.value) {
    	repository.getOfferById(offerId,function(offer) {
        	if (offer) {
	    		props.offerId.value=offerId;
	    		renderOfferPopup(offer, offerPopupNode);
	    		//omCatalogueViewEvent("event7", OfferId, imagePNG[2], imagePNG[14]);
	    		omCatalogueViewOfferPopupEvent(offer,viewcontrol.pageView,repository,"event7");
        	} else {
            	alert("Offer infomation can not be found");
        	}
    	});		
	}
}
function renderOfferPopup(offer, popupNode) {
	lzhtml.setValueToNodes(offer, popupNode, "lzCataPopup_", setOfferPopupValue);
}
function setOfferPopupValue(offer, node, control, cparas) {
	if (control == "offerIdValue") {
		node.value=offer?offer.id:"";
	} else if (control == "offerIdRel") {
		node.rel=offer?offer.id:"";
	} else if (control == "offerTitle") {
		lzhtml.setText(node, lztools.getTrimText(offer?offer.title:"", cparas));
	} else if (control == "offerTitleValue") {
		node.value=offer?offer.title:"";
	} else if (control == "offerTitleTitle") {
		node.title=offer?offer.title:"";
	} else if (control == "catalogueIdValue") {
		node.value=offer?offer.catalogueId:"";
	} else if (control == "catalogueIdBase36Value") {
		node.value=offer?offer.catalogueId.toString(36):"";
	} else if (control == "displayName") {
		lzhtml.setText(node, lztools.getTrimText(offer?offer.title:"", cparas));
	} else if (control == "hidePriceCheck") {
		if (offer) {
			node.style.display=offer.catalogue.hidePrice?"none":"block";
		} else {
			node.style.display="none";
		}
	} else if (control == "displayPrice") {
		lzhtml.setText(node, lztools.getTrimText(offer&&!offer.catalogue.hidePrice?offer.price:"", cparas));
	} else if (control == "saving") {
		lzhtml.setText(node, lztools.getTrimText(offer&&!offer.catalogue.hidePrice?offer.saving:"", cparas));
	} else if (control == "description") {
		lzhtml.setText(node, lztools.getTrimText(offer?offer.description:"", cparas));
	} else if (control == "offerVideoExistCheck") {
		node.style.display=(offer&&offer.video)?"block":"none";
	} else if (control == "offerVideoNoExistCheck") {
		node.style.display=(offer&&offer.video)?"none":"block";
	} else if (control == "offerVideo") {
		if (offer&&offer.video) {
			var videoWidth=300;
			var videoHeight=250;
			var offerVideoLink="http://www.youtube.com/v/"+offer.video;
			node.innerHTML="<object width='"+videoWidth+"' height='"+videoHeight+"'><param name='movie' value='"+offerVideoLink+"'></param><param name='allowFullScreen' value='true'></param><param name='allowscriptaccess' value='always'></param><embed src='"+offerVideoLink+"' type='application/x-shockwave-flash' allowscriptaccess='always' allowfullscreen='true' width='"+videoWidth+"' height='"+videoHeight+"'></embed></object>";
		} else {
			node.innerHTML="";
		}
	} else if (control == "offerImageValue") {
		node.value=offer?offer.offerimage.path:null;
	} else if (control == "offerDetailPrint") {
		node.onclick=function() {
			var form=document.offerpopuptodetails;
			var existSourceValue=form.source.value;
			var existTarget=form.getAttribute("target");
			form.setAttribute("target", "_blank");
			form.source.value="print";
			gotoproductdetails();
			form.setAttribute("target", existTarget);
			form.source.value=existSourceValue;
			return false;
		}
	} else if (control == "offerExistCheck") {
		node.style.display=offer?"block":"none";
	} else if (control == "offerImageEnlarge") {
		node.href=offer?offer.offerimage.path:null;
		node.title=offer?offer.title:"";
		if (offer) {
			node.onclick=function() {
				trackingOfferInteraction(offer,"ImageZoom");
			}
		} else {
			node.onclick=null;
		}
	} else if (control == "offerImagePopImage") {
		if (!node.temp) {
			node.temp=node.src
		}
		node.src=offer?lztools.appendFilename(offer.offerimage.path,"_POP"):node.temp;
		node.alt=offer?offer.title:"";
	} else if (control == "offerImageOdpImage") {
		if (!node.temp) {
			node.temp=node.src
		}
		node.src=offer?lztools.appendFilename(offer.offerimage.path,"_ODP"):node.temp;
		node.alt=offer?offer.title:"";
	} else if (control == "offerTcCheck") {
		node.style.display=(offer&&offer.hasOfferTc)?"block":"none";
	} else if (control == "offerTc") {
		lzhtml.setText(node, lztools.getTrimText(offer?offer.offerTc:"", cparas));
	} else if (control == "buyNowClass") { // remove jquery usage
		if (offer&&offer.urlType) {
			$(node).addClass("offer-buynow");
		} else {
			$(node).removeClass("offer-buynow");
		}
	} else if (control == "buyNowCheck") {
		node.style.display=(offer&&offer.urlType)?"block":"none";
	} else if (control == "buyNowLink") {
		node.href=offer?offer.url:"#";
	} else if (control == "buyNowWindow") {
		$(node).attr("target",(offer&&offer.urlNewWindow?"_blank":"_self"));
	} else if (control == "buyNowLabel") {
		lzhtml.setText(node, lztools.getTrimText(offer?offer.urlType:"", cparas));
	} else if (control == "checkPoint") {
		node.style.display=offer?"block":"none";
	} else if (control == "enlargeImageLink") {
		node.style.display=(offer&&offer.offerimage.path)?"block":"none";
	} else if (control == "offerDetailLink") {
		node.href=offer?offer.landingLink:"#";
	} else if (control == "addToListLink") {
		if (node.linkText) {
			node.innerHTML=node.linkText;
		} else {
			node.linkText=node.innerHTML;
		}
		node.offer=offer;
		node.onclick=offerPopupAddtoListClick;
	}
}
function offerPopupAddtoListClick() {
	var offer=this.offer;
	addOfferToWishList(offer.id, this,'${retailer.retailerCode}',offer.catalogueId,showLinkForAddOfferToListInList);
	return false;
}
function initCataloguePopup() {
}
function omCatalogueViewOfferPopupEvent(offer,viewManager,repo, event) {
	var omTracking=new lzOminiture();
	var pageNumber;
	if (viewManager.pageview==1) {
		pageNumber=viewManager.pageNo;
	} else if (viewManager.pageview==2) {
		pageNumber=viewManager.pageNo;
		if (pageNumber!=0 && pageNumber!=viewManager.catalogue.numberPages) {
			pageNumber+=" & "+(viewManager.pageNo+1);
		} else if (pageNumber===0) {
			pageNumber=1;
		}		
	}
	omTracking.setPageName(":catalogues fya:"+viewManager.catalogue.name+" - Page "+pageNumber);
	omTracking.setChannel("catalogues for your area");
	omTracking.setOneToThreeValues("catalogues fya:"+viewManager.catalogue.name,null);
	omTracking.setProp4Value(":"+repo.retailerCodeCache[viewManager.catalogue.retailer.id]+":"+offer.title+":"+offer.id);
	omTracking.setEVar(23, "catalogue "+viewManager.pageview+" page");
	omTracking.setHier1("	home|catalogues for your area|"+viewManager.catalogue.name);
	omTracking.appendEvents(event);
	omTracking.setProducts(offer.id,repo.retailerCodeCache[viewManager.catalogue.retailer.id],offer.catalogueId);
	submitFinalTracking(omTracking);
}
// end of catalogue view
// newsletter panel
function initNewsletterSubscriptionForm(form) {
	form.email.title=newsletterFieldDefaultText;
	form.email.value=newsletterFieldDefaultText;
	form.email.style.display=newsletterUserLogin?"none":"block";
	form.newsletters.checked=newsletterNewsletterOn;
	form.exclusiveNewsletters.checked=newsletterExclusiveOn;
}
function submitNewsletterSubscription(form) {
	if (form.newsletters.checked || form.exclusiveNewsletters.checked) {
		var query="com=newsletter";
		if (form.newsletters.checked) {
			query+="&newsletter=add";
		}
		if (form.exclusiveNewsletters.checked) {
			query+="&exclusive=add";
		}
		if (newsletterUserLogin) {
			query+="&userId="+(globalUserInfo.login?globalUserInfo.id:"")+"&user="+lzcookie.readCookieNoEncode(lzCookieName.user);
		} else {
			query+="&email="+encodeURIComponent(form.email.value);
		}
		getRemoteData("newsletter.subscription",query,function(result) {
			alert(result.hint);
			if (result.done) {
//				button.value=(isAdd?"Unsubscribe":"Subscribe");
				if (result.stringValue) { 
					lzcookie.createCookieNoEncode("userv2", result.stringValue, 365, globalCookieInfo.path, globalCookieInfo.domain?globalCookieInfo.domain:null);
				}
			}				
		});
	} else {
		showInfoPopup("Error", "Please select newsletter type for subscription");
	}
}
// end of newsletter panel
// storelocator
function loadRetailersForStoreOption(node,currentRetailerId) {
	var optionList=node.getElementsByTagName("option");
	if (node.disabled || optionList.length==1 && optionList[0].value=='0') {
		var loadingNode = document.createElement("option");
		getRemoteData("loader.retailerforstore","",function(result) {
			var optionList=node.getElementsByTagName("option");
			if (optionList.length==1 && optionList[0].value=='0') {
				optionList[0].innerHTML=" - Select Retailer - ";
				optionList[0].selected=true;
			}
			if (node.disabled) {
				node.disabled=false;
			}
			for (var no in result) {
				var retailer = result[no];
				var optionNode = document.createElement("option");
				optionNode.value=retailer.uniqueName;
				optionNode.innerHTML=retailer.name;
				node.appendChild(optionNode);
				if (currentRetailerId && currentRetailerId==retailer.id) {
					optionNode.selected=true;
				}
			}
		});
	}
}
// end of storelocator
//google map
function getGoogleMapMarkerIconByImage(image, shadow) {
	var markerIcon = new GIcon(G_DEFAULT_ICON);
	markerIcon.image = image;
	markerIcon.shadow = shadow;
	markerIcon.iconSize = new GSize(32, 37);
	markerIcon.shadowSize = new GSize(51, 37);
	markerIcon.iconAnchor = new GPoint(16, 35);
	markerIcon.infoWindowAnchor = new GPoint(16, 3);
	markerIcon.imageMap=[2,3,27,3,28,27,21,27,15,34,9,27,2,27,2,3];	
	return markerIcon;
}
function getGoogleMapManMakerIconByImage(image, shadow) {
	var markerIcon = new GIcon(G_DEFAULT_ICON);
	markerIcon.image = image;
	markerIcon.shadow = shadow;
	markerIcon.iconSize = new GSize(32, 32);
	markerIcon.shadowSize = new GSize(49, 32);
	markerIcon.iconAnchor = new GPoint(16, 32);
	markerIcon.infoWindowAnchor = new GPoint(16, 3);
	markerIcon.imageMap=[19,0,21,13,19,30,11,30,9,17,8,17,8,4,17,0];	
	return markerIcon;	
}
// end of google map
//street view	-- getCurrentMarkerLatLong()
function CStreetViewControl() {}
var streetViewControlCreated=false;
function createStreetViewControl() {
	if (!streetViewControlCreated) {
		streetViewControlCreated=true;
		CStreetViewControl.prototype = new GControl();
		CStreetViewControl.prototype.initialize = function(map) {
			var container = document.createElement("div");
			var streetViewBtn= document.createElement("div");
			streetViewBtn.title= "Open Street View";
			streetViewBtn.className= "GoogleMapButton";
			container.appendChild(streetViewBtn);
			var streetViewBtnText=document.createElement("div");
			streetViewBtnText.className="GoogleMapButton_text";
			streetViewBtn.appendChild(streetViewBtnText);
			streetViewBtnText.appendChild(document.createTextNode("Street View"));
			GEvent.addDomListener(streetViewBtn, "click", openGoogleStreetView);
			map.getContainer().appendChild(container);
			return container;
		}
		CStreetViewControl.prototype.getDefaultPosition = function() {
			return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(93,7));
		}
	}
}
function openGoogleStreetView() {
	var position = getCurrentMarkerLatLong();
	panoClient = new GStreetviewClient();
	panoClient.getNearestPanorama(position, function(panoData) {
		if (panoData.code==500) {
			showInfoPopup("ERROR","Google server is not responding!");
			return;
		} else if (panoData.code==600) {
			showInfoPopup("ERROR","No nearest street view found!");
			return;
		} else if (panoData.code!=200) {
			return;
		}
		var streetViewHeight=480;
		var streetViewWidth=700;
		var newNode=document.createElement("div");
		newNode.id="pano";
		newNode.style.display="block";
		newNode.style.width="700px"
		newNode.style.height="480px"
		document.getElementById("streetViewPanel").appendChild(newNode);
		$('#module-popup-street-view').modal({'containerId': 'simplemodal-streetview', 'position': [,]});
		modalPostCloseEvent=removeStreetView;
		var angle = GMap_computeAngle(position, panoData.location.latlng);
		panoramaOptions = { latlng:panoData.location.latlng, pov:{yaw: angle}};
		var myPano = new GStreetviewPanorama(document.getElementById("pano"), panoramaOptions);
		GEvent.addListener(myPano, "error", handleNoFlash);
	});
}
function removeStreetView() {
	$('#pano').remove();
}
function handleNoFlash(errorCode) {
	if (errorCode == 603) {
		showInfoPopup("ERROR","Flash doesn't appear to be supported by your browser");
	  return;
	}
} 
// end of street view
// special tracking
var retailerTrackingSent=[];
var retailerTrackingRequestHistory=[];
function addRetailerTrackingImg(retailerId, type, repeatable) {
	var newRecord = false;
	var index = retailerId;
	if (type=="featuredOffer" || type=="featuredCatalogue") {
		index+=type;
	} else if (globleActionName=="retailer" && type=="searchResult") {
		index+="retailerLanding";
	}
	if (retailerId && !retailerTrackingSent[index]) {
		retailerTrackingSent[index]=true;
		newRecord = true;
	}
	if (newRecord || repeatable) {
		if (retailerId==12682823103941) {
			var timeStamp = new Date().getTime();
			var newNode = document.createElement("img");
//			newNode.src = "http://bs.serving-sys.com/BurstingPipe/adServer.bs?cn=tf&c=19&mc=imp&pli=1379595&PluID=0&ord="+timeStamp+"&rtu=-1";
			var imageSrc;
			if (type=="featuredOffer") {
				imageSrc="http://bs.serving-sys.com/BurstingPipe/adServer.bs?cn=tf&c=19&mc=imp&pli=1383236&PluID=0&ord="+timeStamp+"&rtu=-1";
			} else if (type=="featuredCatalogue") { 
				imageSrc="http://bs.serving-sys.com/BurstingPipe/adServer.bs?cn=tf&c=19&mc=imp&pli=1383235&PluID=0&ord="+timeStamp+"&rtu=-1";
			} else if (globleActionName=="retailer" && type=="searchResult") { 
				imageSrc="http://bs.serving-sys.com/BurstingPipe/adServer.bs?cn=tf&c=19&mc=imp&pli=1383233&PluID=0&ord="+timeStamp+"&rtu=-1";
			} else {
				imageSrc="http://bs.serving-sys.com/BurstingPipe/adServer.bs?cn=tf&c=19&mc=imp&pli=1383222&PluID=0&ord="+timeStamp+"&rtu=-1"
			}
			var ajaxObj = new Image();
			var uniqueId = "ti"+Math.ceil(Math.random()*100000000);
			this.retailerTrackingRequestHistory[uniqueId]=ajaxObj;
			ajaxObj.onload=function () {
				retailerTrackingRequestHistory[uniqueId]=null;
			}
			ajaxObj.src=imageSrc;		
		}
	}
}
// end of special tracking
// ** Tracking **
function aLinkOfferTracking(aLinkNode, callback, nooffercallback) {
	if (!aLinkNode.target || aLinkNode.target=="_self") {
		loadRemoteAdvOfferAndLink(aLinkNode.rel,aLinkNode.href,callback,nooffercallback);
		return false;
	} else {
		loadRemoteAdvOffer(aLinkNode.rel,callback,nooffercallback);
		return true;
	}	
}
function simpleOfferInteraction(offerId, interactionType) {
	loadRemoteAdvOffer(offerId,function(offer) {
		if (offer) {
			trackingOfferInteraction(offer,interactionType);
		}			
	});
}
// TODO: only support catalogue link without location pre-set.
function CatalogueForStoreControl() {
	this.openProcess=function(catalogue, catalogueLink) {
		var result = true;
		if (catalogue && catalogue.retailer && catalogue.retailer.id && catalogueLink && catalogueLink.indexOf("location=")<0) {
			var retailerId=catalogue.retailer.id;
			for (var no in globalCatalogueForStoreRetailers) {
				if (globalCatalogueForStoreRetailers[no]==retailerId) {
					result = false;
					//alert("Open store loading popup");
					showSimplePopup("Select Store", "Loading your near stores ...");
					var query = "retailerid="+retailerId+"&max="+7+"&catalogueId="+catalogue.id;
					var locationIds=[];
					for (var lno in globalUserInfo.locations) {
						if (globalUserInfo.locations[lno] && globalUserInfo.locations[lno].id) {
							locationIds.push(globalUserInfo.locations[lno].id);
						}
					}
					if (locationIds.length>0) {
						query+="&lc="+locationIds.join(" ");
					}
					getRemoteData("loader.catalogueforstore", query, function(catalogueForStoresAndLoc) {
						var stores = catalogueForStoresAndLoc.stores;
						var location = catalogueForStoresAndLoc.location;
						if (location && stores.length>0) {
							var hint="";
							var questionMarkPos=catalogueLink.indexOf("?")
							var params = questionMarkPos>=0?catalogueLink.substring(questionMarkPos+1):null;
							hint+='<div class="module-store-listing"><p>To view the catalogue relevant to you please select your nearest store</p>';
							hint+='<div class="catalogueForStore_storenearlocation">Store Near <span class="catalogueForStore_location">'+location.postcode+', '+location.suburb+' '+location.state+'</span>:</div>';
							hint+='<table cellspacing="0" cellpadding="0"><tbody>';
							for (var sno in stores) {
								var store = stores[sno].store;
								var aLink=stores[sno].link+(stores[sno].link.indexOf("?")>=0?"&":"?")+"location="+store.postcode+(params?"&"+params:"");
								if (parseInt(sno/2)*2==sno) {
									hint+="<tr class='stripe'>";
								} else {
									hint+="<tr>";
								}
								hint+="<td><a href="+aLink+">"+lzhtml.escapeHTML(store.suburb)+"</a></td>";
								hint+="<td>"+lzhtml.escapeHTML(store.address1+" "+store.address2+" "+store.address3)+" "+store.suburb+" "+store.state+" "+store.postcode+"</td>";
								hint+="</tr>";
							}
							hint+="</tbody></table></div>";
							showSimplePopup("Select store for catalogue", hint);
						} else {
							showInfoPopup("Message", "No store found for this catalogue");
						}
					});
				}
			}
		}
		return result;
	}
}
var catalogueForStoreControl = new CatalogueForStoreControl();
$("a.catalogue-entry-link").live("click", function() {
	var catalogue;
	eval("catalogue="+this.rel);
	return catalogueForStoreControl.openProcess(catalogue, this.href);
});
$(document).ready(function () {
	$("a.buy-now-tracking").click(function () {
		return aLinkOfferTracking(this, omBuyTracking);
	});	
/*	$("a.catalogue-entry-link").click(function () {
		var catalogue;
		eval("catalogue="+this.rel);
		return catalogueForStoreControl.openProcess(catalogue, this.href);
	});	*/
	$("a.catalogue-thumb-tracking").click(function () {
		var catalogue;
		eval("catalogue="+this.rel)
		omCatalogueThumbnailTracking(catalogue);
		return true;
	});	
	$("a.featured-component-tracking").click(function () {
		return aLinkOfferTracking(this, omFeaturedComponentTracking, omFeaturedComponentTracking);
	});		
	$("a.offerInteractionLink").click(function () {
		var node = this;
		return aLinkOfferTracking(node, function(offer) {
			if (offer) {
				trackingOfferInteraction(offer,node.rev);
			}			
		});
	});		
	$("a.search-enlargeImage-tracking").click(function () {
		loadRemoteAdvOffer(this.rev,omSearchEnlargeImageTracking);
	});	
});

function setOmPropValue(omTracking,index,value) {
	if (omTracking.getProp(index)!=null) {
		omTracking.setProp(index,value);
	}	
}
function setOmEVarValue(omTracking,index,value) {
	if (omTracking.getEVar(index)!=null) {
		omTracking.setEVar(index,value);
	}	
}
function setOmUserCommonAttributes(omTracking, userInfo) {
	if (userInfo.login) {
		omTracking.setEVar(29,"logged in");
	}
	if (userInfo.locations && userInfo.locations.length>0) {
		var postcodes=[];
		for (var no in userInfo.locations) {
			if (userInfo.locations[no].postcode) {
				postcodes.push(userInfo.locations[no].postcode);
			}
		}
		omTracking.setProp(5,postcodes.join(","));
	}
	if (userInfo.sex) {
		omTracking.setProp(20,userInfo.sex.toLowerCase());
	}	
	if (userInfo.age) {
		var ageTracking;
		if (userInfo.age <18) {
			ageTracking = "less than 18";
		} else if (userInfo.age <=25) {
			ageTracking = "18-25";
		} else if (userInfo.age <=30) {
			ageTracking = "26-30";
		} else if (userInfo.age <=35) {
			ageTracking = "31-35";
		} else if (userInfo.age <=40) {
			ageTracking = "36-40";
		} else if (userInfo.age <=50) {
			ageTracking = "41-50";
		} else if (userInfo.age <=60) {
			ageTracking = "51-60";
		} else if (userInfo.age <=70) {
			ageTracking = "61-70";
		} else {
			ageTracking = "more than 70";
		}
		omTracking.setProp(21,ageTracking);
	}
	omTracking.setProp(35,userInfo.remoteIp);
}
function submitFinalTracking(omTracking) {
	setOmUserCommonAttributes(omTracking, globalUserInfo);
	if (window.location.href.indexOf("debug=1")>0) {
		alert(omTracking.debug());
	}
	lzOminitureTools.submitRequest(omTracking, globleActionName);	
}
function omAddAlertTracking(alertType) {
	var omTracking=new lzOminiture();
	omTracking.setPageName(":add alert");
	omTracking.setChannel("add alert");
	omTracking.setOneToThreeValues("add alert",null);
	omTracking.setProp(31, alertType.toLowerCase());
	omTracking.setEVar(23, "add alert");
	omTracking.setHier1("home|add alert");
	omTracking.appendEvents("event18");
	submitFinalTracking(omTracking);	
}
function omEmailFriendTracking(offer) {
	var omTracking=new lzOminiture();
	omTracking.setPageName(":email friend");
	omTracking.setChannel("email friend");
	omTracking.setOneToThreeValues("email friend",null);
	omTracking.setEVar(23, "email friend");
	omTracking.setHier1("home|email friend");
	omTracking.appendEvents("event22");
	if (offer) {
		omTracking.setProducts(offer.id,offer.retailer.code,offer.catalogueId);
	}
	submitFinalTracking(omTracking);	
	if (offer) {
		trackingOfferInteraction(offer,"Email");
	}
}
function omTwitterTracking(offer) {
	var omTracking=new lzOminiture();
	omTracking.setPageName(":twitter:"+(offer?offer.title:"no offer"));
	omTracking.setChannel("share");
	omTracking.setOneToThreeValues("twitter",offer?":"+offer.title:null);
	omTracking.setEVar(23, "twitter");
	omTracking.setHier1("home|twitter");
	omTracking.appendEvents("event4");
	if (offer) {
		omTracking.setProducts(offer.id,offer.retailer.code,offer.catalogueId);
	}
	submitFinalTracking(omTracking);
	if (offer) {
		trackingOfferInteraction(offer,"Twitter");
	}
}
function omFacebookTracking(offer) {
	var omTracking=new lzOminiture();
	omTracking.setPageName(":facebook:"+(offer?offer.title:"no offer"));
	omTracking.setChannel("share");
	omTracking.setOneToThreeValues("facebook",offer?":"+offer.title:null);
	omTracking.setEVar(23, "facebook");
	omTracking.setHier1("home|facebook");
	omTracking.appendEvents("event14");
	if (offer) {
		omTracking.setProducts(offer.id,offer.retailer.code,offer.catalogueId);
	}
	submitFinalTracking(omTracking);
	if (offer) {
		trackingOfferInteraction(offer,"Facebook");
	}
}
function omUlasooTracking(offer) {
	var omTracking=new lzOminiture();
	omTracking.setPageName(":uLike:"+offer.title);
	omTracking.setChannel("share");
	omTracking.setOneToThreeValues("uLike",":"+offer.title);
	omTracking.setEVar(23, "uLike");
	omTracking.setHier1("home|uLike|"+offer.title);
	omTracking.appendEvents("event31");
	omTracking.setProducts(offer.id,offer.retailer.code,offer.catalogueId);
	submitFinalTracking(omTracking);
	if (offer) {
		trackingOfferInteraction(offer,"uLasoo");
	}
}
function omStoreLocatorTracking(offerId,retailerCode,catalogueId) {
	var omTracking=new lzOminiture();
	omTracking.setPageName(":storelocator");
	omTracking.setChannel("storelocator");
	omTracking.setOneToThreeValues("storelocator",null);
	omTracking.setEVar(23, "storelocator");
	omTracking.setHier1("home|storelocator");
	omTracking.appendEvents("event11");
	if (offerId) {
		omTracking.addOfferProducts(offerId,retailerCode,catalogueId);
	}
	submitFinalTracking(omTracking);
}
function randInx(max){
	return Math.floor(Math.random() * (max + 1));
}
function trackingOfferInteraction(offer, interactionType) {
//	var uniqueId=new Date().getTime()+""+randInx(999999);
//	LasooOfferInteraction(offer.id,interactionType)
	globalTracking.offerInteraction(offer.id,interactionType);
}

function trackingOfferPageInteraction(offer) {
	cmStartTagSet();
	cmCreateShopAction5Tag(offer.id,offer.title,1,offer.price,offer.categoryId);
	cmDisplayShop5s();
	cmSendTagSet();	
}

function createPrintTracking(offerId, catalogueName) {
	var omTracking=new lzOminiture();
	omTracking.setOneToThreeValues("");
	if (omGlobalTracking.pageName) {
		omTracking.pageName=omGlobalTracking.pageName;
	} else {
		if (globleActionName=="catalogue") {
			omTracking.setPageName(":catalogues fya:view catalogue-v2");
			if (viewcontrol && (viewcontrol.viewNo==1 || viewcontrol.viewNo==2)) {
//				omTracking.setProp(2,omGlobalTracking.getProp(2));
//				omTracking.setProp(3,omGlobalTracking.getProp(2)+":page "+viewcontrol.pageView.pageNo);
				omTracking.setOneToThreeValues((catalogueName?catalogueName:"catalogue page"),":Print Page "+viewcontrol.pageView.pageNo);
				var viewManager=viewcontrol.pageView;
				omTracking.products=lzOminitureTools._getProductsForCataloguePage(viewManager.catalogue,
						[viewManager.getPageInfo(viewManager.pageNo),viewManager.getPageInfo(viewManager.pageNo+1)], 
						repo.retailerCodeCache[viewManager.catalogue.retailer.id]);
			}
		}
	}
	omTracking.setProp(23,"print");
	omTracking.setHier1("home|print");
	omTracking.appendEvents("event26");
	if (offerId) {
		loadRemoteAdvOffer(offerId, function(offer) {
			// TODO: it is conflicted with print.
			if (offer) {
				trackingOfferInteraction(offer, "Print");
				omTracking.setOneToThreeValues("offer details",":"+offer.title);
				omTracking.setProducts(offer.id,offer.retailer.code,offer.catalogueId);
				submitFinalTracking(omTracking);
			}
			window.print();
		});
	} else {
		submitFinalTracking(omTracking);
		window.print();
	}
}
function omBuyingPrefSelectTracking(buyingpreference) {
	var omTracking=new lzOminiture();
	omTracking.setPageName(":buying preference:"+buyingpreference);
	omTracking.setOneToThreeValues("buying preference:"+buyingpreference);
	omTracking.setProp(23,"buying preference");
	omTracking.setHier1("home|buying preference|"+buyingpreference);
	omTracking.appendEvents("event32");
	submitFinalTracking(omTracking);
}
function omFeaturedSlideTracking(retailerCode, pid) {
	var omTracking=new lzOminiture();
	omTracking.setPageName(":featured componment:"+pid);
	omTracking.setOneToThreeValues("featured componment:"+pid);
	omTracking.setProp4Value(":"+retailerCode+":"+pid);
	omTracking.setEVar(22,retailerCode);
//	omTracking.setProp(24,offer.catalogueId);
	omTracking.setProducts("featured slide",retailerCode);
	omTracking.setProp(23,"featured componment");
	omTracking.setHier1("home|featured componment|"+pid);
	omTracking.appendEvents("event40");
	submitFinalTracking(omTracking);
}
function omFeaturedComponentTracking(offer) {
	var omTracking=new lzOminiture();
	omTracking.setPageName(":featured componment"+(offer?":"+offer.title:""));
	omTracking.setOneToThreeValues("featured componment",(offer?":"+offer.title:""));
	if (offer) {
		omTracking.setProp4Value(":"+offer.retailer.code+":"+offer.title+":"+offer.id);
		omTracking.setEVar(22,offer.retailer.code);
		omTracking.setProp(24,offer.catalogueId);
		omTracking.setProducts(offer.id,offer.retailer.code,offer.catalogueId);
	}
	omTracking.setProp(23,"featured componment");
	omTracking.setHier1("home|featured componment"+(offer?"|"+offer.title:""));
	omTracking.appendEvents("event40");
	submitFinalTracking(omTracking);
}
function omBuyTracking(offer) {
	var omTracking=new lzOminiture();
	omTracking.setPageName(":offer details:"+offer.title);
	omTracking.setOneToThreeValues("offer details",":"+offer.title);
	omTracking.setProp4Value(":"+offer.retailer.code+":"+offer.title+":"+offer.id);
	omTracking.setProp(23,"offer details");
	omTracking.setProp(24,offer.catalogueId);
	omTracking.setEVar(22,offer.retailer.code);
	omTracking.setHier1("home|offer details|"+offer.title);
	omTracking.appendEvents("event13");
	omTracking.setProducts(offer.id,offer.retailer.code,offer.catalogueId);
	submitFinalTracking(omTracking);
	trackingOfferInteraction(offer,"Buynow");
}
function omSearchEnlargeImageTracking(offer) {
	var omTracking=new lzOminiture();
	omTracking.setPageName(":offer details:"+offer.title);
	omTracking.setOneToThreeValues("offer details",":"+offer.title);
	omTracking.setProp4Value(":"+offer.retailer.code+":"+offer.title+":"+offer.id);
	omTracking.setProp(23,"offer details");
	omTracking.setProp(24,offer.catalogueId);
	omTracking.setEVar(22,offer.retailer.code);
	omTracking.setHier1("home|offer details|"+offer.title);
	omTracking.appendEvents("event9");
	omTracking.setProducts(offer.id,offer.retailer.code,offer.catalogueId);
	submitFinalTracking(omTracking);	
	trackingOfferInteraction(offer,"ImageZoom");
}
function omFacebookCommentTracking(commentId, offer) {
	var omTracking=new lzOminiture();
	omTracking.setPageName(":facebook comment"+(offer?":"+offer.title:""));
	omTracking.setOneToThreeValues("facebook comment",(offer?":"+offer.title:""));
	if (offer) {
		omTracking.setProp4Value(":"+offer.retailer.code+":"+offer.title+":"+offer.id);
		omTracking.setProp(24,offer.catalogueId);
		omTracking.setEVar(22,offer.retailer.code);
		omTracking.setProducts(offer.id,offer.retailer.code,offer.catalogueId);
	}
	omTracking.setProp(23,"facebook comment");
	omTracking.setEVar(38, commentId);
	omTracking.setHier1("home|facebook comment"+(offer?"|"+offer.title:""));
	omTracking.appendEvents("event41");
	submitFinalTracking(omTracking);	
}
function omCatalogueThumbnailTracking(catalogue) {
	var omTracking=new lzOminiture();
	omTracking.setPageName(":catalogue thumbnail link:"+catalogue.name);
	omTracking.setOneToThreeValues("catalogue thumbnail link",":"+catalogue.name);
	omTracking.setProp4Value(":"+catalogue.retailer.code+":"+catalogue.name+":"+catalogue.id);
	omTracking.setProp(23,"catalogue thumbnail link");
	omTracking.setProp(24,catalogue.id);
	omTracking.setEVar(22,catalogue.retailer.code);
	omTracking.setHier1("home|catalogue thumbnail link|"+catalogue.name);
	omTracking.setProducts(catalogue.offerId,catalogue.retailer.code,catalogue.id);
	omTracking.appendEvents(globleActionName=="offer"?"event37":"event36");
	submitFinalTracking(omTracking);
}
function OmDynamicValues() {
	this.fieldValue;
	this.pageNameSubValue;
	this.prop2SubValue;
	this.prop3Value;
	this.prop4Value;
	this.prop10Value;
	this.prop11Value;
	this.prop12Value;
	this.prop13Value;
	this.prop14Value;
	this.prop16Value;
	this.evar22Value;
	this.evar25Value;
	this.evar32Value;
	this.hier1SubValue;
	this.events;
	this.searchTerm;
	this.resultCount;
	this.productValues=[];
	this.offerObj;
}
var offerImpressionProductList=[];
function trackingAddOfferProducts(offerId,retailerCode,catalogueId,retailerId,source) {
	omGlobalTracking.addOfferProducts(offerId,retailerCode,catalogueId);
	if (source && source!='offerDetail') {
		var offerImpObj={"id":offerId,"source":source};
		offerImpressionProductList.push(offerImpObj);
	}
	addRetailerTrackingImg(retailerId,source);	
}
function trackingAddOfferProductsAddon(offerIdArray) {
//	cmCreateManualLinkClickTag('/'+encodeURIComponent(globleActionName)+'?cm_sp='+retailerCode+'-_-'+catalogueId+'-_-'+offerId);
	globalTracking.offerImpression(offerIdArray);
//	addRetailerTrackingImg(retailerCode);
}
function createGlobalTracking(omTracking,actionName,pageUrl,dynamicValues) {
	var omPageAction=actionName;
	var prop2Value=omPageAction;
	if (actionName=="home") {
		omTracking.setPageName(":homepage-v2");
		omTracking.setProp(23,"homepage");
		omTracking.appendEvents("event27");
		omTracking.setHier1("home");
		prop2Value="";
	} else if (actionName=="catalogues") {
		omPageAction="catalogues fya";
		prop2Value=omPageAction;
		omTracking.setProp(23,"all catalogues");
	} else if (actionName=="catalogue") {
		omPageAction="view catalogue (product list view):"+dynamicValues.fieldValue;
		prop2Value="catalogues fya:"+dynamicValues.fieldValue;
		omTracking.setProp(23,"product list");
	} else if (actionName=="category") {
		if (dynamicValues.prop3Value && dynamicValues.prop3Value!='no found') {
			omTracking.setPageName(":"+omPageAction+"-v2:"+dynamicValues.prop3Value);
		}
		omTracking.setProp(23,"category details");
	} else if (actionName=="categories") {
		omPageAction="all categories";
		prop2Value=omPageAction;
		omTracking.setProp(23,"category");
	} else if (actionName=="offer") {
		omTracking.appendEvents("event2");
	} else if (actionName=="search") {
		omTracking.setProp(23,"SERP");
	} else if (actionName=="storelocator") {
		omTracking.appendEvents("event11");
		if (omTracking.events.indexOf("event1")==-1) {
			omTracking.appendEvents("event1");
		}
	}
	if (!omTracking.pageName) {
		omTracking.setPageName(":"+omPageAction+"-v2");
	}
	var s_kwcidValue=pageUrl.parameters.getParameter("s_kwcid");
	if (s_kwcidValue) {
		omTracking.pageName=s_kwcidValue.toLowerCase()+":"+omTracking.pageName
	}
	if (dynamicValues.pageNameSubValue) {
		omTracking.pageName=omTracking.pageName+":"+dynamicValues.pageNameSubValue.toLowerCase();
	}
	if (dynamicValues.prop3Value) {
		omTracking.setOneToThreeValues(prop2Value,":"+dynamicValues.prop3Value.toLowerCase());
	} else if (dynamicValues.prop3Value==="") {
		omTracking.setOneToThreeValues(prop2Value,dynamicValues.prop3Value);
	} else {
		omTracking.setOneToThreeValues(prop2Value,null);
	}
	if (dynamicValues.prop2SubValue) {
		omTracking.setProp(2,omTracking.getProp(2)+dynamicValues.prop2SubValue);
	}
	if (dynamicValues.prop4Value) {
		omTracking.setProp4Value(dynamicValues.prop4Value);
	}
	if (!omTracking.channel) {
		omTracking.channel=omTracking.getProp(2);
	}
	if (!omTracking.hier1) {
		omTracking.setHier1("home|"+omPageAction+(dynamicValues.hier1SubValue?"|"+dynamicValues.hier1SubValue:""));
	}
	if (omTracking.products && actionName!="home" && actionName!="offer") {
		omTracking.appendEvents("event10");
	}
	if (dynamicValues.events) {
		omTracking.appendEvents(dynamicValues.events);
	}
	omTracking.setEVar(7,s.campaign);
	if (globalUserInfo.login) {
		omTracking.setEVar(9,globalUserInfo.id);
	}
	setOmPropValue(omTracking,10,dynamicValues.prop10Value);
	setOmPropValue(omTracking,11,dynamicValues.prop11Value);
	setOmPropValue(omTracking,12,dynamicValues.prop12Value);
	setOmPropValue(omTracking,13,dynamicValues.prop13Value);
	setOmPropValue(omTracking,14,dynamicValues.prop14Value);
	setOmPropValue(omTracking,16,dynamicValues.prop16Value);
	setOmPropValue(omTracking,23,omPageAction);
	setOmEVarValue(omTracking,22,dynamicValues.evar22Value);
	setOmEVarValue(omTracking,25,dynamicValues.evar25Value);
	setOmEVarValue(omTracking,32,dynamicValues.evar32Value);
	if (dynamicValues.productValues && dynamicValues.productValues.length>0) {
		for (var no in dynamicValues.productValues) {
			var product=dynamicValues.productValues[no];
			omTracking.addOfferProducts(product.offerId,product.retailerCode,product.catalogueId);
		}
	}
	lzOminitureTools._checkProdViewEvent(omTracking);
	if (offerImpressionProductList.length>0) {
		var idArray = [];
		for (var no in offerImpressionProductList) {
			idArray.push(offerImpressionProductList[no].id);
		}
		globalTracking.offerImpression(idArray);
	}
	if (dynamicValues.offerObj) {
		//trackingOfferPageInteraction(dynamicValues.offerObj);
	}
}
function submitGlobalTracing() {
	if (lzOminiture_pagetracking) {
		var pageUrl=new lzUrl(window.location.href);
		createGlobalTracking(omGlobalTracking,globleActionName,pageUrl,getDynamicValues());
		submitFinalTracking(omGlobalTracking);
	}
}
// ** end of Tracking **