var junk = ( navigator.userAgent.indexOf('MSIE') != -1 && navigator.userAgent.indexOf('Mac') != -1 );
var gecko = ( navigator.userAgent.indexOf('Gecko') != -1 );
var isIE =  ( navigator.userAgent.indexOf('MSIE') != -1 );
var Safari = ( navigator.userAgent.indexOf('KHTML') != -1);
var sign_in_open = null;
var adDataSettings = new Object ();
var advert_code = new Object();
var eventHolder = new Object;
eventHolder['run'] = null;

/* Aggregator check and block */

function checkReferrer (ref) {
  var isScraper = 0;
  var isJob = 0;
  scraperSites = new Array('oodle.co.uk','oodle.com','icjobs.de','vast.com','careerbuilder.co.uk','careerbuilder.com','clickajob.co.uk','jobsite.co.uk','employon.com','careerjet.co.uk','optioncarriere.com','jobsafari.co.uk','workcircle.com','jopit.com','jobs.myspace.com','indeed.com','indeed.co.uk','trovit.co.uk','trovit.com','jobisjob.co.uk','jobisjob.com'); 

  for (x=0;x<scraperSites.length;x++) {
    if (ref.indexOf(scraperSites[x]) != -1) {
      isScraper ++;
    }
  }
  if (location.pathname.indexOf('/job/') != -1) {
    isJob = 1;
  }
  if (isScraper && isJob) {
    location.replace("http://" + location.hostname + "/help/referrer-help.shtml");
  }
}

checkReferrer(document.referrer);



/* For new ad system */
function phpads_deliverActiveX(content)
{
    document.write(content);
}

function addLoader( func )
{
    
    if ( eventHolder['run'] && eventHolder['run'] != null )
	{
	    var oldRun = eventHolder['run'];
	    eventHolder['run'] = function(e) { oldRun(e); func(e) }
	}
    else
	{
	    eventHolder['run'] = function(e) { func(e) }
	}

}

/* Data Loader Code */

var data_control = new Object;
data_control.queue = new Array;
data_control.check = null;
data_control.loaded = false;
data_control.load_count = 0;
data_control.max_load = 2000;
data_control.check_interval = 5;
data_control.current_load = null;
data_control.loading = false;

var load_fun = null;

function load_external_data( url, target, fun, dom )
{
    if ( ! document.getElementById('dataHolder') ) return;

    if ( ! dom ) { dom  = false }
    
    var dummy = new Object;
    dummy.url = url;
    dummy.target = target;
    dummy.fun = fun;
    dummy.dom = dom;
        
    data_control.queue[data_control.queue.length] =  dummy ;
   
    if ( ! data_control.loading ) load_from_queue();
    
}


function load_from_queue()
{
    if ( data_control.queue.length ==  0 )
	{
	    window.frames['dataFrame'].window.location.replace('about:blank');
	    return;
	}
    data_control.loading = true;
    data_control.loaded = false;
    data_control.load_count = 0;
    data_control.current_load = data_control.queue[data_control.queue.length - 1];
    data_control.queue.length--;

    window.frames['dataFrame'].window.location.replace(data_control.current_load.url);
    
    data_control.check = setTimeout( 'load_check()', 1 );
}

function load_check()
{
    if ( data_control.check ) { clearTimeout( data_control.check ) }
    
    data_control.load_count++;
    
    if ( data_control.loaded ) 
	{
	    if ( data_control.current_load.dom )
		{
		    if (  window.frames['dataFrame'].document )
			{
			    window[data_control.current_load.target] = window.frames['dataFrame'].document.getElementById('DOMFrag').innerHTML;
			}
		    else
			{
			    window[data_control.current_load.target] = null;
			}
		}
	    else
		{
		    window[data_control.current_load.target] = window.frames['dataFrame'].data;
		}
	    
	    load_fun = data_control.current_load.fun;
	    setTimeout( 'load_fun()',1 );

	    //data_control.current_load.fun();
	    data_control.loading = false;
	    
	    load_from_queue();
	}
    else if ( data_control.load_count > data_control.max_load )
	{
	    window[data_control.current_load.target] = null;
	    data_control.current_load.fun();
	    
	    data_control.loading = false;
	    if ( data_control.queue.length > 0 )
		{
		    load_from_queue();
		}
	    else
		{
		    window.frames['dataFrame'].window.location.replace('about:blank'); 
		}
	}
    else
	{
	    data_control.check = setTimeout( 'load_check()', data_control.check_interval );
	}
    
}


/* End Data Loader */

