//css-luokkien käsittelyyn
function JSCSS(a,o,c1,c2)
{
  switch (a){
    case 'swap':
      o.className=!jscss('check',o,c1)?o.className.replace(c2,c1): o.className.replace(c1,c2);
    break;
    case 'add':
      if(!jscss('check',o,c1)){o.className+=o.className?' '+c1:c1;}
    break;
    case 'remove':
      var rep=o.className.match(' '+c1)?' '+c1:c1;
      o.className=o.className.replace(rep,'');
    break;
    case 'check':
      return new RegExp('\\b'+c1+'\\b').test(o.className)
    break;
  }
}
document.getElementsByClassName = function(clsName){
    var retVal = new Array();
    var elements = document.getElementsByTagName("*");
    for(var i = 0;i < elements.length;i++){
        if(elements[i].className.indexOf(" ") >= 0){
            var classes = elements[i].className.split(" ");
            for(var j = 0;j < classes.length;j++){
                if(classes[j] == clsName)
                    retVal.push(elements[i]);
            }
        }
        else if(elements[i].className == clsName)
            retVal.push(elements[i]);
    }
    return retVal;
}

//assosiatiivisten taulukoiden käsittelyyn
function objectLength(object) {
	var i = new Number(0);
	for (var arvo in object) i++;
	return i;
}

// Funktioita elementtien näkyvyyden kontrollointiin.
function displayBlock(target) {
	if (!document.getElementById(target)) return;
	document.getElementById(target).style.display = 'block';
}
function displayNone(target) {
	if (!document.getElementById(target)) return;
	document.getElementById(target).style.display = 'none';
}
function displayToggle(target) {
	if (!document.getElementById(target)) return;
	if (document.getElementById(target).style.display == 'none') document.getElementById(target).style.display = 'block';
	else document.getElementById(target).style.display = 'none';
}

//Perusfunktioita cookieiden käsittelyyn.
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}
function eraseCookie(name) {
	createCookie(name,"",-1);
}

