function numberFormat (number, decimals, dec_point, thousands_sep) {
	var decimals = Math.abs(decimals) + 1 ? decimals : 2;
	var dec_point = dec_point || '	.';
	var thousands_sep = thousands_sep || ',';

	var matches = /(-)?(\d+)(\.\d+)?/.exec(number + ''); // returns matches[1] as sign, matches[2] as numbers and matches[2] as decimals
	var remainder = matches[2].length > 3 ? matches[2].length % 3 : 0;
	return (matches[1] ? matches[1] : '') + (remainder ? matches[2].substr(0, remainder) + thousands_sep : '') + matches[2].substr(remainder).replace(/(\d{3})(?=\d)/g, "$1" + thousands_sep) + 
			(decimals ? dec_point + (+matches[3] || 0).toFixed(decimals).substr(2) : '');
}
function _edasi() {
	if(itemsCount() <= 0) {
		alert("Ostukorv on tühi!");
		return;
	}
	text = $('deliveryPrices').options[$('deliveryPrices').selectedIndex].text;
	var req = new Request({url:'php/ajax_basket.php?lang=0&delivery=1&country='+text, 
		onSuccess: function(html) {
			window.location = 'index.php?l=0&p=pay';
		}
	});
	req.send();
}

function itemsCount() {
	elems = getElementsByName_iefix('td', 'itemPrice');
	return elems.length;
}


function _addToBasket() {
	frame = $('raam').value;
	color = $('varv').value;
	klaas_ = $('klaas').checked;
	//if(color == "Raamita") frame = "Raamita";
	id = 28;
	var req = new Request.HTML({url:'php/ajax_basket.php?add='+id+'&frame='+frame+'&color='+color+'&klaas='+klaas_, 
		onSuccess: function(html) {
			window.location = "index.php?l=0&p=basket";
		},
		onFailure: function() {
		}
	});
	req.send();
}

function _preview() {
	if($('varv').value == "" || $('varv').value == "Raamita") {
		alert("Palun valige raam!");
		return;
	}
	tmp = $('varv').value.split(", ");
	window.open("preview.php?basis="+$('raam').value+"&color="+$('varv').value+"&img=28.jpg", "_blank");
}


function go(url) {
	// TODO: kas klaas valit? taust ja ka raam on koguaeg olemas
	_glasss = '';
	if (typeof(pcs['item']['selecteditems']['glass']) != 'undefined' && pcs['item']['selecteditems']['glass'] != null) {
		_glasss = '&gid='+pcs['item']['selecteditems']['glass']['id'];
	}
	window.location = url+'&bid='+pcs['item']['selecteditems']['backends']['id']+'&fid='+pcs['item']['selecteditems']['frames']['id'] + _glasss;
}

function amountschanged() {

	_amchgurl = '';
	// muutunud kogused urli kaasa + transa id ka muidugi
	if (cart['items'] != undefined) {
		for (cit in cart['items']) {
			if (cart['items'][cit]['changedamount'] == 1) {
				_amchgurl += '&chamount['+cart['items'][cit]['id']+']='+cart['items'][cit]['amount'];
			}
		}
		_amchgurl += '&trans='+cart['selectedtrans'];
	}
	return _amchgurl;
}

function remove(url, id) {
	recalctrans();
	_amc = amountschanged();
	window.location = url + '&xid=' + id + _amc;
	//alert(url + '&xid=' + id + _amc);
}

function edasi(url) {
	recalctrans();
	_amc = amountschanged();
	window.location = url + _amc;
}