function clean_sign()
{
    if ( read_cookie( 'mys1_eid' ) && document.getElementById('greeting') )
	{
	    var greeter = document.getElementById('greeting');
	    clean(document.getElementById('greeting'));
	    document.getElementById('alertSignUp').style.display = 'none';
	    
	}
}



function Launch(page)
{
    OpenWin = this.open(page, "myCompanyProfile", "width=800,height=450"); 
} 

function MM_openBrWindow(theURL,winName,features)
{
    window.open(theURL,winName,features);
}

function addEvent(oTarget, sType, fpDest) {
    
    sType = 'on'+sType;
    var oOldEvent = oTarget[sType];
    if (typeof oOldEvent != "function") {
	oTarget[sType] = fpDest;
    } else {
	oTarget[sType] = function(e) {
	    oOldEvent(e);
	    fpDest(e);
	}
    }
    
    EventCache.add(oTarget, sType, fpDest);
}

/* Event Cache Code copyright 2005 Mark Wubben

Provides a way for automagically removing events from nodes and thus preventing memory leakage.
See <http://novemberborn.net/javascript/event-cache> for more information.
	
This software is licensed under the CC-GNU LGPL <http://creativecommons.org/licenses/LGPL/2.1/>
*/

if(Array.prototype.push == null){
    Array.prototype.push = function(){
	for(var i = 0; i < arguments.length; i++){
	    this[this.length] = arguments[i];
	};
	return this.length;
    };
};

var EventCache = function(){
    var listEvents = [];
	
    return {
	listEvents : listEvents,
	
	    add : function(node, sEventName, fHandler, bCapture){
	    listEvents.push(arguments);
	},
	
	    flush : function(){
		var i, item;
		for(i = listEvents.length - 1; i >= 0; i = i - 1){
		    item = listEvents[i];
				
		    if(item[0].removeEventListener){
			item[0].removeEventListener(item[1], item[2], item[3]);
		    };
		    
		    /* From this point on we need the event names to be prefixed with 'on" */
		    if(item[1].substring(0, 2) != "on"){
			item[1] = "on" + item[1];
		    };
		    
		    if(item[0].detachEvent){
			item[0].detachEvent(item[1], item[2]);
		    };
		    
		    item[0][item[1]] = null;

		};
		eventHolder.run = null;
	    }
    };
}();

function get_event_target( e )
{
    var targ;
    if (!e) var e = window.event;
    if (e.target) targ = e.target;
    else if (e.srcElement) targ = e.srcElement;
    if (targ.nodeType == 3) // defeat Safari bug
        targ = targ.parentNode;

    return targ;

}

function popper( e ) 
{
    var targ = get_event_target( e );
    
    if ( targ.nodeName == 'IMG' ) { targ = targ.parentNode }
    
    if ( ! targ.href ) { return true }
    
    var width=300;
    var height=300;
    var scroll='yes';
    if ( targ.rel )
	{
	    var size = targ.rel.match(/^(pop.+) (.+$)/); 
	    if ( size )
		{
		    var tmp = size[2].split(/x/);
		    width = tmp[0];
		    height = tmp[1];
		    if ( size[1] == 'popad' ) { scroll = 'no' }
		}
	    
	}

    var left = 800 - width;
    var top = 600 - height;

    window.open(targ.href,'help','width='+width+',height='+height+',left='+left+',top='+top+',screenX='+left+',screenY='+top+',scrollbars='+scroll);
    
    return false;
}

function set_pop(t) { addEvent( t, 'click', popper ) }

function set_poppers()
{
    apply_to_child_class( document, 'popper', set_pop ); 
}

function change_select_visible( visible )
{
    var selects = document.getElementsByTagName( 'SELECT' );
    for ( var i = 0; i < selects.length; i++ ) { selects[i].style.visibility = visible; }
}

function hideSelects()
{
    change_select_visibilty( 'hidden' );
}

function showSelects()
{
    change_select_visibilty( 'visible' );
}

function apply_to_child_class( target, cl, fun )
{
    if ( target == null ) { return }

    var reg = new RegExp(cl); 

    if ( target.className && target.className.match(reg) ) { fun( target ) }
  
    for ( var i = 0; i<target.childNodes.length; i++ )
	{
	    apply_to_child_class( target.childNodes[i], cl, fun );
	}

}

function formSubmit(e)
{
    var targ = get_event_target( e );

    while( targ.nodeName != 'FORM' && targ.nodeName != 'BODY' )
	{
	    targ = targ.parentNode;
	}

    if ( targ.nodeName == 'FORM' )
	{
	    targ.submit();
	}
    return true;
}

