var kalenderDlg = null;
var kalenderDlgKalender = null;

var isFirefox = (navigator.userAgent.indexOf("Firefox") != -1);
var isSafari = (navigator.userAgent.indexOf("Safari") != -1);
var isMac = (navigator.userAgent.indexOf("Macintosh") != -1);

var aktivKalenderKnytning;

var ventaDlg = null;
var visarVenta = false;

var bekreftaDlg = null;
var bekreftaFortsettTill = null;
var felMeddelandeDlg = null;
var infoMeddelandeDlg = null;
var initCommonDialogsDone = false;

var loginForm = null;
var nyKundForm = null;
var glomtLosenForm = null;
var villkorDlg = null;

var attAnropaEfterLogin = null;

function slumpad(url)
{
	if (url.indexOf("?") == -1)
		return url + "?slump=" + new Date().getTime();
	else
		return url + "&slump=" + new Date().getTime();
}

function bekrefta(titel, inne, fortsettTill)
{
	bekreftaFortsettTill = fortsettTill;
	$("bekreftatextdiv").innerHTML = inne;
	bekreftaDlg.setHeader(titel);
	bekreftaDlg.render();
	bekreftaDlg.showCS();
}

function infoMeddelande(titel, inne)
{
	infoMeddelandeDlg.setHeader(titel);
	$("infomeddelandetextdiv").innerHTML = inne;
	infoMeddelandeDlg.render();
	infoMeddelandeDlg.showCS();
}

function felMeddelande(titel, inne)
{
	felMeddelandeDlg.setHeader(titel);
	$("felmeddelandetextdiv").innerHTML = inne;
	felMeddelandeDlg.render();
	felMeddelandeDlg.showCS();
}

function min2(v)
{
	var n = new Number(v).toString();
	if (n.length == 1)
		return "0" + n;
	else
		return n;
}

function min2Len(v)
{
	return min2(v);
}

function ADialog(id, cnt)
{
	this.id = id;
	this.cnt = cnt;
}

function KalenderKnytning(tillFelt)
{
	this.tillFelt = tillFelt;
}

function kalenderKnappClick(e)
{
	$("kalenderdlg").style.display = "block";
	$("cal").style.display = "block";
	var el = YAHOO.util.Event.getTarget(e);
	aktivKalenderKnytning = el.kalenderKnytning;
	kalenderDlg.cfg.setProperty("context", [el.id, "tl", "bl"]);
	if ($(aktivKalenderKnytning.tillFelt).value != "")
		{
			var da = delaOchKollaDatum($(aktivKalenderKnytning.tillFelt).value);
			if (da != null)
				{
					var d = new Date();
					d.setFullYear(da[0]);
					d.setMonth(da[1] - 1);
					d.setDate(da[2]);
					kalenderDlgKalender.setYear(da[0]);
					kalenderDlgKalender.setMonth(da[1] - 1);
					kalenderDlgKalender.select(d);
					kalenderDlgKalender.render();
				}
			else
				{
					kalenderDlgKalender.reset();
					kalenderDlgKalender.render();
				}
		}
	else
		{
			kalenderDlgKalender.reset();
			kalenderDlgKalender.render();
		}
	kalenderDlg.show();
}

