var system = '/cgi-bin/ecommerce/system.pl';
var search_script = '/cgi-bin/ecommerce/search.pl';
var product_script = '/cgi-bin/ecommerce/product.pl';
var event_script = '/cgi-bin/ecommerce/event.pl';


var advert_widget = '/cgi-bin/infxwidgets/widget-adverts.pl';
var basket_widget = '/cgi-bin/infxwidgets/widget-basket.pl';
var login_widget = '/cgi-bin/infxwidgets/widget-login.pl';
var profile_widget = '/cgi-bin/infxwidgets/widget-profile.pl';
var review_widget = '/cgi-bin/infxwidgets/widget-review.pl';
var payment_control = '/cgi-bin/payment-control.pl';
var newsletter_signup = '/cgi-bin/newsletter.pl';
var send_info = '/cgi-bin/send-info.pl';

var system_state = '';
var basket_state = '';
var last_search = '';
var search_timeout;
var ticket_array = {};
var concession_array = {};
var multi_add_items = new Array();

function rtnEl(id){
	return document.getElementById(id);
}

function submit_form(json){
	var frmObj = rtnEl(json.frmname);
	if(frmObj){
		for(var n in json){
			var obj = rtnEl(n);
			if(obj){
				obj.value = json[n];
			}else if(n != 'frmname' && n != 'val_list' && n != 'error_panel'){
				alert("Can't Set "+n+" in "+json.frmname+" to "+json[n]);
			}
		}
		if(json.val_list){
			if(verifylist(frmObj,json.val_list,json.error_panel)) frmObj.submit();
		}else{
			frmObj.submit();
		}
	}else{
		alert("Can't find form with name "+json.frmname);
	}
}

function dynamicaly_post_form(json){
	//alert('dynamicaly_post_form');
	var frmObj = document.createElement('form');
	frmObj.setAttribute('action',json.action);
	frmObj.setAttribute('method','POST');
	frmObj.name = 'dynamic_form';
	frmObj.id = 'dynamic_form';
	
	for(var p in json.elements){
		var obj = rtnEl(json.elements[p]);
		if(obj){
			var input = document.createElement("input");
			input.name = obj.name;
			if(json.override){
				input.setAttribute('value',((json.override[obj.name])?json.override[obj.name]:obj.value));
			}else{
				input.setAttribute('value',obj.value);		
			}
			input.setAttribute('type','hidden');
			//alert('name: '+obj.name+' value: '+obj.value);
			frmObj.appendChild(input);
		}
	}
	//alert(frmObj.innerHTML);
	
	document.body.appendChild(frmObj);
	//alert("FORM: "+rtnEl('dynamic_form'));
	document.forms['dynamic_form'].submit();
}

function signup_for_newsletter(type,message){
	if(rtnEl('signup_name')){ rtnEl('signup_name').value = (rtnEl('signup_name').value == 'Your Name')?"":rtnEl('signup_name').value; }
	if(rtnEl('signup_email')){ rtnEl('signup_email').value = (rtnEl('signup_email').value == 'your@email.com')?"":rtnEl('signup_email').value; }
	if(validate_single_field(rtnEl('signup_email'),{'signup_email':'email'})){ 
		var name = (rtnEl('signup_name'))?rtnEl('signup_name').value:rtnEl('signup_email').value;
		var json = { ac:'subscribe', json:1, name:name, email:rtnEl('signup_email').value, signup_type:type, successtext:escape(message)};
		ajax_post_request(newsletter_signup,json,"newsletter_callback('newsletter_signup',http_request.responseText);");
	}
}

function newsletter_callback(id,jsonstr){
	var json;
	eval("json = "+jsonstr+";");
	if(rtnEl(id)) rtnEl(id).innerHTML = "<b>"+json.title+"</b><br/>"+json.message;
}

function send_page_to_a_friend(message){
	if(rtnEl('friend_email')){ rtnEl('friend_email').value = (rtnEl('friend_email').value == 'friends.name@email.com' || rtnEl('friend_email').value == 'their-name@email.com')?"":rtnEl('friend_email').value; }
	if(validate_single_field(rtnEl('friend_email'),{'friend_email':'email'})){ 
		var json = { ac:'send_to_a_friend', friends_email:rtnEl('friend_email').value, recommended_page:location.href, successtext:message};
		ajax_post_request(send_info,json,"ajax_fill_data('send_to_a_friend',http_request.responseText);");
	}
}

