//Version 10
function CreateCartContainer(id, documentId)
{
	var obj = new Object;
	obj.ID = id;
	obj.DocumentId = documentId;
	obj.AjaxTextContainer = 'ajaxCont'
	obj.IncludeDelivery = false;

	obj.Add = function(objBasketProduct){
		if(objBasketProduct){
			this.Array[this.Array.length] = objBasketProduct;
		}
	};

	obj.Buy = function(objLink,documentId, count){
		this.ShowAjaxText(objLink);
		var response;
		response = Cart.Buy(documentId, count, this.DocumentId);
		if (response.error!=null){	
			alert(response.error);
			cart.innerHTML = response.error;
			return;
		}
		cart.innerHTML = response.value;
	}

	obj.BuyFromFlash = function(documentId, count){
		var response;
		response = Cart.Buy(documentId, count, this.DocumentId);
		if (response.error!=null){	
			alert(response.error);
			cart.innerHTML = response.error;
			return;
		}
		cart.innerHTML = response.value;
	}

	obj.RemoveItem = function(documentId,lineNo){
		var response;
		response = Cart.RemoveItem(documentId, lineNo, this.DocumentId);
		if (response.error!=null){
			alert(response.error);
			cart.innerHTML = response.error;
			return;
		}
		cart.innerHTML = response.value;
	}


	obj.UpdateItem = function(documentId, lineNo, count, colorId, sexId, sizeId, fromName, toName, color, sex, size){
		var response;
		if(!obj.IsNumeric(count)) {
			alert('Ikke gyldig verdi!');
			exit;
		}
		if(count>0) {
			response = Cart.UpdateItem(this.DocumentId, documentId, lineNo, count, colorId, sexId, sizeId, fromName, toName, color, sex, size);
			if (response.error!=null){
				alert(response.error);
				cart.innerHTML = response.error;
				return;
			}
			cart.innerHTML = response.value;
		} else {
			if(confirm('Vil du virkelig slette dette produktet?')) obj.RemoveItem(documentId, lineNo);
		}
	}


	obj.RenderCart = function(){
		var response;
		response = Cart.RenderCart(this.DocumentId);
		if (response.error!=null){	
			alert(response.error);
			return;
		}
		return response.value;
	}

	obj.DeleteBasket = function(){
		var response;
		response = Cart.UpdateItem(this.DocumentId, documentId, lineNo, count, colorId, sexId, sizeId, fromName, toName, color, sex, size);
		if (response.error!=null){
			alert(response.error);
			cart.innerHTML = response.error;
			return;
		}
		cart.innerHTML = response.value;
	};

	obj.IsNumeric = function(sText){	
		var ValidChars = "0123456789";
		var IsNumber=true;
		var Char;
		for (i = 0; i < sText.length && IsNumber == true; i++){ 
			Char = sText.charAt(i); 
			if (ValidChars.indexOf(Char) == -1){
				IsNumber = false;
			}
		}
		return IsNumber;
	};

	obj.isEnterClicked = function(e){
		//e is event object passed from function invocation
		var characterCode; //literal character code will be stored in this variable
		if(e && e.which){ //if which property of event object is supported	(NN4)
			e = e;
			characterCode = e.which; //character code is contained in NN4's which property
		}
		else{
			e = event;
			characterCode = e.keyCode; //character code is contained in IE's keyCode property
		}

		if(characterCode == 13){ //if generated character code is equal to ascii 13 (if enter key)
			return true;
		}
		else{
			return false ;
		}
	};
	
	obj.IsDate = function(dateStr, format) {
		if (format == null) { format = "DMY"; }
		format = format.toUpperCase();
		if (format.length != 3) { format = "DMY"; }
		if ( (format.indexOf("M") == -1) || (format.indexOf("D") == -1) || (format.indexOf("Y") == -1) ) { format = "MDY"; }
		if (format.substring(0, 1) == "Y") { // If the year is first
			var reg1 = /^\d{2}(\-|\/|\.)\d{1,2}\1\d{1,2}$/
			var reg2 = /^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$/
		} else if (format.substring(1, 2) == "Y") { // If the year is second
			var reg1 = /^\d{1,2}(\-|\/|\.)\d{2}\1\d{1,2}$/
			var reg2 = /^\d{1,2}(\-|\/|\.)\d{4}\1\d{1,2}$/
		} else { // The year must be third
			var reg1 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{2}$/
			var reg2 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/
		}
		// If it doesn't conform to the right format (with either a 2 digit year or 4 digit year), fail
		if ( (reg1.test(dateStr) == false) && (reg2.test(dateStr) == false) ) { return false; }
		var parts = dateStr.split(RegExp.$1); // Split into 3 parts based on what the divider was
		// Check to see if the 3 parts end up making a valid date
		if (format.substring(0, 1) == "M") { var mm = parts[0]; } else 
			if (format.substring(1, 2) == "M") { var mm = parts[1]; } else { var mm = parts[2]; }
		if (format.substring(0, 1) == "D") { var dd = parts[0]; } else 
			if (format.substring(1, 2) == "D") { var dd = parts[1]; } else { var dd = parts[2]; }
		if (format.substring(0, 1) == "Y") { var yy = parts[0]; } else 
			if (format.substring(1, 2) == "Y") { var yy = parts[1]; } else { var yy = parts[2]; }
		if (parseFloat(yy) <= 50) { yy = (parseFloat(yy) + 2000).toString(); }
		if (parseFloat(yy) <= 99) { yy = (parseFloat(yy) + 1900).toString(); }
		var dt = new Date(parseFloat(yy), parseFloat(mm)-1, parseFloat(dd), 0, 0, 0, 0);
		if (parseFloat(dd) != dt.getDate()) { return false; }
		if (parseFloat(mm)-1 != dt.getMonth()) { return false; }
		return true;
	};

	obj.isValidEmail = function(emailAddress){
		var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[(2([0-4]\d|5[0-5])|1?\d{1,2})(\.(2([0-4]\d|5[0-5])|1?\d{1,2})){3} \])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
	    return re.test(emailAddress);
	};
	
	obj.PopupPic = function (sPicURL) { 
		window.open("popup.htm?"+sPicURL, "", "resizable=1,HEIGHT=200,WIDTH=200");
		return false;
	};
	
	obj.ButtonMouseOver = function(obj, url){
		if(obj.src.indexOf("ico") == -1)
			obj.src = url;
	};

	obj.ButtonMouseOut = function(obj, url){
		if(obj.src.indexOf("ico") == -1)
			obj.src = url;
	};

	obj.ShowAjaxText = function(linkObj){
		linkObj.setAttribute('id', 'lnk' + this.AjaxTextContainer);
		var oImage = null;
		var children = linkObj.childNodes;
		for (var i=0; i < children.length; i++ ){
			if(children[i].tagName == "IMG"){
				oImage = children[i];
				break;
			}
		}
		if(oImage){
			oImage.setAttribute('id', this.AjaxTextContainer);
			oImage.setAttribute('src','btn/icoProductAddedToBasket.gif');
			//oImage.setAttribute('width',"100");
			//oImage.setAttribute('height',"39");
			oImage.onMouseOver = "";
			oImage.onMouseOut = "";
			setTimeout(this.ID + '.HideAjaxText(document.getElementById("' + linkObj.id + '"))', 2000);
		}
	};
	
	obj.HideAjaxText = function(obj){
		var children = obj.childNodes;
		for (var i=0; i < children.length; i++ ) {
			if(children[i].id == this.AjaxTextContainer){
				var oImage = children[i];
				oImage.setAttribute('id', "");
				oImage.setAttribute('src','btn/btnGiveThisMiddle.png');
				//oImage.setAttribute('width',"101");
				//oImage.setAttribute('height',"24");
				//oImage.onMouseOver = "objCart.ButtonMouseOver(this,\'btn/btnAddToBasket_a.gif\');";
				//oImage.onMouseOut = "objCart.ButtonMouseOut(this,\'btn/btnAddToBasket.gif\');";
			}
		}
		obj.setAttribute('id','');
	};
	
	obj.SendTip = function(tipDid, messageOutPut, mailTo, mailFrom, mailMessage)
	{
		var response;
		response = Cart.SendTipAFriend(this.DocumentId, tipDid, mailTo.value, mailFrom.value, mailMessage.value);
		messageOutPut.style.display='block';
		if (response.error!=null){
			alert(response.error);
			messageOutPut.innerHTML = "Meldingen ble ikke sendt til: " + mailTo.value;
			return;
		}
		messageOutPut.innerHTML = response.value;
		mailTo.value = mailTo.title;
		return false;
	};
	
	obj.TipFocus = function(obj)
	{
		if(!obj) return false;
		if(obj.value == obj.title)	
		 obj.value= '';
	};



	
	return obj;
}