function knytDatumDialog(tillFelt, tillKnapp)
{
	if (typeof tillKnapp == "undefined") tillKnapp = null;
	var kn = new KalenderKnytning(tillFelt);
	$(tillFelt).kalenderKnytning = kn;
	if (tillKnapp != null) $(tillKnapp).kalenderKnytning = kn;
	if (kalenderDlg == null)
		{
			navCfg = {
				strings : {   
					month: "Välj månad",   
					year: "Ange år",   
					submit: "OK",   
					cancel: "Avbryt",   
					invalidYear: "Var vänlig ange ett giltigt år"  
				},   
				monthFormat: YAHOO.widget.Calendar.LONG,   
				MONTHS_LONG: ["Januari", "Februari", "Mars", "April","Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"],
				initialFocus: "year" 
			};
			
			kalenderDlgKalender = new YAHOO.widget.Calendar("cal", {
				iframe:false,          // Turn iframe off, since container has iframe support.
				hide_blank_weeks:true,  // Enable, to demonstrate how we handle changing height, using changeContent
				START_WEEKDAY: 1,
				WEEKDAYS_SHORT: ["Sö", "Må", "Ti", "On", "To", "Fr", "Lö"],
				MONTHS_LONG: ["Januari", "Februari", "Mars", "April","Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"],
				navigator: navCfg
			});
			
			kalenderDlgKalender.selectEvent.subscribe(function (p_sType, p_aArgs) {
				var date;
				if (p_aArgs) {
					aDate = p_aArgs[0][0];
					YAHOO.util.Dom.get(aktivKalenderKnytning.tillFelt).value = aDate[0] + "-" + min2(aDate[1]) + "-" + min2(aDate[2]);
				}
				kalenderDlg.hide();
			});
			
			function handleSubmit()
			{
				kalenderDlg.cancel();
			}
			
			kalenderDlg = new YAHOO.widget.Dialog("kalenderdlg", {
				context:["inget", "tl", "bl"],
				//buttons:[ { text: "Stäng", handler:handleSubmit, isDefault:true } ],
				width:"16em",  // Sam Skin dialog needs to have a width defined (7*2em + 2*1em = 16em).
				draggable:false,
				close:true,
				zindex: 44,
				modal: false,
				visible: false
			});

			kalenderDlgKalender.render();
			kalenderDlg.render();
			kalenderDlg.hide();
			kalenderDlgKalender.renderEvent.subscribe(function() {
				kalenderDlg.fireEvent("changeContent");
			});
		}
	if (tillKnapp == null) YAHOO.util.Event.on(tillFelt, "click", kalenderKnappClick);
	if (tillKnapp != null) YAHOO.util.Event.on(tillKnapp, "click", kalenderKnappClick);
}

function SkottAr(ar)
{

	if (ar % 100 == 0)
		{
			if (ar % 400 == 0) return true;
		}
	else
		{
			if ((ar % 4) == 0) return true;
		}
	return false;
}

function kollaDatum(Datum)
{
var DatumDel;
var arS;
var manS;
var datS;
var ar;
var man;
var dat;
var maxd;
var Detta;
var OK;

	if (Datum == "") return true;
	if (Datum.length < 8) return false;
	DatumDel = Datum.split('-');
	if (DatumDel.length < 3) return false;
	arS = DatumDel[0];
	if (arS.length < 2)
		return false;
	else if (arS.length == 3)
		return false;
	else if (arS.length > 4)
		return false;
	manS = DatumDel[1];
	if (manS.length != 2) return false;
	datS = DatumDel[2];
	if (datS.length != 2) return false;

	ar = parseInt(arS, 10);
	man = parseInt(manS, 10);
	dat = parseInt(datS, 10);

	if (ar < 100)
		if (ar < 50)
			ar = ar + 2000;
		else
			ar = ar + 1900;
	if (ar < 1900 || ar > 2100) return false;
	if (man < 1 || man > 12) return false;
	if (man == 4 || man == 6 || man == 9 || man == 11)
		OK = (dat >= 1 && dat <= 30);
	else if (man == 2)
		{
			if (SkottAr(ar))
				{
					maxd = 29;
				}
			else
				{
					maxd = 28;
				}
			OK = (dat >= 1 && dat <= maxd)
		}
	else
		OK = (dat >= 1 && dat <= 31);
	return OK;
}

function kollaTid(tid)
{
	if (tid == "") return true;
	if (tid.length < 5) return false;
	var delar = tid.split(":");
	if (delar.length < 2) return false;
	var hrs = delar[0];
	var mis = delar[1];
	if (hrs.length != 2 || mis.length != 2) return false;
	var hr = parseInt(hrs);
	if (hr < 0 || hr > 23) return false;
	var mi = parseInt(mis);
	if (mi < 0 || mi > 59)
		return false;
	else
		return true;
}

function sammaDatum(datum, enDag)
{
	if (enDag.getMonth() != datum.getMonth())
		return false;
	else if (enDag.getDate() != datum.getDate())
		return false;
	else if (enDag.getFullYear() != datum.getFullYear())
		return false;
	else
		return true;
}

function getLeftTop(obj, stopAt)
{
	var l = 0;
	var t = 0;
	while (obj != null && obj != stopAt)
		{
			l += obj.offsetLeft;
			t += obj.offsetTop;
			obj = obj.offsetParent;
		}
	return new Array(l, t);
}

