sxGLOBALS=[];
sxGLOBALS['img_dir']='/i/';
sxGLOBALS['auth']=false;
sxGLOBALS['animation']=[];
sxGLOBALS['animation']['basket']='slide';
sxGLOBALS['animation']['checkout']='slide';
sxGLOBALS['animation']['login']='slide';
sxGLOBALS['animation']['register']='slide';
sxGLOBALS['animation']['getpwd']='slide';

function redirect(url){
	window.location=url;
}

function refresh(){
	window.location.reload();
}

function SelectAll(o){
	o.focus(); o.select();
}

function ClearSelectElements(elm){
	for(var i=elm.options.length-1; i>=0; i--) elm.remove(i);
}

function Checkout(el_countries, el_zones, el_zones_row, el_info, defCountry, isBilling, modeSel, el_modeSel){
	this.elm_countries=document.getElementById(el_countries);
	this.elm_zones=document.getElementById(el_zones);
	this.elm_zones_row=document.getElementById(el_zones_row);
	this.el_zones_row=el_zones_row;
	this.elm_info=document.getElementById(el_info);
	this.el_info=el_info;
	this.defCountry=defCountry;
	this.isBilling=isBilling;
	if(modeSel!='') this.modeSel=document.getElementById(modeSel);
	else this.modeSel='';
	this.el_modeSel=document.getElementById(el_modeSel);

	this.zones=[];
	this.countries=[];
	this.addresses=[];

	this.init=function(){
		ClearSelectElements(this.elm_countries);
		for(var i in this.countries) this.elm_countries.options.add(new Option(this.countries[i], i));
		if(this.defCountry) this.elm_countries.value=this.defCountry;

		if(!this.isBilling) this.modeSel.style.display='none';
		if(this.addresses.length){
			this.el_modeSel.options.add(new Option('----', 0));

			for(i in this.addresses) this.el_modeSel.options.add(new Option(this.addresses[i], i));
			if(!this.isBilling) this.modeSel.style.display='';
		}

		this.select();
	};

	this.mode=function(m){
		m=parseInt(m);
		if(m===0) $('#'+this.el_info).slideDown('slow');
		else $('#'+this.el_info).slideUp('slow');
	};

	this.select=function(){
		ClearSelectElements(this.elm_zones);
		var cid=this.elm_countries.options[this.elm_countries.selectedIndex].value, i=0;

		if(this.zones[cid]==undefined){
			$('#'+this.el_zones_row).hide();
			return;
		}

		$('#'+this.el_zones_row).show();
		for(i in this.zones[cid])
			this.elm_zones.options.add(new Option(this.zones[cid][i], i));

		$('#'+el_zones).sortOptions(true);

		this.selectZone();
	};

	this.selectZone=function(){
		if(this.isBilling) return;
		//var zid=this.elm_zones.options[this.elm_zones.selectedIndex].value;
	};

	this.add=function(id, name, parent){
		if(this.zones[parent]==undefined) this.zones[parent]=[];
		if(parent) this.zones[parent][id]=name;
		else this.countries[id]=name;
	};

	this.add_address=function(id, name){
		this.addresses[id]=name;
	};
}