function recalctrans() {

	if (typeof(cart) == 'object' && document.getElementById('deliveryPrice') != undefined && document.getElementById('totalSum') != undefined) {
		
		altxt = '';
		_tcprice = _dprice = 0;// totalcartprice, deliveryprice


		// korvi itemid, kogused, hinnad
		if (cart['items'] != undefined) {
			for (cit in cart['items']) {

				_cprice = 0;// default itemi hind*kogus
				// vaatame mis on objektis olev kogus ja mis on fieldis olev, kui erinev, fieldi kogus objekti ja see aluseks v8tta hinnamudimisel
				_ctrid = cart['items'][cit]['id'];
				_ctrfield = document.getElementById('amount'+_ctrid);
				_ctrobjamount = parseFloat(cart['items'][cit]['amount']);
				// inputi kontroll, et aint nubmrid...
				if (!isNumber(_ctrfield.value)) {_ctrfield.value = _ctrobjamount;}
				_ctrfldamount = parseFloat(_ctrfield.value);
				if (_ctrobjamount != _ctrfldamount) {
					cart['items'][cit]['amount'] = _ctrfldamount;
					_ctrfield.value = _ctrfldamount;
					// muutmise fakt, hiljem edasi ja remove tegevused kontrollivad seda ja lisavad muutuste jutu urli, et sessioonis ka muutuks
					cart['items'][cit]['changedamount'] = 1;
				}
				_cprice = cart['items'][cit]['amount'] * cart['items'][cit]['price'];// konkreetse itemi hind * kogus
				_tcprice += _cprice;// korvi koguhinnale ka see rida juurde

			}
		}// korvi itemid, kogused, hinnad



		// mis transa valitud
		_tc = document.getElementById('deliveryPrices');
		if (_tc != null && _tc != undefined && _tc.selectedIndex != undefined && _tc.selectedIndex != null) {
			cart['selectedtrans'] = _tc.options[_tc.selectedIndex].value;
			cart['selectedtransprice'] = 0;
			// id pole idx, tuleb massiivi kerida, et hind leida...
			for (tr in cart['trans']) {
				if (cart['trans'][tr]['id'] == cart['selectedtrans']) {
					_dprice = cart['selectedtransprice'] = cart['trans'][tr]['price'];
					_tcprice += _dprice;// korvi koguhinnale transa juurde
				}
			}
		}// mis transa valitud


		
		altxt += '_tcprice='+_tcprice+'; trans id: '+cart['selectedtrans']+'; _dprice='+_dprice+'<br>';



		document.getElementById('deliveryPrice').innerHTML = numberFormat((_dprice), 2, ".", "")+'&nbsp;'+cart['currency']+'&nbsp;';

		document.getElementById('totalSum').innerHTML = numberFormat((_tcprice), 2, ".", "")+'&nbsp;'+cart['currency']+'&nbsp;';// cartlisting
		if (document.getElementById('cartTotalPaymentChoice') != undefined && document.getElementById('cartTotalPaymentBank') != undefined) {
			document.getElementById('cartTotalPaymentChoice').innerHTML = numberFormat((_tcprice), 2, ".", "")+'&nbsp;'+cart['currency']+'&nbsp;';// payment choice
			document.getElementById('cartTotalPaymentBank').innerHTML = numberFormat((_tcprice), 2, ".", "")+'&nbsp;'+cart['currency']+'&nbsp;';// chosen bank
		}
		document.getElementById('testt').innerHTML = altxt;

	}
}

String.prototype.trim = function() {
	return this.replace(/^\s*|\s*$/g,'');
}

// varjame paymentchoice lehel valiku ja kuvame vormi -- banktransfer
function chooseBank() {
	document.getElementById('paymentchoice').style.display = 'none';
	document.getElementById('paymentform').style.display = '';
}
// varjame paymentchoice lehel valiku ja kuvame korvi -- tagasi
function chooseCart() {
	document.getElementById('paymentchoice').style.display = 'none';
	document.getElementById('cartlist').style.display = '';
}
// varjame paymentform lehel vormi ja kuvame valiku -- tagasi
function chooseChoice() {
	document.getElementById('paymentchoice').style.display = '';
	document.getElementById('paymentform').style.display = 'none';
}


