﻿/**
 * @author Ing. Róbert Jašurek
 */
// Uzivatelske premenne
var adresaInfo = "info@elektrobicykel.eu";
var predmetInfo = ink("Informacie", "Informace") + " elektronickou postou na adresu ";
var spravaInfo = ink("Prajem si dostavat informacie", "Preju si dostavat informace") + " elektronickou postou na adresu ";
var plnyKosik = ink("Prepáčte, v nákupnom košíku je už maximálne množstvo typov tovaru. Prosím odošlite objednávku a potom môžete znovu pridávať tovar do košíka.", "Promiňte, v nákupním košíku je již maximální množství typů zboží. Prosím odešlete objednávku a pak můžete znovu přidávat zboží do košíku.");
var msgS = ink("Zadajte prosím ", "Zadejte prosím ");

// Systemove premenne
var ajaxFrame = "frame-1";
var bin = new Array(5);
var binSize = 5;
var separatorTisic = ' ';
var decimalFrom = ".";
var decimalTo = ",";
var decimalFormat = "00";
var fieldCount = 10;
var newL = "\n";


// Galeria

function showPhoto(gal, img){
	var args = "width=465,height=350,resizable=yes";
	var win = window.open("galeria/photo" + gal + "_" + img + ".jpg", gal + img, args);
}


// Kosik object

var binO = new Object();

// Kosik: kod tovaru, pocet kusov
binO.create = function(){
	for(var i=0; i<binSize; i++){
		bin[i] = new Array("", 0);
	}
};
binO.create();

binO.setCountItem = function(){
	var countI = 0;
	for(var i=0; i<binSize; i++){
		countI += bin[i][1];
	}
	var digital = countI < 10 ? "0" : "";
	var elm = getElement("count-bin");
	elm.innerHTML = digital + countI;
};

binO.changeCountItem = function(order){
	var elm = getElement("pocet" + order);
	bin[order - 1][1] = new Number(elm.value);
	binO.setCountCost();
	binO.setCountItem();
};

binO.setCountCost = function(){
	var countC = 0;
	var id = "";
	for(var i=0; i<binSize; i++){
		id = bin[i][0];
		if(id != "") countC += (item[id][2] * bin[i][1]);
	}
		binO.sumCost = (formatNumD(countC) + mena);
		var elm = getElement("sum-cost");
		elm.innerHTML = binO.sumCost;
};

binO.refresh = function(){
	var elm = "";
	for(var j=0, r=1; j<binSize; j++, r++){
		elm = document.getElementById("row" + r);
		if(elm != null) elm.style.display = bin[j][0] == "" ? "none" : "block";
		elm = document.getElementById("popis" + r);
		if(elm!=null) elm.innerHTML = bin[j][0] == "" ? "" : (r + ". &nbsp;" + item[bin[j][0]][0]);
		elm = document.getElementById("cena" + r);
		if(elm!=null) elm.innerHTML = bin[j][0] == "" ? "" : (formatNumD(item[bin[j][0]][2]) + mena);
		elm = document.getElementById("pocet" + r);
		if(elm!=null) elm.value = bin[j][0] == "" ? "" : bin[j][1];
	}
	binO.setCountCost();
	binO.setCountItem();
};

binO.removeItem = function(item){
	bin.splice(item - 1, 1);
	bin.push(new Array("", 0));
	binO.refresh();
};

var idItm = "";
var isFullBin = false;

binO.addItem = function(idItem){
	var isFull = true;
	for(var i=0; i<binSize; i++){
		if(bin[i][0] == ""){
			isFull = false;
			bin[i][0] = idItem;
			bin[i][1]++;
			break;
		}else if(bin[i][0] == idItem){
			isFull = false;
			bin[i][1]++;
			break;
		}
	}
	if(isFull){
		isFullBin = true;
		alert(plnyKosik);
	}
};

binO.addBike = function(idItem){
	if(idItm != ""){
		idItem = idItm;
		idItm = "";
	}
	binO.addItem(idItem);
	showPage1("kosik");
};

