var startDragX = 0;
var startDragY = 0;
var currentBlockEditor; // popup panels.

var addToBasketAnimID = null;
var ADDING_TO = null;
var BASKET_REDIR = null;
var addToBasketICONID = null;
var BASKET_LIST = new Array();
var addToBasketPREBASKET = null;
var prebasketRecPanel = null;
var loadingPanel = null;
var basketPopup = null;
var reviewConnection = null;
var addListToBasketDialog = null;


// Used in prebasket code to display 'View Recommended'
var GLOBAL_BASKET_GRP = null;

var prebasketOptionsPanel; // prebasket question

// FIX IE 8 BUG ???

YAHOO.widget.Panel.prototype.showMask = function() {
	if (this.cfg.getProperty("modal") && this.mask) {
		var ua = navigator.userAgent.toLowerCase();
		if (ua.indexOf('msie 8.0') == -1) YAHOO.util.Dom.addClass(document.body, "masked"); // do it except IE8.0
		this.sizeMask();
		this.mask.style.display = "block";
		this.showMaskEvent.fire();
	}
};

function getAjaxLink () {

	if ( document.location.protocol == 'https:' ) {
		return '/univermag3/flightstore-retail/ajax/';
	} else {
		return '/ajax/';
	}
}


var checkout = function (cookie) {
	var s = document.getElementById('basket_delivery_select');
	var params = 'cookie=' + encodeURIComponent(cookie);
	
	if ( s ) params = params + '&delivery=' + s.value;
	
	var b = document.getElementById('bonus_points');
	if ( b ) params = params + '&bonus=' + b.value;
	
	window.location = '/ssl/index.html?' + params;

} 

var precheckout = function (uri) {
	var s = document.getElementById('basket_delivery_select');
	if ( s ) {
		window.location = uri + '/checkout/index.html?delivery=' + s.value;
	} else {
		window.location = uri + '/checkout/index.html';
	}

}

/* This one should setup and display panels to filter dept.html */
function displayDeptFilterDialog (sel) {
	var p = document.getElementById('FSFilter_' + sel.value);
	if (!p) return;
	
	var w = '600px';
	if ( sel.value == 'price' ) w = '300px';
	
	var panel = new YAHOO.widget.Panel( 'FSFilter_' + sel.value , 
		{ width : w,
		fixedcenter : true,
		underlay: "shadow", 
		close : true, 
		visible : true, 
		constraintoviewport : true,
		modal: true
		}
	);
	panel.render(document.body);
	panel.show();
}



/* put selected option code into basket field and updates page data with option data */
function updateProductOptionPage( sel ) {
	// basket_codes must be present !!!
	var code = sel.value;
	try {document.getElementById('basket_codes').value = code;} catch (e) {};
	try {document.getElementById('basket_prods').value = code;} catch (e) {};
	var r = document.getElementById('option_' + code);
	if (r) {
		var data = r.getElementsByTagName('div');
		for (var i=0; i<data.length; i++){
			var key = data[i].getAttribute('id').substr(code.length + 1);
			var targetDiv = document.getElementById('FS_' + key);
			if ( targetDiv ) targetDiv.innerHTML = data[i].innerHTML;	
		}
	}
}

function processProductOptionQty(txt, frm_id, list_id) {

	var frm = document.getElementById(frm_id);
	var total = 0.00;
	for ( var i = 0; i < frm.elements.length; i++) {
		if (  frm.elements[i].className.search('qty') == 0 && frm.elements[i].id.substr(list_id.length ,4) == 'qty_') {
			var qty =  parseInt(frm.elements[i].value);
			if ( isNaN(qty) ) qty = 0;
			if ( qty > 0 ) {
				code = frm.elements[i].id.substr(list_id.length + 4); // don't relay on name as it may be from <select>
				if (code =='') continue;
				var r = document.getElementById( list_id + '_' + code + '_price');
				var p = parseFloat(r.innerHTML);
				if ( isNaN(p) ) p = 0;
 				if ( r ) total = total + p * qty;
 				frm.elements[i].className = 'qty green';
 			} else {
 				frm.elements[i].className = 'qty';
 				frm.elements[i].value = 0;
 			}
		}
	}

	var targetDiv = document.getElementById('FS_sum_' + list_id);
	if ( targetDiv ) targetDiv.innerHTML = total.toFixed(2);	
}

function processProductOptionCheckbox(cb) {
	var add = 0;
	var r = document.getElementById( 'option_' + cb.name + '_price');

 	if ( r ) add = parseFloat(r.innerHTML);
	if ( cb.checked ) {
		BASKET_LIST.push(cb.name);	
	} else {
		for(var i=0; i<BASKET_LIST.length; i++) {
			if ( BASKET_LIST[i] == cb.name ) {
				BASKET_LIST.splice(i,1);
				add = -add;
				break;	
			}
		}
	}
	
	var targetDiv = document.getElementById('FS_price');
	if ( targetDiv ) targetDiv.innerHTML = (parseFloat(targetDiv.innerHTML) + add).toFixed(2);	
	try { document.getElementById('basket_codes').value = BASKET_LIST.join(','); } catch (e) {};
	try { document.getElementById('basket_prods').value = BASKET_LIST.join(','); } catch (e) {};
}

var view_prebasket_recommended = function (code) {
	var loc = window.location.href;
	var p = [];
	   if ( GLOBAL_BASKET_GRP &&! isNaN(parseInt(GLOBAL_BASKET_GRP)) ) {
               p.push('mingrp=' + GLOBAL_BASKET_GRP);
        }
       p.push('code=' + code);
      window.location.href = '/prebasket.html?' + p.join('&');
}

function rv_set_quantity (code) {
	var q = parseInt(document.getElementById('rvqty_' + code).value);
	if ( q > 0 ) {
		document.getElementById('form_' + code).elements['qty'].value = q;
		return true;
	} else {
		return false;
	}
}
// PREBASKET
var update_prebasket_scroller = function (pre, code, qty, listsCount) {
	var scroller = document.getElementById('prebasket_scroller');
	
	var cur = document.getElementById('last_added').cloneNode(true);
	
	// move the current prod to the list.
	
	var added_c = document.getElementById('prebasket_added_prods');
	for (var i = added_c.childNodes.length - 1; i >= 0; i--){
		var l = added_c.childNodes[i];
		if ( l.className == 'prebasket-prod' ) {
			added_c.removeChild(l);
			l.setAttribute('id', '');
			var divs = l.getElementsByTagName("div");
			divs[0].setAttribute('class', 'title');
			divs[0].setAttribute('title', divs[0].innerHTML);
			
			if (scroller.childNodes.length > 0 )	scroller.insertBefore(l, scroller.childNodes[0]);
			else scroller.appendChild(l);
		}
	}
	

	//update the current prod
	var divs = cur.getElementsByTagName("div");
	
	divs[0].innerHTML = document.getElementById(pre + '_title_' + code).innerHTML;
	
	var txt = document.getElementById(pre + '_price_' + code).innerHTML;
	if ( parseInt(listsCount) > 0 ) txt = txt + ' <a href="javascript: // Show Recommended" onclick="view_prebasket_recommended (' + "'" + code + "')" + '">See Recommended</a>';
	divs[1].innerHTML = txt;
	
	divs[2].innerHTML = 'Qty: 1';	
	prebasket_scroll_to(0);
	
	// I love MS
	if (added_c.childNodes.length > 0 )
		added_c.insertBefore(cur, added_c.childNodes[0]);
	else 
		added_c.appendChild(cur);
}