function paymentBankSubmit(lang, rands) {

	// req flds
	_flds = 'bankformname, bankformsurname, bankformphone, bankform2city, bankform2index, bankform2address, bankform2name, bankform2surname, bankformemail, bankformrndimg';
	_fldsar = _flds.split(', ');
	_formok = true;
	_formerr = '';
	for (_fld in _fldsar) {
		_thisfld = document.getElementById(_fldsar[_fld]);
		_thisfldval = _thisfld.value.trim();
		if (_thisfldval == '') {
			_formok = false;
			_thisfld.style.background = '#fdd';
		} else {
			_thisfld.style.background = '';		
		}
        if (_fldsar[_fld] == 'bankformemail' && _thisfldval != ''){
            Mail = _thisfldval.toLowerCase();
            if (Mail.search(/^([a-z]+)([a-z0-9\-\_\.]{1,100})([a-z0-9]+)\@([a-z0-9]+)([a-z0-9\-\.]*)([a-z0-9]+)\.([a-z]{2,6})$/) == -1){
                _formok = false;
                _thisfld.style.background = '#fdd'; 
                if (lang == 'est'){
                    alert('E-posti aadress ei ole õige!');                 
                } else if (lang == 'eng') {
                    alert('Email address is not correct!');                 
                } else if (lang == 'deu') {
                    alert('E-Mail-Adresse ist nicht korrekt!'); 
                }
                return false;          
            }            
        }
        if (_fldsar[_fld] == 'bankformrndimg' && _thisfldval != ''){
            if (_thisfldval != rands){
                _formok = false;
                _thisfld.style.background = '#fdd'; 
                if (lang == 'est'){    
                    alert('Sisestatud kood ei ole õige!');                 
                } else if (lang == 'eng') {
                    alert('Code you entered is not correct!');                 
                } else if (lang == 'deu') {
                    alert('Ihnen eingegebene Code ist nicht korrekt!'); 
                }
                return false;          
            }            
        }        
	}
	if (_formok == true) {
//        if (lang == 'est'){
//            alert('Tellimine õnnestus.');                 
//        } else if (lang == 'eng') {
//            alert('Ordering succeeded.');                 
//        } else if (lang == 'deu') {
//            alert('Bestellung gelungen.'); 
//        }
		document.getElementById('data').submit();
	} else {
        if (lang == 'est'){
            alert('Palun täitke kõik kohustuslikud väljad.');                 
        } else if (lang == 'eng') {
            alert('Please fill out the required fields.');                 
        } else if (lang == 'deu') {
            alert('Bitte füllen Sie alle erforderlichen Felder aus.'); 
        }		
		return false;
	}
}











function preview(way) {


	if (!way) way = 'pop';
	altxt = '';

	_pophtml = '';
	if (way == 'pop') _pophtml += '<html><head><title>'+document.title+'</title></head><body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">';
	if (_frpicpieces[2] != undefined) {
		_pophtml += '<table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0"><tr><td align="center" valign="middle">';
		_pophtml += '<table border="0" cellspacing="0" cellpadding="0"><tr><td><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td width="60"><img src="'+_frpicpieces[0]+'" width="60" height="60"></td><td style="background: url(\''+_frpicpieces[1]+'\') repeat-x top;">&nbsp;</td><td width="60"><img src="'+_frpicpieces[2]+'" width="60" height="60"></td></tr></table></td></tr><tr><td><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td style="background: url(\''+_frpicpieces[3]+'\') repeat-y top left;" width="60">&nbsp;</td><td>';
	}
	_imghtml = '<img src="'+pcs['item']['picture']+'" id="jsimg" width="100%" height="100%" alt="" />';
	if (typeof(_imw) == 'undefined') {// kontrollime m88tusid
		_imghtml = '<img src="'+pcs['item']['picture']+'" id="jsimg" alt="" />';
		document.getElementById('imgtd').innerHTML = _imghtml;
		_imw = document.getElementById('jsimg').width;
		_imh = document.getElementById('jsimg').height;
	}

	_imghtml = '<img src="'+pcs['item']['picture']+'" id="jsimg" width="'+_imw+'" height="'+_imh+'" alt="" />';// plain-image variant
	if (_frpicpieces[2] != undefined) {
		_imghtml = '<img src="'+pcs['item']['picture']+'" id="jsimg" alt="" />';// koos raamiga, 100%
	}
	_pophtml += _imghtml;

	if (_frpicpieces[2] != undefined) {
		_pophtml += '</td><td style="background: url(\''+_frpicpieces[4]+'\') repeat-y top right;" width="60">&nbsp;</td></tr></table></td></tr><tr><td><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td width="60"><img src="'+_frpicpieces[5]+'" width="60" height="60"></td><td style="background: url(\''+_frpicpieces[6]+'\') repeat-x top;">&nbsp;</td><td width="60"><img src="'+_frpicpieces[7]+'" width="60" height="60"></td></tr></table></td></tr></table>';
		_pophtml += '</td></tr></table>';
	}

	if (way == 'pop') {
		_pophtml += '</body></html>';
		a = window.open("", "_blank");
		a.document.write(_pophtml);	
		a.document.close();
	} else {
		_imgtdOriginalHtml = document.getElementById('imgtd').innerHTML;
		document.getElementById('imgtd').innerHTML = _pophtml;
	}
	document.getElementById('testt').innerHTML = altxt;
}