//Ostoskorikoodia. Koodi olettaa yhtä sun toista elementtien nimistä. PHP avaa korin.
function closeBasket(kori,cookie) {
	var keksi = new String();
	for (Tunnus in kori) {
		keksi += kori[Tunnus]['Maara'] + ',' + kori[Tunnus]['Hinta'] + ',' + kori[Tunnus]['Tuote'] + ',' + kori[Tunnus]['Tunnus'];
		keksi += ',,';
	}
	createCookie(cookie,keksi,0);
	return keksi;
}
function addProduct(Tunnus,Tuote,Hinta,kori) {
	if (kori[Tunnus]) kori[Tunnus]['Maara'] = kori[Tunnus]['Maara']+1;
	else {
		kori[Tunnus] = new Array();
		kori[Tunnus]['Maara'] = new Number('1');
		kori[Tunnus]['Hinta'] = new Number(Hinta);
		kori[Tunnus]['Tuote'] = Tuote;
		kori[Tunnus]['Tunnus'] = Tunnus;
	}
	drawBasket(kori);
	return kori;
}
function removeProduct(Tunnus,kori) {
	if (kori[Tunnus]) kori[Tunnus]['Maara'] = kori[Tunnus]['Maara']-1;
	if (kori[Tunnus]['Maara'] < 1) delete kori[Tunnus];
	drawBasket(kori);
	return kori;
}
function emptyBasket(kori) {
	kori = new Array ();
	drawBasket(kori);
	return kori;
}
function drawBasket(kori,moodi) {
	if (!moodi) moodi = moodi_viimeksi;
	moodi_viimeksi = moodi;
	if (moodi=="pieni" && objectLength(kori) < 1) {displayNone('ostoskori'); closeBasket(kori,'ostoskori'); return;}
	if (moodi=="suuri" && objectLength(kori) < 1) {closeBasket(kori,'ostoskori'); return;}
	displayBlock('ostoskori');
	var runko = document.getElementById('korinrunko');
	while (runko.hasChildNodes()) runko.removeChild(runko.firstChild);
	var kokonaissumma = new Number('0');
	var pluskuva = new Image(13,13);
	var miinuskuva = new Image(13,13);
	if (moodi == "pieni") {pluskuva.src = "/src/plussa.gif"; miinuskuva.src = "/src/miinus.gif";}
	else {pluskuva.src = "/src/isoplussa.gif"; miinuskuva.src = "/src/isomiinus.gif";}
	for (var Tunnus in kori) {
		var rivi = runko.insertRow(0);
		rivi.id = Tunnus.concat('korissa');
		var solu1 = rivi.insertCell(0);
		var solu2 = rivi.insertCell(1);
		var solu3 = rivi.insertCell(2);
		var solu4 = rivi.insertCell(3);
		solu1.setAttribute("onmouseover","displayBlock('"+Tunnus+"-kuvaus\')");
		solu1.setAttribute("onmouseout","displayNone('"+Tunnus+"-kuvaus\')");
		solu1.setAttribute("onclick","displayNone('"+Tunnus+"-kuvaus\')");
		linkki = solu1.appendChild(document.createElement('a'));
		linkki.setAttribute('href','/kauppa/tuote?t='+Tunnus);
		if (moodi == "pieni") linkki.setAttribute('style','color: white;');
		linkki.appendChild(document.createTextNode(kori[Tunnus]['Tuote']));
		solu2.innerHTML = kori[Tunnus]['Maara'];
		var summa = kori[Tunnus]['Maara'] * kori[Tunnus]['Hinta'];
		kokonaissumma += summa;
		summa = summa + " €";
		solu3.innerHTML = summa;
		var plusnappi = solu4.appendChild(new Image(13,13));
		plusnappi.src = pluskuva.src;
		plusnappi.alt = 'Lisää tuotetta';
		plusnappi.title = 'Lisää tuotetta';
		if (moodi == "suuri") solu4.appendChild(document.createTextNode(' '));
		var miinusnappi = solu4.appendChild(new Image(13,13));
		miinusnappi.src = miinuskuva.src;
		miinusnappi.alt = 'Vähennä tuotetta';
		miinusnappi.title = 'Vähennä tuotetta';
		if (moodi == "pieni") solu4.setAttribute('style','cursor: default; text-align: left; padding-left: 5px;');
		else solu4.setAttribute('style','cursor: default; text-align: center;');
		plusnappi.onclick = function (a,b,c,d) {
			return function () {
				kori = addProduct(a,b,c,d);
			};
		} (Tunnus,kori[Tunnus]['Tuote'],kori[Tunnus]['Hinta'],kori);
		miinusnappi.onclick = function (a,b) {
			return function () {
				kori = removeProduct(a,b);
			};
		} (Tunnus,kori);
	}
// Lisätään postikuluarvio
	var rivi = runko.insertRow(runko.rows.length);
	var solu1 = rivi.insertCell(0);
	var solu2 = rivi.insertCell(1);
	var solu3 = rivi.insertCell(2);
	var solu4 = rivi.insertCell(3);
	var solu5 = rivi.insertCell(4);
	solu1.innerHTML ='Toimituskuluarvio';
	var summa = laskePostikulut(kori);
	solu3.innerHTML = summa +' €';
	kokonaissumma += summa;
	for (var i = 0; runko.rows[i]; i++) {if (i % 2 == 1) runko.rows[i].className += " pariton"; else runko.rows[i].className += " parillinen";}
	document.getElementById('summasolu').innerHTML = kokonaissumma + " €";
	if (moodi == 'suuri') {}
	else {
		if(runko.rows.length > '5' && runko.style.height == '') runko.style.height='60px';
		if(runko.rows.length == '5') runko.style.height=runko.offsetHeight+'px';
		if(runko.rows.length < '5') runko.style.height='auto';
	}
	closeBasket(kori,'ostoskori');
}

function laskePostikulut(kori) {
	var kokonaissumma = new Number('2');
	for (var Tunnus in kori) {
		var summa = new Number('0');
		switch(Tunnus) {
			case 'magus':
				summa = '8' * kori[Tunnus]['Maara'];
				break;
			case 'burningempires':
				summa = '3' * kori[Tunnus]['Maara'];
				break;
			case 'GDF1': case 'GDF2': case 'GDF3': case 'primitive': case 'reofthre': case 'journeyingwest':
				summa = '0.5' * kori[Tunnus]['Maara'];
				break;
			default:
				summa = Math.min(kori[Tunnus]['Maara'],'5');
		}
		if (kokonaissumma > 9 && summa >= 3 && summa < 8) kokonaissumma += Math.min('3',summa);
		if (kokonaissumma > 9 && summa < 3) kokonaissumma;
		else kokonaissumma += summa;
	}
	return kokonaissumma;
}
// Siirtää ostoskorin tiedot tilauslomakkeeseen.
function koriLomakkeeseen(kori) {
	var viesti = new String();
	var summa = new Number('0')
	for (var tuote in kori) {
		var hinta = kori[tuote]['Hinta'];
		summa += hinta;
		viesti += hinta+' € '+kori[tuote]['Tuote']+'\n';
	}
	var postitus = laskePostikulut(kori);
	summa += postitus;
	viesti += postitus+' € Toimituskulut\n';
	viesti += '----------\n';
	viesti += summa+' € Yhteensä';
	document.getElementById('tilaus').setAttribute('value',viesti);
}