function CreateBasketFull(id, documentId, containerId){
	var obj = new Object;
	obj.Id = id;
	obj.DocumentId = documentId;
	obj.ContainerId = containerId;
	obj.Array = new Array();
	obj.IncludeDelivery = false;
	obj.Delivery = null;
	
	obj.UI = new Object();
	obj.UI.ErrorMessage = function(){return document.getElementById("errStep2" + id);}
	obj.UI.ErrorMessageRequiredField = function(){return document.getElementById("errStep2req" + id);}
	obj.UI.PaymentMethod = function(){return document.getElementById("lstPaymentMethod" + id);}

	obj.AddDelivery = function(objDelivery) {
		this.Delivery = objDelivery;
	};
	
	obj.Add = function(objBasketProduct){
		if(objBasketProduct){
			this.Array[this.Array.length] = objBasketProduct;
		}
	};

	obj.Sum = function(){
		var sum = 0;
		for (var i=0; i<this.Array.length;i++){
			sum += this.Array[i].Sum();
		}
		if(this.Delivery) sum += this.Delivery.Price;
		return sum;
	};
	
	obj.RenderSum = function(){
		var sHtml = new Array("");
		var sum = 0;
		sum = this.Sum();
		if(parseInt(sum,10) == sum){
			sum = sum + ",-";
		}
		sHtml.push('<div class="header"><span class="title">Pris inkl. mva ');
		if(!this.IncludeDelivery)
			sHtml.push('eksl. frakt</span>');
		else
			sHtml.push('inkl. frakt</span>');
		sHtml.push('<span class="tot-sum">Kr.&nbsp;<span class="item-tot-price">' + sum + '</span></span></div>');
		document.getElementById(this.ContainerId).innerHTML = sHtml.join("");
		return "";
	};
	
	obj.Render = function(){
		for (var i=0; i<this.Array.length;i++){
			this.Array[i].Render();
		}
		this.RenderSum();
		return "";
	};

	obj.DoTransfer = function(objLink){
		var paymentMethod = 'PAYEX';
		if(this.UI.PaymentMethod()) paymentMethod = this.UI.PaymentMethod().value;
		switch (paymentMethod){
			case 'PAYEX':
				//if(this.CheckRequiredFieldsMissing()) return false;
				if(this.ShowAjaxText(objLink)){
					//var ret = Step2.DoPayex(this.DocumentId, this.UI.Payex.CardType().value, this.UI.Payex.Name().value, this.UI.Payex.Number().value,this.UI.Payex.Year().value,this.UI.Payex.Month().value,this.UI.Payex.ControlNumber().value);
					var ret = Step2.DoPayex(this.DocumentId);
					if(ret.value.ok) {
					//if(objCart.IsNumeric(ret.value)){
						//document.location.href="default.aspx?did=" + this.DocumentId + "&viewtype=step3&orderid=" + ret.value;
						document.location.href=ret.value.redirectTo;
					} else {
						setTimeout(this.Id + '.HideAjaxText(document.getElementById("' + objLink.id + '"))', 1000);
						this.UI.ErrorMessage().innerHTML = ret.value.message;//this.UI.Login.ErrorMessageString;
						this.UI.ErrorMessage().style.display = 'block';
					}
				}
				break;
			case 'FAKTURA':
				if(this.ShowAjaxText(objLink)){
					var ret = Step2.DoInvoice(this.DocumentId);
					if(ret.error){
						this.UI.ErrorMessage().innerHTML = ret.error;
						this.UI.ErrorMessage().style.display = 'block';
						return false;
					}
					if(objCart.IsNumeric(ret.value)){
						document.location.href="default.aspx?did=" + this.DocumentId + "&viewtype=step3&orderid=" + ret.value;
					} else {
						this.UI.ErrorMessage().innerHTML = ret.value;//this.UI.Login.ErrorMessageString;
						this.UI.ErrorMessage().style.display = 'block';
					}
				}
				break;
		}
	}
	obj.CheckRequiredFieldsMissing = function(){
		for (var i=0; i<this.Array.length;i++){
			this.Array[i].CheckRequiredFieldsMissing();
		}		
	};

	obj.ShowAjaxText = function(objLink){
		objLink.setAttribute('id', 'lnk' + this.AjaxTextContainer);
		var oImage = null;
		var children = objLink.childNodes;
		for (var i=0; i < children.length; i++ ){
			if(children[i].tagName == "IMG"){
				oImage = children[i];
				break;
			}
		}
		if(oImage){
			if(oImage.src.indexOf("ico") == -1){
				oImage.setAttribute('id', this.AjaxTextContainer);
				oImage.setAttribute('src','btn/icoAjaxLoader.gif');
				oImage.setAttribute('width',"25");
				oImage.setAttribute('height',"25");
				oImage.onMouseOver = "";
				oImage.onMouseOut = "";
				setTimeout(this.Id + '.HideAjaxText(document.getElementById("' + objLink.id + '"))', 4000);
				return true;
			}
		}
		return false;
	};
	
	obj.HideAjaxText = function(obj){
		if(obj){
			var children = obj.childNodes;
			for (var i=0; i < children.length; i++ ) {
				if(children[i].id == this.AjaxTextContainer){
					var oImage = children[i];
					oImage.setAttribute('id', "");
					oImage.setAttribute('src','btn/btnSendOrder.gif');
					oImage.setAttribute('width',"111");
					oImage.setAttribute('height',"24");
				}
			}
			obj.setAttribute('id','');
		}
	}
	
	return obj;
}