function getRightBottom(obj, stopAt)
{
	r = obj.offsetWidth;
	b = obj.offsetHeight;
	while (obj != null && obj != stopAt)
		{
			r += obj.offsetLeft;
			b += obj.offsetTop;
			obj = obj.offsetParent;
		}
	return new Array(r, b);
}

function delaOchKollaDatum(Datum)
{
var DatumDel;
var arS;
var manS;
var datS;
var ar;
var man;
var dat;
var maxd;
var Forsta = new Date(2001,3,26);
var Sista = new Date();
var Detta;
var OK;

	if (Datum.length < 8) return null;
	DatumDel = Datum.split('-');
	if (DatumDel.length < 3) return null;
	arS = DatumDel[0];
	if (arS.length < 2)
		return null;
	else if (arS.length == 3)
		return null;
	else if (arS.length > 4)
		return null;
	manS = DatumDel[1];
	if (manS.length != 2) return null;
	datS = DatumDel[2];
	if (datS.length != 2) return null;

	ar = parseInt(arS, 10);
	man = parseInt(manS, 10);
	dat = parseInt(datS, 10);

	if (ar < 100)
		if (ar < 50)
			ar = ar + 2000;
		else
			ar = ar + 1900;
	if (ar < 1900 || ar > 2100) return null;
	if (man < 1 || man > 12) return null;
	if (man == 4 || man == 6 || man == 9 || man == 11)
		OK = (dat >= 1 && dat <= 30);
	else if (man == 2)
		{
			if (SkottAr(ar))
				{
					maxd = 29;
				}
			else
				{
					maxd = 28;
				}
			OK = (dat >= 1 && dat <= maxd)
		}
	else
		OK = (dat >= 1 && dat <= 31);
	if (OK)
		return new Array(ar, man, dat);
	else
		return null;
}

function kollaForm(titel, kolla)
{
	var msg = "Var vänlig fyll i följande fält:";
	var ok = true;
	
	for (var i=0; i<kolla.length; i++)
		if (kolla[i][0] == "")
			{
				msg = msg + "<br>" + kolla[i][1];
				ok = false;
			}
	if (ok)
		return true;
	else
		{
			felMeddelande(titel, msg);
			return false;
		}
}

var siffror = "0123456789";

function baraSiffror(inmatat)
{
	for (i = 0; i < inmatat.length; i++)
		{
			tkn = inmatat.charAt(i);
			if (siffror.indexOf(tkn) < 0)
				return false;
		}
	return true;
}

function kortGattUt(frm)
{
	var gt = new Date();
	var nu = new Date();
	var ar = frm.giltigar.value;
	ar = parseInt(ar, 10);
	ar += 2000;
	var man = parseInt(frm.giltigman.value, 10);
	if (frm.giltigman.value == 12)
		{
			gt.setFullYear(ar + 1);
			gt.setMonth(0);
			gt.setDate(1);
		}
	else
		{
			gt.setFullYear(ar);
			gt.setMonth(man);
			gt.setDate(1);
		}
	if (gt.getTime() < nu.getTime())
		return true;
	else
		return false;
}

function visaVenta(msg, vgv)
{
	if (visarVenta) doljVenta();
	if (typeof vgv == "undefined") vgv = true;
	if (vgv) msg = msg + ", var god vänta...";
	ventaDlg.setHeader(msg);
	ventaDlg.show();
	visarVenta = true;
}

function doljVenta()
{
	if (visarVenta)
		{
			ventaDlg.hide();
			visarVenta = false;
		}
}

function initVentaDlg()
{
	ventaDlg = 
			new YAHOO.widget.Panel("laddare",  
				{ width:"350px", 
					fixedcenter:true, 
					close:false, 
					draggable:false, 
					zindex:4,
					modal:true,
					visible:false
				} 
			);

	ventaDlg.setHeader("Bearbetning pågår, var god vänta...");
	ventaDlg.setBody('<div style="padding-bottom: 20px"><img src="images/venta.gif"/></div>');
	ventaDlg.render(document.body);
}