var AddToBasketCallback = {
	//var b = document.getElementById('basket_message_' + products);
	success : function(o) {
		var r = eval ( '(' + o.responseText + ')' );
		var a = document.getElementById('anim_' + addToBasketAnimID);
		if (a) {
			a.style.visibility = 'hidden';
		}
		
		if ( !r.error ) {
			var qty;
			if ( ADDING_TO ) qty = r.lines; // to favs ???
			else qty = r.added;
			stopAnimWithMessage(qty + ' item' + (qty > 1 ? 's ' : ' ') + 'added', addToBasketAnimID);
			// display basket icon
			if ( ADDING_TO ) {
				var span = document.getElementById('infavs' + addToBasketICONID);
				if ( span ) {
					if ( span.style.display == 'none' ) {
						span.style.opacity = 0;
						span.style.display = 'inline';
						var anim = new YAHOO.util.Anim(span, { opacity: { to: 99 } }, 5, YAHOO.util.Easing.easeIn);
						anim.animate();
					}
				}
			} else {
				// sometimes we don't return totals...
				if ( r.totals && parseFloat(r.totals.exvat) > 0 ) {
				 	var t = document.getElementById('basket_total');
					if ( t ) {
						try {t.innerHTML = parseFloat(r.totals.exvat).toFixed(2);} catch (e) {};
				 	}
				 	t = document.getElementById('basket_vat');
					if ( t ) {
						try {t.innerHTML = parseFloat(r.totals.vat).toFixed(2);} catch (e) {};
				 	}
				 	t = document.getElementById('basket_total_incvat');
					if ( t ) {
						try {t.innerHTML = parseFloat(r.totals.incvat).toFixed(2);} catch (e) {};
				 	}
				 	t = document.getElementById('page_basket_total');
					if ( t ) {
						try {t.innerHTML = parseFloat(r.totals.incvat).toFixed(2);} catch (e) {};
				 	}
				 	t = document.getElementById('popup_basket_total');
					if ( t ) {
						try {t.innerHTML = parseFloat(r.totals.incvat).toFixed(2);} catch (e) {};
				 	}
				 	
				 	t = document.getElementById('page_basket_qty');
					if ( t ) {
						try {
							var q = parseInt(r.totals.qty);
							if ( q == 0 )  t.innerHTML = 'nbsp;&nbsp;';
							else 	if ( q > 1 ) t.innerHTML = q + '&nbsp;items&nbsp;&nbsp;';
							else t.innerHTML = '1&nbsp;item&nbsp;&nbsp;';
						} catch (e) {};
				 	}
				 	
				 	updatePopupBasketList(r.items);
				 	
				}
				/* This is for prebasket */
				if ( addToBasketPREBASKET ) {
					// KEEP last grp in var
					GLOBAL_BASKET_GRP = r.mingrp;
					var span = document.getElementById(addToBasketPREBASKET + 'inbasket' + addToBasketICONID);
					if ( span ) {
						if ( span.style.visibility == 'hidden' ) {
							span.style.opacity = 0;
							span.style.visibility = 'visible';
							var anim = new YAHOO.util.Anim(span, { opacity: { to: 99 } }, 5, YAHOO.util.Easing.easeIn);
							anim.animate();
						}
					}
					try {
						var t = document.getElementById('added_count');
						t.innerHTML = parseInt(t.innerHTML) + 1;
					} catch (e) {};
					
					// Now add added product to the scrolling list...
					update_prebasket_scroller(addToBasketPREBASKET, addToBasketICONID, qty, r.listsCount );				
				} else {
					GLOBAL_BASKET_GRP = null;
					// this for basket
					var span = document.getElementById('inbasket' + addToBasketICONID);
					if ( span ) {
						var s = document.getElementById('inbasketqty' + addToBasketICONID);
						if ( span.style.display == 'none' ) {
							if ( s ) s.innerHTML = r.added; 
							span.style.opacity = 0;
							span.style.display = 'inline';
							var anim = new YAHOO.util.Anim(span, { opacity: { to: 99 } }, 5, YAHOO.util.Easing.easeIn);
							anim.animate();
						} else {
							if ( s ) {s.innerHTML = parseInt(s.innerHTML) + r.added}
						}
					}
					//document.location.href = "/prebasket.html?mingrp=" + r.mingrp;
				}
			}
			document.getElementById('basketPopupTop').innerHTML = '<br><div style="font-weight: bold">Your basket contains:</div>';
			// fav lists may redirect...
			if ( BASKET_REDIR ) {
				var tmp = BASKET_REDIR;
				BASKET_REDIR = null;
				document.location.href = tmp;
			}
		} else {
			if (ADDING_TO) alert('Error: ' + r.error);
			else document.getElementById('basketPopupTop').innerHTML = '<div class="red">'+r.error+'</div><div style="font-weight: bold">Your basket contains:</div>';
		}
		ADDING_TO = null;
		addToBasketICONID = null;
	},
	failure : function(o) {
		alert('AJAX connectivity problem :-(');
	}
};

function updatePopupBasketList(list) {
	if ( list && list.length ) {
		var p = document.getElementById('basketPopupBody');
		p.innerHTML = '';
		for ( var i=list.length-1; i>=0; i--) {
		  if ( list[i].code == list[i].grp_code && list[i].grp_type == 'pro' ) continue;
				var d = document.createElement('DIV');
				d.style.cssText = 'height: 23px; line-height: 10px; font-size: 10px; padding: 3px; overflow: hidden;';
				d.setAttribute('class','basketPopupItem');
				var s1 = document.createElement('SPAN');
				s1.style.fontWeight = 'bold';
				s1.setAttribute('class','b');
				s1.innerHTML =  list[i].qty + ' x ';
				d.appendChild(s1);
				s1 = document.createElement('SPAN');
				s1.innerHTML = list[i].title
				d.appendChild(s1);
				p.appendChild(d);
		}
	}

}

function addToBasket(bid, qty, products, animid, iconid, one_grp, prefix) {
	var separate = true;
	if ( one_grp ) separate = false;
	addToBasketAnimID = animid;
	addToBasketICONID = iconid;
	addToBasketPREBASKET = prefix;

	var BID = parseInt(bid);
	if ( isNaN(parseInt(qty)) || parseInt(qty) == 0 ) {
		if (products.length) {
			if ( BID == 0) {
				// ask user to type QTY. becouse it is basket, for favourites work as default
				var mySimpleDialog;
				var handleYes = function() {
					var q = mySimpleDialog.body.getElementsByTagName('input')[0].value;
					if ( parseInt(q) ) {
						mySimpleDialog.hide();
						YAHOO.util.Connect.asyncRequest('POST', '/ajax/', AddToBasketCallback, 'ajax=addToBasket&bid=' + bid + '&qty=' + q + '&products=' + products + '&include_totals=1');
						startAnimWithMessage('', animid);
					}
				};
		
				mySimpleDialog = new YAHOO.widget.SimpleDialog("dlg", { width: "20em",fixedcenter:true,	modal:true,	draggable:false, visible: false });
				mySimpleDialog.setHeader("Please enter a Quantity in to the box and press the Buy button");
				mySimpleDialog.setBody('<input type="text" name="" value="" />');
				mySimpleDialog.cfg.setProperty("icon",YAHOO.widget.SimpleDialog.ICON_INFO);
				var myButtons = [ 
					{ text:"Buy",handler:handleYes, isDefault:true },
					{ text:"Cancel",handler: mySimpleDialog.hide }
				];
				mySimpleDialog.cfg.queueProperty("buttons", myButtons);

				mySimpleDialog.render(document.body);
				mySimpleDialog.show();
				return;
			}
		} else {
			if ( ADDING_TO == 'fav' ) {
				ADDING_TO = 'fav_opt';
				separate = true;
			}
			// it is an options, so we must generate product list & quantity...
			// May be we need to use addLIST2basket ???
			var frm = document.getElementById('options_list_form');
			if ( ! frm) {
				alert("Please select products you want to add to the favourites list.");
				return;
			}
			
			var prods = new Array();
			for ( var i = 0; i < frm.elements.length; i++) {
				if (  frm.elements[i].className.search('qty') == 0 && frm.elements[i].id.search('qty_') >= 0 ) {
					var optqty =  parseInt(frm.elements[i].value);
					// FIXME: ALL products will go to the list !!! if ( optqty > 0 ) {
						code = frm.elements[i].name;
						if (BID == 0 ) {
							if (optqty > 0) prods.push(code + '|' + optqty);
						} else {
							// for favourites use zero qty...
							prods.push(code);
						}
					//}
				}
			}
			if ( prods.length ) {
				products = prods.join(',');
			} else {
				return;
			}
		}
	}
	var query = 'ajax=addToBasket&bid=' + bid + '&qty=' + qty + '&products=' + products + '&include_totals=1&include_basket=1';
	if ( separate ) query = query + '&separate=1';
	if( ! ADDING_TO ) showbasketPopup();
	YAHOO.util.Connect.asyncRequest('POST', '/ajax/', AddToBasketCallback, query);
	// don't show running man if adding to the basket....
	if ( BID != 0 ) startAnimWithMessage('', animid);
}


function showbasketPopup () {
	if (!basketPopup) {
		basketPopup = new YAHOO.widget.SimpleDialog("basketPopup", {fixedcenter:true,	modal:true,	draggable:false, visible: false, close: false , underlay: 'none'});
		document.getElementById('basketPopupTop').innerHTML = '<div>Adding products to your basket. Please wait...</div><div><img src="/images/final/loading.gif" style="width: 32px; height: 32px" alt=""></div>';
		basketPopup.render(document.body);
	}
	if (prebasketRecPanel) prebasketRecPanel.hide();
	basketPopup.show();
}


function addListToBasket(frmid) {
	var frm = document.getElementById(frmid);
	var codes = new Array();
	for ( var i = 0; i < frm.elements.length; i++) {
		if ( frm.elements[i].className.search('qty') == 0 && parseInt(frm.elements[i].value) > 0) codes.push(frm.elements[i].name); 
	}
	if ( codes.length == 0 ) {
		if ( ! addListToBasketDialog ) {
			var handleYes = function() {
				 this.hide();
			};
			var myButtons = [ { 
					text:"Ok", 
					handler:handleYes }
			];
		addListToBasketDialog = new YAHOO.widget.SimpleDialog("dlg", { 
			width: "20em", 
			effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.25}, 
			fixedcenter:true,
			close: false,
			modal:true,
    		visible:false,
			draggable:false });
		addListToBasketDialog.cfg.queueProperty("buttons", myButtons);
		addListToBasketDialog.setHeader("Can not add products to the basket!");
		addListToBasketDialog.setBody("Please specify quantity for any of the desired products in the list.");
		addListToBasketDialog.cfg.setProperty("icon",YAHOO.widget.SimpleDialog.ICON_WARN);
		
		addListToBasketDialog.render(document.body);
		}
		addListToBasketDialog.show();
		return;
	
	}
	frm.products.value = codes.join(',');
	YAHOO.util.Connect.setForm(frm);
	showbasketPopup();
	var query = 'ajax=addToBasket&include_totals=1&include_basket=1';
	var cObj = YAHOO.util.Connect.asyncRequest('POST', '/ajax/', AddToBasketCallback, query);
}

function add2Basket(frmid, keyid) {
	var frm = document.getElementById(frmid);
	
	var qty = frm.elements['qty'].value;
	var products = frm.elements['prods'].value;
	
	if ( isNaN(parseInt(qty)) || parseInt(qty) == 0 ) {
		if (products.length) {
			/*if ( BID == 0) {*/
				// ask user to type QTY. becouse it is basket, for favourites work as default
				var mySimpleDialog;
				var handleYes = function() {
					var q = mySimpleDialog.body.getElementsByTagName('input')[0].value;
					if ( parseInt(q) ) {
						mySimpleDialog.hide();
						frm.elements['qty'].value = q;
						addToBasketICONID = keyid;
						_add_2_Basket(frm);
					}
				};
		
				mySimpleDialog = new YAHOO.widget.SimpleDialog("dlg", { width: "20em",fixedcenter:true, modal:true,	draggable:false, visible: false, close: false });
				mySimpleDialog.setHeader("Please enter a Quantity in to the box and press the Buy button");
				mySimpleDialog.setBody('<input type="text" name="" value="" />');
				mySimpleDialog.cfg.setProperty("icon",YAHOO.widget.SimpleDialog.ICON_INFO);
				var myButtons = [ 
					{ text:"Buy",handler:handleYes, isDefault:true },
					{ text:"Cancel",handler: mySimpleDialog.hide }
				];
				mySimpleDialog.cfg.queueProperty("buttons", myButtons);

				mySimpleDialog.render(document.body);
				mySimpleDialog.show();
				return;
		}
	}
	addToBasketICONID = keyid;
	_add_2_Basket(frm);
}

