//-----------
// CONSTANTS
//-----------
var cartadding			= false;
var menuinitiated		= false;
var captchaform			= false;
var captchaelement		= false;
var emsmainimg			= false;
var	emsmainimgdet		= false;
var	emsmainimgw			= 0;
var	emsmainimgh			= 0;
var	emsimgpopw			= 0;
var	emsimgpoph			= 0;
var pagewidth			= 800;
var pageheight			= 600;
var dogoogleecommerce	= false;
var emsloaded			= false;

//--------------------
// OPEN BRANCH BY CID
//--------------------
function openBranchByCatID(_scat) {
	var foundit = false;
	for(var _ga=_oldmilen;_ga<_mi.length;_ga++) {
		if(_mi[_ga][2]) {
			var _catid = _mi[_ga][2].split('CategoryID=')[1];
			if (_catid == _scat) { var _fm = _mi[_ga][3]; foundit = true; break; }
			var _catid = _mi[_ga][2];
			if ((_catid == _scat) && (_scat != '')) { var _fm = _mi[_ga][3]; foundit = true; break; }
		}
		if(_mi[_ga][3]) {
			var _catid = _mi[_ga][3].split('emsmenu_')[1];
			if (_catid == _scat) { var _fm = _mi[_ga][3]; foundit = true; break; }
		}
	}
	if (!_fm) {
		for(var _ga=0;_ga<_oldmilen;_ga++) {
			if(_mi[_ga][2]) {
				var _catid = _mi[_ga][2].split('CategoryID=')[1];
				if (_catid == _scat) { var _fm = _m[_mi[_ga][0]][1]; $Cw(_mi[_ga]); itemOff(_mi[_ga]); foundit = true; break; }
				var _catid = _mi[_ga][2];
				if ((_catid == _scat) && (_scat != '')) { var _fm = _m[_mi[_ga][0]][1]; $Cw(_mi[_ga]); itemOff(_mi[_ga]); foundit = true; break; }
			}
			if(_mi[_ga][3]) {
				var _catid = _mi[_ga][3].split('emsmenu_')[1];
				if (_catid == _scat) { var _fm = _m[_mi[_ga][0]][1]; $Cw(_mi[_ga]); itemOff(_mi[_ga]); foundit = true; break; }
			}
		}
	}
	if (foundit) {
		for(var _ga=_oldmilen;_ga<_mi.length;_ga++) {
			var _ar = _mi[_ga].childN; var c = '';
			try{ c = _mi[_ga][3]; } catch(e) {}
			if (_mi[_ga][3] == _fm) { try{ h$(_ga,0,1); } catch(e) {} }
		}
		openBranchByName(_fm);
	}
}

//---------------------
// LOAD IMAGES
//---------------------
function loadimages() {
	for(var i=0; i<document.images.length; i++) {
		if (document.images[i].id.substring(0,3).toLowerCase() == 'ems') {
			ibits = document.images[i].id.split('_');
			if (ibits[1]) document.images[i].src = 'EMSImage' + ibits[1];
		}
		if (document.images[i].id.substring(0,7).toLowerCase() == 'emsmain') emsmainimg = document.images[i];
	}
}

//---------------------
// LOAD VARIANT
//---------------------
function emsloadvariant(nfile,nid) {
	aframe = window.frames['actionframe'];
	aframe.emsloaded = false;
	aframe.document.location.replace(nfile+'?ProductID='+nid);
	window.setTimeout('emsloadvariant2()',10);
}
function emsloadvariant2(nfile,nid) {
	aframe = window.frames['actionframe'];
	if (!(aframe.emsloaded)) { window.setTimeout('emsloadvariant2()',10); return; }
	var c = aframe.document.getElementsByTagName("body")[0].getElementsByTagName("*");
	for (var x=0; x<c.length; x++) {
		var dx = c[x];
		if (dx.id.substring(0,3).toLowerCase() == 'obj') {
			for (var y=0; y<dx.attributes.length; y++) {
				if (dx.attributes[y].name == 'emspr') {
					var a = document.getElementById(dx.id);
					if (a) a.innerHTML = dx.innerHTML;
				}
			}
		}
	}
	emsmainimgdet = aframe.emsmainimgdet;
	loadimages();
}

