/**********************************************
 * Handlevogn, handlekurv og andre nettbutikk *
 * funksjoner som bør ligge i en egen fil og  *
 * være med på alle nettbutikker              *
 *                                            *
 * PS: HUSK AT JQUERY HENTER UT DATA VED      *
 * HJELP AV ID'ER PÅ ELEMENTER. DET BLIR      *
 * DERFOR MYE ARBEID PÅ JAVASCRIPT-FILENE OM  *
 * EN MÅ GÅ INN Å ENDRE ALLE ID'ER FORDI EN   *
 * IKKE KLARER Å BRUKE DE SAMME FRA NETT-     *
 * BUTIKK TIL NETTBUTIKK.                     *
 **********************************************/
jQuery(document).ready(function() {
	//HURTIGKJØP
	jQuery(".qkSubmit").bind("click", function () {
		hurtigregistrering ();
	});
});

/**
 * Avhengigheter:
 *  jQuery 
 *  jQuery Alert Dialogs Plugin
 */

var sokAvansertTekst		= "Utvidet søk";
var sokAvansertLukkTekst	= "Lukk utvidet søk";
var leggIListeTekst			= "";
var iListeTekst				= "";
var ajax_url 			= "ajax.php";
var breddeDialogBoks 	= 400;
var fokusPunkt;
var markertTekst;

/**
 * Vis en fin boks med melding
 * @param innhold
 * @param tittel
 * @return bool
 */
function alertBoks (innhold, tittel) {
	$.alerts.okButton = 'Ok';
	jAlert(innhold, tittel, function(r) {
		if (r == true) {
			if (fokusPunkt) {
				settFokusTimeout(fokusPunkt);
			}
			if (markertTekst) {
				settMarkertTekstTimeout(markertTekst);
			}
		}
		return false;
	});
}



/**
 * Sett fokus timeout
 * @param fokusPunkt
 * @return void
 */
function settFokusTimeout(fokusPunkt) {
	setTimeout(function(){
		fokusPunkt.focus();
	}, 250 );
}



/**
 * Sett timeout på markert tekst
 * @param markertTekst
 * @return void
 */
function settMarkertTekstTimeout(markertTekst) {
	setTimeout(function(){
		markertTekst.select(); 
	}, 450 );
}



/**
 * Formater nummer (pris gjerne)
 * @param n
 * @param sep
 * @return sValue
 */
function nrFormat(n,sep) {
	var sRegExp = new RegExp('(-?[0-9]+)([0-9]{3})'),
	sValue=n+'';

	if (sep === undefined) {sep=' ';}
	while(sRegExp.test(sValue)) {
		sValue = sValue.replace(sRegExp, '$1'+sep+'$2');
	}
	sValue=sValue.replace(".", ",");
	return sValue;
};



/**
 * Oppdater handlevogn events
 * @params void
 * @return void
 */
function oppdaterHandlevognEvents() {
	jQuery('li.produktCell').mouseenter(function() {
		var temp = jQuery(this).find('div.produktBeskrivelseCell');
		if (temp.length) {
			jQuery(temp[0]).removeClass('hide');
		}
	});
	jQuery('li.produktCell').mouseleave(function() {
		var temp = jQuery(this).find('div.produktBeskrivelseCell');
		if (temp.length) {
			jQuery(temp[0]).addClass('hide');
		}
	});
};



/**
 * Oppdater handlevogn etter endring
 * @param void
 * @return void
 */
