// functions for basket

	function switch_opt(iid) {
		var iin = document.getElementById('in'+iid);
		var iop = document.getElementById('op'+iid);

		if (iop.style.display == 'none') {
			iop.style.display = '';
			iin.style.display = 'none';
		} else {
			iop.style.display = 'none';
			iin.style.display = '';
		}
	}

	function inc_val(vid) {
		var t = document.getElementById(vid);
		t.value = eval(t.value) + 1;
	}
	function dec_val(vid) {
		var t = document.getElementById(vid);
		if (t.value > 1) t.value = eval(t.value) - 1;
	}

	function remove_confirm(prd) {
		return confirm('Remove product '+prd+' from basket?');
	}

	function scroll_down() {
		setTimeout(function(){
			window.scroll(0,800);
		},200);
	}


	var g_pid = null;
	var g_quan = null;
	var g_chem = null;
	var g_hg = null;
	var g_fs = null;

	function add_to_basket (pid,quan,lbl_def,chemn,shg,sfs) {
		g_pid = pid;
		g_quan = quan;
	    g_chem = chemn;
	    g_hg = shg;
	    g_fs = sfs;
		ae_prompt(add_to_basket_callback, 'Label your product with your custom label:',lbl_def);
	}
	function add_to_basket_callback(lbl) {
		var bu = d('basket_url');
		if (bu) var backurl = escape(bu.value);
		var new_url = '/order.php?act=addasm&pid='+g_pid+'&q='+g_quan+'&lbl='+lbl+'&chem='+g_chem+'&hg='+g_hg+'&fs='+g_fs+'&bmw=980'+'&back_url='+backurl;
		if (lbl != null) {
			xmlreq_put(new_url,'basket');
			scroll_down();
		}
	}

/*
	function add_to_basket (pid,quan,lbl_def,chemn,shg,sfs) {
		var bu = d('basket_url');
		if (bu) var backurl = escape(bu.value);
        var tmp = '';
		var lbl = prompt(tmp + 'Label your product with your custom label:',lbl_def);
		if (lbl != null) {
			xmlreq_put('/order.php?act=addasm&pid='+pid+'&q='+quan+'&lbl='+lbl+'&chem='+chemn+'&hg='+shg+'&fs='+sfs+'&bmw=980'+'&back_url='+backurl,'basket');
			scroll_down();
		} else {
			alert('Cancelled.');
		}
	}
*/

	function lbl_upd_basket (iid,lbl) {
		var bu = d('basket_url');
		if (bu) var backurl = escape(bu.value);
		xmlreq_put('/order.php?act=lbl&iid='+iid+'&lbl='+lbl+'&back_url='+backurl+'&bmw=980','basket');
	}
	function qty_upd_basket (iid,quan) {
		var bu = d('basket_url');
		if (bu) var backurl = escape(bu.value);
		xmlreq_put('/order.php?act=qty&iid='+iid+'&q='+quan+'&back_url='+backurl+'&bmw=980','basket');
	}
	function del_from_basket (iid) {
		var bu = d('basket_url');
		if (bu) var backurl = escape(bu.value);
		xmlreq_put('/order.php?act=del&iid='+iid+'&back_url='+backurl+'&bmw=980','basket');
	}

	function chg_hl(input_id) {
		var tmp = document.getElementById(input_id);
		tmp.style.border='1px solid red';
	}

