function dbgAlert(msg) {
	alert(msg);
}

function dbg(msg) {
	document.getElementById('dbg').innerHTML = msg;
}

function setPane(pane) {
	// alert('setPane:: pane = '+pane);
	document.targetPane = pane;
}

	//// Set swatch pane parts when swatch image clicked ////
function setColour(range, name, image) {
	// alert('setColour:: range='+range+', name='+name+', image='+image);
//	document.selectedRange = range;
	rng = range.split('|');
	range = rng[0]; code = rng[1];
	document.selectedName = name;
	document.selectedRange = range;
	document.selectedCode = code;
	document.getElementById('choicePanel').src = image;
	document.getElementById('chosenTxt').innerHTML = name;
	document.getElementById('popupSelectTxt').innerHTML = range;
	var rngMenu = document.getElementById('popupPaneMenu');
	if (rngMenu) {
		for (var x in rngMenu.options) {
			if (! isFinite(x)) continue;
			if (rngMenu.options[x].value == code) {
				rngMenu.selectedIndex = x;
				break;
			}
		}
	}
}
/*
*/

function loadDataPane(code, caller) {
	new Ajax.Updater('dataPaneDiv', 'dataPane.php', {
			method: 'post',
			parameters:{SID:'', action:'refresh', code:code, caller:caller+'->loadDataPane.js'}
	});
}

function loadPane(pane, option, code, chosenR, chosenC) {
	// alert('loadPane:: pane='+pane+', option='+option+', chosenR='+chosenR+', chosenC='+chosenC);
	if (!pane) { return; };
	if (!option) { return; };
	var sid = getSid();
	document.option = option;
	if (code.length!=0) document.code = code;
	var choicePanel = document.getElementById('choicePanel');
	var chosenTxt = document.getElementById('chosenTxt');
	var popupSelectTxt = document.getElementById('popupSelectTxt');
//alert('chosenR='+chosenR);
	if (chosenR) {
		var rng = new Array();
		rng = chosenR.split('|');
		document.selectedCode = rng[1];
		document.selectedRange = rng[0];
		popupSelectTxt.innerHTML = rng[0];

		if (chosenC && (chosenC != '|')) {
			var cw = new Array();
			cw = chosenC.split('|');
			document.selectedName = cw[0];
			if (cw.length > 1) choicePanel.src = cw[1];
			else choicePanel.src = '/Resources/_clear.gif';
			chosenTxt.innerHTML = cw[0];
		} else {
			document.selectedName = '';
			choicePanel.src = '/Resources/_clear.gif';
		}
	} else {
		document.selectedRange = '';
		document.selectedCode = '';
		document.selectedName = '';
		popupSelectTxt.innerHTML = 'Select a range';
		choicePanel.src = '/Resources/_clear.gif';
	}

	new Ajax.Updater('popupPaneMenuCell', 'loadPane.php', {
			method: 'post',
			parameters:{SID:sid, option:option, action:'menu', code:code, range:chosenR, dbg:document.dbg}
	});
	new Ajax.Updater('swatchPanel', 'loadPane.php', {
			method: 'post',
			parameters:{SID:sid, option:option, action:'swatchPanel', code:code, dbg:document.dbg}
	});
}

		//// Saves swatch selection back to Session ////
