//$Rev: 11820 $

//--------------------------------- CUSTOM GLOBAL SECTION ----------------------------------
var mm_domain			= 'just-rewards.com';
// if you have cross-domain test, and your website uses domains such as mydomain.com and 
// privacy.mydomain.com, just set up mm_cookie_domain to '.mydomain.com' value
var mm_cookie_domain	= mm_domain;
var mm_server           = 'cg1.maxymiser.com/CG2/';
var mm_enable_time_track= 1;
var mm_traffic_level	= 1;
var mm_guard_interval   = 12; 
var mm_mode				= 0;
var mm_debug			= 0;
var mm_js_version       = 2.7;
//--------------------------------- END GLOBAL SECTION -------------------------------

//--------------- DO NOT EDIT BELOW THIS LINE------------------------------------------
var mm_execution_start	= (new Date()).getTime();
var mm_query_finish		= mm_execution_start;
var mm_response_finish	= mm_execution_start;
var mm_execution_finish	= mm_execution_start;
var mm_variables		= new Array();
var mm_boxes			= new Array();
var mm_attributes		= new Array();
//-> pr
var mm_purchases		= new Array();
var mm_ratings			= new Array();
var mm_pr_filters		= new Array();
var mm_pr_orders		= new Array();
//-> pr end
var mm_hidden			= false;
var mm_cookie_OK		= 0;
var mm_pd				= '';
var mm_id				= '';
var mm_rnd				= Math.random?Math.random():0.5;
var mm_host				= self.location.hostname.toLowerCase();
var mm_ref				= self.document.referrer;
var mm_page				= self.location.href;
var mm_proto			= self.location.protocol=="file:"?"http:":self.location.protocol;
var mm_screen_width		= self.window.screen.width;
var mm_screen_height	= self.window.screen.height;
var mm_color_depth		= self.window.screen.colorDepth;
var mm_style;
var mm_guard;
var mm_is_timeout		= 0;
var mm_url;
var mm_CGcallType		= 0;

//--------------------------------- CODE SECTION --------------------------------------
// Opera has very specific behavior while dynamic script adding
var mm_isOpera = navigator.userAgent.toLowerCase().indexOf("opera")!=-1;
var mm_isIE = ((navigator.userAgent.toLowerCase().indexOf("msie")!=-1)&&(navigator.userAgent.toLowerCase().indexOf("opera")==-1));

function mmTrim(str)
{
	return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
}

function mmStartUp()
{
	var is_redirect = 0;
	window.mm_error = 'ok.\n';
	mm_url = self.location.search.toLowerCase().substring(1);
	mm_domain = mm_toStr(mm_domain, mm_getValueByKey(mm_url, 'mm_domain','=','&'));
	mm_server = mm_toStr(mm_server, mm_getValueByKey(mm_url, 'mm_server','=','&'));
	mm_traffic_level = mm_toNum(mm_traffic_level, mm_getValueByKey(mm_url, 'mm_traffic_level','=','&'));
	mm_guard_interval = mm_toNum(mm_guard_interval, mm_getValueByKey(mm_url, 'mm_guard_interval','=','&'));
	mm_mode = mm_toNum(mm_mode, mm_getValueByKey(mm_url, 'mm_mode','=','&'));
	mm_debug = mm_toNum(mm_debug, mm_getValueByKey(mm_url, 'mm_debug','=','&'));

	if (!document.createElement || !document.getElementsByTagName) mm_mode = 2;
	if (typeof no_maxymiser != 'undefined' && no_maxymiser) mm_mode = 2;
	if (mm_mode==2) return; // if mm_mode already set to 2 then we should do nothing

	if (mm_host.indexOf(mm_cookie_domain.toLowerCase() )>=0) mm_host = mm_cookie_domain;
	mm_host = mm_host.replace('www.', '');
	mm_pd = mmGetCookie('mmpd');
	mm_id = mmGetCookie('mmid');
	if (mm_pd == '' && (mmGetCookie('mmtl')>0 || mm_traffic_level < mm_rnd) ) {
		mmSetCookie ('mmtl',mm_traffic_level, 5);
		mm_mode = 2;
	}
	if (typeof mm_redirect == 'string') {
		var mbs = mm_redirect.split(',');
		for (var i=0; i<mbs.length; i++) mmAddMaxyRedirect(mmTrim(mbs[i]));
		is_redirect = 1;
	}

	mmSetCookie ('mmtst', (''+mm_rnd).substring(0,5), 0);
	mm_cookie_OK = (mmGetCookie('mmtst')==(''+mm_rnd).substring(0,5))?1:0;

	if (mm_pd=='' && mm_mode==0 && !mm_cookie_OK) mm_mode=1;

	if (is_redirect)
	{
		if (mm_isIE)
		{
			var hlen = mmGetCookie('hist_length')*1;

			mmSetCookie('hist_length','',0);

			if(window.history.length>2 && (hlen==window.history.length || hlen+1==window.history.length))
				history.back();
			else
				mmGo();
		}
		else
			mmGo();
	}
	else // There is no content to hide on the page with Redirect solution
	{
		if (mm_mode==0) mm_hidden = mmHideContent(true);
		if (mm_hidden)
			mm_guard = window.setTimeout(mm_guard_func, mm_guard_interval*1000);
		else mm_mode = 1;
	}
}