function SxUserInterface(inst){
	this.instance=inst;

	this.cvv_info=function(id){
		tb_show('CVV card number', '#TB_inline?height=400&width=400&inlineId='+id, null);
	};

	this.init=function(){
		
	};

	this.qsearch=null;
	this.init_qsearch=function(){
		this.qsearch=new QSearchControl();
	};

	this.checkout=null;
	this.init_checkout=function(){
		this.checkout=new CheckoutControl();
	};

	this.basket=null;
	this.init_basket=function(){
		this.basket=new BasketControl();
	};

	this.account=new AccountControl();

	this.simple_dropdown=function(a_id, div_id, action){
		if(action=='show') $('#'+div_id).show();
		else $('#'+div_id).hide();
	};

	this.attrInit=function(id){
		this.checkMax(id);

		var price=sxGLOBALS['price-'+id], weight=sxGLOBALS['weight-'+id], attr='', val='', i=null;

		for(i in sxGLOBALS['attr-'+id]['req']){
			attr=sxGLOBALS['attr-'+id]['req'][i];
			if(attr.type!=2){
				val=$('#attr-'+id+'-'+i).val();
				price+=attr.options[val].price;
				weight+=attr.options[val].weight;
			}
		}
		
		price=round(price*$('#add_cnt-'+id).val(), 2);

		$('#setPrice-'+id).html(price);
	};

	this.attrControl=function(id, code, attr_code, val, w){
		if(w=='q'){
			var mes=sxGLOBALS['attr-'+id].req[attr_code].options[val].question, answer='';
			if(mes!=''){
				answer=promt(mes, '');
				$('#quest-'+id+'-'+code+'-'+attr_code).val(answer);
			}
			this.attrInit(id);
			return true;
		}
	};

	this.checkMax=function(id){
		var a1=parseInt($('#add_cnt-'+id).val()), a2=parseInt($('#max_cnt-'+id).val());
		if(a1>a2){
			display_error('Informer', 'Maximum quantity of this product is '+a2);
			$('#add_cnt-'+id).val(a2);
			return false;
		}
		return true;
	};

	this.add2cart=function(id){
		if(!this.checkMax(id)) return false;

		if($('#sxui_block_basket2').length>0){
			if(sxGLOBALS['animation']['basket']=='slide'){
				$('#sxui_block_basket').slideUp('slow');
				$('#sxui_block_basket2').slideDown('slow');
			}else if(sxGLOBALS['animation']['basket']==''){
				$('#sxui_block_basket').hide();
				$('#sxui_block_basket2').show();
			}
		}

		if(sxGLOBALS['animation']['basket']=='slide'){
			$('#sxui_basket_btn-'+id).slideUp('slow');
			$('#sxui_basket_btn2-'+id).slideDown('slow');
		}else if(sxGLOBALS['animation']['basket']==''){
			$('#sxui_basket_btn-'+id).hide();
			$('#sxui_basket_btn2-'+id).show();
		}

		var str=$('#frm_add2cart-'+id).serialize();
		$.post('/q/', str, function(html){
				if(html.substr(0,2)=='e|') display_error('Informer', html.substr(2));
				else{
					$('#sxui_block_basket').html(html);
					$('#sxui_basket_btn_add-'+id).hide();
					$('#sxui_basket_btn_added-'+id).show();
				}

				if($('#sxui_block_basket2').length>0){
					if(sxGLOBALS['animation']['basket']=='slide'){
						$('#sxui_block_basket').slideDown('slow');
						$('#sxui_block_basket2').slideUp('slow');
					}else if(sxGLOBALS['animation']['basket']==''){
						$('#sxui_block_basket').show();
						$('#sxui_block_basket2').hide();
					}
				}

				if(sxGLOBALS['animation']['basket']=='slide'){
					$('#sxui_basket_btn-'+id).slideDown('slow');
					$('#sxui_basket_btn2-'+id).slideUp('slow');
				}else if(sxGLOBALS['animation']['basket']==''){
					$('#sxui_basket_btn-'+id).show();
					$('#sxui_basket_btn2-'+id).hide();
				}
			}
		);
	};

	this.updcart=function(id){
		if($('#sxui_block_basket2').length>0){
			$('#sxui_block_basket').slideUp('slow');
			$('#sxui_block_basket2').slideDown('slow');
		}

		var str={'updcart':1};
		$.post('/q/', str, function(html){
				if(html.substr(0,2)=='e|') display_error('Informer', html.substr(2));
				else{
					$('#sxui_block_basket').html(html);
				}

				if($('#sxui_block_basket2').length>0){
					$('#sxui_block_basket').slideDown('slow');
					$('#sxui_block_basket2').slideUp('slow');
				}
			}
		);
	};

	this.feedback=function(frm_id){
		$('#sxui_feedback').slideUp('slow');
		$('#sxui_feedback2').slideDown('slow');

		var str=$('#'+frm_id).serialize();

		$.post('/q/', str, function(html, err){
				$('#sxui_feedback2').slideUp('slow');
				$('#sxui_feedback3').slideDown('slow');
			}
		);
	};
}