function initBekreftaDlg()
{
	var handleYes = function() {
		bekreftaDlg.cancelCS();
		bekreftaFortsettTill();
		return false;
	};
	var handleNo = function() {
		bekreftaDlg.cancelCS();
		return false;
	};
	bekreftaDlg = new YAHOO.CommSoft.widget.CSDialog("bekreftadlg", 
			 { width: "300px",
			   fixedcenter: true,
			   visible: false,
			   draggable: false,
			   close: true,
			   modal: true,
			   constraintoviewport: true,
			   buttons: [ { text:"Ja", handler:handleYes },
						  { text:"Nej",  handler:handleNo, isDefault:true } ]
			 } );
	bekreftaDlg.handleSubmit = handleYes;
	bekreftaDlg.handleCancel = handleNo;
	
	var kl1 = new YAHOO.util.KeyListener(document, { keys:[27, 78] },  							
													{ fn:bekreftaDlg.escPressed,
													scope:bekreftaDlg,
													correctScope:true }, "keyup" ); 
	var kl2 = new YAHOO.util.KeyListener(document, { keys:[74] },  							
													{ fn:bekreftaDlg.enterPressed,
													scope:bekreftaDlg,
													correctScope:true }, "keyup" ); 
	bekreftaDlg.cfg.queueProperty("keylisteners", [kl1, kl2]);
	bekreftaDlg.render();
}

function initInfoMeddelandeDlg()
{
	var handleOK = function() {
		infoMeddelandeDlg.cancelCS();
		return false;
	};
	infoMeddelandeDlg = new YAHOO.CommSoft.widget.CSDialog("infomeddelandedlg", 
			 { width: "300px",
			   fixedcenter: true,
			   visible: false,
			   draggable: false,
			   close: true,
			   modal: true,
			   constraintoviewport: true,
				modal: true,
			   buttons: [ { text:"OK",  handler:handleOK, isDefault:true } ]
			 });
	infoMeddelandeDlg.handleSubmit = handleOK;
	
	var kl1 = new YAHOO.util.KeyListener(document, { keys:[27,13] },  							
													{ fn:infoMeddelandeDlg.escPressed,
													scope:infoMeddelandeDlg,
													correctScope:true }, "keyup" ); 
	infoMeddelandeDlg.cfg.queueProperty("keylisteners", [kl1]);
	
	infoMeddelandeDlg.render();
}

function initFelMeddelandeDlg()
{
	var handleOK = function() {
		felMeddelandeDlg.cancelCS();
		return false;
	};
	felMeddelandeDlg = new YAHOO.CommSoft.widget.CSDialog("felmeddelandedlg", 
			 { width: "300px",
			   fixedcenter: true,
			   visible: false,
			   draggable: false,
			   close: true,
			   modal: true,
			   constraintoviewport: true,
			   buttons: [ { text:"OK",  handler:handleOK, isDefault:true } ]
			 });
	felMeddelandeDlg.handleSubmit = handleOK;
	
	var kl1 = new YAHOO.util.KeyListener(document, { keys:[27,13] },  							
													{ fn:felMeddelandeDlg.enterPressed,
													scope:felMeddelandeDlg,
													correctScope:true }, "keyup" ); 
	felMeddelandeDlg.cfg.queueProperty("keylisteners", [kl1]);
	
	felMeddelandeDlg.render();
}

function initCommonDialogs()
{
	if (!initCommonDialogsDone)
		{
			initBekreftaDlg();
			initVentaDlg();
			initInfoMeddelandeDlg();
			initFelMeddelandeDlg();
			initCommonDialogsDone = true;
		}
}

function kundNuInloggad(st)
{
	var arr = st.split("\x01");
	var namn = arr[0];
	var nyhetslista = arr[1];
	inloggadSom = arr[2];
	var upg = arr[3];
	var ktn = arr[4];

	if ($("inloggad"))
		{
			$("inloggad").innerHTML = upg;
			$("inloggad").style.display = "block";
		}
	if ($("ejinloggad")) $("ejinloggad").style.display = "none";
	inloggad = true;
	
	endraInloggad(true, namn, nyhetslista == "J");

	harEndratKundUppgifter = false;
	if (attAnropaEfterLogin != null) attAnropaEfterLogin(st);
	
	if (ktn != kundTypFranBorjan) window.location.reload(true);
}