function clean( target )
{
    if ( junk && target.options != null ) 
	{
	    for ( var i = target.options.length - 1; i >= 0; i = i -1 )
		{
		    target.options[i] = null;
		}
	}
    else 
	{ 
	    target.innerHTML = '';
	}

}

function showHideExplorer()
{

    if ( document.getElementById('skybox') != null ) 
	{
	    if (navigator.userAgent.toLowerCase().indexOf('safari') != -1 ) { document.getElementById('skybox').style.display = "none"; return; }
        
	    if(document.body) var iWidth = document.body.clientWidth;
	    
	    if(iWidth > 975)
		{
		    document.getElementById('skybox').style.display = "";
		}
	    else
		{
		    document.getElementById('skybox').style.display = "none";
		}
	}
    
}

function write_copy_year()
{
    if ( document.getElementById('copyYear') == null ) return;
    var footerD = new Date ();
    document.getElementById('copyYear').appendChild(document.createTextNode(footerD.getFullYear()));

} 

function read_query_type( name, query, delim )
{

    var desp = new RegExp( delim );
    var list = query.split(desp);


    var res = '';
    var test = new RegExp('^\\s*'+name+'\\s*$');

    for ( var x = 0; x< list.length;  x++ )
	{

	    var sp = list[x].split("=");
	    if ( sp[0].match(test) )
		{

		    res = unescape(sp[1]);
		    break;
		}
	}

    return res;

}

function read_cookie( name )
{

    return read_query_type( name, document.cookie, ';' );

}

function read_search_cookie()
{
    return read_cookie( 'search' );
}

function hide_target( t ) { t.style.visibility = 'hidden' }
function focus_target( t ) { t.focus() }
function show_target( t ) { t.style.visibility = 'visible' }

function create_sign_in_form()
{
    var target = document.getElementById( 'signInHolder' );
    if ( ! target ) { return }

    if ( junk || Safari ) { return }

    var popup = document.createElement('DIV');
    target.appendChild( popup );
    popup.id = 'signInPopUp';

    var form = document.createElement('FORM');
    popup.appendChild(form);

    form.action = '/myaccount/sign-in.cgi';
    form.method = 'post';
  
    form.appendChild( document.createElement('DIV') ).appendChild( document.createTextNode('email address') );

    var inp1 = document.createElement('INPUT');
    inp1.name = 'username';
    inp1.type = 'text';
    inp1.className = 'focus';
    form.appendChild( document.createElement('DIV') ).appendChild( inp1 );
 
    form.appendChild( document.createElement('DIV') ).appendChild( document.createTextNode('password') );
    var inp2 = document.createElement('INPUT'); 
    inp2.name = 'password';
    inp2.type = 'password';
    form.appendChild( document.createElement('DIV') ).appendChild( inp2 );

    var inp3 = document.createElement('INPUT');
    inp3.name = 'return_to';
    inp3.type = 'hidden';

    var test = document.getElementById('signInClick').search;
    test = test.slice(1,test.length);

    var rto = read_query_type( 'return_to', test, ';' );
    inp3.value = rto;
    form.appendChild( inp3 );

    var di = document.createElement('DIV');
    form.appendChild( di );
    var inp4 = document.createElement('INPUT');

    inp4.name = 'rememberme';
    inp4.type = 'checkbox';
    inp4.value = 'yes';
    inp4.className = 'left';
    di.appendChild( inp4 );

    di.appendChild( document.createTextNode('remember me on this PC') );
    di.appendChild( document.createElement( 'BR' ) );
    var st = document.createElement( 'SPAN' );
    di.appendChild( st );
    st.className = 'note';
    st.appendChild( document.createTextNode("not for shared PC's - ") );

    var link = document.createElement( 'A' );
    st.appendChild( link );
    link.href = '/myaccount/tellmemore.html';
    link.appendChild( document.createTextNode("why?") );
    addEvent( link, 'click', popper );

    var di = document.createElement('DIV');
    form.appendChild( di );
    var inp4 = document.createElement('INPUT');

    inp4.name = 'submit';
    inp4.type = 'submit';
    inp4.value = 'sign in';
    inp4.className = 'left';
    di.appendChild( inp4 );

    var st = document.createElement( 'SPAN' );
    di.appendChild( st );
    st.className = 'right note';
    var link = document.createElement( 'A' );
    st.appendChild( link );
    link.href = '/myaccount/forgotten.shtml';
    link.appendChild( document.createTextNode("forgotten password") );

    addEvent( popup, 'click', stop_prop );  
    addEvent( document.getElementById('signInClick'), 'click', show_sign_in_form );
    addEvent( document, 'click', hide_sign_in_form ); 

}