function _add_2_Basket(frm) {
	YAHOO.util.Connect.setForm(frm);
	var query = 'ajax=addToBasket&include_totals=1&include_basket=1';
	query = query + '&products=' + frm.elements['prods'].value;
	showbasketPopup();	
	var cObj = YAHOO.util.Connect.asyncRequest('POST', '/ajax/', AddToBasketCallback, query);
}


function getTargetDiv(div) {
 for (var i=0; i < div.childNodes.length; i++) {
	if (div.childNodes[i].className == "bigmag-block-toolbar") return div.childNodes[i];
 }
return null;

}


// adding options, alts and recommendeds

function addToPrebasket(formid) {
	var separate = true;
	var frm = document.getElementById(formid);
	
	if ( ! frm) {
		return false;
	}
			
	var prods = new Array();
	for ( var i = 0; i < frm.elements.length; i++) {
		if (  frm.elements[i].className.search('qty') == 0 && frm.elements[i].id.search('qty_') >= 0 ) {
			var optqty = (frm.elements[i].type.toLowerCase() == "checkbox") ? frm.elements[i].checked ? 1 : 0  : parseInt(frm.elements[i].value);
			// ALL products will go to the basket if ( optqty > 0 ) {
			code = frm.elements[i].name;
			if (optqty > 0) prods.push(code);
		}
	}
	if ( prods.length ) {
		products = prods.join(',');
	} else {
		alert('Please select the quantity for the products you want to buy');
		return false;
	}
	
	frm.elements['prods'].value= products;
	//frm.submit(); // IE7 make double submit in this case :-(
	return true;
}


// TO ADD Multibuy to the basket...
function addMBToBasket (formid, keyid) {
	var separate = true;
	var frm = document.getElementById(formid);
	
	if ( ! frm) {
		return false;
	}

	var prods = new Array();
	for ( var i = 0; i < frm.elements.length; i++) {
		if (  frm.elements[i].className.search('qty') == 0 && frm.elements[i].id.search('qty_') >= 0 ) {
			code = frm.elements[i].name;
			var ar = frm.elements[i].id.split('qty_');
			var rootcode = ar[1];
			if ( rootcode == code || code == '') {
				alert('Please select options provided in menus before adding this Value Set to the basket');
				return false;
			}
			prods.push(rootcode + '|' + code);
		}
	}
	if ( prods.length ) {
		products = prods.join(',');
		frm.elements['mb_hints'].value = products;
	}
	

	YAHOO.util.Connect.setForm(frm);
	addToBasketICONID = keyid;
	var query = 'ajax=addToBasket&include_totals=1&include_basket=1';
	query = query + '&products=' + frm.elements['prods'].value;
	showbasketPopup();	
	var cObj = YAHOO.util.Connect.asyncRequest('POST', '/ajax/', AddToBasketCallback, query);

}



function showAdminControls(div, pos, overdiv) {
	var targetDiv = getTargetDiv(div);
	if (targetDiv) {
		if (pos == "center") {
			var ot = div.offsetTop;
			var ol = div.offsetLeft;
			var parent = div;
			while((parent = parent.offsetParent) != null) {
				ot += parent.offsetTop;
				ol += parent.offsetLeft;
			}
			
			ol = YAHOO.util.Dom.getXY( div.parentNode )[0]; 
			ot = YAHOO.util.Dom.getXY( div.parentNode )[1]; 
			alert(ol + ' ' + ot);
			targetDiv.style.left = ol + (div.offsetWidth - targetDiv.offsetWidth)/2 + "px";
			var tmp = ot + (div.offsetHeight - targetDiv.offsetHeight)/2;
			if (tmp < ot) { targetDiv.style.top = ot + "px" }
			else { targetDiv.style.top = tmp + "px" }
		} else if (pos == "topright") {
			var ol = YAHOO.util.Dom.getXY( div.parentNode )[0]; 
			targetDiv.style.left = ol + div.offsetWidth - targetDiv.offsetWidth + "px";
		}
		
		if ( overdiv ) {
			// for float divs we need to know real X Y
			overdiv = YAHOO.util.Dom.getElementsByClassName('page_block', 'div', div)[0];
			var ol = YAHOO.util.Dom.getXY( overdiv )[0]; 
			var ot = YAHOO.util.Dom.getXY( overdiv )[1]; 
			targetDiv.style.left = ol  + "px";
			targetDiv.style.top = ot  + "px";
		
		}
		targetDiv.style.visibility = "visible";
		if (div.getAttribute("BMbackground") == undefined) {
			div.setAttribute("BMbackground", div.style.backgroundColor);
		}

		div.style.backgroundColor = "orange";

	}
};

function hideAdminControls(div) {
	var targetDiv = getTargetDiv(div);
	if (targetDiv) {
		targetDiv.style.visibility = "hidden";
	}
	div.style.backgroundColor = div.getAttribute("BMbackground");

};

function startToolbarDrag (div) {
	startDragX = 0;
	startDragY = 0;
	div.onmousemove = performDrag;
}

function stopToolbarDrag (div) {
	div.onmousemove = doNothing;
	startDragX = 0;
	startDragY = 0;		
}

function doNothing() {

}

function performDrag(ev) {
	var div;
	if (ev == undefined) {
		ev = window.event;
		div = ev.srcElement;
		if (startDragX == 0) {
			startDragX = YAHOO.util.Dom.getXY( div )[0]; 
			startDragY = YAHOO.util.Dom.getXY( div )[1]; 
		}
		div.parentNode.style.left = (ev.clientX - startDragX) + "px";
		div.parentNode.style.top = (ev.clientY - startDragY) + "px";
	} else {
		div = ev.target;
		if (startDragX == 0) {
			startDragX = YAHOO.util.Dom.getXY( div )[0]; 
			startDragY = YAHOO.util.Dom.getXY( div )[1]; 
		}
		div.parentNode.style.left = (ev.pageX - startDragX) + "px";
		div.parentNode.style.top = (ev.pageY - startDragY) + "px";
	}
}




function go_logout(uri, domain) {
	if ( confirm('You are about to logout of FlightStore.' + "\n" + 'Are you sure you want to do that?') ) {
		document.cookie = 'flightstore4-session-id=' + 'gone; domain=' + domain + ';path=/;expires=Wed Apr 24 2002 19:20:12 GMT';
		document.cookie = 'flightstore4-affiliate-id=' + 'gone; domain=' + domain + ';path=/;expires=Wed Apr 24 2002 19:20:12 GMT';
		document.location = uri;
	}
	return null;
}

var stopAnimWithMessage = function(m, products ) {
	var a = document.getElementById('anim_' + products);
	var b = document.getElementById('basket_message_' + products);
	if (b) {
		if ( b.FSanim && b.FSanim.isAnimated() ) {
			b.FSanim.stop();
		} 
		b.innerHTML = m;
		var anim = new YAHOO.util.Anim(b, { opacity: { to: 0 } }, 3, YAHOO.util.Easing.easeOut);
		b.FSanim = anim;
		anim.animate();
		anim.onComplete.subscribe(function() {b.innerHTML = '&nbsp;';	YAHOO.util.Dom.setStyle(b, 'opacity', 1); });
	}
}

var startAnimWithMessage = function( m, products) {
	var a = document.getElementById('anim_' + products);
	var b = document.getElementById('basket_message_' + products);
	if ( b && m ) b.innerHTML = m;
	
	if (a) {
		a.style.visibility = 'visible';
	}
}

var updateBasketTotals = function (totals) {

	var id = ['exvat', 'vat', 'incvat'];
	for (a in id) {
		document.getElementById('subtotal_' + id[a]).innerHTML = parseFloat(totals[id[a]]).toFixed(4);
		var delivery = 0;
		try {
			delivery = parseFloat(document.getElementById('delivery_' + id[a]).innerHTML);
		} catch(e) {};
		var t = delivery +	parseFloat(document.getElementById('subtotal_' + id[a]).innerHTML);
		document.getElementById('total_' + id[a]).innerHTML = t.toFixed(2);
	}


}
var updateDeliveryTotals = function() {
	var sel = document.getElementById('basket_delivery_select');
	if ( ! (sel && sel.value) ) return ; // may be not present if anonymous user.
	var price = {};
	price.incvat = parseFloat(document.getElementById('delivery_price_' + sel.value).innerHTML);

	var vatrate = parseFloat(document.getElementById('delivery_vat_rate').innerHTML);

	if ( vatrate > 0 ) {
		price.vat = (price.incvat / (100 + vatrate) * vatrate ).toFixed(2);
		price.exvat = (price.incvat / (100 + vatrate) * 100 ).toFixed(4);
	} else {
		price.vat = '0.00';
		price.exvat = price.incvat;
	}

	var p = parseFloat(price['exvat']);
	var v = parseFloat(price['vat']);
	document.getElementById('delivery_exvat').innerHTML = p.toFixed(2);
	document.getElementById('delivery_vat').innerHTML = v.toFixed(2);
	document.getElementById('delivery_incvat').innerHTML = (p+v).toFixed(2);
	
	try {
		document.getElementById('delivery_incvat1').innerHTML = (p+v).toFixed(2);
	} catch (e){};
		
	var tp = p + parseFloat(document.getElementById('subtotal_exvat').innerHTML);
	var tv = v + parseFloat(document.getElementById('subtotal_vat').innerHTML);
	document.getElementById('total_exvat' ).innerHTML = tp.toFixed(2);
	

	document.getElementById('total_vat').innerHTML = tv.toFixed(2);
	document.getElementById('total_incvat').innerHTML = (parseFloat(document.getElementById('subtotal_incvat').innerHTML) + p + v).toFixed(2);
	
	
	try {
		document.getElementById('total_incvat1').innerHTML = document.getElementById('total_incvat').innerHTML;
	} catch (e){};	
	
}