//---------------------
// CAPTCHA
//---------------------
function startCaptcha(nform,nelement) {
	var ScrollTop = (document.all) ? document.body.parentElement.scrollTop : window.pageYOffset;
	captchaform = nform;
	captchaelement = nelement;
	var capdiv = document.getElementById("EMSCaptchaDiv");
	var capimg = document.getElementById("EMSCaptchaImg");
	capimg.src = '/cgi-clients/captcha.asp';
	capdiv.style.left = (pagewidth/2)-170 + 'px';
	capdiv.style.top = ((pageheight/2)-50)+ScrollTop + 'px';
	capdiv.style.display = '';
}

function captchaOkay() {
	document.getElementById("EMSCaptchaDiv").style.display = 'none';
	captchaelement.value = document.getElementById("EMSCaptchaValue").value;
	if (emsformvalidate(captchaform)) captchaform.submit();
}

//---------------------
// MAKE ALERT
//---------------------
function makeAlert(nmessage,iserror) {
	hideselects();
	try { var ScrollTop = (document.all) ? document.body.parentElement.scrollTop : window.pageYOffset; } catch(e) { }
	document.getElementById("EMSMessageBody").innerHTML = nmessage;
	var mesdiv = document.getElementById("EMSMessageDiv");
	mesdiv.style.left = (pagewidth/2)-170 + 'px';
	mesdiv.style.top = ((pageheight/2)-50)+ScrollTop + 'px';
	if (overridealertstyles) {
		if (iserror) {
			mesdiv.className =  'popup ' + alertbad;
		} else {
			mesdiv.className = 'popup ' + alertgood;
		}
	} else {
		mesdiv.style.color = '#000000';
		mesdiv.style.backgroundColor = (iserror) ? '#ffeeee' : '#eeffee';
	}
	try{mesdiv.filters.item(0).Apply();} catch(e) {}
	mesdiv.style.display = '';
	try{mesdiv.filters.item(0).Play();} catch(e) {}
}
function alertOkay() {
	document.getElementById("EMSMessageDiv").style.display = 'none';
	showselects();
}

//---------------------
// DHTML POPUP
//---------------------
function popupOpen(isimg, txtdiv) {
	hideselects();
	try { var ScrollTop = (document.all) ? document.body.parentElement.scrollTop : window.pageYOffset; } catch(e) { }
	var pu = document.getElementById("EMSPopup");
	var pb = document.getElementById("EMSPopupBody");
	var pi = document.getElementById("EMSPopupImage");
	var w = 340;
	var h = 100;
	pb.style.display = 'none';
	pi.style.display = 'none';
	if (isimg) {
		if (emsmainimgdet) {
			imds = emsmainimgdet.split(',');
			pi.src = 'EMSImage'+imds[0];
			w = parseInt(imds[1]+'');
			if (parseInt(imds[2]+'') > 400) h = 50;
			if (emsimgpopw) {
				if (!(emsimgpopw == w)) pi.src = 'EMSImage'+imds[0]+'-'+emsimgpopw+'-'+emsimgpoph;
				w = emsimgpopw;
				h = (emsimgpoph > 400) ? 50 : 100;
			}
		}
		pi.style.display = '';
	} else {
		try { var x = document.getElementById(txtdiv); } catch(e) {}
		if (x) { pb.innerHTML = x.innerHTML; pb.style.display = ''; }
	}
	pu.style.width = w + 'px';
	pu.style.left = (pagewidth/2)-(w/2) + 'px';
	pu.style.top = (h)+ScrollTop + 'px';
	try{pu.filters.item(0).Apply();} catch(e) {}
	pu.style.display = '';
	try{pu.filters.item(0).Play();} catch(e) {}
}
function popupClose() {
	document.getElementById("EMSPopup").style.display = 'none';
	showselects();
}