function findPos(obj){		
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
	return [curleft,curtop];
}

function keyCheck(e,checkcode){
	var keycode = (window.event)?event.keyCode:e.keyCode;
	//alert(keycode + " <> "+ checkcode);
	return (keycode == checkcode)?true:false;
}

function join_objects(){
	for(var x=1;x<arguments.length;x++){
		for(var p in arguments[x]){
			arguments[0][p] = arguments[x][p];
		}
	}
}

function BC_datachange(obj,lcb_fieldname){
	if(rtnEl('datachange')) rtnEl('datachange').value = 1;
	rtnEl(lcb_fieldname).value = '';
}

function toggle_panels(id_list,force){
	var id_array = id_list.split(',');
	for(var x=0;x<id_array.length;x++){
		toggle_panel(id_array[x],force);
	}
}

function toggle_panel(id,force){
	var obj = rtnEl(id);
	if(obj) obj.style.display = (obj.style.display == 'none' || force == 1)?'block':'none';
}

function toggle_panel_visibility(id,force){
	var obj = rtnEl(id);
	if(obj) obj.style.visibility = (obj.style.visibility == 'hidden' || force == 1)?'show':'hidden';
}

function panel_control(id,display){
	var obj = rtnEl(id);
	if(obj) obj.style.display = display;
}

function load_page(href){
	var check = location.href;
	check = check.replace(location.protocol+"//"+location.host,"");
	if(href != check && location.href != href) location.href = href;
}

function login_refresh(){
	_infx.popup.layer(0,'');
	window.location.reload(true);
}

function login_popup(json){
	if(json.ac != ''){
		ajax_post_request(login_widget,json,"popup_callback(http_request.responseText)");
	}
}

function profile_popup(json){
	if(json.ac != ''){
		if(json.sendform) add_form_to_json(json,json.sendform);		//ADD FORM CONTENTS TO POST
		ajax_post_request(profile_widget,json,"popup_callback(http_request.responseText)");
	}
}

