var glow_treasurehunt_config = {
	cookieName 	: "eden_glow_treasurehunt1",
	cookieCode	: "eden_glow_treasurehunt1_code",
	formUrl		: "/?page=230",
	imgUrl		: "/uploads/images/icons/TreasureHuntIcon.gif",
	formName	: "competitionform",
	minCount 	: 5,
	codePrefix	: "EG",
	
	itemLabelSingle : "winter orchid",
	itemLabelPlural : "winter orchids"
}

//console.log(generateCode())

function glow_initCompetition() {
	var pageId = $.getURLParam('page') || 0;
	var config = glow_treasurehunt_config;
	jqmPopup = $("<div id='competition-popup' class='jqmWindow'></div>").jqm();
	$("body").prepend(jqmPopup);	
	
	var closeButton		= "<a href='javascript:return false;' class='close'>[ close ]</a>";
	var contentString 	= "<p class='large'>Well done, you have found {COUNT} {ITEM}</p>";
	var contentString2 	= "<p class='large'>You've already clicked this one.</p>";
	var remainString 	= "Keep looking, you only need to find and click on {REMAIN} more for your chance to WIN!";
	var formLink 		= tokenizeString("<br/><a href='{formUrl}'>Click here</a> to go to the form", config);
	var sampleImage 	= tokenizeString("<br/><img class='icon' src='{imgUrl}'/>",config);
	var termsTxt		= "<br/><span class='small'>LTPS/09/04498</span>";
	
	$("img.glow-treasurehunt-icon")
		.css('cursor','pointer')
		.click(function(){
			var idArray = ($.cookie(config.cookieName) || "");
			if(idArray.length) idArray = idArray.split(",");
			else idArray = [];
			
			// already finished?
			if(idArray.length >= config.minCount) {
				document.location = config.formUrl;
				return;
			}
			
			// otherwise init popup content			
			var newContent = "";
			newContent += closeButton;
			// add image
			newContent += sampleImage;
			
			// haven't already clicked it? 
			if(!arrayContains(idArray,pageId)){
				idArray.push(pageId);
				$.cookie(config.cookieName,idArray.join(","));
				var itemLabel = idArray.length==1 ? config.itemLabelSingle : config.itemLabelPlural;
				newContent += tokenizeString( contentString, {COUNT:idArray.length, ITEM:itemLabel});
			}
			// already clicked this one
			else{
				newContent += tokenizeString( contentString2, {COUNT:idArray.length});
			}	
			// add link to form if we're done
			if(idArray.length >= config.minCount) newContent += formLink;
			else newContent += tokenizeString( remainString, {REMAIN:config.minCount-idArray.length});
			
			newContent += termsTxt;
			
			$(jqmPopup).html(newContent);
			$(jqmPopup).jqmAddClose('.close',jqmPopup);		
			$(jqmPopup).jqmShow();
			
			// generate code
			if(idArray.length == config.minCount)
				$.cookie(config.cookieCode, generateCode());
			else
				$.cookie(config.cookieCode, null);
		});

//$.cookie(config.cookieCode,generateCode());
	var code = $.cookie(config.cookieCode) || "";	

	// apply code and extended validation to form if found
	var frm = $("FORM[name=" + config.formName +  "]");
	var fld = $(":input[name=code]", frm);
	if (fld.size()) {
		$(fld).val(code);
		$(fld).rules("add", {
			regex: code=="" ? "NO_CODE_SUPPLIED" : code,
			messages: {
				regex: "You must enter the correct code"
			}
		});
	}
	
	$(frm).submit(function(){
		$.cookie(config.cookieCode,null);
		$.cookie(config.cookieName,null);
	})
};

function generateCode() {
	var r = glow_treasurehunt_config.codePrefix + Math.floor(10000 + (Math.random() * 90000));
	return r;
}

function arrayContains(arr,val){
	for(var i=0;i<arr.length;i++){
		if(arr[i]==val) return true;
	}
	return false;
}

function tokenizeString(tokenStr,tokenObj, ucase){	
	var outputStr = tokenStr;		
	var tokenRx = /{.*?}/g;
	var tokenArray = tokenStr.match(tokenRx);
	if(tokenArray==null) return outputStr;
	while(tokenArray.length){
		var t = tokenArray.pop();
		if(ucase) t = t.toUpperCase();
		var tname = t.replace(/[\{\}]/g,'');				
		outputStr = outputStr.replace(new RegExp(t,"gi"), tokenObj[tname]);
	}
	return outputStr;
};

jQuery.extend({
/**
* Returns get parameters.
*
* If the desired param does not exist, null will be returned
*
* @example value = $.getURLParam("paramName");
*/ 
 getURLParam: function(strParamName){
	  var strReturn = "";
	  var strHref = window.location.href;
	  var bFound=false;
	  
	  var cmpstring = strParamName + "=";
	  var cmplen = cmpstring.length;

	  if ( strHref.indexOf("?") > -1 ){
	    var strQueryString = strHref.substr(strHref.indexOf("?")+1);
	    var aQueryString = strQueryString.split("&");
	    for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
	      if (aQueryString[iParam].substr(0,cmplen)==cmpstring){
	        var aParam = aQueryString[iParam].split("=");
	        strReturn = aParam[1];
	        bFound=true;
	        break;
	      }
	      
	    }
	  }
	  if (bFound==false) return null;
	  return strReturn;
	}
});