var updateBasketLineAndTotals = function(totals,grp) {
if ( document.getElementById('basket_qty_' + grp) ) {
	var qty = parseInt(document.getElementById('basket_qty_' + grp).value);
	var price = parseFloat(document.getElementById('basket_price_exvat_' + grp).innerHTML);
	var vat = parseFloat(document.getElementById('basket_vatp_' + grp).innerHTML);

 //alert( price + ' ' + vat );
 	var incvat = parseFloat((price * vat / 100).toFixed(2));
	document.getElementById('basket_exvat_' + grp).innerHTML = (price * qty).toFixed(2);
	document.getElementById('basket_incvat_' + grp).innerHTML = ((price + incvat) * qty ).toFixed(2);
	
	/*if ( vat > 0 ) 
		document.getElementById('basket_vat_' + grp).innerHTML =   (incvat * qty).toFixed(2);
	else 
		document.getElementById('basket_vat_' + grp).innerHTML = '0.00';
	*/
	
	
}
	updateBasketTotals(totals);
}

var updateBasketDelivery = function ( delivery ) {
	var sel = document.getElementById('basket_delivery_select');
	if ( ! sel ) return;


	var div = document.getElementById("basket_delivery_list");
	if ( ! div ) return;
	
	var cur = sel.value;
	sel.innerHTML = '';
	div.innerHTML = '';

	for ( var i = 0; i < delivery.length; i++) {
		var o = document.createElement('option');
		o.setAttribute('value', delivery[i].dpid);
		o.innerHTML = delivery[i].title // + ' : &pound;' + delivery[i].price;
		sel.appendChild(o);
		if ( delivery[i].dpid == cur ) {
			o.selected = true;
		}
		
		var d = document.createElement('div');
		d.setAttribute('id', "delivery_dpid_" + delivery[i].dpid);
		d.innerHTML = delivery[i].dpid;
		div.appendChild(d);
		
		d = document.createElement('div');
		d.setAttribute('id', "delivery_price_" + delivery[i].dpid);
		d.innerHTML = delivery[i].price;
		div.appendChild(d);
		
		d = document.createElement('div');
		d.setAttribute('id', "delivery_title_" + delivery[i].dpid);
		d.innerHTML = delivery[i].title;
		div.appendChild(d);
		
	}
	updateDeliveryTotals();

}


var updateBasketCount = function(field, grp, func) {
	var qty = '';
	if ( isNaN(field.value) || field.value < 1 ) {
		
	} else {
		qty = parseInt(field.value);
	}
		var mergeCallback = {
				success : function(o) {
					var r = eval ( '(' + o.responseText + ')' );
					if (r.error == null) {
						//alert('count updated.');
						// If basket VAT == 0 then
					   try {
						if ( parseFloat(r.totals.vat) == 0.0 ) {
							document.getElementById('delivery_vat_rate').innerHTML = '0';
						} else {
							if ( r.need_vat == '1' ) {
								document.getElementById('delivery_vat_rate').innerHTML = '17.5';
							} else {
								document.getElementById('delivery_vat_rate').innerHTML = '0';
							}
						}
					   } catch (e) {}; // user may be not logged in, so no delivery at all.
						
						
						if ( qty == 0 ) {
							// delete row from the basket...;
							var el = field;
							while( el.tagName.toLowerCase() != 'tr' ) {
								el = el.parentNode;
							}
							// also check next row, we may want to delete Free Item...
							var free = el.nextSibling;
							if ( free.nodeType != 1) free = free.nextSibling;
							if ( free.tagName && free.tagName.toUpperCase() == 'TR' ) {
								if ( free.className == el.className ) el.parentNode.removeChild(free);
							}
							el.parentNode.removeChild(el);
							
						} else {
							field.setAttribute('title', qty);
						}
						if ( parseFloat(r.totals.exvat) > 0 ) {
				 			var t = document.getElementById('basket_total');
							if ( t ) {
								t.innerHTML = r.totals.exvat;
				 			}
						}
						
						if ( ! parseInt(r.totals.qty) > 0) {
							// display no Delivery At all !!
							delivery = [{dpid: 0, title: 'Not Applicable', price: 0 }];
							document.getElementById('basket_checkout_button').style.display = 'none';
							updateBasketDelivery(delivery);
						} else {
							updateBasketDelivery(r.delivery);
						}
						if ( func ) {
							func(r.totals, grp);
						}
					} else {
						alert(r.error);
						// and get old text back !!!!
						field.value = field.getAttribute('title');
					}
				},
				failure : function(o) {
					alert('AJAX connectivity problem :-(');
				}
			};
			var totals ='';
			if (func) { totals = '&include_totals=1' };
			totals = totals + '&include_delivery=1';
			YAHOO.util.Connect.asyncRequest('POST', '/ajax/', mergeCallback, 'ajax=updateBasketCount&bid=' + 0 + '&grp=' + grp + '&qty=' + qty + totals);
}

/* to save pageBlocks on pages */

var savePageBlock = function (frmid) {
	var	frm = document.getElementById(frmid);
	var id = frm.pbid.value;
	var page = frm.page.value;
	var selector = frm.selector.value;
	var place = frm.place.value;
	var template = frm.template.value;
	currentBlockEditor.footer.innerHTML = "Uploading block to the server...";

	var setupContent=function(r) {
		if ( template == 'Free') {
			return '<div>' + frm.val1.value + '</div>';
		} else if ( template == 'Ad' ) {
			var d = document.createElement('div');
			var i = document.createElement('img');
			setImage(i, r.img1);
			d.appendChild(i);
			return '<div>'+ d.innerHTML +'</div>';
		} else if ( template == 'Panel' ) {
			return '<div class="panel"><div class="head"><div class="title"></div></div><div></div></div>';
		} if ( template == 'Mainpage' ) {
			return '<div class="mainpage-block"><div style="text-align: center"><img  /></div><div class="head"></div><div class="body"></div><div class="links"></div></div>';
		} else {
			return 'Reload page to see this new block<br>Dima have not yet programmed autodisplay of it !<img >'
		}	
	}
    var uploadCallback = {
    	upload: function(o) {
			var r = eval ( '(' + o.responseText + ')' );
			if (r.error == null) {
				if ( r.affected > 0 ) {
					currentBlockEditor.footer.innerHTML = "Data has been uploaded.";
					if ( id == 'new' ) {
						frm.pbid.value = r.pbid;
						// we need to display the content !!!
						cont = document.getElementById(page + '_' + place + '_' + selector);
						var add = document.createElement('div');
						add.innerHTML = '<div id="pageBlock'+ r.pbid + '" onMouseOver=' + "'" + 'showAdminControls(this,"left","pageBlockContent'+r.pbid+'")' + "'" + 
'onMouseOut="hideAdminControls(this)">' +
'<div class="bigmag-block-toolbar">' +
'<div onmouseup="stopToolbarDrag(this)" onmousedown="startToolbarDrag(this)">' +
'Manage ' + template + '[' + r.pbid + ']' +
'</div><table style="width: 0pt;"><tbody><tr><td>' +
'<a href="javascript: deletePageBlock('+ r.pbid +')"><img width="18" height="17" border="0" src="/images/admin/toolbar-del.gif" alt="remove"/></a></td>' +
'<td><a href="javascript:editor(' + "'" + page + "','" + selector + "','" + place +"','"+ r.pbid +"', '"+template+ "')" + '" title="Edit">' +
'<img width="18" height="17" border="0" src="/images/admin/toolbar-edit.gif" alt="edit" /></a></td><td>' +
'<a href="javascript: movePageBlock(' + r.pbid +', 1)"><img width="18" height="17" border="0" src="/images/admin/toolbar-up.gif" alt="up"/></a></td>' +
'<td><a href="javascript: movePageBlock(' + r.pbid + ', -1)"><img width="18" height="17" border="0" src="/images/admin/toolbar-down.gif" alt="down" /></a>' +
'</td></tr></tbody></table></div><div class="page_block ' + template + '-block" id="pageBlockContent'+ r.pbid + '">'+
setupContent(r) +
'</div></div>';
						cont.appendChild(add);
						id = r.pbid;
					} 
					// updating existing block
					var content = document.getElementById('pageBlockContent' + id);
					if ( template == 'Free' ) {
						document.getElementById('pageBlockContent' + id).innerHTML = frm.val1.value;
						content.innerHTML = frm.val1.value;
					} else if (template == 'Ad') {
						var preview = document.getElementById('FSAdBlockEditorPreview');
						if ( r.img1 ) {
							setImage(preview,r.img1);
							var img = content.getElementsByTagName('img');
							if ( img[0] ) {
								setImage(img[0],r.img1);
							}
						}
					} else if ( template == 'Panel') {
						setPanel(frm.val1.value,frm.val2.value);
						var divs = content.getElementsByTagName('div')[0].getElementsByTagName('div');
						divs[0].getElementsByTagName('div')[0].innerHTML = frm.val1.value;
						divs[1].innerHTML = frm.val2.value;
					}
					
				} else {
					currentBlockEditor.footer.innerHTML = "<span style='color: red'>ERROR: nothing updated in the DB :-(</span> ";
				}
            } else {
				currentBlockEditor.footer.innerHTML = "<span style='color: red'>ERROR:</span> " + r.error;
            }
    	}
    }
    
    //frm.title.value = encodeURIComponent(frm.title.value);
    YAHOO.util.Connect.setForm(frm, true, true);  
    var cObj = YAHOO.util.Connect.asyncRequest('POST', '/ajax/', uploadCallback); 
}