function saveSelection() {
	// alert('saveSelection:: );
	// alert('saveSelection:: \ndocument.selectedRange='+document.selectedRange+'\ndocument.selectedCode='+document.selectedCode+'\ndocument.selectedName='+document.selectedName);
	if (!document.selectedRange) return;
	if (!document.selectedName) return;
	var rng = new Array();
	rng = document.selectedRange.split('|');
	var range = rng[0].replace(/ *\( *\+? *£.*/,'');
	var value = range+'|'+document.selectedCode+'|'+document.selectedName;
  	var xyz = new Ajax.Updater('dataPaneDiv','dataPaneSet.php',{
		method: 'post',
		parameters:{SID:'', code:document.code, place:'', option:document.option, value:value, action:'refresh'},
		onFailure: function() { alert('dataPaneDiv refresh error') }
	});
// alert(xyz);
}

function updateDataPane(tgtpane, code, place, name, value) {
	// alert('updateDataPane:: tgtpane='+tgtpane+', Code:'+code+', Place: '+place+', '+name+'='+value);
	var sid = getSid();
	if (code.length==0) { return; };
	if (name.length==0) { return; }
	if (value.length==0) { return; }
	value = value.replace(/ /g, '+');

  	new Ajax.Updater('dataPaneDiv','dataPaneSet.php',{
		method: 'post',
		parameters:{SID:sid, code:code, place:place, name:name, value:value}
	});

}

function process(action, code, paneID) {
	// alert('process:: action='+action+', code='+code+', paneID='+paneID);
	var sid = getSid();
	if (action.length==0) { return; }
	if (code.length==0) { return; }
	if (paneID.length==0) {
		paneID = document.targetPane;
	} else {
		document.targetPane = paneID;
	}

 	new Ajax.Updater(paneID,'handleData.php',{
		method: 'post',
		parameters:{SID:sid, action:action, code:code, tgtpane:document.targetPane, dbg:document.dbg}
	});

}

/*
*/
function fillPane(action, js, args, paneID) {
	// alert('fillPane:: action = '+action+', js = '+js+', args = '+args+', paneID = '+paneID);
	var sid = getSid();
	var dbg = document.dbg;
	if (action.length==0) { return; }
//	if (args.length > 0) { args = '&'+args; }
	if (js.length > 0) {
		var assigns = js.split(';');
		var i = -1;
		while (assigns[++i]) {
			eval('document.'+assigns[i].split('=')[0] + " = '" + assigns[i].split('=')[1] + "'");
		}
	}
	new Ajax.Updater(paneID,'handleData.php',{
		method: 'post',
		parameters:{SID:sid,action:action, args:args, dbg:dbg}
	});

}

function showSwatch(urange,colourway,ranges) {
	// alert('showSwatch:: urange='+urange+', colourway='+colourway+', ranges='+ranges);
	// Calls swatchPane.php with the new urange in the url to set the URange
	// and then refresh the pane all in one hit. This should eliminate timing issues.
	// alert('showSwatch:: urange='+urange);
	if (urange == '--select--') urange = '';
	if (document.urange != urange) document.cw = '';
	if (urange != '') document.urange = urange;
	urange = document.urange;
	if (colourway != '') document.cw = colourway;
	colourway = document.cw;
	if (ranges != '') document.ranges = ranges;
	var sid = getSid();
	var action = 'urangechange';
	var paneID = 'swatchPaneDiv';
	new Ajax.Updater(paneID,'swatchPane.php',{
		method: 'post',
		parameters:{SID:sid,action:action, urange:urange, colourway:colourway, ranges:ranges}
	});

}

function loadPaneSelected(range, name, image) {
	// alert('loadPaneSelected:: name='+name+', image='+image);
	document.selectedName = name;
	document.selectedRange = range;
	document.getElementById('selectedImage').src = image;
	document.getElementById('selectedName').innerHTML = name;
}

function loadCwImg(path, cw, urange, ucode) {
	// alert('loadCwImg:: path='+path+', cw='+cw+', urange='+urange+', ucode='+ucode);
	document.cw = cw;
	document.urange = urange;
	document.ucode = ucode;
	// alert('loadCwImg:: path='+path+', cw='+cw+', urange='+urange);
	document.getElementById('cwImg').src = path;
	document.getElementById('cwName').innerHTML = cw;
//	document.getElementById('cwCode').innerHTML = urange;	// put back when the element exists
//	document.getElementById('cwCode').innerHTML = ucode;	// to set popup menu default
	//document.form.
	var rngMenu = document.getElementById('swRngSel');
	for (var x in rngMenu.options) {
		if (rngMenu.options[x].value == ucode) {
			rngMenu.selectedIndex = x;
			break;
		}
	}
}

function setPaneSelected(code, attr) {
	// alert('setPaneSelected:: code='+code+' attr='+attr);
	if (code.length==0) { return; }
	if (attr.length==0) { return; }
	attr = attr.replace(' ', '+');
	var sid = getSid();
	if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
		setPaneSelected=new XMLHttpRequest();
	} else {// code for IE6, IE5
		setPaneSelected=new ActiveXObject("Microsoft.XMLHTTP");
	}
	setPaneSelected.onreadystatechange=function() {
		if (setPaneSelected.readyState==4 && setPaneSelected.status==200) {
			//
			alert('setPaneSelected:: The response: '+setPaneSelected.responseText);
			//
			pane = document.getElementById('dbg');
			//
			pane.innerHTML = setPaneSelected.responseText;
			// alert('setPaneSelected '+window.setInProgress);
			window.setInProgress = 0;
		}
	}
	request = "dataPaneSet.php?SID="+sid+"&code="+code+"&place=attrs&name="+attr+"&value="+document.selectedName.replace(' ', '+');
 	setInProgress = 3;
	setPaneSelected.open("GET",request,true);
	setPaneSelected.send();

}