binO.addRig = function(){
	var elm = "";
	for(var i=1; i<=pocetPrislusenstvo; i++){
		//if(isFullBin) break;
		elm = document.getElementById("a" + i);
		if(elm != null){
			if(elm.checked) binO.addItem(elm.value);
		}
	}
	showPage1("kosik");
};

function showForm(page){
	var idP = "page";
	var idS = "step";
	var classP = "ko-page-";
	var classS = "ko-step ko-step-";
	for(var i=1; i<5; i++ ){
		var elm = document.getElementById(idP + i);
		if(elm != null) elm.className = classP + i + " ko-page-off";
		elm = document.getElementById(idS + i);
		if(elm != null) elm.className = classS + "off";
	}
	elm = document.getElementById(idP + page);
	if(elm != null) elm.className = classP + page + " ko-page-on";
	elm = document.getElementById(idS + page);
	if(elm != null) elm.className = classS + "on";
}


// Objednavka

var orderO = new Object();

orderO.setOrder = function(){
	var items1 = "", items2 = "", items3 = "", field1 = "", field2 = "";
	var fld = new Array(fieldCount);
	var id = "";
	var sep = "\n\t\t";
	orderO.tovar = "";
	for(var i=0; i<binSize; i++){
		id = bin[i][0];
		if(id != ""){
			items1 += (i + 1).toString() + ". ";
			items1 += item[id][0] + "<br />";
			items2 += " " + bin[i][1] + " ks<br />";
			items3 += " " + formatNumD(item[id][2]) + mena + "<br />";
			orderO.tovar += "\t" + (i + 1) + ". " + item[id][0] + sep + bin[i][1] + " ks" + sep;
			orderO.tovar += formatNumD(item[id][2]) + mena + newL;
		}
	}
	items1 += "<b>Spolu: </b>";
	items3 += "<b>" + binO.sumCost + " s DPH</b>";
	var elm = getElement("order-items-1");
	elm.innerHTML = items1;
	elm = getElement("order-items-2");
	elm.innerHTML = items2;
	elm = getElement("order-items-3");
	elm.innerHTML = items3;
	for(var j=1; j<=fieldCount; j++){
		elm = getElement("field" + j);
		fld[j-1] = elm.value;
	}
	field1 += fld[0] + " " + fld[1] + "<br />";
	field1 += fld[2] + "<br />";
	field1 += fld[5] + ", " + fld[6] + " " + fld[4] + ", " + fld[3];
	field2 += fld[7] + "<br />";
	field2 += fld[8] + "<br />";
	field2 += fld[9];
	orderO.menoP = fld[0] + " " + fld[1];
	orderO.firma = fld[2];
	orderO.adresa = fld[5] + ", " + fld[6] + " " + fld[4] + ", " + fld[3];
	orderO.icDic = fld[7];
	orderO.email = fld[8];
	orderO.tel = fld[9];
	elm = getElement("order-data-1");
	elm.innerHTML = field1;
	elm = getElement("order-data-2");
	elm.innerHTML = field2;
};

orderO.createOrder = function(){
	showForm(2);
};

orderO.confirmOrder = function(){
	var elm = "", firma = "", msgA = "";
	var msg = new Array(fieldCount + 1);
	msg[1] = ink("Meno", "Jméno");
	msg[2] = ink("Priezvisko", "Příjmení");
	msg[5] = ink("Mesto", "Město");
	msg[6] = "Ulicu";
	msg[7] = "PSČ";
	msg[8] = "IČ/DIČ";
	msg[9] = ink("správnu", "správnou") + " E-mail adresu";
	msg[10] = ink("Telefónne číslo", "Telefonní číslo");
	var noMeno = false, noPriezvisko = false;
	for(var i=1; i<=fieldCount; i++){
		elm = getElement("field" + i);
		isEmpty = (elm.value == "");
		switch(i){
			case 3:
				firma = elm.value;
				break;
			case 4:
				break;
			case 8:
				if(firma == ""){
					if(!isEmpty && elm.value != "/") msgA += ink("Firmu, ak ste", "Firmu, pokud jste") + " zadali IC/DIC";
					elm = getElement("field3");
					elm.focus();
				}else{
					if(isEmpty || elm.value == "/"){
						msgA += msg[i];
						elm.focus();
					}
				}
				break;
			case 9:
				if(!isValidEmailAddress(elm.value)){
					msgA += msg[i];
					elm.focus();
				}
				break;
			default:
				if(isEmpty){
					msgA += msg[i];
					elm.focus();
				}
		}
		if(msgA != ""){
			alert(msgS + msgA + ".");
			window.status = ink("Objednávka nebola potvrdená.", "Objednávka nebyla potvrzena.");
			return;
		}
	}
	orderO.setOrder();
	showForm(3);
	window.status = ink("Objednávka bola potvrdená.", "Objednávka byla potvrzena.");
};