//---------------------
// CART ADD
//---------------------
function cartAdd(productid,gotocart,hasvariant,parentid) {
	if (cartadding) { return; }
	if (hasvariant) {
		productid = 0;
		try { productid = eval('varsel'+parentid); } catch(e) {}
		if (productid == 0) { makeAlert('Please select your options first.',true); return; }
	}
	cartadding = true;
	if (gotocart) {
		document.location.href = cartPage + '?AddProductID=' + productid;
	} else {
		aframe = window.frames['actionframe'];
		aframe.document.location.replace(cartPage + '?DoAjax=1&AddProductID=' + productid);
	}
	addtext = 'Thank you. The item has been added to your basket.';
	try { addtext = eval('addcarttext'+parentid); } catch(e) {}
	makeAlert(addtext,false);
	cartadding = false;
}

//---------------------
// CART ADD BY REF
//---------------------
function cartAddByRef(ref,quantity) 
{
	if (cartadding) { return; }
	cartadding = true;

	aframe = window.frames['actionframe'];
	aframe.document.location.replace(cartPage + '?DoAjax=1&AddProductRef=' + ref + '&AddProductRefQuantity='+quantity);
	
	addtext = 'Thank you. The item has been added to your basket.';
	makeAlert(addtext,false);
	cartadding = false;
}

function cartAddByRefForWishlist(ref,quantity,WeddingListItemID,IsWeddingList) 
{
	if (cartadding) { return; }
	cartadding = true;

	aframe = window.frames['actionframe'];
	
	if(IsWeddingList)
	{
		aframe.document.location.replace(cartPage + '?DoAjax=1&AddProductRef=' + ref + '&AddProductRefQuantity=' + quantity + '&WeddingListItemID='+WeddingListItemID);
	}
	else
	{
		aframe.document.location.replace(cartPage + '?DoAjax=1&AddProductRef=' + ref + '&AddProductRefQuantity=' + quantity);
	}
	
	addtext = 'Thank you. The item has been added to your basket.';
	makeAlert(addtext,false);
	cartadding = false;
}

function cartUpdate(noitems,quantity,weight,subnet,subtax,subgross,shipnet,shiptax,shipgross,discountnet,discounttax,discountgross,totalnet,totaltax,totalgross) {
	var c = document.getElementsByTagName("body")[0].getElementsByTagName("*");
	for (var x=0; x<c.length; x++) {
		var dx = c[x];
		if (dx.id.substring(0,4).toLowerCase() == 'emsc') {
			for (var y=0; y<dx.attributes.length; y++) {
				if (dx.attributes[y].name == 'emsc') {
					try{eval('dx.innerHTML = ' + dx.attributes[y].value.toLowerCase() + ';');} catch(e) {}
					break;
				}
			}
		}
	}
}

//---------------------
// CART REMOVE
//---------------------
function cartRemove(productid,gotocart) {
	if (gotocart) {
		document.location.href = cartPage + '?Quantity' + productid + '=0';
	} else {
		document.location.href = document.location.pathname + '?Quantity' + productid + '=0';
	}
}

//---------------------
// OPEN SITE
//---------------------
function openSite(theURL) {
	anw = window.open(theURL,'newWindow','toolbar=yes,location=yes,directories=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width=700,height=600');
	anw.focus();
	anw.resizeTo(700,600);		
}

//---------------------
// OPEN WINDOW
//---------------------
function openSubwindow(message,theURL,width,height,tools) {
	openSubwindow2('subWindow',message,theURL,width,height,tools);
}

//---------------------
// OPEN WINDOW 2
//---------------------
function openSubwindow2(name,message,theURL,width,height,tools) {
	if(tools=='yes'){ mn = 'yes'; st = 'yes'; sc = 'yes';}
	if(tools=='partly'){ st = 'yes'; sc = 'yes'; mn = 'no'; }
	if(tools=='no'){ st = 'no'; sc = 'no'; mn = 'no';}
	if (message != "") {
		anw = window.open('',name,'toolbar=no,location=no,directories=no,status='+st+',menubar='+mn+',scrollbars='+sc+',resizable=yes,width='+width+',height='+height);
		anw.focus();
		anw.resizeTo(width+20,height+20);
		anw.document.write('<HTML><HEAD><TITLE>Please wait...</TITLE></HEAD><STYLE></STYLE><LINK REL=stylesheet type=text/css href=/admin.css><BODY ><br /><CENTER>');
		anw.document.write('<table><tr><td align="center"><BIG><b>Please wait...<br /><br />');
		anw.document.write('... ' + message + ' </b></BIG>');
		anw.document.write('</td></tr></table></CENTER></BODY></HTML>');
		if (theURL != "") {
			anw.location.href = theURL;
		}
	} else {
		anw = window.open(theURL,name,'toolbar=no,location=no,directories=no,status='+st+',menubar='+mn+',scrollbars='+sc+',resizable=yes,width='+width+',height='+height);
		anw.focus();
		anw.resizeTo(width+20,height+20);
	}
}