function mm_toNum(default_value, str)
{
	return (str.length && !isNaN(str))? Number(str): default_value;
}

function mm_toStr(default_value, str)
{
	return str.length? str : default_value;
}

function mm_getValueByKey(str, paramName, field_delim, rec_delim)
{
	var recs = str.split(rec_delim);
	for (var i=0; i<recs.length; i++) {
		var flds = recs[i].split(field_delim);
		if (flds[0].replace(' ', '').toLowerCase()==paramName.replace(' ', '').toLowerCase())
			return (flds.length>1)?flds[1]:'';
	};
	return '';
}

function mm_guard_func()
{
	if (mm_mode==2) return;
	if (mm_hidden) mm_hidden = !mmHideContent(false);
	mm_guard = 0; mm_is_timeout = 1; mm_mode = 1;
}

function mmCreateStyle(style)
{
	if (!style && document.styleSheets) {
		style = document.createElement('style');
        style.setAttribute('type','text/css');
		document.getElementsByTagName('head')[0].appendChild(style);
		style = document.styleSheets[document.styleSheets.length - 1];
	}
	return style;
}

function mmAttachStyle(rule, style, index)
{
	try {
		if (typeof rule == 'undefined' || rule == null) return false;
		style = mmCreateStyle(style);
		if (typeof style == 'undefined' || style == null) return false;
		if (typeof index == 'undefined') index = style.cssRules ? style.cssRules.length : style.rules.length;
		var mtch; rule = rule.replace(/\/\*(.|\s)*\*\//, ''); var try_num=0;
		while (try_num<100) {
			mtch = /([^{]+)\{([^}]*)\}\s*/.exec(rule);
			if (mtch != null) {
				try {
					if (style.addRule) style.addRule(mtch[1], mtch[2], index);
					else if (style.insertRule) style.insertRule(mtch[0], index);
					rule = rule.replace(mtch[0], ' ');
					index++;
				} catch (e) {};
				try_num++;
			} else break;
		}
	}
 	catch(err) {
		if (mm_debug) window.mm_error += 'Cannot attach style: ' + err.message + '.\n';
		return false;
	}
	return true;
}

function mmHideContent(hide)
{
    if (typeof mm_redirect == 'string') return false;
	var hidden_style = '.Maxybox{visibility:hidden;}';
	var visible_style = '.Maxybox{visibility:visible;}';
	try {
		if (hide) {
			var body = document.getElementsByTagName('body');
			if (body.length<1 && !mm_isOpera) {
				try	{
					document.write('<style type=\"text/css\">'+hidden_style+'</style>');
					return true;
				}
				catch (err) {
					return mmAttachStyle(hidden_style, mm_style, 0);
				}
			} else return mmAttachStyle(hidden_style, mm_style, 0);
		} else {
			var mboxes = mmGetMaxyboxes();
			for (var i=0; i<mboxes.length; i++) mboxes[i].style.visibility = 'visible';
			mmAttachStyle(visible_style);
			return true;
		}
	} catch (err) {
		if (mm_debug) window.mm_error += 'Cannot hide/show content: ' + err.message + '.\n';
		return false;
	}
}

function mmSetCookie(name, value, exp_days)
{
	var exp = new Date();
	exp.setTime((new Date()).getTime() + exp_days*1000*24*60*60);
	document.cookie  = escape(name) + "=" + escape(value)+ (mm_host!="localhost"?"; domain=" + mm_host:"") + "; path=/" + (exp_days>0?("; expires=" + exp.toGMTString()):'');
}

function mmGetCookie(name)
{
	return mm_getValueByKey(document.cookie, name.toLowerCase(), '=', ';');
}

function mmSetAction(varname, value, attribute)
{
	try {
		if (typeof value == "undefined") value = "";
		if (typeof attribute == "undefined") attribute = "";
		mm_variables.push(varname + "=" + value +","+attribute);
	} catch (err) {
		if (mm_debug) window.mm_error += 'Cannot set action: ' + err.message + '.\n';
		mm_mode = 1;
	}
}

function mmSetUserAttribute(attrname, value)
{
	try {
	    if( typeof value == "undefined") value = "";
    	mm_attributes.push(attrname + "=" + value);
	} catch(err) {
		if (mm_debug) window.mm_error += 'Cannot set attribute: ' + err.message + '.\n';
		mm_mode = 1;
	}
}

function mmSetPurchase(orderid, productid, count, amount, currency)
{
	try {
	    var arr=[];
	    for(var i=0; i<arguments.length; i++)
	        if (typeof arguments[i]!='undefined') arr[i]=escape(arguments[i]);
		mm_purchases.push(arr.join(','));
	} catch(err) {
		if (mm_debug) window.mm_error += 'Cannot track purchase: ' + err.message + '.\n';
		mm_mode = 1;
	}
}

function mmSetRating(prod_cat, type_id, action, rating)
{
	var str="";
	try {
	    var arr=[];
   	    for(var i=0; i<arguments.length; i++)
	        if (typeof arguments[i]!='undefined') arr[i]=escape(arguments[i]);
		mm_ratings.push(arr.join(','));
	} catch(err) {
		if (mm_debug) window.mm_error += 'Cannot set rating: ' + err.message + '.\n';
		mm_mode = 1;
	}
}

function mmSetRule(cat1, cat2, is_inclusion)
{
	try {
	    if (typeof is_inclusion == 'undefined') is_inclusion = 1;
	    if (typeof cat1 == 'undefined') cat1 = '';
	    if (typeof cat2 == 'undefined') cat2 = '';
	    mm_pr_filters.push(escape(cat1) + ',' + escape(cat2) + ',' + (is_inclusion?'1':'0'));
	} catch(err) {
		if (mm_debug) window.mm_error += 'Cannot set filter: ' + err.message + '.\n';
		mm_mode = 1;
	}
}

function mmSetOrder(order_id, order_total, order_shipping, currency)
{
	try {
	    var arr=[];
	    for(var i=0; i<arguments.length; i++)
	        if (typeof arguments[i]!='undefined') arr[i]=escape(arguments[i]);
		mm_pr_orders.push(arr.join(','));
	} catch(err) {
		if (mm_debug) window.mm_error += 'Cannot set order: ' + err.message + '.\n';
		mm_mode = 1;
	}
}

function mmGetMaxyboxes()
{
	try {
		var all_div_boxes = document.getElementsByTagName('div');
		var all_div_boxes_len = all_div_boxes.length;
		var result = new Array();
		for (var i=0; i<all_div_boxes_len; i++)
			if (all_div_boxes[i].id.length && mmIsMaxybox(all_div_boxes[i]))
				result.push( all_div_boxes[i] );
		return result;
	} catch (err) {
		if (mm_debug) window.mm_error += 'Cannot find maxyboxes: ' + err.message + '.\n';
		mm_mode = 1;
		return new Array();
	}
}

function mmVerifyMaxyboxes()
{
	if (mm_mode == 2) return; // if mm_mode already set to 2 then we should do nothing
    if (mm_hidden && mm_mode>0) {mm_hidden = mmHideContent(false); return; }
    if (mm_boxes.length ==0) mm_boxes = mmGetMaxyboxes();
}

function mmGetMaxyBoxByID(id)
{
	if( !mm_hidden )  return;
	try {
		var iid = id.toLowerCase();
		for(var i=0; i<mm_boxes.length; i++) {
			var mb = mm_boxes[i];
			if( mmIsMaxybox(mb) && mb.id.toLowerCase()==iid) return mb;
		}
	} catch (err) {
		if (mm_mode) window.mm_error += 'Cannot find a maxybox:' + err.message + '.\n';
	}
}

function mmIsMaxybox(element)
{
    var classes = element.className.toLowerCase().split(' ');
    for (var i=0; i<classes.length; i++) if (classes[i]=='maxybox') return true;
	return false;
}

function mmAddMaxyRedirect(maxyname)
{
	var mb = new Object();
	mb.id = maxyname;
	mb.className = 'Maxybox';
	mm_boxes.push(mb);
}

//-------------------------------- Query to maxymiser ----------------------------
function mmGo(is_tracking_pixel)
{
	if (mm_debug && !mm_hidden) window.mm_error += 'Cannot hide the default content.\n';
	if (mm_mode > 0) {
		if (mm_guard) clearTimeout(mm_guard);
		if (mm_hidden) mm_hidden = !mmHideContent(false);
		if (mm_debug) window.mm_error += 'mm_mode=1 => default content will be shown.\n';
	}
	if (mm_mode > 1) return; //if mm_mode already set to 2 then we should do nothing

	try {
		var uri = mm_proto+"//"+mm_server + "?";

		var mm_cv = '';
		for (var j=0; j<mm_boxes.length; j++) {
			var mbox_debug_value = mm_getValueByKey(mm_url, mm_boxes[j].id,'=','&');
			if (mbox_debug_value.length==0) mm_cv += mm_boxes[j].id + ';';
			else mm_cv += mm_boxes[j].id + '=' + mbox_debug_value + ';';
		}
		uri += mm_cv.length?'cv='+escape(mm_cv)+'&':'';

		// cutting url, referrer
		if (mm_ref.length > 768) mm_ref = mmref.substring(0, 768);
		if (mm_page.length > 768) mm_page = mm_page.substring(0, 768);

		var mm_fv = '';
		mm_fv += 'dbg=' + mm_debug + ';';
		mm_fv += 'dmn=' + mm_domain + ';';
		mm_fv += 'cok=' + mm_cookie_OK + ';';
		mm_fv += 'ref=' + escape(mm_ref) + ';';
		mm_fv += 'url=' + escape(mm_page) + ';';
		mm_fv += 'scrw=' + mm_screen_width + ';';
		mm_fv += 'scrh=' + mm_screen_height + ';';
		mm_fv += 'clrd=' + mm_color_depth + ';';
		uri   += 'fv=' + escape(mm_fv);

		var mm_uv = '';
		for (var i = 0; i < mm_variables.length; i++){ mm_uv += mm_variables[i] + ";"; }
		uri += mm_uv.length?'&uv='+escape(mm_uv):'';

		var mm_uat = '';
		for (var i = 0; i < mm_attributes.length; i++) { mm_uat += mm_attributes[i] + ";"; }
		uri += mm_uat.length?'&uat='+escape(mm_uat):'';

		mm_pd = mmGetCookie('mmpd');
		mm_id = mmGetCookie('mmid');
		uri += mm_pd.length?'&pd='+escape(mm_pd):'';
		uri += mm_id.length?'&id='+escape(mm_id):'';
		uri += '&jsver=' + escape(mm_js_version);
		uri += '&gm=' + mm_mode;
		uri += '&tm=' + mm_is_timeout;
		
        // Product recomendation code
		var mm_rat = '';
		for (var i=0; i<mm_ratings.length; i++)  { mm_rat += mm_ratings[i] + ';'; }
		uri += '&rat=' + escape(mm_rat);
		mm_ratings = new Array();

		var mm_pu = '';
		for (var i=0; i<mm_purchases.length; i++) { mm_pu += mm_purchases[i] + ';'; }
		uri += '&pu=' + escape(mm_pu);
		mm_purchases = new Array();

		var mm_rul = '';
		for (var i=0; i<mm_pr_filters.length; i++) { mm_rul += mm_pr_filters[i] + ';' }
		uri += '&rul=' + escape(mm_rul);

		var mm_ord = '';
		for (var i=0; i<mm_pr_orders.length; i++) { mm_ord += mm_pr_orders[i] + ';' }
		uri += '&ord=' + escape(mm_ord);
		mm_pr_orders = new Array();

		var mm_rh = mmGetCookie('mmrh');
		uri += mm_rh.length?'&rh='+escape(mm_rh):'';
		var mm_rch = mmGetCookie('mmrch');
		uri += mm_rch.length?'&rch='+escape(mm_rch):'';
		// pr code end

		if(mm_hidden){ 
			if(mm_guard) clearTimeout(mm_guard);
			mm_guard = window.setTimeout(mm_guard_func, mm_guard_interval*1000);
		};

		mm_execution_finish = (new Date()).getTime();
		if(mm_variables) mm_variables.length = 0;

		if (is_tracking_pixel) {
			uri += '&tp=1';
			if (mm_CGcallType) {
				document.write('<img src="' + uri + '" />');
			} else {
				var image  = document.createElement('img');
				image.type = 'image/gif';
				image.src  = uri;	
				image.width = 1;
				image.height = 1;
				document.getElementsByTagName('head')[0].appendChild(image); //request to MM
			}		
		} else {
			
			var enc = 'utf-8';

		if (mm_CGcallType || mm_isOpera)
		{
			var script  = document.createElement('script');
			script.type = 'text/javascript';
			script.src  = uri;
			script.charset = enc;
			document.getElementsByTagName('head')[0].appendChild(script); //request to MM
		}
		else
		{
			mm_CGcallType = 1;
			try // it will cause exception in FF when document type is xml or xhtml
			{
					document.write("<script type='text/javascript' src='"+uri+"' charset='"+enc+"'></script>");
			}
			catch (err)
			{
				var script  = document.createElement('script');
				script.type = 'text/javascript';
				script.src  = uri;
				script.charset = enc;
				document.getElementsByTagName('head')[0].appendChild(script); //request to MM
			}
		}
	}
	}
	catch (err) {
		if (mm_guard) clearTimeout(mm_guard);
		if (mm_hidden) mm_hidden = !mmHideContent(false);
		if (mm_debug) window.mm_error += 'Cannot execute mmGo: ' + err.message + '.\n';
	};
}

if ((navigator.userAgent).toLowerCase().indexOf("safari")!=-1 && (navigator.userAgent).toLowerCase().indexOf("3.0")!=-1) {mm_mode = 2;}
mmStartUp();