orderO.send = function(){
    var data = "";
   	var msgP = ink("Prepáčte, ", "Promiňte, ");
   	var newL1 = newL + newL;
   	// data
	data += "tvr=" + orderO.tovar;
	data += "&cns=" + binO.sumCost + " s DPH";
	data += "&mnp=" + orderO.menoP;
	data += "&frm=" + orderO.firma;
	data += "&adr=" + orderO.adresa;
	data += "&icd=" + orderO.icDic;
	data += "&eml=" + orderO.email;
	data += "&tel=" + orderO.tel;
	var req = ajxO.getXMLHTTP();
	if( req ){
		req.onreadystatechange = function(){
			if( req.readyState == 4 ){
				var elm = getElement("result-order");
				elm.innerHTML = req.responseText;
			}
		};
		req.open("POST", "pages/order_result_sk.php?lng=" + language, true);
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
		req.send( data );
	}
};

orderO.submitOrder = function(){
	if(confirm(ink("Chcete odoslať objednávku?", "Chcete odeslat objednávku?"))){
		showForm(4);
		orderO.send();
	}else{
		window.status = ink("Objednávka nebola odoslaná.", "Objednávka nebyla odeslána.");
		return;
	}
};


// Menu

function onButton( button ){
	if( button != null ){
		button.className = "menu button-on";
		showSubmenu(button.id.substring(button.id.length - 1, button.id.length));
	}
}

function offButton( button ){
	if( button != null ){
		button.className = "menu button-off";
		hideSubmenu(button.id.substring(button.id.length - 1, button.id.length));
	}
}

function onSubmenu( button ){
	if( button != null ){
		button.className = "submenu-i submenu-on";
	}
}

function offSubmenu( button ){
	if( button != null ){
		button.className = "submenu-i submenu-off";
	}
}

function showSubmenu( order ){
	var elm = document.getElementById("submenu-" + order);
	if(elm != null){
		elm.style.visibility = "visible";
	}
}

function hideSubmenu(order){
	var elm = document.getElementById("submenu-" + order);
	if(elm != null){
		elm.style.visibility = "hidden";
	}
}


// Surf

function showPage(url){
	var arg = "";
	if(url == "") url = "blank";
	if(url == "kosik") arg = "bin";
	if(url == "cube1"){
		url = "dinghi";
		arg = "cube1";
	}
	if(url == "akcia1"){
		url = "frisbee";
		arg = "akcia1";
	}
	ajxO.ajaxSetHtml("pages/" + url + "_sk.php?lng=" + language, ajaxFrame, arg);
}

function showPage1(url){
	var elm = document.getElementById(ajaxFrame);
	if(elm != null) elm.className = ajaxFrame + " frame-1-min";
	elm = document.getElementById("cube-box");
	if(elm != null) elm.style.display = "block";
	showPage(url);
}

function showPage2(url){
	var elm = document.getElementById("cube-box");
	if(elm != null) elm.style.display = "none";
	elm = document.getElementById(ajaxFrame);
	if(elm != null) elm.className = ajaxFrame + " frame-1-max";
	showPage(url);
}


//Produkty

function zoomBike(bike){
	var args = "width=970,height=620,resizable=yes";
	var win = window.open("gallery/" + bike + "_z.jpg", bike, args);
}