function CreateBasketLogin(id, documentId){
	var obj = new Object()
	obj.Id = id;
	obj.DocumentId = documentId;
	obj.UI = new Object();
	obj.UI.Login = new Object();
	obj.UI.Login.Username = function(){return document.getElementById("tbLoginU" + id).value;}
	obj.UI.Login.Password = function(){return document.getElementById("tbLoginP" + id).value;}
	obj.UI.Login.ErrorMessage = function(){return document.getElementById("errLogin" + id);}

	obj.UI.Register = new Object();
	obj.UI.Register.Username = function(){return document.getElementById("tbRegisterU" + id).value;}
	obj.UI.Register.Password = function(){return document.getElementById("tbRegisterP" + id).value;}
	obj.UI.Register.RePassword = function(){return document.getElementById("tbRegisterRP" + id).value;}
	obj.UI.Register.Type = function(){return document.getElementById("lbRegisterT" + id).value;}
	obj.UI.Register.ErrorMessage = function(){return document.getElementById("errLogin" + id);}


	obj.UI.ForgottenPassword = new Object();
	obj.UI.ForgottenPassword.Container = function(){return document.getElementById("cFP" + id);}
	obj.UI.ForgottenPassword.Email = function(){return document.getElementById("tbFPEmail" + id);}
	obj.UI.ForgottenPassword.RowEmail = function(){return document.getElementById("rowFPEmail" + id);}
	obj.UI.ForgottenPassword.Message = function(){return document.getElementById("msgForgottenPassword" + id);}
	
	obj.ShowForgottenPassword = function(){
		obj.UI.ForgottenPassword.RowEmail().style.display = 'block';
		obj.UI.ForgottenPassword.Message().style.display = 'none';
		obj.UI.ForgottenPassword.Container().style.display = 'block';
	}
	
	obj.SendForgottenPassword = function(){
		obj.UI.ForgottenPassword.RowEmail().style.display = 'none';
		obj.UI.ForgottenPassword.Message().style.display = 'block';
		obj.UI.ForgottenPassword.Message().innerHTML = '';
		var ret = Login.SendForgottenPassword(obj.UI.ForgottenPassword.Email().value,objCart.DocumentId);
		if(ret.value==''){
			obj.UI.ForgottenPassword.Message().innerHTML = 'Ditt passord er blitt sendt til: ' + obj.UI.ForgottenPassword.Email().value;
			obj.UI.ForgottenPassword.RowEmail().style.display = 'none';
			obj.UI.ForgottenPassword.Message().style.display = 'block';
		} else {
			obj.UI.ForgottenPassword.RowEmail().style.display = 'block';
			obj.UI.ForgottenPassword.Message().innerHTML = ret.value;
		}
	}
	
	obj.Login = function(){
		var ret = Login.Login(this.DocumentId, this.UI.Login.Username(),this.UI.Login.Password(), false);
		if(ret.value.ok){
			document.location.href=ret.value.redirectTo;//"default.aspx?did=" + this.DocumentId + "&viewtype=step2";			
		} else {
			this.UI.Login.ErrorMessage().innerHTML = ret.value.message; //this.UI.Login.ErrorMessageString;
			this.UI.Login.ErrorMessage().style.display = 'block';
		}
	}
	
	obj.RegisterUser = function(){
		var ret = Login.RegisterUser(this.DocumentId, this.UI.Register.Username(),this.UI.Register.Password(), this.UI.Register.RePassword(), this.UI.Register.Type())
		if(ret.value.ok){
			ret = Login.Login(this.DocumentId, this.UI.Register.Username(), this.UI.Register.Password(), true)
			if(ret.value.ok){
				document.location.href=ret.value.redirectTo; //"default.aspx?did=" + this.DocumentId + "&viewtype=step2";
			} else {
				this.UI.Register.ErrorMessage().innerHTML = ret.value.message;//this.UI.Login.ErrorMessageString;
				this.UI.Register.ErrorMessage().style.display = 'block';
			}
		} else {
			this.UI.Register.ErrorMessage().innerHTML = ret.value.message;//this.UI.Login.ErrorMessageString;
			this.UI.Register.ErrorMessage().style.display = 'block';
		}
	}	

	obj.CheckSumit = function(e){
		if(objCart.isEnterClicked(e)){
			this.Login();
		}
	}

	return obj;
}