var deletePageBlock = function(id) {
	var mergeCallback = {
		success : function(o) {
			var r = eval ( '(' + o.responseText + ')' );
			if (r.error == null) {
				if ( r.affected > 0 ){ 
					var div = document.getElementById('pageBlock' + id);
					div.parentNode.removeChild(div);
				}
			} else {
				alert(r.error);
			}
		},
		failure : function(o) {
			alert('AJAX connectivity problem :-(');
		}
	};
	
	YAHOO.util.Connect.asyncRequest('POST', '/ajax/', mergeCallback, 'ajax=deletePageBlock&pbid=' + id);
}

var movePageBlock = function(id, direction) {
	var mergeCallback = {
		success : function(o) {
			var r = eval ( '(' + o.responseText + ')' );
			if (r.error == null) {
				if ( r.friend ) {	
					var div = document.getElementById('pageBlock' + id);
					var friend = document.getElementById('pageBlock' + r.friend);
					// it may take years to find that i need to swap ID !!!!
					div.setAttribute('id','pageBlock' + r.friend );
					friend.setAttribute('id','pageBlock' + id );
					var tmp = div.innerHTML;
					div.innerHTML = friend.innerHTML;
					friend.innerHTML = tmp;
				}
			} else {
				alert(r.error);
			}
		},
		failure : function(o) {
			alert('AJAX connectivity problem :-(');
		}
	};
	
	YAHOO.util.Connect.asyncRequest('POST', '/ajax/', mergeCallback, 'ajax=movePageBlock&pbid=' + id + '&direction=' + direction);
}



function setImage(i, o) {
	i.setAttribute('src',"/images/pageBlocks/" + o.file + '?' + new Date());
	i.setAttribute('width',o.width + 'px');
	i.setAttribute('height',o.height + 'px');	
	
}

function setPanel(head, body) {
	document.getElementById('FSPanelBlockEditorPreviewHead').innerHTML= head;
	document.getElementById('FSPanelBlockEditorPreviewBody').innerHTML= body;
}

function editor(page, selector, place, pbid, template) {

var id = "FS" + template + "BlockEditor";
var frm = document.getElementById(id + 'Form');
frm.reset();
var preview = document.getElementById(id + 'Preview');
if ( pbid != 'new' ) {
	// we need to set form fields !!!!
	
	var getCallback = {
		success : function(o) {
			var r = eval ( '(' + o.responseText + ')' );
			if (r.error == null) {
				if ( template == 'Free' ) {	
					frm.val1.value = r.val1;
					preview.innerHTML = r.val1;
				} else if ( template == 'Ad' ) {	
					frm.val1.value = r.val1;
					if ( r.img1 ) {
						frm.alt1.value = r.img1.title;
						// also setup a preview...
						setImage(preview,r.img1);
					}
				} else if ( template == 'Ad4' ) {
					frm.val1.value = r.val1;
					frm.val2.value = r.val2;
					frm.val3.value = r.val3;
					frm.val4.value = r.val4;
					if ( r.img1 ) {
						frm.alt1.value = r.img1.title;
						setImage(document.getElementById(id + 'Preview1'),r.img1);
					}
					if ( r.img2 ) {
						frm.alt2.value = r.img2.title;
						setImage(document.getElementById(id + 'Preview2'),r.img2);
					}
					if ( r.img3 ) {
						frm.alt3.value = r.img3.title;
						setImage(document.getElementById(id + 'Preview3'),r.img3);
					}
					if ( r.img4 ) {
						frm.alt4.value = r.img4.title;
						setImage(document.getElementById(id + 'Preview4'),r.img4);
					}
				} else if ( template == 'Panel' ) {
					frm.val1.value = r.val1;
					frm.val2.value = r.val2;
					setPanel(r.val1, r.val2);
				} else if ( template == 'ProdList' ) {
					frm.val1.value = r.val1;
					frm.val2.value = r.val2;
					frm.val3.value = r.val3;
					frm.val4.value = r.val4;
					//setMainpage(r.val1, r.val2, r.val3, r.val4);
				} else if ( template == 'Prod2') {
					frm.val1.value = r.val1;
					frm.val2.value = r.val2;
					frm.val3.value = r.val3;
					frm.val4.value = r.val4;
				} else if ( template == 'Prod4' || template == 'Dept4' ) {
					frm.val1.value = r.val1;
					frm.val2.value = r.val2;
					frm.val3.value = r.val3;
					frm.val4.value = r.val4;
					frm.val5.value = r.val5;
					frm.val6.value = r.val6;					
				} else if ( template == 'MainPageTitle') {
					frm.val1.value = r.val1;
					if ( r.img1 ) {
						frm.alt1.value = r.img1.title;
						// also setup a preview...
						setImage(preview,r.img1);
					}
				}
			} else {
				alert(r.error);
			}
		},
		failure : function(o) {
			alert('AJAX connectivity problem :-(');
		}
	};	
	YAHOO.util.Connect.asyncRequest('POST', '/ajax/', getCallback, 'ajax=getPageBlock&pbid=' + pbid );
} 
	if ( template == 'Ad' || template == 'MainPageTitle') {
		preview.setAttribute('src', '');
	} else if ( template == 'Free' ) {
		preview.innerHTML = '';
	} else if ( template == 'Panel' ) {
		setPanel('','');
	}
	
	frm.page.value = page;
	frm.selector.value = selector;
	frm.place.value = place;
	frm.pbid.value = pbid;


currentBlockEditor = new YAHOO.widget.Panel( id , 
	{visible: true, draggable: true, constraintoviewport: true, underlay:"shadow", fixedcenter: true, 'close': true} );
currentBlockEditor.render(document.body);
currentBlockEditor.show();
currentBlockEditor.cfg.setProperty("fixedcenter",false); 
}

function commitPageBlock (page, selector, place) {
	var getCallback = {
		success : function(o) {
			var r = eval ( '(' + o.responseText + ')' );
			if (r.error == null) {
				alert("Yeah man !\nIt was committed to the live site!");
			} else {
				alert(r.error);
			}
		},
		failure : function(o) {
			alert('AJAX connectivity problem :-(');
		}
	};	
	YAHOO.util.Connect.asyncRequest('POST', '/ajax/', getCallback, 'ajax=commitPageBlocks&page=' + page + '&place=' + place + '&selector=' + selector);

}

// run on window.onload to show selected option prices....
function updateOptionSelect () {
	updateProductOptionPage(document.getElementById('prod_option'));
}


function updateQTYforOptionInList(list, prefix,code, form_id) {
	var cur = list.value;
	var id = ['VAT', 'discount', 'price','RRP','price_exvat'];
	
	if ( cur == '' ) {
		for (a in id) {
			try {document.getElementById(prefix + '_' + code + '_' + id[a]).innerHTML = '-.--';}
			catch (e) {};
		}
		
		document.getElementById(prefix+ 'qty_' + code).name="";
		document.getElementById(prefix + 'qtyspinners_' + code).style.display = 'none';

	} else {
		for (a in id) {
			try {document.getElementById(prefix + '_' + code + '_' + id[a]).innerHTML = document.getElementById('option_' + prefix + '_' + cur +  '_' + id[a]).innerHTML;}
			catch (e) {};
		}

		document.getElementById(prefix+ 'qty_' + code).name=cur;
		document.getElementById(prefix + 'qtyspinners_' + code).style.display = 'block';
	}

	processProductOptionQty(document.getElementById(prefix+ 'qty_' + code), form_id, prefix);
}

// to add multibuy options...
function updateQTYforOptionInMB(list, prefix, code) {
	var cur = list.value;
	
	if ( cur == '' ) {
		document.getElementById(prefix+ 'qty_' + code).name="";
	} else {
		document.getElementById(prefix+ 'qty_' + code).name=cur;
	}
}

// COUNTER FUNCTIONS

var qtyTimeout = new Array();

function stop_counter(id, list_id) {
	clearTimeout(qtyTimeout[id]);
	if ( list_id ) {
		// for favourites
		var input = document.getElementById(list_id + 'qty_' + id);
		//updateFavQty(input);
		input.focus();
	}
}

function update_counter(id, val, list_id, iter) {
	if ( ! list_id ) list_id = '';
	var input = document.getElementById(list_id + 'qty_' + id);
	if (!input) return; 

	if (qtyOptionShown[id] && qtyOptionShown[id].auto) {
		clearTimeout(qtyOptionShown[id].auto);
		qtyOptionShown[id].auto = setTimeout(function(){ hideSpinners(id) }, 4000);
	}

	if ( ! iter ) {
		for (a in qtyTimeout) {
			stop_counter(a);
		}
	}

	var cur = parseInt(input.value);

	if (isNaN(cur)) cur = 0;
	var newval = cur + val;
	if (newval < 0) return;
	//if ( newval == 0) newval = '';
	input.value = newval;
	if ( list_id != '' ) {
	try {
		var sum = document.getElementById('FS_sum_' + list_id);
		var cursum = parseFloat(sum.innerHTML);
		cursum = (cursum + val * parseFloat(document.getElementById(list_id + '_' + id + '_price').innerHTML).toFixed(2)).toFixed(2);
		
		sum.innerHTML = cursum;
	} catch(e) { };
	}
	
	var delay = 50;
	if (! iter ) delay = 450; //first time click
	else if ( iter > 50) delay = iter - 10;
	
	qtyTimeout[id] = setTimeout(function(){update_counter(id, val,  list_id, delay)}, delay);
}

var qtyOptionShown = new Array();


function showSpinners(id) {
	for (a in qtyOptionShown) {
		if ( a != id ) {
			hideSpinners( a );
		} else {
			stopSpinners( a );
		}
	}
	
	var l1 = document.getElementById('link1_' + id);
	var l2 = document.getElementById('link2_' + id);
	
	YAHOO.util.Dom.setStyle(l1, 'visibility', 'visible');
	YAHOO.util.Dom.setStyle(l2, 'visibility', 'visible');	
	YAHOO.util.Dom.setStyle(l1, 'opacity', 1);
	YAHOO.util.Dom.setStyle(l2, 'opacity', 1);	
		

	if (qtyOptionShown[id]) {
		qtyOptionShown[id].shown = 1;
		clearTimeout(qtyOptionShown[id].auto);
		qtyOptionShown[id].auto = setTimeout(function(){ hideSpinners(id) }, 4000);
	} else {
		var autohide = setTimeout(function(){ hideSpinners(id) }, 4000);
		qtyOptionShown[id] = {shown: 1, auto: autohide};
	}

}