function initLoginForm(anropaEfterLogin)
{
	var handleSubmit = function() {
		if (loginForm.validate())
			{
				loginForm.submitCS();
				visaVenta("Loggar in");
			}
	};
	var handleCancel = function() {
		loginForm.cancelCS();
	};
	
	loginForm = new YAHOO.CommSoft.widget.CSDialog("logindlg", 
							{ width : "400px",
							  fixedcenter : true,
							  visible : false, 
							  constraintoviewport : true,
							  zindex: 4,
							  modal: true,
								close: false,
							  buttons : [ { text:"OK", handler:handleSubmit, isDefault:true },
								      { text:"Avbryt", handler:handleCancel } ]
							});
	loginForm.enterPressed = handleSubmit;
	loginForm.escPressed = handleCancel;
	loginForm.setHeader("Logga in");
	
	loginForm.validate = function() {
		var data = this.getData();
		var kolla;
		
		var kolla = [
			[data.epostadress, "E-postadress"],
			[data.losenord, "Lösenord"]
			];
				
		if (!kollaForm("Logga in", kolla))
			return false;
		else
			return true;
	};

	attAnropaEfterLogin = anropaEfterLogin;
	var handleSuccess = function(o) {
		doljVenta();
		var st = o.responseText;
		if (st == "FEL")
			{
				loginForm.showCS();
				felMeddelande("Logga in", "Felaktig e-postadress eller lösenord!");
			}
		else
			kundNuInloggad(st);
	};
	
	var handleFailure = function() {
		doljVenta();
		alert("Du kunde inte loggas in!");
	};
	
	loginForm.callback = { success: handleSuccess,
						     failure: handleFailure };

	var kl1 = new YAHOO.util.KeyListener(document, { keys:27 },  							
													{ fn:loginForm.escPressed,
													scope:loginForm,
													correctScope:true }, "keyup" ); 
	var kl2 = new YAHOO.util.KeyListener(document, { keys:13 },  							
													{ fn:loginForm.enterPressed,
													scope:loginForm,
													correctScope:true }, "keyup" ); 
	loginForm.cfg.queueProperty("keylisteners", [kl1, kl2]);
	
	loginForm.render();
}

function loggaIn()
{
	loginForm.showCS();
}

