//$Rev: 8506 $

//--------------------------------- CUSTOM GLOBAL SECTION ----------------------------------
var mm_domain            = 'ihostbig.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    = 18; 
var mm_mode              = 0; 
var mm_debug             = 0; 
var mm_js_version        = 2.6;
//--------------------------------- 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();
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(mm_host.indexOf(mm_cookie_domain.toLowerCase() )>=0)	mm_host = mm_cookie_domain;

	if(mm_mode==2) return; // if mm_mode already set we should do nothing

	if(!document.createElement || !document.getElementsByTagName) mm_mode = 2;

	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 (typeof no_maxymiser != 'undefined' && no_maxymiser) mm_mode=2;
	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 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()
{
	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;		

	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 ulr, 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;

		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 (mm_CGcallType || mm_isOpera)
		{
	 	        var script  = document.createElement('script');
		        script.type = 'text/javascript';
		        script.src  = uri;	
		        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+"'></script>");
			}
			catch (err)
			{
	 	        var script  = document.createElement('script');
		        script.type = 'text/javascript';
		        script.src  = uri;	
		        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';
	};
}

mmStartUp();