function recalculate() {

	if (typeof(pcs) == 'object' && document.getElementById('frames') != undefined && document.getElementById('glass') != undefined) {
		
		altxt = '';
		_price = pcs['item']['price'];
		_pprice = 0;// lisandite hind
		altxt += 'pcs:type='+typeof(pcs)+' ';


		for (x in pcs) {

			_x = x.toString();
			pcs['item']['selecteditems'][x] = null;// algne seade, pole valitud
			altxt += x + ':type='+typeof(x)+' ';
			altxt += 'pcs['+x+']:type='+typeof(pcs[x])+' ';
			//var _pc = false;
			_pc = document.getElementById(_x);
			if (_pc != null && _pc != undefined && _pc.selectedIndex != undefined && _pc.selectedIndex != null) {
				pcs['item']['selecteditems'][x] = _pc.options[_pc.selectedIndex].value;

				for (y in pcs[x]) {
					if (pcs[x][y]['id'] == _pc.options[_pc.selectedIndex].value) {
						pcs['item']['selecteditems'][x] = pcs[x][y];
					}
				}
			}

			if (_pc != null && _pc != undefined && _pc.checked != undefined && _pc.checked != null) {
				for (y in pcs[x]) {
					if (_pc.checked == true && pcs[x][y]['id'] == _pc.value) {
						pcs['item']['selecteditems'][x] = pcs[x][y];
					}
				}
			}
		}

		altxt = '';

		
		pcs['glass']['disablee'] = true;
		for (a in pcs['glass']) {
			if (pcs['glass'][a]['backends'] != undefined) {
				for (var z in pcs['glass'][a]['backends']) {
					if (pcs['glass'][a]['backends'][z] == pcs['item']['selecteditems']['backends']['id']) {
						if (pcs['item']['selecteditems']['frames']['id'] != pcs['frames'][0]['id']) {// et ka raam oleks valitud
							pcs['glass']['disablee'] = false;
						}
					}
				}
			}
		}

		if (pcs['glass']['disablee'] == true) {// kui klaas illegaalne, siis maha ka valitute hulgast ja uncheck
			delete pcs['item']['selecteditems']['glass'];
			document.getElementById('glass').checked = false;
		}
		


		// test selecti sisu json baasil loomiseks. 
		for (a in pcs) {
			if (a == 'frames') {
				ophtml = '';
				_funs = true;// vaikimisi raami valik tyhistamisele m22ratud siinse loopi j2rel
				for (b in pcs[a]) {// test yle k8igi raamide
					_fdis = true;// vaikimisi raam keelatud
					for (c in pcs['item']['selecteditems']['backends']['frames']) {// kas sel taustal on see raam lubatud
						if (pcs[a][b]['id'] == pcs['item']['selecteditems']['backends']['frames'][c]) {
							_fdis = false;
							// uurime, kas antud raam ka valitud, kui leiame, siis selecteditems massist glass elementi ei eemaldata
							if (pcs['item']['selecteditems']['frames']['id'] == pcs[a][b]['id']) {
								_funs = false;
							}
						}
					}
					if (_fdis == false) {// kui oli lubat, uurime kas on ta ka valitud ja kuvame...
						_sel = '';
						if (pcs['item']['selecteditems'][a]['id'] == pcs[a][b]['id']) {
							_sel = ' selected="selected"';
						}
						ophtml += '<option value="'+pcs[a][b]['id']+'"'+_sel+' />'+pcs[a][b]['name'];
					}
				}
				if (_funs == true) {// raam oli ilmselt enne valitud olnud...
					pcs['item']['selecteditems']['frames'] = pcs['frames'][0];
				}
			}
		}

		ophtml = '<select class="form" name="frames" id="frames" onchange="javascript:recalculate();">'+ophtml+'</select>';// IE8, IE6 ei lase selecti sisu innerHTML muuta
		document.getElementById('frames_td').innerHTML = ophtml;





		// taust pasp 1|0 ? ja kui raam valitud, leiame 8ige pildi-urli
		_frpicture = '';
		_frpicpieces = [];
		//altxt += ' _frpicture: '+_frpicture+';';
		if (pcs['item']['selecteditems']['backends']['pasp'] != undefined) {
			if (pcs['item']['selecteditems']['frames']['id']) {// raam valitud?
				if (pcs['item']['selecteditems']['frames']['picture'] != undefined) {
					_frpicture = pcs['item']['selecteditems']['frames']['picture'];// vaikimisi non-pasp pilt
				}
				if (pcs['item']['selecteditems']['backends']['pasp'] == 1) {// taust on ise pasp v8i mitte?
					if (pcs['item']['selecteditems']['frames']['picturepasp'] != undefined) {
						_frpicture = pcs['item']['selecteditems']['frames']['picturepasp'];
					}
				}
			}
		}
		//altxt += ' _frpicture: '+_frpicture+';';
		if (_frpicture != '') {// tykeldet versioonide urlid
			_splitstr = '.jp';
			_frpicsplit = _frpicture.split(_splitstr);
			_splitnrs = [0,4,1,7,5,3,6,2];
			for (_sp in _splitnrs) {
				_frpicpiece = _frpicsplit[0]+'_'+_splitnrs[_sp]+_splitstr+_frpicsplit[1];
				_frpicpieces[_sp] = _frpicpiece;
				//altxt += '<br />splitpic: '+_frpicpiece+';';
			}
		}


		// hinnad
		// hinna leidmisel uurime valitud tausta framecoef numbrit ja kui raam valitud, siis tema hind on hind*framecoef
		// hind on siis taustahind + (raamihind*framecoef) + klaasihind
		_backprice = _frameprice = _framecoef = _glassprice = 0;
		if (pcs['item']['selecteditems']['backends'] != null) {
			_backprice = pcs['item']['selecteditems']['backends']['price'];
			_framecoef = pcs['item']['selecteditems']['backends']['framecoef'];
		}
		if (pcs['item']['selecteditems']['frames'] != null) {
			_frameprice =  pcs['item']['selecteditems']['frames']['price'];
		}
		if (pcs['item']['selecteditems']['glass'] != null) {
			_glassprice =  pcs['item']['selecteditems']['glass']['price'];
		}
		_pprice = _backprice + (_frameprice * _framecoef) + _glassprice;
		altxt += '<br />prices: _backprice='+_backprice+'; _frameprice='+_frameprice+'; _glassprice='+_glassprice+'; _framecoef='+_framecoef+'; _pprice='+_pprice;

		// test
		altxt += '<br />selecteditems test: ';
		for (d in pcs['item']['selecteditems']) {
			if (pcs['item']['selecteditems'][d] != null) {
				altxt += ''+d+':'+pcs['item']['selecteditems'][d]['id']+'; ';
			}
		}






		
		document.getElementById('glass').disabled = false;
		if (pcs['glass']['disablee'] == true) {
			document.getElementById('glass').disabled = true;
		}
		document.getElementById('hind').innerHTML = numberFormat((_price+_pprice), 2, ".", "")+'&nbsp;'+pcs['item']['currency']+'&nbsp;';
		//document.getElementById('testt').innerHTML = altxt;

		//preview('pass');
	}
}

// v8iks ka ju kasutada isNaN() asja...
function isNumber(InString)  {
	if (InString.length==0) return (false);
	var RefString = "1234567890";
	for (Count=0; Count < InString.length; Count++)  {
		TempChar = InString.substring (Count, Count+1);
		if (RefString.indexOf (TempChar, 0) == -1) return (false);
	}
	return (true);
}



function recObj(obj, dpth) {
	var json = '';
	var tb = '    ';
	if (dpth == undefined) {var dpth = 1;} else {}
	var tbf = '';
	for (i=0; i < dpth; i++) {tbf += tb;}
	var tof = '';
	for (var ab in obj) {
		tof = typeof(obj[ab]);
		len = obj[ab].length;
		json += tbf+ab+' = ('+tof+')('+len+') ';
		if (tof == 'object' || tof == 'array') {
			json += ':\n'+recObj(obj[ab], ++dpth); dpth--;
		} else if (tof == 'string' || tof == 'number' || tof == 'boolean') {
			json += obj[ab].toString()+'\n';
		}
	}
	return json;
}