function showProduct(product, id){
	var idF = "p-";
	var idA = "linka-";
	var classF = "p-frame-main";
	var classA = "p-linka-";
	for(var i=1; i<=5; i++ ){
		var elm = document.getElementById(idF + i);
		if(elm != null) elm.className = classF + " p-hide";
		var elmA = document.getElementById(idA + i);
		if(elmA != null) elmA.className = classA + "off";
	}
	elm = document.getElementById(idF + product);
	if(elm != null) elm.className = classF + " p-show";
	elmA = document.getElementById(idA + product);
	if(elmA != null) elmA.className = classA + "on";
	var elmC = document.getElementById("cena0");
	if(elmC != null) elmC.innerHTML = formatNumD(item[id][1]) + mena;
	var elmD = document.getElementById("cena");
	if(elmD != null) elmD.innerHTML = formatNumD(item[id][2]) + mena + " s DPH";
	idItm = id;
}

function getEmailInfo(){
	var field = document.getElementById("emailAddress");
	if(field != null){
		if(isValidEmailAddress(field.value)){
			window.location.href = "mailto:" + adresaInfo + "?subject=" + predmetInfo + field.value + "&body=" + spravaInfo + field.value + "."; 
		}else{
			alert(ink("Prepáčte, adresa nie je správna.", "Promiňte, adresa není správná."));
		}
	}
}


//Ajax object
ajxO = new Object();

ajxO.getXMLHTTP = function(){
    var req = false;
    if( window.XMLHttpRequest ){
        try {
            req = new XMLHttpRequest();
        } catch(e) {
            req = false;
        }
    } else if( window.ActiveXObject ){
        try {
            req = new ActiveXObject( "Msxml2.XMLHTTP" );
        } catch(e) {
            try {
                req = new ActiveXObject( "Microsoft.XMLHTTP" );
            } catch(e) {
                req = false;
            }
        }
    }
    return req;
};

ajxO.ajaxSetHtml = function( url, frame, arg ){
    window.status = ink("Elektro bicykel", "Elektro bicykl");
    var elmB = document.getElementById( frame );
    elmB.innerHTML = "";
    var req = ajxO.getXMLHTTP();
    if( req ){
        req.onreadystatechange = function(){
            if( req.readyState == 4 ){
	            elmB.innerHTML = req.responseText;
	            if(arg == "bin") binO.refresh();
	            if(arg == "cube1") showProduct(2, "DC");
	            if(arg == "akcia1") showProduct(3, "");
            }
        };
        req.open("POST", url, true);
        req.send( "" );
    }
};


// Tools

function getElement(id){
	var elm = document.getElementById(id);
	if(elm == null){
		window.status = "Exception: Element is null.";
		return;
	}else{
		return elm;
	}
}
function isValidEmailAddress(address){
	var bad = /(^@)|(^\.)/;	// not valid
	var good = /\w+[a-zA-Z0-9\-\.]*\@[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})$/;	// valid
	if ( bad.test( address ) || !good.test( address ) ) { 
  		return false;
	}
	return true;
}
// nm - number, dc - count of decimal places
function roundParseNum( nm, dc ) {
	var dec = "1";
	for( var i = 1; i <= dc; i++ ) {
		dec += "0";
	}
	dec = new Number( dec );
	return ( Math.round( nm * dec ) / dec );
}
// sets thousand separators, sets decimal point
function formatNum( num ){
	num = roundParseNum( new Number( num ), decimalFormat.length );
	num = num.toString().replace(decimalFrom, decimalTo);
	var res = "";
	var sep = "";
	var dcm = "";
	var idx = num.indexOf( decimalTo );
	if( idx != -1 ){
		dcm = num.substring( idx, num.length );
		num = num.substring( 0, idx );
	}
	for( var i = num.length; i > 0; i -= 3 ){
		res = num.substring( i - 3, i ) + sep + res;
		sep = separatorTisic;
	}
	return ( res + dcm );
}
// sets fixed count of decimal places
function formatNumD( num ){
	var num = formatNum( num.toString() );
	var dcm = "";
	var idx = num.indexOf( decimalTo );
	if( idx != -1 ){
		dcm = num.substring( idx + 1, num.length );
		num = num.substring( 0, idx );
	}
	while( dcm.length < decimalFormat.length ){
		dcm += "0";
	}
	return ( num + decimalTo + dcm );
}
function ink(sk, cz){
	switch(language){
		case "sk":
			return sk;
		case "cz":
			return cz;
		default:
			return "";
	}
}