function setCw() {
	// alert('setCw:: ');
	var sid = getSid();
	if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
		setCwReq=new XMLHttpRequest();
	} else {// code for IE6, IE5
		setCwReq=new ActiveXObject("Microsoft.XMLHTTP");
	}
	setCwReq.onreadystatechange=function() {
		//alert('setCw:: Any response: '+setCwReq.responseText);
		if (setCwReq.readyState==4 && setCwReq.status==200) {
			// alert('setCw:: The response: '+setCwReq.responseText);
			pane = document.getElementById('dbg');
			pane.innerHTML = setCwReq.responseText;
			// alert('setCwReq '+window.setInProgress);
			window.setInProgress = 0;
		}
	}
	cw = document.getElementById('cwName').innerHTML;
	cw = cw.replace('<br>', "-");
	request = "handleData.php?SID="+sid+"&action=setCw&cw="+cw;
 	// alert('setCw:: '+request);
 	setInProgress = 3;
	setCwReq.open("GET",request,true);
	setCwReq.send();

}

function rmFromBasket(id) {
	// alert('rmFromBasket:: id='+id);
	var remove = new Array();
	var form = document.getElementById(id);
	for (var i=0; i<form.length; i++) {
		var e = form.elements[i];
		if (e.type != 'checkbox') continue;
		if (e.checked) remove += ',' + e.value;
	//	if (e.checked) remove.push(e.value);
	}
	var sid = getSid();

	new Ajax.Request('handleData.php',{
		method: 'post',
		onSuccess: function(){ alert('Ajax done'); },
		parameters:{SID:sid, action:'Remove', remove:remove, dbg:document.dbg}});


	alert('rmFromBasket:: remove='+remove);
}

function quote() {
	// alert('quote::');
	var sid = getSid();
	var rqform = document.getElementById('rqAquote');
	var email = document.getElementById('qtEmail').value;
	var name = document.getElementById('qtName').value;
	var tel = document.getElementById('qtTel').value;
	var txt = document.getElementById('qtTxt').value;
	var qtstat = rAqTable.getAttribute('style');
	new Ajax.Request('quote.php',{
		method: 'post',
		onComplete: function(transport) {
			// alert(transport.responseText);
	//		rAqTable.innerHTML = '<p>Sent</p>';
	//		idShow('rAqButton');
	//		var ret =  transport.responseText.split(/\|!\|/, 3);
	//		if (ret[1].indexOf('sent') >= 0) {
				idHide('rAqTable');
	//		} else {
	//			location.reload();
	//		}
		},
		parameters:{SID:sid, action:'quote', stat:qtstat, name:name, email:email, tel:tel, txt:txt}});
}

function loginout(inout) {
	// alert('loginout:: inout='+inout+'.');
	if (inout == 0) {
		new Effect.toggle('loginPane_loginPaneDiv', 'appear', {duration:1, delay:0, queue:'end'});
	} else {
		logout();
	//	location.reload();
	}
}