//---------------------
// TEXTAREA MAXLENGTH
//---------------------
function ismaxlength(obj){
	var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : "";
	if (obj.getAttribute && obj.value.length>mlength) obj.value=obj.value.substring(0,mlength);
	try { document.getElementById(obj.name+'Counter').innerHTML = '('+obj.value.length+'/'+mlength+' characters)'; } catch(e) {}
}

//--------------
// HIDE SELECTS
//--------------
function hideselects(){
	if (ie&&!ie7) {
	var sls = document.getElementsByTagName('select');
	for (var i=0; i<sls.length; i++) { sls[i].style.visibility='hidden'; } }
}

//--------------
// SHOW SELECTS
//--------------
function showselects(){
	if (ie&&!ie7) {
	var sls = document.getElementsByTagName('select');
	for (var i=0; i<sls.length; i++) { sls[i].style.visibility='visible'; } }
}

//----------
// COPY OBJ
//----------
function copyObj(obj) {
    var i;
    var newObj = new Object();
    for (i in obj) {
        newObj[i] = obj[i];
        }
    return newObj; }

//----------
// OPEN LINK
//----------
function openLink(theURL,newWindow) {
	if(newWindow) {
		window.open(theURL,'newWindow');}
	else {
		window.location.href=theURL; }
}

//------------
// CHECK DATE
//------------
function checkDate( f, al ) {
	var errf = "";
	var sls1 = f.value.indexOf("/",0);
	var sls2 = f.value.indexOf("/",sls1+1);
	if(f.value == "") return true;
	if ((sls1 == -1) || (sls2 == -1)){
		errf = "The DATE has been entered incorrectly";
	} else {
		var d = parseInt(f.value.substring(0,sls1),10);
		var m = parseInt(f.value.substring(sls1+1,sls2),10);
		var y = parseInt(f.value.substring(sls2+1,f.value.length),10);
		var sy	= f.value.substring(sls2+1,f.value.length);
		if(isNaN(d) || isNaN(m) || isNaN(y)) {
			errf = "The date contains spurious characters. Please use numerical characters and the / character only";
		} else {
			if(((y > 9999) || (y < 1000)) && !((sy.length==2) && (y >= 0 || y <= 99))) errf = "The year " + y + "  is invalid. Please amend";
			if((m > 12) || (m < 1)) errf = "The month " + m + " is invalid. Please check and try again";
			if((d > 31) || (d < 1)) errf = "The day " + d + "  is invalid. Please check and try again";
			if((m == 1) && (d > 31)) errf = "January only contains 31 days. Please amend";
			if((m == 2) && (d > 29)) errf = "February only contains (at most) 29 days. Please amend";
			if((m == 3) && (d > 31)) errf = "March only contains 31 days. Please amend";
			if((m == 4) && (d > 30)) errf = "April only contains 30 days. Please amend";
			if((m == 5) && (d > 31)) errf = "May only contains 31 days. Please amend";
			if((m == 6) && (d > 30)) errf = "June only contains 30 days. Please amend";
			if((m == 7) && (d > 31)) errf = "July only contains 31 days. Please amend";
			if((m == 8) && (d > 31)) errf = "August only contains 31 days. Please amend";
			if((m == 9) && (d > 30)) errf = "September only contains 30 days. Please amend";
			if((m == 10) && (d > 31)) errf = "October only contains 31 days. Please amend";
			if((m == 11) && (d > 30)) errf = "November only contains 30 days. Please amend";
			if((m == 12) && (d > 31)) errf = "December only contains 31 days. Please amend";
		}
	}
	if (errf != "") {
			if(al) makeAlert(errf + ' : NOTE (Use the format dd/mm/yyyy or dd/mm/yy)',true);
			f.value = "";
			return false; }
	else {
		return true; }
}