function oppdaterHandlevogn()
{
	if (!jQuery('div#HandlekurvBoks div.boksInnhold p').length) {
		return;
	}
	var settings = {
		'url' : ajax_url,
		'data' : { valg: "butikk", hent: "kurv,nyvogn" },
		'type' : 'POST',
		'success' : function(data) {
			var html = '<div class="kurvliste">';
			var htmlInnhold = '';
			var htmlProduktliste = '';
			var vogn = data.vogn;
			var kurv = data.kurv;
			
			var produktAntall = parseInt(kurv.antalllinjer);
			var vareAntall = parseInt(kurv.antallenheter);
			
			if (produktAntall > 0) {
				/* skriv ut handlevogn data */
				htmlProduktliste += '<ul class="produktliste">';
				for (var i in vogn) {
					var produkt = vogn[i];
					
					htmlProduktliste += 
						'<li class="produktCell"><div class="produktNavnCell">' +
						'<a href="http://marinor.no/index.php?mapping=38&produkt_nr=' + 
						produkt.produkt_nr + 
						'&gruppe_nr=' +
						produkt.produktgrupper[0] + 
						'" class="produktNavn">' + 
						produkt.produkt_navn +
						'</a></div>';
					if (produkt.produkt_felt_tekst_3
					 && produkt.produkt_felt_tekst_3.length) {
						htmlProduktliste += 
							'<div class="produktBeskrivelseCell hide"><span class="produktBeskrivelse">' +
							produkt.produkt_felt_tekst_3 +
							'</span></div>';
					}
					htmlProduktliste +=
						'<div><div class="produktAntallCell"><span class="produktAntall">' + 
						produkt.antall + 
						'</span>&nbsp;<span class="produktEnhet">' + 
						produkt.produkt_felt_tekst_4 + 
						'</span></div>&nbsp;<div class="produktSumCell"><span class="produktValuta">kr</span>&nbsp;<span class="produktSum">' + 
						produkt.linjesum.replace(".", ",").replace(",00", ",-") + 
						'</span></div></div></li>';
				}
				htmlProduktliste += '</ul>';
				htmlInnhold += 
					'<div class="antallVarer">Antall&nbsp;varer&nbsp;' + vareAntall + 
					'</div><div class="antallProdukt">Antall&nbsp;produkt&nbsp;' + produktAntall + 
					'</div>'
			} else {
				/* tom */
				var p = jQuery('div#HandlekurvBoks div.kurvliste');
				if (p.length > 0) {
					jQuery(p).remove();
				}
				return;
			}
			html += htmlProduktliste + htmlInnhold + '</div>';
			
			var p = jQuery('div#HandlekurvBoks div.kurvliste');
			if (p.length == 0) {
				p = jQuery('div#HandlekurvBoks div.boksInnhold p')[0];
				html = html + jQuery(p).html();
			} else {
				p = p[0];
			}
			jQuery(p).html(html);
			
			if (produktAntall > 0) {
				oppdaterHandlevognEvents();
			}
		},
		'dataType' : 'json',
		'cache' : false
	};
	var res = jQuery.ajax(settings);
	//console.log('jquery ajax result');
}



/**
 * Kjøp produkt med produktnummer og antall fort
 * @param void
 * @return void
 */
function hurtigregistrering() {
	var kjopAntall = $(".qkQuantity");
	var	produkt_nr = $(".qkNumber");

	if (!produkt_nr.val()) {
		fokusPunkt = produkt_nr;
		markertTekst = produkt_nr;

		alertBoks("Vennligst oppgi produktnummer.", "Feil");
		return;
	} else if (!Number(kjopAntall.val())) {
		fokusPunkt = kjopAntall;
		markertTekst = kjopAntall;
		alertBoks("Vennligst oppgi antall.", "Feil");
		kjopAntall.val("0");
		return;
	} else {
		kjop(produkt_nr.val(), kjopAntall, true);
		kjopAntall.val("0");

		fokusPunkt = produkt_nr;
		markertTekst = produkt_nr;

		settFokusTimeout(fokusPunkt);
		settMarkertTekstTimeout(markertTekst);
	}
	oppdaterHandlevogn();
}



/**
 * Oppdater handlevogn med gitt antall på produktet
 * @param produkt_nr
 * @param kjopAntall
 * @param produkt_variant
 * @return void
 */