function login(logobj) {
	// alert('login:: logobj='+logobj+'.');
	user = document.getElementById('username').value;
	pass = document.getElementById('password').value;
	var sid = getSid();
	new Ajax.Request('login.php',{
		method: 'post',
		onComplete: function(transport) {
			var ret =  transport.responseText.split(/\|!\|/, 3);
			if (ret[1].indexOf('passed') >= 0) {
				location.reload();
			} else {
				alert(ret[1]);
				username.style.color = 'red';
				password.style.color = 'red';
			}
		},
		parameters:{SID:sid,action:'login', user:user, pass:pass}});
}

function logout() {
	// alert('logout::');
	var sid = getSid();
	new Ajax.Request('login.php',{
		method: 'post',
		onSuccess: function(){ location.reload(); },
		parameters:{SID:sid,action:'logout'}});
}

function register(x) {
	// alert('validate:: x='+x+'.');
	var email = regEmail.value;
	var pass1 = regPass1.value;
	var pass2 = regPass2.value;
	var phone = regPhone.value;
	var registerOk = false;
	// alert('validate:: email='+email+', pass1='+pass1+', pass2='+pass2+', phone='+phone+'.');
	var emailPatt = new RegExp("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$");
	if (! emailPatt.test(email)) {
		regEmail.style.color = 'red';
		return false;
	}
	if (pass1 != pass2) {
		regPass1.style.color = 'red';
		regPass2.style.color = 'red';
		return false;
	}
	// '/^(0|\+1\s*|\+[2-9]{2,3}\s*[1-9])[\s\d]{5,16}$/' in php
	var telPatt = /^\+?[\d\s]{8,16}$/;
	if (! telPatt.test(phone)) {
		regPhone.style.color = 'green';
		return false;
	}
	var sid = getSid();
	new Ajax.Updater('dbg','login.php',{
		method: 'post',
		onComplete: function(transport) {
			var ret =  transport.responseText.split(/\|!\|/, 3);
			if (ret[1].indexOf('Registered') >= 0) {
				registerOk = true;
				location.reload();
			} else if (ret[1].indexOf('in use') >= 0) {
				regEmail.style.color = 'red';
				alert(ret[1]);
			} else if (ret[1].indexOf('Phone') >= 0) {
				regPhone.style.color = 'red';
				alert(ret[1]);
			} else {
				regEmail.style.color = 'red';
				alert(ret[1]);
			}
		},
		parameters:{SID:sid,action:'register', user:email, pass:pass1, tel:phone}});
	if (registerOk) {
		loginout.value = 'Logout';
//		new Effect.toggle('loginPane_loginPaneDiv', 'appear', {duration:1, delay:0, queue:'end'});
	} else return false;
}

function clearTxt(x) {
	// alert('clearTxt:: x='+x+', x.value='+x.value+', x.value[0]='+x.value[0]);
	if (! x.cleared) { x.cleared = 1; x.value = ''; }
}

function hideShow(divID, imgID, imgHideSrc, imgShowSrc, action) {
	// alert('hideShow:: divID='+divID+', imgID='+imgID+', imgHideSrc='+imgHideSrc+', imgShowSrc='+imgShowSrc+', action='+action);
	var div = document.getElementById(divID);
	if (imgID.length > 0) var img = document.getElementById(imgID);
	if (action == 'hide') {
		div.style.display = 'none';
		if (imgID.length>0) img.src = imgShowSrc;
	} else if (action == 'show') {
		div.style.display = 'inline';
		if (imgID.length>0) img.src = imgHideSrc;
	} else if (div.style.display == 'none') {
		div.style.display = 'inline';
		if (imgID.length>0) img.src = imgHideSrc;
	} else {
		div.style.display = 'none';
		if (imgID.length>0) img.src = imgShowSrc;
	}
}

function idHide(id) {
	document.getElementById(id).style.display = "none";
}

function idShow(id) {
	document.getElementById(id).style.display = "";
}