function CreateBasketStep1(id, documentId, customerType){
	var obj = new Object()
	obj.Id = id;
	obj.CustomerType = customerType;
	obj.DocumentId = documentId;
	
	obj.UI = new Object();
	obj.UI.ErrorMessage = function(){return document.getElementById("errStep1" + id);}
	obj.UI.User = new Object();
	obj.UI.User.CompanyName = function(){return document.getElementById("tbUCompanyName" + id);}
	obj.UI.User.CompanyOrgNr = function(){return document.getElementById("tbUCompanyOrgNr" + id);}
	obj.UI.User.FirstName = function(){return document.getElementById("tbUFirstName" + id);}
	obj.UI.User.LastName = function(){return document.getElementById("tbULastName" + id);}
	obj.UI.User.StreetAddress = function(){return document.getElementById("tbUStreetAddress" + id);}
	obj.UI.User.PostalCode = function(){return document.getElementById("tbUPostalCode" + id);}
	obj.UI.User.PostalArea = function(){return document.getElementById("tbUPostalArea" + id);}
//	obj.UI.User.UserCountry = function(){return document.getElementById("tbUserCountry" + id);}
	obj.UI.User.Email = function(){return document.getElementById("tbUEmail" + id);}
	obj.UI.User.SameDeliveryAddress = function(){return document.getElementById("chkSameDeliveryAddress" + id);}
	obj.UI.User.Newsletter = function(){return document.getElementById("chkNewsletter" + id);}

	obj.UI.Delivery = new Object();
	obj.UI.Delivery.Container = function(){return document.getElementById("divDeliveryAddress" + id);}
	obj.UI.Delivery.FirstName = function(){return document.getElementById("tbDFirstName" + id);}
	obj.UI.Delivery.LastName = function(){return document.getElementById("tbDLastName" + id);}
	obj.UI.Delivery.StreetAddress = function(){return document.getElementById("tbDStreetAddress" + id);}
	obj.UI.Delivery.PostalCode = function(){return document.getElementById("tbDPostalCode" + id);}
	obj.UI.Delivery.PostalArea = function(){return document.getElementById("tbDPostalArea" + id);}

	obj.SetStyle = function(){
		if(this.ShowDeliveryAddress() == false){
			this.UI.User.SameDeliveryAddress().checked = false;
			this.UI.Delivery.Container().style.display = 'block';
		}
	};

	obj.ShowDeliveryAddress = function(){
		if(this.UI.User.FirstName().value != this.UI.Delivery.FirstName().value)	
			return true;
		if(this.UI.User.LastName().value != this.UI.Delivery.LastName().value)	
			return true;
		if(this.UI.User.StreetAddress().value != this.UI.Delivery.StreetAddress().value)	
			return true;
		if(this.UI.User.PostalCode().value != this.UI.Delivery.PostalCode().value)	
			return true;
		if(this.UI.User.PostalArea().value != this.UI.Delivery.PostalArea().value)	
			return true;
		return false;
	};
	
	obj.Toggle = function(){
		if(this.UI.User.SameDeliveryAddress().checked == '')
			this.UI.Delivery.Container().style.display = 'block';
		else
			this.UI.Delivery.Container().style.display = 'none';
	};
	
	obj.UpdateUserData = function(){
		if(this.CheckRequiredFieldsMissing() == true) return;
		var deliveryFirstName = "";
		var deliveryLastName = "";
		var deliveryStreetAddress = "";
		var deliveryPostalCode = "";
		var deliveryPostalArea = "";
		var deliveryCountry = "Norge";
		if(this.UI.User.SameDeliveryAddress().checked){
			deliveryFirstName = this.UI.User.FirstName().value;
			deliveryLastName = this.UI.User.LastName().value;
			deliveryStreetAddress = this.UI.User.StreetAddress().value
			deliveryPostalCode = this.UI.User.PostalCode().value;
			deliveryPostalArea = this.UI.User.PostalArea().value;
		}
		else {
			deliveryFirstName = this.UI.Delivery.FirstName().value;
			deliveryLastName = this.UI.Delivery.LastName().value;
			deliveryStreetAddress = this.UI.Delivery.StreetAddress().value;
			deliveryPostalCode = this.UI.Delivery.PostalCode().value;
			deliveryPostalArea = this.UI.Delivery.PostalArea().value;
		}
		var newsLetter = "";
		if(this.UI.User.Newsletter().checked)
			newsLetter = "1";
		var ret = Step1.SaveUser(this.UI.User.FirstName().value,this.UI.User.LastName().value, this.UI.User.Email().value, this.UI.User.StreetAddress().value,this.UI.User.PostalCode().value,this.UI.User.PostalArea().value,"Norge", deliveryFirstName, deliveryLastName, deliveryStreetAddress,deliveryPostalCode,deliveryPostalArea, deliveryCountry, this.UI.User.CompanyName().value, this.UI.User.CompanyOrgNr().value, newsLetter);
		if(ret.value==''){
			document.location.href="default.aspx?did=" + this.DocumentId + "&viewtype=step2";
		} else {
			this.UI.ErrorMessage().innerHTML = ret.value;//this.UI.Login.ErrorMessageString;
			this.UI.ErrorMessage().style.display = 'block';
		}
	};	

	obj.CheckRequiredFieldsMissing = function(){
		var ShowError = false;
		if(this.UI.User.FirstName().value.length == 0) return this.ShowError(this.UI.User.FirstName());
		if(this.UI.User.LastName().value.length == 0) return this.ShowError(this.UI.User.LastName());
//		if(this.UI.User.StreetAddress().value.length == 0) return this.ShowError(this.UI.User.StreetAddress());
		var postalCode = this.UI.User.PostalCode().value;
		if(postalCode.length < 4 || !objCart.IsNumeric(postalCode) || parseInt(postalCode,10) < 1 || parseInt(postalCode,10) > 9999) {
			alert("Postnr* er ikke gyldig, vennligst tast inn gyldig postnr med fire siffer!");
			this.UI.User.PostalCode().focus();
			return true;
		}
		
		if(this.UI.User.PostalArea().value.length == 0) return this.ShowError(this.UI.User.PostalArea());
		if(this.UI.User.Email().value.length == 0) return this.ShowError(this.UI.User.Email());
		if(!this.UI.User.SameDeliveryAddress().checked)	{
			if(this.UI.Delivery.FirstName().value.length == 0) return this.ShowError(this.UI.Delivery.FirstName());
			if(this.UI.Delivery.LastName().value.length == 0) return this.ShowError(this.UI.Delivery.LastName());
//			if(this.UI.Delivery.StreetAddress().value.length == 0) return this.ShowError(this.UI.Delivery.StreetAddress());
			var postalCode = this.UI.Delivery.PostalCode().value;
			if(postalCode.length < 4 || !objCart.IsNumeric(postalCode) || parseInt(postalCode,10) < 1 || parseInt(postalCode,10) > 9999){
				alert("Postnr* er ikke gyldig, vennligst tast inn gyldig postnr med fire siffer!");
				this.UI.Delivery.PostalCode().focus();
				return true;
			}
			if(this.UI.Delivery.PostalArea().value.length == 0) return this.ShowError(this.UI.Delivery.PostalArea());
		}
		return ShowError;
	}
	
	obj.ShowError = function(element){
		alert(this.UI.ErrorMessage().innerHTML);
		element.style.backgroundColor="#FFFC9A";
		element.focus();
		return true;
	};

	return obj;
}