function fadeSpinner(id) {
	var anim1 = new YAHOO.util.Anim(document.getElementById('link1_' + id), { opacity: { to: 0.9 } }, 1, YAHOO.util.Easing.easeOut);
	if ( ! anim1.animate ) return; // HACK this is for popup. we can close it = and spinners will try to run it...
	anim1.animate();
	qtyOptionShown[id].first = anim1;
	anim1.onComplete.subscribe(function() { qtyOptionShown[id].shown = 0 });
	
	var anim2 = new YAHOO.util.Anim(document.getElementById('link2_' + id), { opacity: { to: 0.9 } }, 1, YAHOO.util.Easing.easeOut);
	anim2.animate();
	qtyOptionShown[id].second = anim2;	
}


function hideSpinners(id) {
	if ( qtyOptionShown[id].shown ) {
		if ( qtyOptionShown[id].first) {
			if ( qtyOptionShown[id].first.isAnimated()) {
				// wait - it must be faded out...
				 qtyOptionShown[id].shown = 0;
			} else {
				fadeSpinner(id);
			}
		} else {
			fadeSpinner(id);
		}
	}
}

function stopSpinners(id) {
	if ( qtyOptionShown[id].shown ) {
		if ( qtyOptionShown[id].first && qtyOptionShown[id].first.isAnimated()) {
				qtyOptionShown[id].first.stop();
		}
		if ( qtyOptionShown[id].second && qtyOptionShown[id].second.isAnimated()) {
				qtyOptionShown[id].second.stop();
		}
		qtyOptionShown[id].shown = 0;
	}	
}

var prebasket_anim;

function prebasket_scroll(to) {
	if ( prebasket_anim && prebasket_anim.isAnimated() ) return;
	
	var s = document.getElementById('prebasket_scroller');
	var cur = parseInt(s.style.top);
	var delta = 76;
	
	var cur = parseInt(s.scrollTop) - (parseInt(s.scrollTop) % delta );
	var newtop = cur + to * delta;
	if ( to < 0 && parseInt(s.scrollTop) % delta > 0 ) newtop = newtop + delta;
	
	if ( newtop < 0 ) newtop = 0;
	if ( newtop > s.getElementsByTagName('div').length * delta - 2 * delta) return;
	// if ( newtop > 0 ) return;
	var attributes = { 
	        scroll: { to: [0, newtop] } 
    }; 

	prebasket_anim = new YAHOO.util.Scroll( s , attributes);
	prebasket_anim.animate();
}

function prebasket_scroll_to (idx) {

	var delta = 76;
		var attributes = { 
	        scroll: { to: [0, idx * delta] } 
    }; 
    var anim = new YAHOO.util.Scroll( 'prebasket_scroller' , attributes);
	anim.animate();
}

function display_context_help(id, f) {
	var c = document.getElementById(id);
	divs = c.getElementsByTagName('div');
	for ( var i =0; i< divs.length; i++) {
		if (divs[i].id == f.name ) divs[i].style.display = 'block';
		else divs[i].style.display = 'none';
	}
}

function check_registration_email(f, old, site) {
	var email = f.value;
	
	if (!email) {
		document.getElementById('email_ok').style.visibility = 'hidden';
		document.getElementById('email_error').innerHTML = '&nbsp;';
		return;
	}

	var checkEmailCallback = {
		success : function(o) {
			var r = eval ( '(' + o.responseText + ')' );
			if ( r.error ) {
				document.getElementById('email_ok').style.visibility = 'hidden';
				document.getElementById('email_error').innerHTML = r.error;
				// put red text...
			} else {
				// put nice image...
				document.getElementById('email_ok').style.visibility = 'visible';
				document.getElementById('email_error').innerHTML = '&nbsp;';
			}
		},
		failure : function(o) {
			// ?
		}
	}
	
	if ( old ) {
		if ( old != email ) YAHOO.util.Connect.asyncRequest('POST', site + '/ajax/', checkEmailCallback, 'ajax=checkNewUserEmail&email=' + encodeURIComponent(email));
	} else {
		YAHOO.util.Connect.asyncRequest('POST', site + '/ajax/', checkEmailCallback, 'ajax=checkNewUserEmail&email=' + encodeURIComponent(email));
	}
}

function check_registration_password (f ) {
	var pass = f.value;
	
	// seconf password status reset...
	document.getElementById('password2_ok').style.visibility = 'hidden';
	document.getElementById('password2_error').innerHTML = '&nbsp;';
	
	if (!pass) {
		document.getElementById('password_ok').style.visibility = 'hidden';
		document.getElementById('password_error').innerHTML = '&nbsp;';
		return false;
	}
	
	if ( pass.length > 6 ) {
		document.getElementById('password_ok').style.visibility = 'visible';
		document.getElementById('password_error').innerHTML = '&nbsp;';
		return true;
	} else {
		document.getElementById('password_ok').style.visibility = 'hidden';
		document.getElementById('password_error').innerHTML = 'Password should be at least 7 symbols long';
		return true;
	}
}


function check_registration_field(f) {
	var im;
	if (f.value) im = '/images/green_star16.png'
	else im = '/images/yellow_star16.png';
	
	var id = 'ERR' + f.name.substr(2);

	var i = document.getElementById(id);
	if (i) i.setAttribute('src', im)

}


function check_registration_password2 (f ) {
	var pass = f.value;
	if (!pass) {
		document.getElementById('password2_ok').style.visibility = 'hidden';
		document.getElementById('password2_error').innerHTML = '&nbsp;';
		return false;
	}
	
	if ( pass == document.getElementById('register_password_input').value ) {
			if (pass.length > 6 )	{
				document.getElementById('password2_ok').style.visibility = 'visible';
				document.getElementById('password2_error').innerHTML = '&nbsp;';
				return true;
			} else {
				return false;
			}
	} else {
			document.getElementById('password2_ok').style.visibility = 'hidden';
			document.getElementById('password2_error').innerHTML = 'Passwords do not match';
			return false;
	}
}

function  check_update_password(f) {
	var pass = f.value;
	if (!pass) {
		document.getElementById('old_password_ok').style.visibility = 'hidden';
		document.getElementById('old_password_error').innerHTML = '&nbsp;';
		return false;
	} else if (pass.length > 6 ) {
			document.getElementById('old_password_ok').style.visibility = 'visible';
			document.getElementById('old_password_error').innerHTML = '&nbsp;';
		} else {
			document.getElementById('old_password_ok').style.visibility = 'hidden';
			document.getElementById('old_password_error').innerHTML = 'Password should be at least 7 symbols long';
	}
	
}

function checkRegisterForm(f) {

	if (f.elements['USERlogin'].value == '') {
		alert('Please provide email address');
		return false;
	}
	
	var pass = f.elements['USERpassword'].value;
	if ( pass.length > 6 && pass == f.elements['pass2'].value ) {
		return true;
	} else {
		alert("There is a problem with your password.\nPlease ensure that your password at least 7 symbols and that you entered it correctly in the confirm password box.");
		return false;
	}

}

function updateCatalogues(f) {
    	f.style.backgroundColor = 'yellow';
    	
    	var updateProductCallback = {
			success : function(o) {
				var r = eval ( '(' + o.responseText + ')' );
				if (r.error == null || r.rows > 0) {
                    f.style.backgroundColor = 'white'; 
				} else {
					f.style.backgroundColor = 'red';
					f.checked = ! f.checked;
				}
			},
			failure : function(o) {
			}
		};
		

		YAHOO.util.Connect.asyncRequest('POST', '/ajax/', updateProductCallback, 'ajax=tickCatalogue&cat=' + f.name + '&val=' + f.checked);
}


//prebasket

function addPrebasketOptions (code) {
	if ( !prebasketOptionsPanel ) {
		prebasketOptionsPanel = new YAHOO.widget.Panel("prebasketOptions", {
		width:"500px", 
		fixedcenter: true, 
		constraintoviewport: true, 
		underlay:"shadow", 
		close:true, 
		modal: true,
		visible:false, 
		// effect:{effect:YAHOO.widget.ContainerEffect.FADE, duration: 2},
		draggable:true} );
	
		prebasketOptionsPanel.setHeader("Please select product options below.");
		prebasketOptionsPanel.hide = function () {
			YAHOO.widget.Panel.superclass.hide.call(this);
			this.setBody(' ');
			prebasketOptionsPanel.render(document.body);
		}
	}
	
	var getOptionsCallback = {
			success : function(o) {
				prebasketOptionsPanel.setBody(o.responseText);
				prebasketOptionsPanel.render(document.body);
				prebasketOptionsPanel.show();
			},
			failure : function(o) {
				alert('Sorry, can not display product options. Please try again later.');
			}
	};
	
	YAHOO.util.Connect.asyncRequest('GET', '/prebasket_options.html?code=' + code, getOptionsCallback);
}


function showLoading(mess) {
	if ( !loadingPanel ) {
		loadingPanel = new YAHOO.widget.Panel("loadingPanel", {
		width:"650px", 
		fixedcenter: true, 
		constraintoviewport: true, 
		underlay:"shadow", 
		close:false, 
		modal: true,
		visible:false, 
		draggable:true} );
	
		loadingPanel.setHeader("Please wait.");
		loadingPanel.hide = function () {
			YAHOO.widget.Panel.superclass.hide.call(this);
			this.setBody(' ');
			loadingPanel.render(document.body);
		}
	}
	var message;
	if ( mess ) {
		message = mess;
	} else {
		message = '<h3>Loading.... Please wait.</h3>';
	}
	loadingPanel.setBody(message);
	loadingPanel.render(document.body);
	loadingPanel.show();
}