function popup_callback(jsonstr){
	var json;
	eval("json = "+jsonstr+";");

	if(json.ac == 'display_dialog'){
		_infx.popup.layer(1,json.dialog_html);
	}else if(json.ac == 'refresh'){
		window.location.reload(true);
	}else if(json.ac == 'safe_refresh'){
		var href = location.href;
		href = href.replace(/#.*$/,'');
		href = href.replace(/\?.*$/,'');
		location.href = href+'?time='+(new Date()).getTime();
	}
}

function option_list_popup(json){
	if(json.ac != ''){
		ajax_post_request(product_script,json,"option_list_callback(http_request.responseText)");
	}
}

function option_list_callback(jsonstr){
	var json;
	eval("json = "+jsonstr+";");

	if(json.ac == 'display_dialog'){
		_infx.popup.layer(1,json.dialog_html);
	}
}


function add_form_to_json(json,formid){
	var frmobj = rtnEl(formid);
	var elements = frmobj.getElementsByTagName('input');
	for(var x=0;x<elements.length;x++){
		json[elements[x].id] = elements[x].value;		//Copy billing address info to delivery
	}
	
	var selectors = frmobj.getElementsByTagName('select');
	for(var x=0;x<selectors.length;x++){
		json[selectors[x].id]  = selectors[x].value;
	}
}

function write_review_popup(json){
	if(json.ac != ''){
		ajax_post_request(review_widget,json,"write_review_callback(http_request.responseText)");
	}
}

function write_review_callback(jsonstr){
	var json;
	eval("json = "+jsonstr+";");

	if(json.ac == 'display_dialog'){
		_infx.popup.layer(1,json.dialog_html);
		jsQ('input[@type=radio].star').rating();		//RE-RUN THE
	}else if(json.ac == 'refresh'){
		window.location.reload(true);
	}
}

function quote_request(json){
	if(json.ac != ''){
		ajax_post_request(product_script,json,"quote_request_callback(http_request.responseText)");
	}
}

function quote_request_callback(jsonstr){
	var json;
	eval("json = "+jsonstr+";");

	if(json.ac == 'display_dialog'){
		_infx.popup.layer(1,json.dialog_html);
	}
}

function control_payment_gateways(json){
	var payment_type = rtnEl('payment_type');
	//alert('function control_payment_gateways '+json.load_form);
	if((json.type == '' || json.type == undefined) && payment_type) json.type = payment_type.value;
	else payment_type.value = json.type; 

	if(json.highlight == 1){
		var payment_method_fieldset = rtnEl('payment_method');
		var options = payment_method_fieldset.getElementsByTagName('div');
		for(var x=0;x<options.length;x++){
			options[x].className = (options[x].id == 'payment_gateway_'+json.type)?'option_on':'option_off';
		}
	}
	
	if(json.reset_selector == 1){	
		//Clear card selector if a payment option is manually selected
		var card_select = rtnEl('select_card_detail_id');
		if(card_select) card_select.selectedIndex = 0;
	}

	if(json.submit == 1){
		_infx.popup.masker(1);	
		ajax_request_form('dynamic_form_div',json.type);
	}else if(json.load_form){								//Need to load a form		
		var params = {};
		params.ac = 'load_form';
		params.form_type = json.load_form;
		params.type = json.type;
		if(rtnEl('mode')){
			params.mode = rtnEl('mode').value;
		}
		//_infx.popup.loading(1);
		ajax_post_request(payment_control,params,"callback_fill_payment_form('"+json.type+"','"+json.highlight+"',http_request.responseText);");
	}else {
		if(json.type == 'paypal' || json.type == 'google'){														//Hide any loaded forms
			var payment_form_div = rtnEl('payment_form');
			payment_form_div.innerHTML = '';
		}
		if(json.highlight == 1){				//       BC 2009 changed this display_checkout button to be shown for all json.types , NOT just paypal or google
			display_checkout_button(json.type);
		}
	}
}

function display_checkout_button(type){
	var checkout_button = rtnEl('checkout_button');
	if(checkout_button){
		var checkout_button_text = rtnEl('checkout_button_text');
		if(checkout_button_text) checkout_button_text.innerHTML = ((type == 'paypal')?'Checkout with Paypal':((type == 'google')?"Checkout with Google":"Checkout"));
		if(type != '')	checkout_button.onclick = function(){ submit_form({'frmname':'main_form','val_list':validate,'ac':'process_payment','ac_type':'save_client'}); }
		else			checkout_button.onclick = function(){ }
		checkout_button.title = ((type == '')?'Please select a payment method before clicking on checkout.':'Click here to continue.');
		_infx.popup.setOpacity(checkout_button,((type != '')?100:40));
		if(checkout_button.style) checkout_button.style.cursor = ((type != '')?'pointer':'default');
	}
}

function callback_fill_payment_form(type,highlight,jsonstr){
	var json;
	eval("json = "+jsonstr+";");
	ajax_fill_data('payment_form',json.html);
	if(highlight == 1){
		display_checkout_button(type);
	}
	_infx.popup.loading(0);
}

function search_control(json){
	if(json.searchtxt != ''){
		json.searchtxt = unescape(json.searchtxt);
		if(json.searchtxt != last_search || (json['search._start'] || json['search._limit'])){
			if(rtnEl('search_spinner')) rtnEl('search_spinner').style.visibility = (json.searchtxt != '')?'visible':'hidden';
			last_search = json.searchtxt;
			json.mode = 'ajax';

			//get
			//ajax_request(search_script + make_url_params(json),"display_search_results('search_results',http_request.responseText);");
			
			//post
			ajax_post_request(search_script,json,"display_search_results('search_results',http_request.responseText);");
		}
	}else{
		display_search_results('search_results','');	//Clear search results
	}
}

function display_search_results(fill_id,jsonstr){
	var json;
	if (jsonstr == '') return;
	eval("json = "+jsonstr+";");
	
	if (document.getElementById(fill_id)){
		if(rtnEl('search_spinner')) rtnEl('search_spinner').style.visibility = 'hidden';
		document.getElementById(fill_id).innerHTML = json.content + json.hidden;
	}
}

function modify_basket_item(json){
	json.ac = 'modify_item';
	
	var validate = {};
	validate[json.validate] = 'numeric';
	delete json.validate;				//clean up validate property
	
	var container_div;
	//alert(json.element_container);
	if(json.element_container != ''){
		container_div = rtnEl(json.element_container);
	}
	
	if(!container_div) container_div = rtnEl('detail');
	
	if(container_div && json.ignore != 'options'){
		var elements = container_div.getElementsByTagName('select');
		//alert(elements.length);
		for(var x=0;x<elements.length;x++){
			json[elements[x].id] = elements[x].value;
			//alert(json[elements[x].id] + " = "+elements[x].value)
		}
	}
	
	if(validate_single_field(rtnEl(json.validate),validate)){
		_infx.popup.layer(0,'');
		//_infx.popup.loading(1);
		mini_basket_spinner(1);
		ajax_post_request(basket_widget,json,"basket_callback(http_request.responseText);");
	}
}

function modify_basket_quantity(json){
	json.ac = 'modify_quantity';
	
	var validate = {};
	validate[json.validate] = 'numeric';
	
	if(validate_single_field(rtnEl(json.validate),validate)){
		//_infx.popup.loading(1);			//Loading overlay on
		mini_basket_spinner(1);
		delete json.validate;				//clean up validate property
		if(json.mini){
			ajax_post_request(basket_widget,json,'mini_basket_control(\''+json.mode+'\');');
		}else{
			ajax_post_request(basket_widget,json,'update_basket();');
		}
	}
}

function remove_promo_code(json){
	json.ac = 'remove_promo_code';	
	var confirm = window.confirm('Do you really want to remove this promotional code from your order?');
	if(confirm) ajax_post_request(basket_widget,json,'update_basket();');
}

function add_promo_code(json){
	json.ac = 'add_promo_code';	
	var validate = {};
	validate[json.validate] = 'text';
	if(validate_single_field(rtnEl(json.validate),validate)){
		if(json.popup_message){
			ajax_post_request(basket_widget,json,'promo_callback_with_popup_message(http_request.responseText);');
		}else{
			ajax_post_request(basket_widget,json,'promo_callback(http_request.responseText);');
		}
	}
}

function promo_callback(jsonstr){
	var json;
	eval("json = "+jsonstr+";");
	update_basket();
	display_message(json.message,json.message_style);	
}

function promo_callback_with_popup_message(jsonstr){
	var json;
	eval("json = "+jsonstr+";");
	update_basket();
	_infx.popup.layer(1,"<div id='popup_form' style='width:450px;padding:0px;'><div class='close' onmousedown=\"_infx.popup.layer(0,'');\" title='Close this popup'>&nbsp;<\/div><h2 style='margin:0px;'>Add Promo Code<\/h2><div id='message' style='margin:0px;background-color:"+json.message_style+";width:437px;'>"+json.message+"<\/div><div class='clear'><\/div><\/div>");
}


function remove_basket_item(json){
	json.ac = 'remove_from_basket';	
	if(json.mini){		
		//_infx.popup.loading(1);			//Loading overlay on
		mini_basket_spinner(1);
		ajax_post_request(basket_widget,json,'mini_basket_control(\''+json.mode+'\');');
	}else{
		//_infx.popup.loading(1);			//Loading overlay on
		mini_basket_spinner(1);
		ajax_post_request(basket_widget,json,'update_basket();');
	}
}

function collect_items(json){
	var obj = rtnEl(json.target);
	if(obj){
		var cnt = 0;
		var elements = obj.getElementsByTagName('input');
		for(var x=0;x<elements.length;x++){
			if(elements[x].name.indexOf("qty_") != -1){
				var bits = elements[x].name.match(/.*qty_(.*)$/);
				if(elements[x].value > 0 && bits[1]){
					var options = rtnEl('option_string_'+bits[1]).value.split(',');
					var json = { 'quantity':elements[x].value, 'product_id':json.product_id, 'ignore_options':1 };
					for(var y=0;y<options.length;y++){
						var obits = options[y].split('=');
						json['option_'+obits[0]] = obits[1];
					}
					multi_add_items.push(json);
					cnt++;
				}
			}
		}
		if(cnt == 0) alert('Please ensure you have entered a quantity into at least one of the boxes.');
	}
}

function multiple_add_to_basket(){
	if(multi_add_items.length > 0){
		mini_basket_spinner(1);
		var item = multi_add_items.shift();
		item.multiple_add = 1;
		add_to_basket(item);
	}else{
		mini_basket_control(basket_state);
	}
}

function add_to_basket(json){
	json.ac = 'add_to_basket';
	json.mode = basket_state;
	
	var validate = {};
	validate[json.validate] = 'numeric';
	
	if(rtnEl('minibasket') && rtnEl('basket')) alert('Hmmmm we have both basket types on this page.. Should only ever have one!');
	if(rtnEl('minibasket')){
		json.mini = 1;
	}
	
	var option_div = rtnEl('options_'+json.product_id);
	if(option_div && json.ignore_options != 1){
		var elements = option_div.getElementsByTagName('select');
		for(var x=0;x<elements.length;x++){
			json[elements[x].id] = elements[x].value;
		}
	}
	
	if(validate_single_field(rtnEl(json.validate),validate)){
		delete json.validate;				//clean up validate property
		_infx.popup.layer(0,'');
		ajax_post_request(basket_widget,json,'basket_callback(http_request.responseText);');
	}
}

function basket_callback(jsonstr){	//response comes back as json string
	var json;
	eval("json = "+jsonstr+";");
	if(json.message && json.message != '' && json.ac != 'add_next_item'){
		_infx.popup.layer(1,"<div id='popup_form' style='width:460px;padding-top:8px;'><div class='"+((json.message_class)?json.message_class:"add_to_basket_message")+"'>"+json.message+"</div></div>");
		window.setTimeout(function(){ _infx.popup.layer(0,''); },((json.message_delay && json.message_delay != '')?json.message_delay:1000));
	}

	if(json.ac == 'display_options'){
		_infx.popup.layer(1,json.option_html);
	}else if(json.ac == 'display_event_options'){
		_infx.popup.layer(1,json.event_option_html);
		if(json.event_javascript != '') eval(json.event_javascript);
	}else if(json.ac == 'update_mini_basket'){
		mini_basket_control(json.mode);
	}else if(json.ac == 'add_next_item'){
		multiple_add_to_basket();
	}else if(json.ac == 'update_basket'){
		update_basket();
	}else if(json.ac == 'checkout_redirect'){
		location.href = '/checkout/';
	}
}

function mini_basket_control(mode){
	//alert("UPDATE MINI BASKET");
	var json = {};
	json.ac = (mode == 'expand')?'mini_basket_expand':'mini_basket';
	basket_state = mode;	//store basket state
	
	mini_basket_spinner(1);
	ajax_post_request(basket_widget,json,"basket_control_callback('minibasket','"+mode+"',http_request.responseText);");
}

function mini_basket_spinner(onoff){
	var obj = rtnEl('mini_basket_spinner');
	if(obj) obj.style.display = (onoff == 1)?'block':'none';
	if(rtnEl('basket_open')) rtnEl('basket_open').style.display = (onoff != 1)?'block':'none';
}

function basket_control_callback(fill_id,mode,returned){
	ajax_fill_data(fill_id,returned);
	if(mode == 'expand'){
		_infx.popup.fadeUp(fill_id,70,95,100);
	}else{
		_infx.popup.fadeDown(fill_id,95,70,100);
	}
}

function flash_basket(id){
	setTimeout(function(){ _infx.popup.fadeUp(id,70,95,100); },50);
	setTimeout(function(){ _infx.popup.fadeDown(id,95,70,100); },750);
}

function update_basket(){
	//alert("UPDATE BASKET");
	var json = {};
	json.ac = 'basket';
	ajax_post_request(basket_widget,json,"main_basket_callback('basket',http_request.responseText);");
}

function main_basket_callback(fill_id,returned){
	var checkout_form = rtnEl('form');
	//alert("sub main_basket_callback() "+returned.indexOf("<!--[EMPTY BASKET]-->"));
	if(returned.indexOf("<!--[EMPTY BASKET]-->") != -1){
		if(checkout_form) checkout_form.style.display = 'none';
	}else{
		if(checkout_form) checkout_form.style.display = 'block';
	}
	ajax_fill_data(fill_id,returned);
}

function delay_submit_search(value){
	var ac = 'search';
	if(search_timeout) clearTimeout(search_timeout);
	value = escape(value);
	if(arguments[1] != null){
		ac = arguments[1];
	}
	search_timeout = setTimeout(function(){ search_control({'searchtxt':value,'ac':ac}); },750);
}

function close_search(value){
	ajax_fill_data('search_results','');
}

function update_dyn_date(field,selects){
//'F_card_detail.start_date','month',this.value);
	var obj = rtnEl(field);
	if(obj){
		var select_array = selects.split(',');
		var s1 = rtnEl(select_array[0]);
		var s2 = rtnEl(select_array[1]);
		obj.value = s1.value + '/' + s2.value;
		//alert(obj.value);
	}
}

function change_card_detail(json){
	if(json.card_detail_id != -1){
		var params = {};
		params.ac = 'load_form';
		params.form_type = 'card';
		params.mode = system_state;
		params['F_card_detail.id'] = json.card_detail_id;
		
		ajax_post_request(payment_control,params,"callback_change_card_detail('payment_form',http_request.responseText);");
	}else{
		var obj = rtnEl('payment_type');
		if(obj) obj.value = '';
		control_payment_gateways({'type':'','highlight':1});
		var payment_form_div = rtnEl('payment_form');	
		if(payment_form_div) payment_form_div.innerHTML = '';
	}
}

function callback_change_card_detail(target_id,jsonstr){
	var json;
	eval("json = "+jsonstr+";");
	//alert(json.html);
	//alert(json.type);
	control_payment_gateways({'type':json.type,'highlight':1});
	ajax_fill_data(target_id,json.html);
}

function copy_billing_to_delivery(){
	var delivery_fieldset = rtnEl('delivery_address');
	var elements = delivery_fieldset.getElementsByTagName('input');
	//alert(elements.length);
	//F_client.billing_post_code
	//F_delivery_address.delivery_post_code
	for(var x=0;x<elements.length;x++){
		var delivery_id = elements[x].id;
		if(delivery_id == 'F_delivery_address.delivery_name'){		//bug found 2/9/08 CM dont set delivery_address_id to client id duh!!
			var tobj = rtnEl('F_client.title');
			var fnobj = rtnEl('F_client.forename');
			var snobj = rtnEl('F_client.surname');
			if(tobj && fnobj && snobj) elements[x].value = ((tobj.value == -1)?"":tobj.value) + " " + fnobj.value + " " + snobj.value;		//Copy billing address info to delivery
		}else if(delivery_id != 'F_delivery_address.id' && delivery_id != 'F_delivery_address.delivery_country_id'){						//bug found 2/9/08 CM dont set delivery_address_id to client id duh!!
			var billing_id = delivery_id.replace('_delivery_address','_client');
			billing_id = billing_id.replace('delivery_','billing_');
			var obj = rtnEl(billing_id);
			if(obj) elements[x].value = obj.value;		//Copy billing address info to delivery
		}
	}
	
	var selectors = delivery_fieldset.getElementsByTagName('select');
	for(var x=0;x<selectors.length;x++){
		var delivery_id = selectors[x].id;
		if(delivery_id != 'select_delivery_address_id'){		//bug found 1/12/08 CM dont mess around with select_delivery_address_id!!
			var billing_id = delivery_id.replace('_delivery_address','_client');
			billing_id = billing_id.replace('delivery_','billing_');
			var obj = rtnEl(billing_id);
			
			var changed = 0;
			var options = selectors[x].options;
			
			for (var y=0;y<options.length;y++ ){
				if (options[y].value == obj.value){		
					var old_val = selectors[x].value;
					options[y].selected = true;
					if(selectors[x].onchange && options[y].value != -1 && old_val != obj.value) selectors[x].onchange();
					changed = 1;
				}
			}
			if(!changed) alert("Sorry not all fields could be copied.");
		}
	}
	
	var updated_obj = rtnEl('F_delivery_address.updated');
	if(updated_obj) updated_obj.value = '';
}

function update_state(json){
	json.ac = 'basket';	
	ajax_post_request(basket_widget,json,"main_basket_callback('basket',http_request.responseText);");
}

function update_delivery_charge(json){
	json.ac = 'basket';
	ajax_post_request(basket_widget,json,"main_basket_callback('basket',http_request.responseText);");

	_infx.popup.layer(1,"<div id='popup_form' style='width:650px;height:25px;padding-top:8px;'><div class='information_message'>Your changes may of affected the delivery charge please check before proceeding</div></div>");
	window.setTimeout(function(){ _infx.popup.layer(0,''); },2000);
}

function change_delivery_address(json){
	json.ac = 'ajax_change_delivery_address';
	json.dataview = (json.profile)?2:1;
	ajax_post_request(system,json,"callback_delivery_address('"+((json.profile)?'profile_delivery_address':'delivery_address')+"','"+json.profile+"',http_request.responseText);");
}

function set_default_delivery_address(json){
	json.ac = 'set_default_delivery_address';
	ajax_post_request(profile_widget,json,"profile_popup({'ac':'delivery_addresses_dialog'});");
}

function remove_delivery_address(json){
	json.ac = 'remove_delivery_address';
	ajax_post_request(profile_widget,json,"profile_popup({'ac':'delivery_addresses_dialog'});");
}

function callback_delivery_address(target_id,profile,jsonstr){
	var json;
	eval("json = "+jsonstr+";");
	ajax_fill_data(target_id,json.html);
	if(profile != 'true') _infx.popup.loading(0);
}
 
var current_option;
function change_product_option(json){
	if(typeof pMatchPictureOption == 'function') pMatchPictureOption(json.product_id);
	if(json.ac == 'update_stock' && !rtnEl('stock_level_'+json.product_id)) return;
	if(json.ac == 'update_stock' || json.ac == 'update_price'){	
		var option_div = rtnEl('options_'+json.product_id);
		if(option_div){
			var elements = option_div.getElementsByTagName('select');
			for(var x=0;x<elements.length;x++){
				json[elements[x].id] = elements[x].value;
			}
		}
	}
	if(json.option_select_div){
		current_option = json.option_select_div;
		delete json.option_select_div;
	}
	ajax_post_request(product_script,json,"callback_change_product_option(http_request.responseText);");
}

function callback_change_product_option(jsonstr){
	var json;
	eval("json = "+jsonstr+";");
	//alert(current_option);
	for(var p in json){
		if(p.indexOf("option_select_") != -1){
			if(current_option) current_option.innerHTML = json[p];
		}else{
			ajax_fill_data(p,json[p]);
		}
	}
	
}

function display_message(text,bgcolor){
	var mobj = rtnEl('message');
	if(mobj){
		mobj.style.display = 'block';
		mobj.innerHTML = text;
		mobj.style.backgroundColor = bgcolor;
	}
}

function email(name, domain, suffix, text){
   var address = name + "\u0040" + domain + "." + suffix;
   var url = "mailto:" + address;
   document.write("<a href=\"" + url + "\">" + ((!text)?address:text) + "</a>");
}

function switch_advert_category(type,amount,target,category,control_type){
	var json = {};
	json.type = type;		//smallads or mainads
	json.dir = (type == 'smallads')?'/dyn/_smallads/':'/dyn/_mainads/';
	json.amount = amount;
	json.category = category;
	json.control_type = control_type;
	json.ajax = 1;
	ajax_post_request(advert_widget,json,"advert_callback('"+target+"',http_request.responseText);");
}

function advert_callback(target,jsonstr){
	var json;
	eval("json = "+jsonstr+";");
	ajax_fill_data(json.control_type,json.control_html);
	ajax_fill_data(target,json.content);
}

function checkout_form_control(config){	
	var element;
	var state_or_county_input = ((config.type == 'delivery')?'delivery_state_or_county_input':'billing_state_or_county_input');	
	if(config.ac == 'change_state'){
		//CHANGING STATE CONFIG
		if(config.type == 'delivery') update_delivery_charge({'delivery_state':config.state_id});
	}else if(config.ac == 'change_country'){
		//CHANGING COUNTRY CONFIG
		var dyn_element_prefix = ((config.type == 'delivery')?"F_delivery_address":"F_client");
		var tab_index = ((config.type == 'delivery')?"108":"133");

		if(config.country_id == 13 || config.country_id == 38 || config.country_id == 226){
			if(config.country_id == 13){															//AUSTRALIA CONFIGURATION
				element = rtnEl(((config.type == 'delivery')?'delivery_post_code_text':'billing_post_code_text'));		if(element) element.innerHTML = 'Postcode';
			}else if(config.country_id == 38){														//CANADIAN CONFIGURATION
				element = rtnEl(((config.type == 'delivery')?'delivery_post_code_text':'billing_post_code_text'));		if(element) element.innerHTML = 'Postal Code';
			}else if(config.country_id == 226){ 													//UNITED STATES OF AMERICA CONFIGURATION
				element = rtnEl(((config.type == 'delivery')?'delivery_post_code_text':'billing_post_code_text'));		if(element) element.innerHTML = 'Zip Code';
			}
			
			var ajax_json = {};
			ajax_json.ac = 'ajax_drop_down';
			ajax_json.drop_down_type = 'state';
			ajax_json.country_id = config.country_id;
			ajax_json.tab_index = tab_index;
			ajax_json.form_type = config.type;
			ajax_json.element_name = dyn_element_prefix+"."+((config.type == 'delivery')?"delivery_state_id":"billing_state_id");
			ajax_post_request(payment_control,ajax_json,"checkout_form_callback('"+state_or_county_input+"',http_request.responseText);");	
		}else{														//ALL OTHERS + UNITED KINGDOM CONFIGURATION
			element = rtnEl(((config.type == 'delivery')?'delivery_post_code_text':'billing_post_code_text'));		if(element) element.innerHTML = 'Postcode';
			element = rtnEl(state_or_county_input);
			
			if(element){
				var dyn_element_name = ((config.type == 'delivery')?"delivery_county":"billing_county");
				element.innerHTML = "<label for='County'>County <span class='astrix'>*</span></label><br /><input class='textbox' name='"+dyn_element_prefix+"."+dyn_element_name+"' id='"+dyn_element_prefix+"."+dyn_element_name+"' tabindex='"+tab_index+"' onchange=\"BC_datachange(this,'"+dyn_element_prefix+".updated');\" value=''/>";
			}
		}
		if(config.type == 'delivery') update_delivery_charge({'delivery_country':config.country_id});
	}

}

function checkout_form_callback(target,jsonstr){
	var json;
	eval("json = "+jsonstr+";");
	
	if(json.success){
		ajax_fill_data(target,json.prefix+json.html);
	}
}

function stop_propagation(event){	
	if (!event) var event = window.event;
	event.cancelBubble = true;
	if (event.stopPropagation) event.stopPropagation();
	return false;
} 

//These functions remove the boxes around links
function remove_link_focus(){
	for(var i=0 ; i < document.links.length ; i++) document.links[i].onfocus=blur_link; 
}

function blur_link() {
	if (this.blur) this.blur(); 
}

function BC_cbxv(obj,nm,offval,onval){
	var ipobj = gfindobj(obj,nm);
	var cbobj = gfindobj(obj,"CB_"+nm);
	if (!cbobj || !ipobj) return 0;
	if (cbobj.checked){
		ipobj.value =onval;
	}else{
		ipobj.value =offval;
	}
	return 1;
}

function gfindobj(obj,reqid){
	for(var p in obj.childNodes){
		var cobj = obj.childNodes[p];
		if (cobj && cobj.id != null){
			if (cobj.id == reqid) return cobj;
		}
		if (cobj && (cobj.childNodes)&&(cobj.childNodes.length>0)) {
			var ob = gfindobj(cobj,reqid);
			if (ob) return ob;
		}
	}
	return null;
}

function toggle_filter_display(element,id,type){
	var target = rtnEl(id);
	if(type == 'options'){
		target.style.display = (target.style.display != 'none')?'none':'inline';
		element.innerHTML = (target.style.display == 'none')?'More...':'Less';
	}else if(type == 'rows'){
		var morerowtxt = rtnEl('morerowtxt');
		target.style.display = (target.style.display != 'none')?'none':'inline';
		morerowtxt.innerHTML = (target.style.display == 'none')?'More rows':'Less rows';
	}
}

function format_currency(expr) {
	return format_currency_commas(format_decimal_places(expr,2));
}

function format_currency_commas(nStr){
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}

function format_decimal_places(expr,decplaces) {
	var str = "" + Math.round(eval(expr)*Math.pow(10,decplaces));
	while(str.length<= decplaces) {
		str = "0"+str;
	}
	var decpoint = str.length - decplaces
	var decimal = ".";
	if (decplaces==0){decimal = "";}
	return str.substring(0,decpoint) + decimal + str.substring(decpoint,str.length);
}


if(window.attachEvent){ window.attachEvent('onload',remove_link_focus); }
else{ window.addEventListener('load',remove_link_focus,false); }