function oppdaterProduktAntallVogn(produkt_nr, kjopAntall) {
	var	antall = kjopAntall.val();

	fokusPunkt = kjopAntall;
	markertTekst = kjopAntall;

	hent = "vareforsalg,vareivogn";
	$.post(ajax_url, { valg: "butikk", hent: hent, produkt_nr : produkt_nr }, function(data){
		if (data.success == false) {
			alert(data.errors.clientCode, "Feil");
		} else if (!data.forsalg) {
			alertBoks("Varen kan ikke bestilles", "Feil");
		} else {
			function settProduktAntallVogn() {
				sett = "produktAntallVogn";
				$.post(ajax_url, { valg: "butikk", sett: sett, produkt_nr : produkt_nr, antall: antall }, function(data){
					if (!data.success) {
						alertBoks("Antallet kunne ikke oppdateres.", "Feil");
					} else {
						oppdaterKasse();
					}
				}, "json");		
			}
			if (!data.vareivogn) {
				alertBoks("Varen ligger ikke i handlekurven");
			} else {
				settProduktAntallVogn();
			}
		}
	}, "json");
}


/**
 * Oppdater kasse og vogn ved kjøpt via ajax
 * @param void
 * @return void
 */
function oppdaterKasse() {
	var settings = {
		'url' 		: ajax_url,
		'data' 		: { valg: "butikk", hent: "kurv,vogn" },
		'type' 		: 'POST',
		'dataType' 	: 'json',
		'cache' 	: false,
		'error' 	: function (data) {
			//alert ("Feil i henting av kassedata");
		},
		'success' 	: function(data) {
			$("#kasse .tblTotalsum").html(nrFormat(data.kurv.kurvsumEKSmva));
			$("#kasse .kasseVare").remove();
			$("#kasse .kasseVareDetaljer").remove();
			$("#kasse .tblDivide").remove();
	    	jQuery.each(data.vogn, function() {
	    		var produktbilde = hentProduktBilde (this.produkt_nr);
	    		if (produktbilde == null) {
	    			produktbilde = '/bilder/bilder/struktur_element/bilde_mangler.jpg';
	    		}
				knapp = '<a onclick="fjernlinje(\'index.php?mapping=19&flnr=' 
					  + this.ordrelinje_nr + '\');" value="Fjern" title="Fjern">Fjern</a>'
				kasseVare = '<tr class="kasseVare">'
						  + '	<td width="88" class="tblProdbilde" rowspan="2"><img src="./resize/w74h74/' + produktbilde + '" alt="' + this.produkt_navn + '" /></td>'
						  + '	<td class="tblProdnavn" colspan="4">'
						  + '		<h4>' + this.produkt_navn + '</h4>'
						  + '	</td>'
						  + '</tr>'
						  + '<tr class="kasseVareDetaljer">'
						  + '	<td width="249" class="tblProdstr">St&oslash;rrelse: ' + this.produkt_variant + '</td>'
						  + '	<td class="tblProdantall"><span>Antall:</span> <input type="hidden" class="varenummer" value="' + this.produkt_nr + '" /> <input type="hidden" class="produkt_variant" value="' + this.produkt_variant + '" /> <input type="text" name="kasseAntall" class="kasseAntall" value="' + this.antall + '" /> <a class="oppdaterAntall" href="#">Oppdater</a></td>'
						  + '	<td width="200" class="tblProdpris">NOK ' + nrFormat(this.linjesum) + '</td>'
						  + '	<td class="tblProdslett">' + knapp + '</td>'
						  + '</tr>'
						  + '<tr class="tblDivide">'
						  + '	<td colspan="5"><!--//tom--></td>'
						  + '</tr>';	  
				$("#kasse table tr#kassefrakt").before(kasseVare);
			});
			
			$(".oppdaterAntall").click(function () {
				var nyttAntall 		= $(this).siblings(".kasseAntall");
				var produktNr  		= $(this).siblings(".varenummer").val();
				var produktVariant 	= $(this).siblings(".produkt_variant").val ();
				oppdaterProduktAntallVogn (produktNr, nyttAntall, produktVariant);
			});
	    }
	}
	var res = jQuery.ajax (settings);
}



/**
 * Kjøp et produkt
 * @param produkt_nr
 * @param kjopAntall
 * @param feilmelding
 * @return bool
 */