function CreateBasketStep2(id, documentId, customerType){
	var obj = new Object()
	obj.Id = id;
	obj.CustomerType = customerType;
	obj.DocumentId = documentId;
	obj.AjaxTextContainer = "doTransferInf"
	obj.UI = new Object();
	obj.UI.ErrorMessage = function(){return document.getElementById("errStep2" + id);}
	obj.UI.ErrorMessageRequiredField = function(){return document.getElementById("errStep2req" + id);}
	obj.UI.PaymentMethod = function(){return document.getElementById("lstPaymentMethod" + id);}
	obj.UI.PaymentSelector = function(){return document.getElementById("payment" + id);}
	obj.UI.Payex = new Object();
	obj.UI.Payex.CardType = function(){return document.getElementById("lstCardType" + id);}
	obj.UI.Payex.Number = function(){return document.getElementById("tbNumber" + id);}
	obj.UI.Payex.ControlNumber = function(){return document.getElementById("tbCtrlNr" + id);}
	obj.UI.Payex.Name = function(){return document.getElementById("tbName" + id);}
	obj.UI.Payex.Month = function(){return document.getElementById("lstMonth" + id);}
	obj.UI.Payex.Year = function(){return document.getElementById("lstYear" + id);}
	obj.UI.Invoice = new Object();
	obj.IncludeDelivery = false;

	obj.Add = function(objBasketProduct){
		if(objBasketProduct){
			this.Array[this.Array.length] = objBasketProduct;
		}
	};

	obj.SetStyle = function(){
		//if(this.CustomerType != 'firm')
		//	this.UI.PaymentSelector().style.display = 'none';
	};

	obj.CheckRequiredFieldsMissing = function(){
		return false;
		//var ShowError = false;
		//if(this.UI.Payex.CardType().value.length == 0) return this.ShowError(this.UI.Payex.CardType(),"");
		//if(!objCart.IsNumeric(this.UI.Payex.Number().value)) return this.ShowError(this.UI.Payex.Number(),'Kortnummer er ikke numerisk, vennligst benytt kun numeriske tall!');
		//if(this.UI.Payex.Number().value.length == 0) return this.ShowError(this.UI.Payex.Number(),"");
		//if(this.UI.Payex.ControlNumber().value.length == 0) return this.ShowError(this.UI.Payex.ControlNumber(),"");
		//if(this.UI.Payex.Name().value.length == 0) return this.ShowError(this.UI.Payex.Name(),"");
		//if(this.UI.Payex.Month().value.length == 0) return this.ShowError(this.UI.Payex.Month(),"");
		//if(this.UI.Payex.Year().value.length == 0) return this.ShowError(this.UI.Payex.Year(),"");
		//return ShowError;
	}
	
	obj.ShowError = function(element, errorMessage){
		if(errorMessage.length>0)
			alert(errorMessage);
		else
			alert(this.UI.ErrorMessageRequiredField().innerHTML);
		element.style.backgroundColor="#FFFC9A";
		element.focus();
		return true;
	};

	obj.DoTransfer = function(objLink){
		var paymentMethod = 'PAYEX';
		if(this.UI.PaymentMethod()) paymentMethod = this.UI.PaymentMethod().value;
		switch (paymentMethod){
			case 'PAYEX':
				if(this.CheckRequiredFieldsMissing()) return false;
				if(this.ShowAjaxText(objLink)){
					//var ret = Step2.DoPayex(this.DocumentId, this.UI.Payex.CardType().value, this.UI.Payex.Name().value, this.UI.Payex.Number().value,this.UI.Payex.Year().value,this.UI.Payex.Month().value,this.UI.Payex.ControlNumber().value);
					var ret = Step2.DoPayex(this.DocumentId);
					if(ret.value.ok) {
					//if(objCart.IsNumeric(ret.value)){
						//document.location.href="default.aspx?did=" + this.DocumentId + "&viewtype=step3&orderid=" + ret.value;
						document.location.href=ret.value.redirectTo;
					} else {
						setTimeout(this.Id + '.HideAjaxText(document.getElementById("' + objLink.id + '"))', 1000);
						this.UI.ErrorMessage().innerHTML = ret.value.message;//this.UI.Login.ErrorMessageString;
						this.UI.ErrorMessage().style.display = 'block';
					}
				}
				break;
			case 'FAKTURA':
				if(this.ShowAjaxText(objLink)){
					var ret = Step2.DoInvoice(this.DocumentId);
					if(ret.error){
						this.UI.ErrorMessage().innerHTML = ret.error;
						this.UI.ErrorMessage().style.display = 'block';
						return false;
					}
					if(objCart.IsNumeric(ret.value)){
						document.location.href="default.aspx?did=" + this.DocumentId + "&viewtype=step3&orderid=" + ret.value;
					} else {
						this.UI.ErrorMessage().innerHTML = ret.value;//this.UI.Login.ErrorMessageString;
						this.UI.ErrorMessage().style.display = 'block';
					}
				}
				break;
		}
	}

	obj.ShowAjaxText = function(objLink){
		objLink.setAttribute('id', 'lnk' + this.AjaxTextContainer);
		var oImage = null;
		var children = objLink.childNodes;
		for (var i=0; i < children.length; i++ ){
			if(children[i].tagName == "IMG"){
				oImage = children[i];
				break;
			}
		}
		if(oImage){
			if(oImage.src.indexOf("ico") == -1){
				oImage.setAttribute('id', this.AjaxTextContainer);
				oImage.setAttribute('src','btn/icoAjaxLoader.gif');
				oImage.setAttribute('width',"25");
				oImage.setAttribute('height',"25");
				oImage.onMouseOver = "";
				oImage.onMouseOut = "";
				setTimeout(this.Id + '.HideAjaxText(document.getElementById("' + objLink.id + '"))', 4000);
				return true;
			}
		}
		return false;
	};
	
	obj.HideAjaxText = function(obj){
		if(obj){
			var children = obj.childNodes;
			for (var i=0; i < children.length; i++ ) {
				if(children[i].id == this.AjaxTextContainer){
					var oImage = children[i];
					oImage.setAttribute('id', "");
					oImage.setAttribute('src','btn/btnSendOrder.gif');
					oImage.setAttribute('width',"111");
					oImage.setAttribute('height',"24");
				}
			}
			obj.setAttribute('id','');
		}
	}
	return obj;
}