function hideLoading() {
	if (loadingPanel) loadingPanel.hide();
}

function iecompattest(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}


function AddToBasketRecommended(code) {
	if ( !prebasketRecPanel ) {
		prebasketRecPanel = new YAHOO.widget.Panel("prebasketRecPanel", {
		width: "650px", 
		fixedcenter: true, 
		constraintoviewport: true, 
		underlay: "shadow", 
		close:true,
		modal: true,
		visible:false,
		draggable:true} );
	
		prebasketRecPanel.setHeader("Please select products below.");
		prebasketRecPanel.hide = function () {
			YAHOO.widget.Panel.superclass.hide.call(this);
			this.setBody(' ');
			prebasketRecPanel.render(document.body);
		}
	}

	prebasketRecPanel.setBody('<h3>Loading.... Please wait.</h3>');
	prebasketRecPanel.render(document.body);
	prebasketRecPanel.show();

	var getOptionsCallback = {
			success : function(o) {
				prebasketRecPanel.setBody(o.responseText);
				prebasketRecPanel.cfg.setProperty("fixedcenter", false);
				prebasketRecPanel.render();
				// Now setup tooltips !!!
				setupTooltips('recomtt');
				prebasketRecPanel.show();
				if ( ! isNaN(parseInt(document.documentElement.scrollTop)) ) {
					prebasketRecPanel.cfg.setProperty("constraintoviewport", false);
					prebasketRecPanel.cfg.setProperty("y", document.documentElement.scrollTop + 10 );
				}
			},
			failure : function(o) {
				alert('Sorry, can not display recommended products. Please try again later.');
			}
	};
	
	YAHOO.util.Connect.asyncRequest('GET', '/prebasket_recommended.html?code=' + code, getOptionsCallback);
}

var $d = YAHOO.util.Dom, 
$e = YAHOO.util.Event, 
$c = YAHOO.util.Connect,
$w = YAHOO.widget,
readmePanel = false,
imagePanel = false,
loadingMessage = '<p class="loading-content">loading ...</p>',
counter = 0;

var launchReadme = function(url, title, width) {
	//$e.preventDefault(e);
	if(readmePanel && readmePanel.url == url) {
		readmePanel.show();
	} else {
		try {
			var w = "850px";
			if ( width ) w = width;
			readmePanel = new $w.Panel("readmePanel", {
				"width":w,
				"close":true,
				"constraintoviewport":true,
				"draggable":true,
				"modal":true,
				"visible":false,
				"x":0
			});
			readmePanel.setHeader(title);
			readmePanel.setBody(loadingMessage);

			//readmePanel.setFooter("[<a href='" + url + ">direct link to the text you see</a>]");
			readmePanel.render(document.body);
			readmePanel.beforeShowEvent.subscribe(function(){
				$d.setStyle("readmePanel","display","block");
				readmePanel.body.style.maxHeight = Math.floor($d.getViewportHeight()*.77) + "px";
				if(readmePanel.browser=="ie") {
					readmePanel.body.style.height = Math.floor($d.getViewportHeight()*.77) + "px";
				};
				readmePanel.center();
				//if this is the first time we're rendering it, it
				//will have no content and so will center too low
				//in the screen; move it up on the first show and
				//let the centering take care of the centering on the
				//x axis.
				if(counter++ == 0) {
					readmePanel.cfg.setProperty("y",30); 
					readmePanel.render();
				}
			});
			readmePanel.hideEvent.subscribe(function(){$d.setStyle("readmePanel","display","none");});
			readmePanel.renderEvent.subscribe(function(){readmePanel.sizeMask();});
			
			readmePanel.show();
			readmePanel.url = url;
																					 
			$c.asyncRequest("GET", url, {
				success:processReleaseNotes,
				failure:processFailedXHR,
				argument: {
					"readmePanel":readmePanel
				}
			});
			
			var escapePanel = function() {
				if(readmePanel) {
					readmePanel.hide();	
				}
			}
			var kl = new YAHOO.util.KeyListener(document, 
				{keys: [27]}, 
				{fn:escapePanel});
			kl.enable();
		} catch(e) {
			location.href=url;
			//alert(e);
		}
}

}
$e.on("releasenotes", "click", launchReadme);

var processReleaseNotes = function(o) {
	rt = o.responseText;
	o.argument.readmePanel.setBody( rt );
	o.argument.readmePanel.render();
}

var processFailedXHR = function(o) {
	alert('display failed');
}

var showImage = function(url, width, height) {
	if(! imagePanel) {
			imagePanel = new $w.Panel("imagePanel", {
				"width":"800px",
				"close":true,
				"constraintoviewport":true,
				"draggable":true,
				"modal":true,
				"visible":false,
				"fixedcenter": true
			});
			imagePanel.setHeader('IMAGE');
			imagePanel.render(document.body);
	}

		var i = document.createElement('img');
		i.setAttribute('width', width);
		i.setAttribute('height', height);
		i.setAttribute('src', url);
		$e.on(i, "click", function() {imagePanel.hide()});
		imagePanel.setBody(i);
		imagePanel.cfg.setProperty("width",(16 + width) + 'px'); 
		imagePanel.render();
		imagePanel.show();
	
}













/* Tooltip */

YAHOO.widget.FSProductTooltip = function ( id, config ) {
	this.shown = false;
	this.currentContext = null;
	YAHOO.widget.FSProductTooltip.superclass.constructor.call(this, id, config);

}

YAHOO.extend( YAHOO.widget.FSProductTooltip, YAHOO.widget.Tooltip, {

onHideReset : function (p_sType, p_aArgs, p) {
	alert(p);
},

_removeEventListeners: function() {
	YAHOO.widget.FSProductTooltip.superclass._removeEventListeners.call(this);
	var oElement = this.element;
 	                 YAHOO.util.Event.removeListener(oElement, "mouseover", 
                            this.onContextMouseOver);

                     YAHOO.util.Event.removeListener(oElement, "mousemove", 
                            this.onContextMouseMove);

                     YAHOO.util.Event.removeListener(oElement, "mouseout", 
                            this.onContextMouseOut);
 
 },
 
configContext: function (type, args, obj) {
	YAHOO.widget.FSProductTooltip.superclass.configContext.call(this, type, args, obj);

		var oElement = this.element;
                            YAHOO.util.Event.on(oElement, "mouseover", 
                                this.onContextMouseOver, this);

                            YAHOO.util.Event.on(oElement, "mousemove", 
                                this.onContextMouseMove, this);

                            YAHOO.util.Event.on(oElement, "mouseout", 
                                this.onContextMouseOut, this);
},

onContextMouseMove: function (e, obj) {
	return; // do nothing
},

onContextMouseOver: function (e, obj) {
	YAHOO.widget.FSProductTooltip.superclass.onContextMouseOver.call(this, e, obj);
	if ( ! obj.shown ) {
		var delta = ( e.target != obj.element ) ? 20 : 0;
	        obj.pageX = YAHOO.util.Event.getPageX(e) + delta;
            obj.pageY = YAHOO.util.Event.getPageY(e);
            obj.shown = true;
    }
},

doShow: function (e, context) {
        
            var yOffset = 25,
            me = this;
            
            /*if (YAHOO.env.ua.opera && context.tagName && 
                context.tagName.toUpperCase() == "A") {

                yOffset += 12;
            } */
        
            return setTimeout(function () {
                        	//	alert(context.id + ' ' + me._tempTitle);

                	if ( me.currentContext != context && context.id != me.id ) {
                		
                    	me.setBody(document.getElementById(context.id + '_content').innerHTML);
                    	me.currentContext = context;
                    	me.shown = false;
                    }

        
                me.moveTo(me.pageX, me.pageY);

                /*if (me.cfg.getProperty("preventoverlap")) {
                    me.preventOverlap(me.pageX, me.pageY);
                }*/
        
                YAHOO.util.Event.removeListener(context, "mousemove", 
                    me.onContextMouseMove);
        
                me.show();
                me.hideProcId = me.doHide();

            }, this.cfg.getProperty("showdelay"));
        
  },

hide : function () {
	YAHOO.widget.FSProductTooltip.superclass.hide.call(this);
	this.shown = false;
	this.currentContext = null;
}

});

function setupTooltips (id) {
	var targets = [];
	// id = table id
	var tr;
	try { tr  = document.getElementById(id).getElementsByTagName('tbody')[0].getElementsByTagName('tr'); } catch(e) {return};
	for ( i = 0; i < tr.length; i++) {
		var td = tr[i].getElementsByTagName('td');
		for (j=0; j<td.length; j++) {
			if (td[j].className.search('product-preview') > -1 ) targets.push(td[j]);
		}
	}

	var myTooltip = new YAHOO.widget.FSProductTooltip("FSTooltip" + id , {  
	    context: targets,
	    text: '...', 
	    autodismissdelay : 60000,
	    preventoverlap : false,
	    showDelay:0 } ); 

}

function setupPPMenus () {
	for (a in document.forms) {
		if (document.forms[a].name && document.forms[a].name.search('pp_') == 0) {
			setupPP(document.forms[a]);
			setupTooltips('pp_table_' + document.forms[a].name );
		}
	}
}