function AccountControl(){
	this.login=function(frm_id, redirect_to){
		if(sxGLOBALS['animation']['login']=='slide'){
			$('#sxui_form_auth').slideUp('slow');
			$('#sxui_form_auth2').slideDown('slow');
		}else if(sxGLOBALS['animation']['login']==''){
			$('#sxui_form_auth').hide();
			$('#sxui_form_auth2').show();
		}

		var str=$('#'+frm_id).serialize();
		$.post('/q/', str, function(html){
				if(html.substr(0,2)=='e|'){
					display_error('Login error', html.substr(2));

					if(sxGLOBALS['animation']['login']=='slide'){
						$('#sxui_form_auth').slideDown('slow');
						$('#sxui_form_auth2').slideUp('slow');
					}else if(sxGLOBALS['animation']['login']==''){
						$('#sxui_form_auth').show();
						$('#sxui_form_auth2').hide();
					}
				}else redirect(redirect_to);
			}
		);
	};

	this.register=function(frm_id, redirect_to){
		if(sxGLOBALS['animation']['register']=='slide'){
			$('#sxui_form_register').slideUp('slow');
			$('#sxui_form_register2').slideDown('slow');
		}else if(sxGLOBALS['animation']['register']==''){
			$('#sxui_form_register').hide();
			$('#sxui_form_register2').show();
		}

		var str=$('#'+frm_id).serialize();
		$.post('/q/', str, function(html){
				if(html.substr(0,2)=='e|'){
					display_error('Registration error', html.substr(2));

					if(sxGLOBALS['animation']['register']=='slide'){
						$('#sxui_form_register').slideDown('slow');
						$('#sxui_form_register2').slideUp('slow');
					}else if(sxGLOBALS['animation']['register']==''){
						$('#sxui_form_register').show();
						$('#sxui_form_register2').hide();
					}
				}else redirect(redirect_to);
			}
		);
	};

	this.getpwd=function(frm_id){
		if(sxGLOBALS['animation']['getpwd']=='slide'){
			$('#sxui_form_getpwd').slideUp('slow');
			$('#sxui_form_getpwd2').slideDown('slow');
		}else if(sxGLOBALS['animation']['getpwd']==''){
			$('#sxui_form_getpwd').hide();
			$('#sxui_form_getpwd2').show();
		}

		var str=$('#'+frm_id).serialize();
		$.post('/q/', str, function(html){
				if(html.substr(0,2)=='e|')
					display_error('Password restore error', html.substr(2));
				else
					display_error('Password restore', html);

				if(sxGLOBALS['animation']['getpwd']=='slide'){
					$('#sxui_form_getpwd').slideDown('slow');
					$('#sxui_form_getpwd2').slideUp('slow');
				}else if(sxGLOBALS['animation']['getpwd']==''){
					$('#sxui_form_getpwd').show();
					$('#sxui_form_getpwd2').hide();
				}
			}
		);
	};

	this.auth=function(use_form){
		if($('#sxui_block_auth').length>0){
			$('#sxui_block_auth').slideUp('slow');
			$('#sxui_block_auth2').slideDown('slow');
		}

		var str='';
		if(use_form) str=$('#frm_auth').serialize();
		else str={'do_login':1};
		$.post('/q/', str, function(html){
				if(html.substr(0,2)=='e|') display_error('Login error', html.substr(2));
				else{
					if($('#sxui_block_auth').length>0)
						$('#sxui_block_auth').html(html);

					if($('#CheckoutLoginForm').length>0)
						$('#CheckoutLoginForm').slideUp('slow', function(){ $(this).remove(); });

					sxGLOBALS['auth']=true;
				}

				if($('#sxui_block_auth').length>0){
					$('#sxui_block_auth').slideDown('slow');
					$('#sxui_block_auth2').slideUp('slow');
				}
			}
		);
	};

	this.change_pwd=function(frm_id){
		$('#AccountChangePwdWaiter').slideDown('slow');
		$('#AccountChangePwdBtn').slideUp('slow');

		var str=$('#'+frm_id).serialize();
		$.post('/q/', str, function(html){
				if(html.substr(0,2)=='e|') display_error('Error', html.substr(2));
				else display_error('Password changed', 'Your password has been changed.');

				$('#AccountChangePwdWaiter').slideUp('slow');
				$('#AccountChangePwdBtn').slideDown('slow');
			}
		);
	};

	this.add2wishes=function(id, prd_pg){
		$('#sxui_wishes_btn-'+id).slideUp('slow');
		$('#sxui_wishes_btn2-'+id).slideDown('slow');

		$.post('/q/', {'add2wishes':id, 'prd_pg':prd_pg}, function(html){
				if(html.substr(0,2)=='e|') display_error('Informer', html.substr(2));
				else $('#sxui_wishes_btn-'+id).html(html);
				$('#sxui_wishes_btn-'+id).slideDown('slow');
				$('#sxui_wishes_btn2-'+id).slideUp('slow');
			}
		);
	};

	this.deleteFromWishes=function(id){
		var str={'deleteFromWishes':id};
		$.post('/q/', str, function(html){
				$('#sxui_wishlist_'+id).fadeOut('slow');
				$('#sxui_wishlist_price_total').html(html);
			}
		);
	};
}