function CreateDeliveryCost(containerId, title, price, weight, zone){
	var obj = new Object;
	obj.ContainerId = containerId;
	obj.Price = price;
	obj.Weight = weight;
	obj.Title = title;
	obj.Zone = zone;
	obj.Sum = function(){
		return this.Price;
	};

	obj.Load = function(){
		var res = Step2.GetDeliveryCost();
		if(res.value) {
			var o = res.value;
			this.Price = o.price;
			this.Weight = o.weight
			this.Zone = o.zone;
		}
	};
	obj.Render = function(){
		if(this.Price==0){
			document.getElementById(this.ContainerId).style.display = "none";
			return false;
		}
		var sHtml = new Array("");
		sHtml.push('<div class="header">');
		var price = "";
		var totalprice = this.Sum();
		if(parseInt(this.Price,10) == this.Price){
			price = this.Price + ",-";
			totalprice = totalprice + ",-";
		}
		sHtml.push('<span class="title">' + title + '</span>');
		sHtml.push('<span class="item-price">');
		sHtml.push('Pris&nbsp;<span class="item-tot-price">' + totalprice + '</span>');
		sHtml.push('</span>');
		sHtml.push('</div>');
		sHtml.push('<div class="inputforms"><span class="weightandzone">' + this.Weight + ' kg, Sone ' + this.Zone + '</span>Posten\'s Servicepakke</div>')
		document.getElementById(this.ContainerId).innerHTML = sHtml.join("");
	};
	return obj;
}
