/*******************************************************************************
*  Global variables
*******************************************************************************/

var body_el, head_el;
var navHoverInterval 	= false;
var navHoverTimeout 	= 400;
var siteSelectorLoaded 	= false, referOverlayLoaded = false;
var siteSelectorOpen 	= false, referOverlayOpen = false;

var as_username 		= "";
var as_email 			= "";
var as_telephone 		= "";
var as_mobile 			= "";


//  /dev/null console
if ( typeof console != 'object' ) {
	console = {
		'log': function () {
			return;
		}
	};
}


/*******************************************************************************
*  Functions
*******************************************************************************/

function repositionOverlay() {

	var outerWidth = $("#select_location_box").outerWidth();
	var innerWidth = $("#select_location_box form").outerWidth();
	var outerHeight = $("#select_location_box").outerHeight();
	var innerHeight = $("#select_location_box form").outerHeight();
	var verticalMiddle = (outerHeight/2) - (innerHeight/2);
	var horizontalMiddle = (outerWidth/2) - (innerWidth/2);

	$('#select_location_box form').removeAttr('style');
	$("#select_location_box form.verticalMiddle").css('top', verticalMiddle+'px');
	$("#select_location_box form.horizontalMiddle").css('left', horizontalMiddle+'px');
}


function siteOverlayOpen(data) {
	siteSelectorLoaded = true;
	//The site selector overlay has preference over everything
	if(data !== false) {
		siteSelectorOpen = true;
		$(data).appendTo('body');
		$('#select_location_box').overlay({
			top: 50,
			mask: {
				color: '#000',
				loadSpeed: 200,
				opacity: 0.92
			},
			closeOnClick: true,
			load: true,
			onLoad: repositionOverlay
		});
	}
	//If we aren't to display the site selector, lets see if the refer a friend overlay would like to open
	else if(referOverlayLoaded && referOverlayOpen) {
		referOverlayLoad();
	}
}


function referOverlayLoad() {
	ReferOverlay.display();
	ReferOverlay.load('intro');
	ReferOverlay.setDisplayed();
}


function runOverlay(decision) {
	referOverlayLoaded = true;
	if (typeof ReferOverlay != 'undefined' && !ReferOverlay.hasDisplayed()) {
		referOverlayOpen = true;
		//Check to see if the site selector overlay has had a chance to open and if it has but not opened, display the refer a friend one
		if(siteSelectorLoaded && !siteSelectorOpen) {
			referOverlayLoad();
		}
	}
}


function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}


function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}


function MM_findObj(n, d) { //v4.0
	var p,i,x;
  if(!d) d=document;
  if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}


function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
  if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


function MM_openBrWindow(theURL,winName,features) { //v2.0
  TheNewWin = window.open(theURL,winName,features);
  setTimeout('TheNewWin.focus();',250);
}


/**
 * required to persist sessions from one UA to another where using js/swf bridge
 * @return char(32) sessionId
 */
function getSessionId() {		//  Sitewide
	var c = document.cookie.split(/[; ]+/);
	for(var i in c) {
		if (String(c[i]).substring(0,String(c[i]).indexOf('='))=="session_id") {
			return String(c[i]).split("=")[1];
		}
	}
}


/**
 * Convert a string to a number
 * Can take a whole string and parse out a number from it.
 * It'll also handle Euro number formatting
 * @param str
 * @returns float
 */
function convertTextToDecimal(str) {		//  Sitewide
	//Remove everything but a string of numbers
	str = str.match(/([0-9.,]+)/, '')[0];

	var pos_comma = str.indexOf(',');
	var pos_period = str.indexOf('.');
	var has_comma = pos_comma != -1;
	var has_period = pos_period != -1;

	//If it's a Euro thousand decimal format 12.345,67
	if(has_comma && has_period && pos_period < pos_comma) {
		str = str.replace(/\./g, '');
		str = str.replace(/,/g, '.');
	}
	//If it's a GB thousand decimal format 12,345.67
	else if(has_comma && has_period && pos_comma < pos_period) {
		str = str.replace(/,/g, '');
	}
	//If it's a Euro decimal format 12,34
	else if(has_comma && !has_period) {
		str = str.replace(/,/g, '.');
	}

	//Final check on the string
	str = str.replace(/[^0-9.]/g, '');
	str = parseFloat(str);

	return str;
}



/*******************************************************************************
*  Document ready
*******************************************************************************/

if ( typeof jQuery == 'function' ) {

	//  Do this in this file only.  Some areas still have Prototype floating around.
	if ( typeof Prototype == 'object' ) {
		console.log( 'Running jQuery in noConflict mode.' );
		$j = jQuery.noConflict();
	} else {
		//  Direct to jQuery for legacy reasons
		$j = jQuery;
	}

}