function CheckoutControl(){
	this.cur_step=0;

	this.step=function(frm_id, n, hideme){
		var par=this, str='';

		/*
		if(n==1){
			var dst=$('#sxui_checkout_a').offset().top;
			$("html:not(:animated),body:not(:animated)").animate({scrollTop: dst}, 500);
		}
		*/

		$('#sxui_checkout_errors').slideUp('fast');

		if(hideme) $('#sxui_checkout_waiter').slideDown('slow');
		else{
			$('#sxui_checkout_step_'+n+'_Waiter').slideDown('slow');
			$('#sxui_checkout_step_'+n).slideUp('slow');
		}

		$('#sxui_submit_'+(n-1)).attr('disabled', 'disabled');

		str=$('#'+frm_id).serialize();
		$.post('/q/', str, function(html){
				if(hideme) $('#sxui_checkout_waiter').slideUp('slow');
				else $('#sxui_checkout_step_'+n+'_Waiter').slideUp('slow');

				$('#sxui_submit_'+(n-1)).attr('disabled', '');

				if(html.substr(0,2)=='u|' && !sxGLOBALS['auth']){
					SXUI.account.auth(false);
					html=html.substr(2);
				}

				if(html.substr(0,2)=='e|'){
					$('#sxui_checkout_errors').html(html.substr(2));
					$('#sxui_checkout_errors').slideDown('slow');
					return;
				}

				if(hideme) $('#sxui_checkout_step_'+par.cur_step).slideUp('slow');

				if(n==1){
					$('#sxui_checkbout_ShippingMethods').html(html);
					$('#sxui_checkout_BtnPayment').click();
				}
				else if(n==2) $('#sxui_checkout_PaymentMethods').html(html);
				else if(n==3){
					$('#sxui_checkout_step_1').slideUp('slow');
					$('#sxui_checkout_step_2').slideUp('slow');
					$('#sxui_checkout_basket_link').slideUp('slow');
					$('#sxui_checkout_room_link').slideDown('slow');
					$('#sxui_checkout_PaymentDone').html(html);
				}

				$('#sxui_checkout_step_'+n).slideDown('slow');
				par.cur_step=n;

				if(pageTracker!=undefined){
					if(par.cur_step==1) pageTracker._trackPageview('/checkout/address/');
					if(par.cur_step==2) pageTracker._trackPageview('/checkout/payment/');
					if(par.cur_step==3 && $('#iCheckoutFinish').length>0) pageTracker._trackPageview('/checkout/finish/');
				}
			}
		);
	};
}