// functions for products
// ~~~~~~~~~~~~~~~~~~~~~~
	function clearlevels(lv){
		for (i=lv;i<=4;i++){
			var tmp = document.getElementById('s_l'+i);
			tmp.options.length=1;
			tmp.selectedIndex = 0;
			tmp.disabled = true;
//			if (i > 2)
//				tmp.style.display = 'none';
		}
	}

	function hide(lv){
		for (i=lv;i<=4;i++){
			var tmp = document.getElementById('s_l'+i);
			tmp.style.display = 'none';
		}
	}

	function loadoptions(grp_idx, level, params){
		clearlevels(level);
		var wnode = document.getElementById('s_l'+level);
		wnode.length = 1;
		wnode.options[0].disabled = true;
		for (i=0;i<tree.length-1;i++){
			// level one
			if ((level == 1) & (tree[i][0] == 0)){
				for (j=0;j<tree[i][1].length-1;j++){
					var tmp = new Option(tree[i][1][j][1],tree[i][1][j][0]);
					tmp.setAttribute('title',tree[i][1][j][1]);
					wnode.options[wnode.options.length]=tmp;
				}
			} else {
				// other levels
				if (level != 1){
				var cnode = document.getElementById('s_l'+(level-1));
					//alert(tree[i][0]);
					for (j=0;j<tree[i][1].length-1;j++){
						if ((tree[i][0] == cnode.options[grp_idx].value)){
							//alert(tree[i][1][j]);
							var tmp = new Option(tree[i][1][j][1],tree[i][1][j][0]);
							tmp.setAttribute('title',tree[i][1][j][1]);
							wnode.options[wnode.options.length]=tmp;
						}
					}
					
				}
			}
		}
		if (wnode.options.length > 1){
			wnode.disabled = false;
			wnode.style.background='#c6daec';
		} else {
			loadproductform(grp_idx,level-1,params);
		}
	}

	function loadproductform(grp_idx,level,param) {
		var wnode = document.getElementById('s_l'+level);
		var gid = wnode.options[grp_idx].value;
		document.getElementById('product_form').innerHTML = '<img src="/ui2/images/loading.gif"> <b style="color:darkred;">Loading...</b>';
		//alert('loadproductform: grp='+grp_idx+', lvl='+level+"\n\n prm: " + param);
		setTimeout(function(){
			document.getElementById('product_form').innerHTML = xmlreq_post('/assembly.php?act=gpf&gid='+gid+param,'');
			if (document.getElementById('product_id')) {
				var pid = document.getElementById('product_id').value;
				document.getElementById('product_data').innerHTML = xmlreq_post('/assembly.php?act=gpd&pid='+pid+param,'');
			}
			var spop_element = document.getElementById('spop');
			if (spop_element){
			    spop_element.style.visibility='hidden';
			}
		},250);
	}

	function sel2js(frm) {
		var outString = '';
		var hiddens = frm.getElementsByTagName('input');
		var selects = frm.getElementsByTagName('select');
		for (i=0;i<hiddens.length;i++){
			if (hiddens[i].getAttribute('type') == 'hidden' && hiddens[i].name != 'product_id') {
				outString += '&' + frm.name + '[' +hiddens[i].name + ']='+escape(hiddens[i].value);
			}
		}
		for (i=0;i<selects.length;i++){
			outString += selectPostString(selects[i],frm.name);
		}
		return outString;
	}
	
	function selectPostString(element,fname) {
		var outString = '';
		var select_name = element.name;
		if (element.options[element.selectedIndex].value != ""){
			outString += '&' + fname +'['+select_name+']='+escape(element.options[element.selectedIndex].value);
		}
		return outString;
	}


	function mainform_load (gid,prm) {
		var form_data = sel2js(document.mainform);
		var func_string = "mainform_load_selproduct('" + escape(prm) + "');";
		var load_url = '/assembly.php?act=gpf&gid='+gid+form_data+prm;
		xmlreq_put(load_url, 'product_form', func_string);
	}

	function mainform_load_selproduct (frm_param) {
		var prid = document.getElementById('product_id');
		if (prid) {
			var pd = prid.value;
			xmlreq_put('/assembly.php?act=gpd&pid='+pd+unescape(frm_param),'product_data');
		}
	}

	function redir_with_hg(inp_link) {
		var g1 = d('hg');

		if (g1) {
			if (g1.options[g1.selectedIndex].value == '0') {
				alert ('Please select all fields...');
				return;
			} else {
				var out_link = inp_link + '&hg=' + g1.options[g1.selectedIndex].value;
			}
		} else {
			var out_link = inp_link;
		}
		location.href = out_link;
	}

	function redir_with_fs(rr_sm, inp_link) {
		var need_fs_insert = 0;

		var g1 = d('fs');
		if (g1) {
			var cur_fs = g1.options[g1.selectedIndex].value;
			if (cur_fs != '') need_fs_insert = 1;
		} else {
			var cur_fs = '';
		}

		var cur_url = inp_link;
		var url_arr = cur_url.split('?');
		var base_url = url_arr[0];
		var tmp_params = url_arr[1];
		var url_params = tmp_params.split('&');
		var split_route = (rr_sm == '' ? 0 : 1);

		var fs_found = 0;
		var fs_pos = 0;
		var new_fs = '';
		for (i=0; i<url_params.length; i++) {
			var cur_tmp = url_params[i].split('=');
			if (cur_tmp[0] == 'fs') {
				fs_found = 1;

				if ((cur_fs != '') && (cur_fs != cur_tmp[1])) {
					new_fs = 'fs=' + cur_fs + ',' + cur_tmp[1];
					need_fs_insert = 0;
				}
			}
			if (cur_tmp[0] == 'hg') {
				fs_pos = i; // position to insert fs (after hg)
			}
		}

		var new_inp_link = '';
		for (j=0; j<url_params.length; j++) {
			var cur_tmp = url_params[j].split('=');
			if (cur_tmp[0] == 'fs' && fs_found == 1) {
				// fs already exists, insert new one instead
				new_inp_link = new_inp_link + '&' + new_fs;
			} else {
				// all normal params
				if (cur_tmp[0] != 'fs') {
					new_inp_link = (new_inp_link=='' ? new_inp_link + '?' + url_params[j] : new_inp_link + '&' + url_params[j]);
				}

				// if fs doesnt exist, gonna insert in position
				if ((j == fs_pos) && (need_fs_insert == 1) && (fs_found == 0)) {
					new_inp_link = new_inp_link + '&fs=' + cur_fs ;
				}
			}

		}

		var out_link = base_url + new_inp_link + rr_sm;

		location.href = out_link;
	}

	function product_load (gid,pid) {
		xmlreq_put('/assembly.php?act=gpf&gid='+gid,'product_form');
		xmlreq_put('/assembly.php?act=gpd&pid='+pid,'product_data');
	}
	function product_data_load (prms) {
		xmlreq_put('/assembly.php?act=gpd'+prms,'product_data');
	}
	function product_form_load (in_grp,form_prms) {
		xmlreq_put('/assembly.php?act=gpf&gid='+in_grp+form_prms,'product_form');
	}

	function auto_group_select(prm) {
		for (ii=1; ii<=4; ii++) {
			var obj = document.getElementById('s_l'+ii);
			if(obj.options.length == 2) {
				obj.options[1].selected = true;
				if (ii <= 3) {
					loadoptions(obj.selectedIndex,(ii+1),prm);
				}
				if (ii == 4) {
					loadproductform(1,4,prm);
				}
			}
		}
	}

	/* -------------- functions from old code - fuck knows what for -------------- */
	
	function select_by_id (obj, id) {
		if (typeof(obj.options) == "undefined") return false;
		for (var ij=0;ij<obj.options.length;ij++)
			if (obj.options[ij].value == id)
				obj.options[ij].selected = true;
	}
	
	function notexist_in_sel (obj, id) {
		if (typeof(obj.options) == "undefined") return false;
		if (id == 0) return false;
		for (var i=0;i<obj.options.length;i++)
			if (obj.options[i].value == id)
				return false;
		return true;
	}
	
	function clearforms(obj) {
		if (typeof(obj) == "undefined") return false;
		if (typeof(obj.options) == "undefined") return false;
		while (obj.options.length>0) {
			deleteIndex=obj.options.length-1;
			obj.options[deleteIndex]=null;
		}
	}
	
	function opt(object,href,text) {
		if (typeof(object) == "undefined") return false;
		var optionName = new Option(text, href, false, false)
		var length = object.length;
		object.options[length] = optionName;
	}
	
	function IsNumeric(strString) {
		//  check for valid numeric strings	
		var strValidChars = "0123456789.";
		var strChar;
		var blnResult = true;
		
		if (strString.length == 0) return false;
		if (strString == '0') return false;
		
		//  test strString consists of valid characters listed above
		for (i = 0; i < strString.length && blnResult == true; i++)
			{
			strChar = strString.charAt(i);
			if (strValidChars.indexOf(strChar) == -1)
				{
				blnResult = false;
				}
			}
		return blnResult;
	}