function kjop(produkt_nr, kjopAntall, feilmelding) {
	var	antall = kjopAntall.val();
	var feilet = false;
	
	fokusPunkt = kjopAntall;
	markertTekst = kjopAntall;

	//hent = "vareforsalg,egenskaper,vareivogn,vareiordre";
	hent = "vareforsalg,vareivogn,vareiordre";
	$.post(ajax_url, { valg: "butikk", hent: hent, produkt_nr : produkt_nr }, function(data){
		if (data.success == false) {
			alertBoks(data.errors.clientCode, "Feil");
			feilet = true;
		} else if (!data.forsalg) {
			alertBoks("Varenummer eksisterer ikke, eller varen er ikke for salg", "Feil");
			feilet = true;
		} else {
			function vareTilVognOgKasse() {
				//egenskaper = data.egenskaper[0];
				sett = "vareTilVogn";
				$.post(ajax_url, { valg: "butikk", sett: sett, produkt_nr : produkt_nr, antall: antall }, function(data){
					if (!data.success) {
						if (feilmelding) {
							alertBoks(data.errors['clientCode']);
						}
						feilet = true;
						kjopAntall.val(antall);
						return false;
					} else {
						hent = "kurv";
						$.post(ajax_url, { valg: "butikk", hent: hent }, function(data){
							if (data.kurv && data.kurv.kurvsumEKSmva) {
								$("#HandlekurvBoks #handlevognOrdreSum").html(nrFormat(data.kurv.kurvsumEKSmva));
								//console.log ("kurvsumEKSmva: " + kurvsumEKSmva);
							} else {
								alertBoks("Kurvsum er ikke funnet.", "Feil");
							}
						}, "json");
						oppdaterKasse();
					}
				}, "json");
				return true;
			}

			if ((data.vareivogn || data.vareiordre) && feilmelding) {
				$.alerts.okButton = 'Ja';
				if (data.vareivogn ) mld = 'Produktet ligger allerede i handlevognen.<br />Vil legge til ' + antall + ' stk.?';
				else if (data.vareiordre ) mld = 'Produktet ligger allerede i en ordre under behandling.<br />Vil likevel kjøpe ' + antall + ' stk. nå?';
				jConfirm(mld, 'Bekreft kjøp',
					function(r) { 
						if (r == true) {					
							vareTilVognOgKasse();
							kjopAntall.val(0);

							if (fokusPunkt) {
								settFokusTimeout(fokusPunkt);
							}
							if (markertTekst) {
								settMarkertTekstTimeout(markertTekst);
							}
						}
						return false;
					}
				);					
			} else {
				vareTilVognOgKasse();
			}
		}
	}, "json");
	return (feilet) ? false : true;
}

// BESTILLINGSLISTECRAP
function tilSortimentliste(produkt_nr, bestillingsliste_nr, dialogBoksLinje) {
		sett = "produktTilBestillingsliste";
		$.post(ajax_url, { valg: "butikk", sett: sett, produkt_nr: produkt_nr, bestillingsliste_nr: bestillingsliste_nr }, function(data){
			status = true;
			if (data.success) {
				dialogBoksLinje.attr("class", "knapp iListe");
				dialogBoksLinje.text(iListeTekst);
				dialogBoksLinje.unbind("click");
				dialogBoksLinje.bind("click", function(){
					console.log(produkt_nr);
					slettFraSortimentliste(produkt_nr, bestillingsliste_nr, dialogBoksLinje);
				});
			} else {
				alertBoks(data.errors.clientCode, "Feil");
			}
		}, "json");
}

function slettFraSortimentliste(produkt_nr, bestillingsliste_nr, dialogBoksLinje) {
	sett = "produktFraBestillingsliste";
	$.post(ajax_url, { valg: "butikk", sett: sett, produkt_nr : produkt_nr, bestillingsliste_nr: bestillingsliste_nr }, function(data){
		status = true;
		if (data.success) {
			//alert("Alt gikk ok");
			
			
			dialogBoksLinje.attr("class", "knapp fraListe");
			/* dialogBoksLinje.text(fraListeTekst); */
			dialogBoksLinje.unbind("click");
			dialogBoksLinje.bind("click", function() {
				console.log(produkt_nr);
				tilSortimentliste(produkt_nr, bestillingsliste_nr, dialogBoksLinje);
			});  
		} else {
			alertBoks(data.errors.clientCode, "Feil");
		}
	}, "json");
}