function QSearchControl(){
	this.cache=[];
	this.noany=[];
	this.path=[];
	this.frm_id=null;

	this.init=function(a){
		var f=false, n=null, i=null;
		for(i in a){
			for(n in this.noany) if(this.noany[n]==a[i]) f=true;
			if(!f) $('#sxui_qsearch_'+a[i]).addOption({'':'Any'}, false);
			$('#sxui_qsearch_'+a[i]).addOption(this.cache[a[i]], false);
		}
		this.sel(0);
	};

	this.sel=function(id){
		var tmp=$('#sxui_qsearch_'+this.path[id]).selectedValues(), f=false, par=this, str='', n=null, i=null;

		if(tmp[0]==''){
			for(i=1; i<this.path.length; i++){
				$('#sxui_qsearch_'+this.path[i]).removeOption(/./);
				f=false;
				for(n in this.noany) if(this.noany[n]==this.path[i]) f=true;
				if(!f) $('#sxui_qsearch_'+this.path[i]).addOption({'':'Any'}, false);
			}
			return;
		}

		$('#sxui_qsearch_'+this.path[id+1]+'_loader').slideDown('slow');
		$('#sxui_qsearch_'+this.path[id+1]+'_cont').slideUp('slow');

		$('#sxui_qsearch_'+this.path[id+1]).removeOption(/./);
		for(n in this.noany) if(this.noany[n]==this.path[id+1]) f=true;
		if(!f) $('#sxui_qsearch_'+this.path[id+1]).addOption({'':'Any'}, false);

		$('#sxui_qsearch_cur').val('par'+id);
		str=$('#'+this.frm_id).serialize();
		$.getJSON('/q/', str, function(r){
				$('#sxui_qsearch_'+par.path[id+1]).addOption(r, false);

				$('#sxui_qsearch_'+par.path[id+1]+'_loader').slideUp('slow');
				$('#sxui_qsearch_'+par.path[id+1]+'_cont').slideDown('slow');
			}
		);
		if(this.path[id+2]!=undefined) this.sel(id+2);
	};

	this.add=function(k, id, val){
		if(this.cache[k]==undefined) this.cache[k]=[];
		this.cache[k][id]=val;
	};
}

function BasketControl(){
	this.go_back=function(){
		if(document.referrer==document.location.href || document.referrer.indexOf('checkout')>0) redirect('/');
		else window.history.back();
	};

	this.showEdit=function(id){
		$('#sxui_bedit-'+id).slideToggle('slow');
	};

	this.editItem=function(id){
		var str={basket_updateItem:1, idx: id, cnt:$('#add_cnt-'+id).val(), pr_id:sxGLOBALS['pr_id-'+id]}, elts=$("*[id*='attr-"+id+"-']"), i=0;

		for(i=0; i<elts.length; i++){
			str[elts[i].id]=elts[i].value;
		}
		$('#sxui_bedit-'+id).slideUp('slow');
		$('#sxui_bedit2-'+id).slideDown('slow');

		$.get('/q/', str,
			function(html){
				if(html.substr(0,2)=='e|'){
					display_error('Informer', html.substr(2));
					$('#sxui_bedit-'+id).slideDown('slow');
					$('#sxui_bedit2-'+id).slideUp('slow');
				}else refresh();
			}
		);
	};

	this.apply_disc=function(frm_id){
		$('#sxui_disc_code').slideUp('slow');
		$('#sxui_disc_code2').slideDown('slow');

		var str=$('#'+frm_id).serialize();
		$.get('/q/', str,
			function(html){
				if(html.substr(0,2)=='e|'){
					display_error('Informer', html.substr(2));
					$('#sxui_disc_code').slideDown('slow');
					$('#sxui_disc_code2').slideUp('slow');
				}else refresh();
			}
		);
	};
}

function display_error(title, str){
	$('#error_msg').html('&nbsp;<br><div align="center">'+str+'<div style="margin-top:20px;"><button class="btn" onclick="tb_remove();" style="width:100px;">OK</button></div></div>');
	tb_show(title, '#TB_inline?height=100&width=400&inlineId=error_msg', null);
}

function display_images(title, url, gr){
	tb_show(title, url, gr);
}

function round(val, precision){
	precision=(round.arguments.length>1)?round.arguments[1]:0;
	return Math.round(val*Math.pow(10, precision))/Math.pow(10, precision);
}