function initNyKundForm(efterNyKundSkapad)
{
	var handleSubmit = function() {
		if (nyKundForm.validate())
			{
				if (!$("privat").checked)
					{
						document.nykundform.personnummer.value = document.nykundform.orgnr.value;
						document.nykundform.namn.value = document.nykundform.kontaktperson.value;
					}
				nyKundForm.submitCS();
				visaVenta("Lagrar dina uppgifter");
			}
	};
	var handleCancel = function() {
		nyKundForm.cancelCS();
	};
	
	nyKundForm = new YAHOO.CommSoft.widget.CSDialog("nykunddlg", 
							{ width : "620px",
							  fixedcenter : true,
							  visible : false, 
							  constraintoviewport : true,
							  zindex: 4,
							  modal: true,
								close: false,
							  buttons : [ { text:"OK", handler:handleSubmit, isDefault:true },
								      { text:"Avbryt", handler:handleCancel } ]
							});
	nyKundForm.enterPressed = handleSubmit;
	nyKundForm.escPressed = handleCancel;
	nyKundForm.setHeader("Ny kund");
	
	nyKundForm.validate = function() {
		var data = this.getData();
		var kolla;
		
		if (document.nykundform.privat.checked)
			kolla = [
				[data.namn, "Namn"],
				[data.gatuadress, "Gatuadress"],
				[data.postnr, "Postnummer"],
				[data.ort, "Ort"],
				[data.telefonnr, "Telefonnr"],
				[data.epostadress, "E-postadress"],
				[data.losenord, "Lösenord"],
				[data.losen2, "Bekräfta lösenord"],
				[data.personnr, "Personnummer"]
				];
		else
			kolla = [
				[data.foretagsnamn, "Företagsnamn"],
				[data.kontaktperson, "Kontaktperson"],
				[data.gatuadress, "Gatuadress"],
				[data.postnr, "Postnummer"],
				[data.ort, "Ort"],
				[data.telefonnr, "Telefonnr"],
				[data.epostadress, "E-postadress"],
				[data.losenord, "Lösenord"],
				[data.losen2, "Bekräfta lösenord"],
				[data.orgnr, "Organisationsnr"]
				];
				
		if ($("leveransannan").checked)	
			{
				kolla[kolla.length] = [data.levgata, "Gatuadress för leverans"];
				kolla[kolla.length] = [data.levpostnr, "Postnr för leverans"];
				kolla[kolla.length] = [data.levort, "Ort för leverans"];
			}
				
		if (!kollaForm("Ny kund", kolla))
			return false;
		else if (!IsEmailValid("nykundform", "epostadress"))
			{
				felMeddelande("Ny kund", "Var vänlig ange en korrekt e-postadress");
				return false;
			}
		else if (document.nykundform.privat.checked && document.nykundform.namn.value.indexOf(" ") <= 0)
			{	
				felMeddelande("Ny kund", "Var vänlig skriv in både för- och efternamn!");
				return false;
			}
		else if (!document.nykundform.privat.checked && document.nykundform.kontaktperson.value.indexOf(" ") <= 0)
			{	
				felMeddelande("Ny kund", "Var vänlig skriv in både för- och efternamn!");
				return false;
			}
		else if (!postnrOk(document.nykundform.postnr.value, document.nykundform.land.value))
			{
				felMeddelande("Ny kund", "Var vänlig skriv in ditt postnummer med 5 siffror!");
				return false;
			}
		else if ($("leveransannan").checked && !postnrOk(document.nykundform.levpostnr.value, document.nykundform.land.value))
			{
				felMeddelande("Ny kund", "Var vänlig skriv in ditt postnummer för leverans med 5 siffror!");
				return false;
			}
		else
			{
				return true;
			}
	};

	var enks = efterNyKundSkapad;
	var handleSuccess = function(o) {
		doljVenta();
		var st = o.responseText;
		if (st == "FINNS")
			{
				nyKundForm.showCS();
				felMeddelande("Ny kund", "En kund med denna e-postadress finns redan registrerad på skcab.se!");
			}
		else
			{
				var arr = st.split("\x01");
				var namn = arr[0];
				var nyhetslista = arr[1];
				inloggadSom = arr[2];
				var upg = arr[3];
			
				$("inloggad").innerHTML = upg;
				$("ejinloggad").style.display = "none";
				$("inloggad").style.display = "block";
				inloggad = true;
				
				endraInloggad(true, namn, nyhetslista == "J");
				harEndratKundUppgifter = false;
				enks(st);
			}
	};
	
	var handleFailure = function() {
		doljVenta();
		alert("Kundinformationen kunde inte sparas!");
	};
	
	nyKundForm.callback = { success: handleSuccess,
						     failure: handleFailure };

	var kl1 = new YAHOO.util.KeyListener(document, { keys:27 },  							
													{ fn:nyKundForm.escPressed,
													scope:nyKundForm,
													correctScope:true }, "keyup" ); 
	var kl2 = new YAHOO.util.KeyListener(document, { keys:13 },  							
													{ fn:nyKundForm.enterPressed,
													scope:nyKundForm,
													correctScope:true }, "keyup" ); 
	nyKundForm.cfg.queueProperty("keylisteners", [kl1, kl2]);
	
	nyKundForm.render();
}

function nyKund()
{
	nyKundForm.showCS();
}

function nyKundBytKundTyp()
{
	var dispFtg = (document.nykundform.privat.checked) ? "none" : "block";
	var dispPvt = (document.nykundform.privat.checked) ? "block" : "none";
	$("nykundftgrad1").style.display = dispFtg;
	$("nykundpvtrad1").style.display = dispPvt;
}

function IsEmailValid(FormName,ElemName)
{
var EmailOk  = true
var Temp     = document.forms[FormName].elements[ElemName]
var AtSym    = Temp.value.indexOf('@')
var Period   = Temp.value.lastIndexOf('.')
var Space    = Temp.value.indexOf(' ')
var Length   = Temp.value.length - 1   // Array is from 0 to length-1
if ((AtSym < 1) ||                     // '@' cannot be in first position
    (Period <= AtSym+1) ||             // Must be atleast one valid char btwn '@' and '.'
    (Period == Length ) ||             // Must be atleast one valid char after '.'
    (Space  != -1))                    // No empty spaces permitted
   {  
      EmailOk = false
      return false;
      Temp.value="";
   }
return true;
}