//---------------
// CHECK NUMERIC
//---------------
function checkNumeric( f, m ) {
	var t;
	if ((f.value+'' == '') && (m+'' == '')) {
		f.value = 0;
		return true; }

	t = parseFloat(f.value,10);
	if (isNaN(f.value)) {
		makeAlert('The field MUST be numeric.',true);
		f.value = m;
		return false; }

	if((m+'' != '') && (isNaN(t) || (t.toString() == '') || (t < m))) {
		makeAlert('The field MUST be at least ' + m,true);
		f.value = m;
		return false; }
	return true;
}

//-------------
// CHECK EMAIL
//-------------
function checkEmail( f, m ) {
	if (f.value != '') {
		var isvalid = true;
		if (f.value.indexOf(' ',0) > 0) isvalid = false;
		if (f.value.indexOf(',',0) > 0) isvalid = false;
		if (f.value.indexOf('!',0) > 0) isvalid = false;
		if (f.value.indexOf('"',0) > 0) isvalid = false;
		if (f.value.indexOf('@',0) > 0) {
			if (f.value.indexOf('@',f.value.indexOf('@',0)+1) > 0) isvalid = false;
		}
		if (!isvalid) {
			if (m) { makeAlert('The field MUST contain a valid email address.',true); }
		}
		return isvalid;
	} else {
		return true; }
}

//-----------
// CHECK URL
//-----------
function checkURL( f ) {
	if (f.value != '') {
		if ((f.value.indexOf('http://',0) >= 0) || (f.value.indexOf('https://',0) >= 0) || (f.value.indexOf('ftp://',0) >= 0) || (f.value.indexOf('mailto:',0) >= 0) || (f.value.indexOf('javascript:',0) >= 0)) {
			if (f.value.indexOf(' ',0) < 0) {
				return true;
			} else {
				makeAlert('The LINK address cannot contain spaces.',true);
				f.value = '';
				return false; }
		} else {
			makeAlert('The field MUST contain a valid URL (starting with http:// or similar).',true);
			f.value = '';
			return false; }
	} else {
		return true; }
}

//------------
// CHECK TEXT
//------------
function checkText( f, s ) {
	if ((f.value != '') && (s > 0)) {
		if (f.value.length > s) {
			makeAlert('The field has exceeded its maximum size of ' + s + ' characters.',true);
			f.value = f.value.substring(0,s);
			return false;
		} else {
			return true;
		}
	} else {
		return true;
	}
}

//---------------
// FORMAT NUMBER
//---------------
function FormatNumber(nu,de,se) {
 nu += ""
 de += ""
 se += ""
 if((se == "") || (se.length > 1)) se = "."
 if(nu.length == 0) nu = "0"
 var onu = nu
 var Sign = 1
 var Pad = ""
 var Count = 0
 if(parseFloat(nu)){ nu = parseFloat(nu) }
 else { nu = 0 }
 if((parseInt(de,10)) || (parseInt(de,10) == 0)){ de = parseInt(de,10)}
 else { de = 2}
 if(nu < 0) {
  Sign = -1
  nu *= Sign
 }
 if(de < 0) de *= -1
 nu = "" + Math.floor(nu * Math.pow(10,de + 1) + 5)
 if((nu.substring(1,2) == '.')||((nu + '')=='NaN')) return(onu)
 if(nu.length < de +1) {
  for(Count = nu.length; Count <= de; Count++) Pad += "0"
 }
 nu = Pad + nu
 if(de == 0){ nu = nu.substring(0, nu.length -1)}
 else { nu = nu.substring(0,nu.length - de -1) + se + nu.substring(nu.length - de -1, nu.length -1)}
 if(Sign == -1) nu = "-" + nu
 if(nu.length == 0) nu="0"
 if(nu.substring(0,1) == '.') nu="0"+nu
 return(nu)
}

//window.onerror = new Function('return true;');