function findPosX(obj)
{
    var curleft = 0;
    if (obj.offsetParent)
	{
	    while (obj.offsetParent)
		{
		    curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
    else if (obj.x)
	curleft += obj.x;
    return curleft;
}

function findPosY(obj)
{
    var curtop = 0;
    if (obj.offsetParent)
	{
	    while (obj.offsetParent)
		{
		    curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
    else if (obj.y)
	curtop += obj.y;
    return curtop;
}

function show_sign_in_form(e)
{

    if ( sign_in_open == false )
	{
	    stop_prop( e );
	    apply_to_child_class( document, 'signHide', hide_target );
	    show_target( document.getElementById( 'signInPopUp' ) );
	    apply_to_child_class( document.getElementById( 'signInPopUp' ), 'focus', focus_target );
	    sign_in_open = true;
	}

    return false;

}

function stop_prop( e )
{
    if (!e) var e = window.event;
    e.cancelBubble = true;
    if (e.stopPropagation) e.stopPropagation();
}

function stop(){return false}


function commas( str ) 
{
    var new_str = str.replace(/(\d)(\d\d\d)((,\d\d\d)*)$/g,"$1,$2$3");
    if ( new_str == str ) { return new_str }
    return commas( new_str );
}


function hide_sign_in_form()
{
    if ( sign_in_open == true )
	{
	    hide_target( document.getElementById( 'signInPopUp' ) );
	    apply_to_child_class( document, 'signHide', show_target  );
	    sign_in_open = false;
	}

}




function writead(adFormat) {

    var d = document;
    var pageads = new Array ();
    var thisConfig  = null;
    var randomad = 0;
    var thisURL = "";

    var adId = 'ad' + adFormat;

    if ( ! adDataSettings[adId] ) { return }

    thisConfig = adDataSettings[adId];
  
    if ( !thisConfig ) { return }

    if ( ! thisConfig.popunder && ! document.getElementById(adId) ) { return }

    thisURL = ad_page_url();
    if (! thisConfig[thisURL]) { thisURL = 'run_of_site' }
    
    pageads = thisConfig[thisURL];
   
    if (pageads && pageads != null) {

	var randomad = Math.round((pageads.length - 1) * Math.random());
     
	if ( thisConfig.popunder )
	    {
		if ( read_cookie('popunder'+thisURL) ) { return }
		
		var width=200;
		var height=200;
		
		if ( thisConfig.popSize[thisURL] )
		    {
			var size = thisConfig.popSize[thsiURL];
			if ( size )
			    {
				var tmp = size.split(/x/);
				width = tmp[0];
				height = tmp[1];
			    }
			
		    }
		
		var left = 800 - width;
		var top = 600 - height;
		var popURL = '/banners/' + thisConfig.dir + '/' + pageads[randomad] + '/';
		
		var thePopUnder = window.open( popURL,'popunder','width='+width+',height='+height+',left='+left+',top='+top+',screenX='+left+',screenY='+top+',scrollbars=no');

		if ( thePopUnder )
		    {
			thePopUnder.blur();
			window.focus();
			document.cookie = 'popunder'+thisURL+'=set;path=/;';
		    }
	    }
	else
	    {
		
		try {
		    
		    load_external_data( '/banners/' + thisConfig.dir + '/' + pageads[randomad] + '/',
					'advert_code.'+adId, display_ad(adId), true ); 
		    
		    //d.getElementById(adId).innerHTML = pageads[randomad].code;
		    //apply_to_child_class(  d.getElementById(adId), 'popper', set_pop );
		}
		catch(e) { return }
	    } 
    }
}

function ad_page_url()
{
    var thisURL = '';
    if (document.location.pathname == "/") {
        return "homepage";
    } else if ( document.location.pathname.match(/\/search\//) || document.location.pathname.match(/\/job\//) ) {
        thisURL = unescape(read_search_cookie());
    } else if ( document.location.pathname.match(/\/recruiters\//) ) {
	return "recruiters";
    } else if ( document.location.pathname.match(/\/jobsmanager\//) || document.location.pathname.match(/\/cvdb\//) ||
		document.location.pathname.match(/\/applicantmanager\//)) {
	return "jobsmanager";
    }

    if (thisURL && thisURL.indexOf('industrySector') == -1 )
	thisURL = '';
    if (thisURL && thisURL != "")
        thisURL = thisURL.replace(/^.*industrySector=([^&;]+).*$/, "$1");
    if (thisURL && thisURL != "")
        thisURL = thisURL.replace(/[^a-z0-9]+/ig, "_");
    if (thisURL && thisURL != "")
        thisURL = thisURL.toLowerCase();

    if ( (!thisURL) || (thisURL == "") ) { thisURL = "run_of_site" }

    return thisURL;

}

function display_ad(adId)
{

    return function() {

	if ( ! window['advert_code.'+adId] ) { return }

	document.getElementById(adId).innerHTML = window['advert_code.'+adId];
	apply_to_child_class(  document.getElementById(adId), 'popper', set_pop );
	window['advert_code.'+adId] = null;
    };
}

function add_logout()
{

    if ( read_cookie( 'mys1_eid' ) )
	{  

	    var nav = document.getElementById('nav');

	    if ( nav == null || nav.className == 'myaccount' ) { return }

	    nav = document.getElementById('subNav');

	    if ( nav == null ) { return }

	    nav.appendChild( document.createTextNode( ' | ' ) );
	    var link = document.createElement( 'A' );

	    link.href = '/myaccount/log-out.cgi';
	    nav.appendChild( link );
	    link.appendChild( document.createTextNode( 'sign out' ) );
	}
}

function set_search_test() {
    try 
	{
	    update_cookie();
	    load_data(); 
	}
    catch(e) { true }

    try 
	{
	    index_page_setup();
	}
    catch(e) { true }
}

function load_user_test()
{
    try 
	{
	    load_user_data();
	}
    catch(e) { true }
}


function writeAds()
{
    if ( ! window.ad_names ) { return }
    for ( var i = 0; i < ad_names.length; i++ ) { writead( ad_names[i] ); }
}



function fastAds()
{
	var ad_types = new Array ( 'banner','mpu','skyscraper','homepages1learning' );
	for ( var i = 0; i < ad_types.length; i++ )
	{
		if ( document.getElementById(ad_types[i]+'_target') && document.getElementById(ad_types[i]+'_loader') )
		{
			document.getElementById(ad_types[i]+'_target').appendChild( document.getElementById(ad_types[i]+'_loader') );
		}
	}
}




function closeOverlay() 
{
     document.getElementById('overWrap').style.display = 'none';
     document.getElementById('ourOverLay').style.display = 'none';
}

function captureOverlay()
{
     // Steal the overLay from phpAds new
     var divList = document.getElementsByTagName( 'DIV' );
     for ( var i = 0; i < divList.length; i++ )
     {
        var matches = divList[i].id.match( /^phpads_(.+)$/ );
        if ( matches )
        {
	    divList[i].id="ourOverLay";
	    divList[i].style.visibility = 'visible'; 	  
            divList[i].style.top = '0px';	 
            divList[i].style.left = '0px';	              
            document.getElementById('overWrap').style.display = 'block';
      	    document.cookie = 'overlayDisplayed=set;path=/;';
	}
    }
}

function trackParams()
{
    var domain = document.location.host;
    var url = document.location.pathname;
    var query_string = encodeURIComponent(document.location.search);
    var mys1id = null;
    var mycookie = document.cookie;
    var pos = mycookie.indexOf("mys1_eid=");
    if(pos != -1)
	{
	    var start = pos + 9;
	    var end = mycookie.indexOf(";", start);
	    if(end == -1) end = mycookie.length;
	    mys1id = unescape(mycookie.substring(start,end));
	}
    var params = "dom=" + domain + "&qs=" + query_string + "&url=" + url;
    if(mys1id)
	{
	    params += "&mys1_eid=" + mys1id;
	}
    return params;
}

function writeTracker()
{
    var params = trackParams();
    var i=new Image(1,1);
    i.src = "http://crm.s1now.com/tracker.gif?"+params;
    i.onload = function() { return ;}
}

function showAlsoApplied() {
  document.getElementById("jobNav2").style.display = "none";
  document.getElementById("alsoApplied").style.display = "block";
}

addLoader( set_search_test );
addLoader( writeAds );
addLoader( load_user_test );
addLoader( add_logout );
addLoader( showHideExplorer );
addLoader( write_copy_year );
addLoader( set_poppers );
addLoader( writeTracker );




//addEvent( window, 'load', set_search_test );
//addEvent( window, 'load', writeAds );
//addEvent( window, 'load', load_user_test );
//addEvent( window, 'load', add_logout );
//addEvent( window, 'load', showHideExplorer );
//addEvent( window, 'load', write_copy_year );
//addEvent( window, 'load', set_poppers );

addEvent( window, 'resize', showHideExplorer );
addEvent( window, 'unload', EventCache.flush );