var siffror = "0123456789";

function postnrOk(postnr, land)
{
	var ant = 0;
	if (land != "se") return true;
	for (i = 0; i < postnr.length; i++)
		{
			tkn = postnr.charAt(i);
			if (siffror.indexOf(tkn) >= 0)
				ant++;
			else if (tkn == " ")
				continue;
			else
				return false;
		}
	return (ant == 5);
}

function nyKundBytLev()
{
	var dis = !document.nykundform.leveransannan.checked;
	document.nykundform.levgata.disabled = dis;
	document.nykundform.levpostnr.disabled = dis;
	document.nykundform.levpostadress.disabled = dis;
}

function dinaUppgifterBytLev()
{
	var dis = !$("leveransannan").checked;
	$("levgata").disabled = dis;
	$("levpostnr").disabled = dis;
	$("levpostadress").disabled = dis;
}

function medSlump(url)
{
	var slump = Math.random() * 10000;
	return url + "&slump=" + slump;
}

function initGlomtLosenForm()
{
	var handleSubmit = function() {
		if (glomtLosenForm.validate())
			{
				glomtLosenForm.submitCS();
				visaVenta("Skickar påminnelse");
			}
	};
	var handleCancel = function() {
		glomtLosenForm.cancelCS();
	};
	
	glomtLosenForm = new YAHOO.CommSoft.widget.CSDialog("glomtlosendlg", 
							{ width : "400px",
							  fixedcenter : true,
							  visible : false, 
							  constraintoviewport : true,
							  zindex: 4,
							  modal: true,
								close: false,
							  buttons : [ { text:"OK", handler:handleSubmit, isDefault:true },
								      { text:"Avbryt", handler:handleCancel } ]
							});
	glomtLosenForm.enterPressed = handleSubmit;
	glomtLosenForm.escPressed = handleCancel;
	glomtLosenForm.setHeader("Glömt lösenord");
	
	glomtLosenForm.validate = function() {
		var data = this.getData();
		var kolla;
		
		var kolla = [
			[data.epostadress, "E-postadress"]
			];
				
		if (!kollaForm("Logga in", kolla))
			return false;
		else
			return true;
	};

	var handleSuccess = function(o) {
		doljVenta();
		var st = o.responseText;
		if (st == "FEL")
			{
				glomtLosenForm.showCS();
				felMeddelande("Glömt lösenord", "Din e-postadress finns inte registrerad hos skcab.se!");
			}
		else
			{
				infoMeddelande("Glömt lösenord", "Ett brev med ditt lösenord har nu skickats till din e-postadress.");
			}
	};
	
	var handleFailure = function() {
		doljVenta();
		alert("Meddelandet om glömt lösenord kunde inte skickas!");
	};
	
	glomtLosenForm.callback = { success: handleSuccess,
						     failure: handleFailure };

	var kl1 = new YAHOO.util.KeyListener(document, { keys:27 },  							
													{ fn:glomtLosenForm.escPressed,
													scope:glomtLosenForm,
													correctScope:true }, "keyup" ); 
	var kl2 = new YAHOO.util.KeyListener(document, { keys:13 },  							
													{ fn:glomtLosenForm.enterPressed,
													scope:glomtLosenForm,
													correctScope:true }, "keyup" ); 
	glomtLosenForm.cfg.queueProperty("keylisteners", [kl1, kl2]);
	
	glomtLosenForm.render();
}

function glomtLosen()
{
	glomtLosenForm.showCS();
}

function kundUppgifterEndrade()
{
	harEndratKundUppgifter = true;
}

function kundUppgifterLandEndrat()
{
	if (typeof kassanLandEndrat != "undefined") kassanLandEndrat();
}