/* setup PP prices */
function setupPP (frm) {
	var ppa = new Array();

	var pp1 = frm.elements['pp1'].value;
	var pp2 = frm.elements['pp2'].value;
	ppa.push(pp1);
	ppa.push(pp2);
	var pp3 = '';
	try { pp3 = frm.elements['pp3'].value; ppa.push(pp3) } catch(e) {};
	
	
	frm.elements['prods'].value = ppa.join(',');
	var id1 = 'option_pp_' + pp1 + '_';
	var id2 = 'option_pp_' + pp2 + '_';
	var id3 = 'option_pp_' + pp3 + '_';
	
	var id = frm.name + '_';

	var price = parseFloat(document.getElementById(id1 + 'price').innerHTML) + parseFloat(document.getElementById(id2 + 'price').innerHTML);
	try { price = price + parseFloat(document.getElementById(id3 + 'price').innerHTML) } catch (e) {};
	
	document.getElementById(id + 'price').innerHTML = price.toFixed(2);
	
	var RRP = parseFloat(document.getElementById(id1 + 'RRP').innerHTML) + parseFloat(document.getElementById(id2 + 'RRP').innerHTML);
	try { RRP = RRP + parseFloat(document.getElementById(id3 + 'RRP').innerHTML) } catch (e) {};
	
	document.getElementById(id + 'RRP').innerHTML = RRP.toFixed(2);
	
	if ( price < RRP ) {
		var save = RRP - price;
		document.getElementById(id + 'discount_price').innerHTML = save.toFixed(2);
		var save_p = (1 - price / RRP) * 100;
		 document.getElementById(id + 'discount').innerHTML = save_p.toFixed(2);
		 document.getElementById(id + 'discounts').style.display = 'block';
	} else {
		document.getElementById(id + 'discounts').style.display = 'none';
	}
}

function recover_password(url) {
	readmePanel = false;
	var e;
		try { e = document.getElementById('loginfield').value;} catch(e) {};
	launchReadme(url + '/account/recover-pass.html?email=' + e,'Password Recovery','400px');
	return false;
}

function get_product_delivery_options(code, sel) {

		var AddCallback = {
				success : function(o) {
					var r = eval ( '(' + o.responseText + ')' );
					if (r.error == null) {
						var b = document.getElementById('FSdeliveryOptionsBody');
						if ( !b ) return;
						
						while( b.hasChildNodes() ) { b.removeChild( b.lastChild ); }
						
						for (var i = 0; i < r.delivery.length; i++) {
						 	var tr = document.createElement('tr');
						 	var td = document.createElement('td');
						 	td.style.textAlign='left';
						 	td.innerHTML = r.delivery[i].title;
						 	tr.appendChild(td);
						 	
						 	td = document.createElement('td');
						 	td.style.textAlign='right';
						 	td.innerHTML = '&pound;' + r.delivery[i].price2;
						 	tr.appendChild(td);
						 	b.appendChild(tr);
						}
					} else {
						alert(r.error);
					}
				},
				failure : function(o) {
					alert('AJAX connectivity problem :-(');
				}
			};

var dest = sel.value;
YAHOO.util.Connect.asyncRequest('POST', '/ajax/', AddCallback, 'ajax=get_delivery&code=' + code + '&destination=' + dest);
}

function process_discounted_supplements(cb,code) {
	var f = document.getElementById('form_' + code);
	if ( cb.checked ) {
		f.elements.discounted_hints.value = code + '|' + cb.name.substr(6);
	} else {
		f.elements.discounted_hints.value = '';
	}

}


function addTrack (tp, code) {

	var w = '300px';
	
	var panel = new YAHOO.widget.SimpleDialog( 'TrackingPanel',
		{ width : w,
		fixedcenter : true,
		underlay: "shadow", 
		close : true, 
		visible : true, 
		constraintoviewport : true,
		modal: true
		}
	);
	panel.setHeader("Starting to track...");
	panel.setBody('Please wait. Sending tracking request to the server...');
	var myButtons = [ 
		{ text:"Close",handler: panel.hide }
	];
	panel.cfg.queueProperty("buttons", myButtons);
	
	panel.render(document.body);
	panel.show();

		var TrackCallback = {
				success : function(o) {
					var r = eval ( '(' + o.responseText + ')' );
					if (r.result > 0) {
						panel.setBody('Your tracking request has been processed.' + '<br> The ' + 
						(tp == 'dept' ? 'department' : tp == 'ctgr' ? 'category' : 'product') + ' <b>' + (tp == 'prod' ? code : r.category) + '</b> is being tracked for you now.'
						);
						document.getElementById('TrackingStatusContainer').innerHTML = 
							'You are currently tracking this ' + (tp == 'dept' ? 'department' : tp == 'ctgr' ? 'category' : 'product');
						document.getElementById('TrackingStatusContainer1').innerHTML = document.getElementById('TrackingStatusContainer').innerHTML;
					} else {
						panel.setBody('There was an error while we were enabling the track. Please try again.');
					}
				},
				failure : function(o) {
					panel.setBody('The request is timed out. Please reload the page and try again.');
				}
		};
			

	var query = 'ajax=AddTrack&tp=' + tp + '&code=' + code;
	YAHOO.util.Connect.asyncRequest('POST', '/ajax/', TrackCallback, query);
}

function removeTrack (tid) {

	var w = '300px';
	
	var panel = new YAHOO.widget.SimpleDialog( 'TrackingPanel',
		{ width : w,
		fixedcenter : true,
		underlay: "shadow", 
		close : true, 
		visible : true, 
		constraintoviewport : true,
		modal: true
		}
	);
	
		panel.FSuntrack=function () {
		var TrackCallback = {
				success : function(o) {
					var r = eval ( '(' + o.responseText + ')' );
					if (r.result > 0) {
						document.getElementById('tracked-item' + tid).style.display = 'none';
						panel.hide();
					} else {
						panel.setBody('There was an error while we were stopping the track. Please try again.');
					}
				},
				failure : function(o) {
					panel.setBody('The request is timed out. Please reload the page and try again.');
				}
		};
			

	var query = 'ajax=RemoveTrack&tid=' + tid;
	YAHOO.util.Connect.asyncRequest('POST', getAjaxLink(), TrackCallback, query);
	}
	
	panel.setHeader("Preparing to untrack...");
	panel.setBody('Please confirm you want to untrack the item');
	var myButtons = [ 
		{ text:"Confirm",handler: panel.FSuntrack },
		{ text:"Cancel",handler: panel.hide }
	];
	panel.cfg.queueProperty("buttons", myButtons);
	
	panel.render(document.body);
	panel.show();

}

function FSSavePreview( dlg, editor) {
	dlg.hide();
	
	var displayReviewCallback = function( req, options ) {
		var r = eval ( '(' + req.responseText + ')' );
		if ( r.error ) {
			alert( r.error );
		} else {
			// FIXME
			alert('Review is saved.');
 			window.location = window.location;
		}
	};
	reviewConnection.request({params: { ajax: 'savePageBlock', selector: editor.fs_code, pbid: editor.fs_pbid, val1 : editor.getValue() }, success: displayReviewCallback});

	
}


function FSFetchPreview(editor) {
	if ( editor.fs_pbid == 'new' ) return;
	
	var displayReviewCallback = function( req, options ) {
		var r = eval ( '(' + req.responseText + ')' );
		if ( r.error ) {
			alert( r.error );
		} else {
			// FIXME
			editor.setValue(r.val1);
		}
	};
	
	editor.setValue('<div style="text-decoration: blink">Loading review... Please wait...</div>');
	reviewConnection.request({params: { ajax: 'getPageBlock', selector: editor.fs_code, pbid: editor.fs_pbid }, success: displayReviewCallback});

}

function FSCommitReview(code, pbid) {
	if ( ! reviewConnection ) {
	 reviewConnection = new Ext.data.Connection({method: 'POST', url: '/ajax/', extraParams: {page: 'product' , place: 'review', template: 'Free'}});
	}
	
	var displayReviewCallback = function( req, options ) {
		var r = eval ( '(' + req.responseText + ')' );
		if ( r.error ) {
			alert( r.error );
		} else {
			// FIXME
			alert('Review is published on the live site.');
			window.location = window.location;
		}
	};
	reviewConnection.request({params: { ajax: 'commitPageBlocks', selector: code, pbid: pbid }, success: displayReviewCallback});

}

function FSEditReview (code, pbid) {

	if ( ! reviewConnection ) {
	 reviewConnection = new Ext.data.Connection({method: 'POST', url: '/ajax/', extraParams: {page: 'product' , place: 'review', template: 'Free'}});
	}


var dlg = new Ext.Window({
				title: "Review editor",
				width: 800,
				height: 600,
				minWidth: 100,
				minHeight: 100,
				layout: "fit",
				modal: false,
				resizable: true,
				maximizable: true,
				closeAction: "close",
				hideMode: "offsets",
				constrainHeader: true,
				buttons: [
				{
					text: "Submit",
					handler: function() {
						FSSavePreview(dlg, Ext.getCmp( "fs_review_editor" ));
					}
				}
				],
				items: [
				{
					id: "myform",
					xtype: "form",
					autoScroll: true,
					bodyStyle: '',
					border: false,
					bodyBorder: false,
					hideLabels: true,
					layout: 'fit',
					items: [
					{
						name: "richtext",
						fieldLabel : 'Review',
						xtype: "tinymce",
						'anchor': '99% 99%',
						fs_code : code,
						fs_pbid : pbid,
						id : "fs_review_editor",
						tinymceSettings: {
							theme : "advanced",
							plugins: "safari,pagebreak,style,layer,table,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,noneditable,visualchars,nonbreaking,xhtmlxtras,template",
							theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
							theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
							theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|",
							theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak",
							theme_advanced_toolbar_location : "top",
							theme_advanced_toolbar_align : "left",
							theme_advanced_statusbar_location : "bottom",
							theme_advanced_resizing : false,
							extended_valid_elements : "a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]",
							template_external_list_url : "example_template_list.js",
							inline_styles : true
						},
						listeners: {
							'render' : function(editor) { FSFetchPreview(editor); return true; }
						},
						value: "<h1>Please Provide your review</h1>"
					}
					]
				}					
				]
			});
		
			dlg.show( document.body );

}



function showSEOtab(id) {
	for (i =1; i < 4; i++){
		document.getElementById("seo_li_" + i).style.borderBottom="solid 1px gray";
		document.getElementById("tabs-" + i).style.display="none";
	}
	document.getElementById("seo_li_" + id).style.borderBottom="none";
	document.getElementById("tabs-" + id).style.display="block";
}