function visSortimentlisteDialog(produkt_nr) {
	hent = "bestillingslister";
	$.post(ajax_url, { valg: "butikk", hent: hent }, function(data){
		if (data.bestillingslister) {
			dialogBoks = $("<div />").attr("id", "dialogBoks");

		    jQuery.each(data.bestillingslister.kontakt, function(id) {
				dialogBoksLinjeTittel = $("<h3 />");
				dialogBoksLinje = $("<a />");
				dialogBoksLinje.attr("class", "knapp");

				if (this.liste && (jQuery.inArray(produkt_nr, this.liste) > -1)) {
					dialogBoksLinje.attr("class", "knapp iListe");
					dialogBoksLinje.click(function(){
						slettFraSortimentliste(produkt_nr, id, $(this));
				    });
					dialogBoksLinje.text(iListeTekst);
				} else {
					dialogBoksLinje.click(function(){
						tilSortimentliste(produkt_nr, id, $(this));
				    });
					dialogBoksLinje.text(leggIListeTekst);
				}

				dialogBoks.append(dialogBoksLinje);
				
				dialogBoksLinjeTittel.text(this.tittel);
				dialogBoks.append(dialogBoksLinjeTittel);
				
				dialogBoksLinjeBeskrivelse = $("<p />");
				dialogBoksLinjeBeskrivelse.text(this.beskrivelse);
				dialogBoks.append(dialogBoksLinjeBeskrivelse);
		    });			
			options = { title: "Bestillingslister", width: breddeDialogBoks };
			$("#dialogBoks").remove();
			dialogBoks.dialog(options);
		} else {
			alertBoks("Det eksisterer ingen bestillingslister.", "Bestillingslister");
		}
	}, "json");
}

jQuery(document).ready(function() {
	jQuery("#kjopSortimentliste").click(function (data) {
		counter = 0;
	    jQuery("#innhold .produktListe").each(function() {
			produkt_nr = jQuery(this).contents().find(".produkt_nr").val();
			antall = jQuery(this).contents().find(".kjopAntall");

			if (parseInt(antall.val()) && parseInt(antall.val()) > 0) {
				resultat = kjop(produkt_nr, antall, false);
				if (resultat) {
					counter++;
				}
			}
	    });
		alertBoks(counter + " Varer ble lagt i handlevognen", "Sortimentliste");
	});

	jQuery(".tilSortimentlistePD").click(function (data) {
		produkt_nr = jQuery(this).parent().parent().find("input[name='produkt_nr']").val();
		visSortimentlisteDialog(produkt_nr);
	});
	
	jQuery(".fjernFraSortiment").click(function (data) {
		produkt_nr = jQuery(this).parent().parent().find("input[name='produkt_nr']").val();
		bestillingsliste_nr = jQuery(this).parent().parent().find("input[name='bestliste_nr']").val();
		jQuery(this).parent().parent().parent().parent().fadeOut("slow", function() {
	        jQuery(this).remove();
		});
		slettFraSortimentliste(produkt_nr, bestillingsliste_nr);
	});
	
	// ny sortimentslisteting
	jQuery(".nySortimentslisteDiv").addClass("hiddenForm");
	jQuery("#nyListeSkjema").click(function() {
		jQuery(".nySortimentslisteDiv").toggleClass("hiddenForm");
	});
	
	jQuery("#bestillingsListeNy").click(function (data) {
		kontakt_nr = jQuery("#kontakt_nr").val();
		navn = jQuery("#bestillingsliste_navn").val();
		beskrivelse = jQuery("#bestillingsliste_beskrivelse").val();
		sett = "nyBestillingsliste"
		jQuery.post(ajax_url, { valg: "butikk", sett: sett, navn: navn, beskrivelse: beskrivelse }, function(data){
			if (!data.success) {
				alertBoks(data.errors.clientCode, "Feil");
			} else {
				jQuery("#bestillingslister").append('<a href="index.php?mapping=42&bestliste_nr=' + data['nyBestillingsliste']['id'] + '" type="a">' + data['nyBestillingsliste']['navn'] + '</a>');
				jQuery(".nySortimentslisteDiv").addClass("hiddenForm");
			}
		}, "json");
	});
});