function initVillkorDlg()
{
	var handleCancel = function() {
		villkorDlg.cancelCS();
	};
	
	villkorDlg = new YAHOO.CommSoft.widget.CSDialog("villkordlg", 
							{ width : "600px",
							  fixedcenter : true,
							  visible : false, 
							  constraintoviewport : true,
							  zindex: 4,
							  modal: true,
								close: true,
								draggable: false/*,
							  buttons : [ { text:"OK", handler:handleCancel, isDefault:true } ]*/
							});
	villkorDlg.enterPressed = handleCancel;
	villkorDlg.escPressed = handleCancel;
	villkorDlg.setHeader("Försäljningsvillkor");
	
	var kl1 = new YAHOO.util.KeyListener(document, { keys:27 },  							
													{ fn:villkorDlg.escPressed,
													scope:villkorDlg,
													correctScope:true }, "keyup" ); 
	var kl2 = new YAHOO.util.KeyListener(document, { keys:13 },  							
													{ fn:villkorDlg.enterPressed,
													scope:villkorDlg,
													correctScope:true }, "keyup" ); 
	villkorDlg.cfg.queueProperty("keylisteners", [kl1, kl2]);
	
	villkorDlg.render();
}

function medTusenInt(pris)
{
	var n = new Number(pris);
	n = n.toString();

	var st = pris + " ";
	st = st.substr(0, st.length - 1);
	var tpos;
	if (st.length > 3)
		tpos = st.length % 3;
	else
		tpos = -1;
	var ret = "";
	for (var i=0; i<st.length; i++)
		{
			if (i % 3 == tpos) ret = ret + " ";
			ret = ret + st.substr(i, 1);
		}
	return ret;
}

function formateratPris(pris, momsSats, medMoms)
{
	if (medMoms)
		return medTusenInt(Math.round(pris * (1 + momsSats / 100)));
	else
		return medTusenInt(Math.round(pris));
}

function getFormData(oForm) {
    var aElements,
        nTotalElements,
        oData,
        sName,
        oElement,
        nElements,
        sType,
        sTagName,
        aOptions,
        nOptions,
        aValues,
        oOption,
        sValue,
        oRadio,
        oCheckbox,
        i,
        n;    

    function isFormElement(p_oElement) {
    
        var sTag = p_oElement.tagName.toUpperCase();
        
        return ((sTag == "INPUT" || sTag == "TEXTAREA" || 
                sTag == "SELECT") && p_oElement.name == sName);

    }

    if (oForm) {

        aElements = oForm.elements;
        nTotalElements = aElements.length;
        oData = {};


        for (i = 0; i < nTotalElements; i++) {

            sName = aElements[i].name;

            /*
                Using "Dom.getElementsBy" to safeguard user from JS 
                errors that result from giving a form field (or set of 
                fields) the same name as a native method of a form 
                (like "submit") or a DOM collection (such as the "item"
                method). Originally tried accessing fields via the 
                "namedItem" method of the "element" collection, but 
                discovered that it won't return a collection of fields 
                in Gecko.*/

            oElement = Dom.getElementsBy(isFormElement, "*", oForm);

            nElements = oElement.length;

            if (nElements > 0) {

                if (nElements == 1) {

                    oElement = oElement[0];

                    sType = oElement.type;
                    sTagName = oElement.tagName.toUpperCase();

                    switch (sTagName) {

                    case "INPUT":

                        if (sType == "checkbox") {

                            oData[sName] = oElement.checked;

                        }
                        else if (sType != "radio") {

                            oData[sName] = oElement.value;

                        }

                        break;

                    case "TEXTAREA":

                        oData[sName] = oElement.value;

                        break;

                    case "SELECT":

                        aOptions = oElement.options;
                        nOptions = aOptions.length;
                        aValues = [];

                        for (n = 0; n < nOptions; n++) {

                            oOption = aOptions[n];

                            if (oOption.selected) {

                                sValue = oOption.value;

                                if (!sValue || sValue === "") {

                                    sValue = oOption.text;

                                }

                                aValues[aValues.length] = sValue;

                            }

                        }

                        oData[sName] = aValues;

                        break;

                    }


                }
                else {

                    sType = oElement[0].type;

                    switch (sType) {

                    case "radio":

                        for (n = 0; n < nElements; n++) {

                            oRadio = oElement[n];

                            if (oRadio.checked) {

                                oData[sName] = oRadio.value;
                                break;

                            }

                        }

                        break;

                    case "checkbox":

                        aValues = [];

                        for (n = 0; n < nElements; n++) {

                            oCheckbox = oElement[n];

                            if (oCheckbox.checked) {

                                aValues[aValues.length] = 
                                    oCheckbox.value;

                            }

                        }

                        oData[sName] = aValues;

                        break;

                    }

                }

            }

        }

    }


    return oData;

}
