tuksi.basket = Base.extend({
	options:Array(),
	items:Array(),
	userid:false,
	nbItems:0,
	constructor:function(){
		this.nbItems = 0;
	},
	addProduct:function(productId,inputId){
		var amount = $F('amount_'+inputId);
		if(!isNaN(amount) && !isNaN(productId)) {
			var url = "/services/ajaxhandler.php?action=basket&add=true";
  		url+= "&productid="+productId;
  		url+= "&amount="+amount;
  		url+= "&userid="+this.userid;
			new Ajax.Request(url,{method:'get',onComplete:this.updateBasket.bind(this,inputId)});
		}
	},
	updateBasket: function(inputId,r){
		xml = r.responseXML;
		var status = xml.getElementsByTagName('status').item(0).firstChild.data;
		
		if(status == "success") {
			
			var itemstatus = xml.getElementsByTagName('itemstatus').item(0).firstChild.data;
			
			var id = xml.getElementsByTagName('id').item(0).firstChild.data;
			var amount = xml.getElementsByTagName('amount').item(0).firstChild.data;
			var totalprice = xml.getElementsByTagName('totalprice').item(0).firstChild.data;
			
			if(itemstatus == "updated") {
				$('basketitemamount_'+id).innerHTML = amount;
				$('basketitemtotalprice_'+id).innerHTML = totalprice;
				this.items[id].amount = amount;
				new Effect.Pulsate($('basketitemamount_'+id),{pulses:1,duration:1});
				new Effect.Pulsate($('basketitemtotalprice_'+id),{pulses:1,duration:1});
			} else {
				var name = xml.getElementsByTagName('name').item(0).firstChild.data;
				this.addItem(id,name,amount,totalprice);
				this.addItemToHtml(id,name,amount,totalprice);
				this.checkEmpty();
			}
			
			$("amount_"+inputId).value = "";
			var totalamount = xml.getElementsByTagName('totalamount').item(0).firstChild.data;
			this.updateTotalAmount(totalamount);
		}
	},
	setUserId:function(userid) {
		this.userid = userid;
	},
	addItem:function(id,name,amount,totalprice) {
		this.items[id] = {id:id,name:name,amount:amount,totalprice:totalprice};
		this.nbItems++;
	},
	addItemToHtml:function(id,name,amount,totalprice) {
		var itemHtml = "<tr style='display:none;' id='basketitem_"+id+"'>";
		itemHtml+= "<td width='125'><span id='basketitemamount_"+id+"'>"+amount+"</span> x "+name+"</span></td>";
		itemHtml+= "<td width='30' class='basketCurrency'>Kr.</td>";
		itemHtml+= "<td width='55' class='basketText'><span class='totalPrice' id='basketitemtotalprice_"+id+"'>"+totalprice+"</span>,-</td>";
		itemHtml+= "<td width='10' class='basketDelete'><a href='#' onclick='basket.removeItem(\""+id+"\");return false;'><!-- slet--><img src='/images/icons/delete.gif' alt='Slet'></a></td>";
		itemHtml+= "</tr>";
		
		var newTR = $('basket').insertRow(-1);
		newTR.setAttribute('id',"basketitem_"+id);
		Element.setStyle(newTR,{display:'none'});
		var firstTD = newTR.insertCell(0);
		firstTD.setAttribute('width',"125");
		firstTD.innerHTML = "<span id='basketitemamount_"+id+"'>"+amount+"</span> x "+name+"</span>";
		var secondTD = newTR.insertCell(1);
		secondTD.setAttribute('width',"30");
		secondTD.className = 'basketCurrency';
		secondTD.innerHTML = "Kr.";
		var thirdTD = newTR.insertCell(2);
		thirdTD.setAttribute('width',"55");
		thirdTD.className = 'basketText';
		thirdTD.innerHTML = "<span class='totalPrice' id='basketitemtotalprice_"+id+"'>"+totalprice+"</span>,-";
		var fouthTD = newTR.insertCell(3);
		fouthTD.setAttribute('width',"10");
		fouthTD.className = "basketDelete";
		fouthTD.innerHTML = "<a href='#' onclick='basket.removeItem(\""+id+"\");return false;'><!-- slet--><img src='/images/icons/delete.gif' alt='Slet'></a>";

		//$('basket').getElementsByTagName('tbody')[0].innerHTML
		//$('basket').appendChild(newTR);//innerHTML = $('basket').innerHTML + itemHtml;
		new Effect.Appear($("basketitem_"+id));
	},
	removeItem:function(id){
		
		var url = "/services/ajaxhandler.php?action=basket&remove=true";
		url+= "&productid="+id;
		url+= "&userid="+this.userid;
		new Ajax.Request(url,{method:'get',onComplete:this.updateBasketDelete.bind(this,id)});
	},
	removenode:function(node,id){
		alert(id);
	},
	updateBasketDelete: function(id,r){

		xml = r.responseXML;
		var status = xml.getElementsByTagName('status').item(0).firstChild.data;
		if(status == "success") {
			
			var totalamount = xml.getElementsByTagName('totalamount').item(0).firstChild.data;
			
			this.updateTotalAmount(totalamount);
			
			if(this.items[id]) {
				this.items[id] = null;
			}
			
			this.nbItems--;
			
			this.checkEmpty();
			
			if($('basketitem_'+id)) {
				var rows = $('basket').getElementsByTagName('tr');
				for(var i = 0,max = rows.length;i < max;i++) {
					if(rows[i].id == 'basketitem_'+id) {
						$('basket').deleteRow(i);
						return;
					}
				}	
			}
		}
	},
	updateTotalAmount:function(amount){
		$('baskettotalamount').innerHTML = "Kr. "+amount+",-";
		new Effect.Pulsate($('baskettotalamount'),{pulses:1,duration:1});
	},
	checkEmpty:function(){
		if(this.nbItems < 1) {
			new Effect.Appear($('emptybasket'));
		} else if(this.nbItems > 0) {
			new Effect.Fade($('emptybasket'));
		}
	},
	placeorder:function(){
		
		var doRequestForm = false;
		
		if($('req_name')) {
			
			var formValues = $H({ name:escape($F('req_name')), 
														email: escape($F('req_email')),
														phone: escape($F('req_phone')),
														message: escape($F('req_message'))});
														
			formValues.each(function(pair) {
				if(pair.value != '') {
					doRequestForm = true;
				}
			});
		}
		if(doRequestForm) {
			this.submitRequestForm('req','requestform','Kontakt mig med et godt tilbud på mit arrangement');return false;
		} else {
			var url = "/services/ajaxhandler.php?action=orderform";
			url+= "&userid="+this.userid;
			new Ajax.Request(url,{method:'get',onComplete:this.showOrderForm.bind(this)});
		}
	},
	requestBudget:function(){
		urchinTracker('/tracking/budget');
		var doRequestForm = false;
		
		if($('req_budget')) {
			
			doRequestForm = true;
			
			
			var formValues = $H({ 	budget:escape($F('req_budget')), 
									guests: escape($F('req_guests')),
									partytype: escape($F('req_partytype'))});
				
			formValues.each(function(pair) {
				if(pair.value == '') {
					doRequestForm = false;
					basket.setError($('label_req_' + pair.key));
				} else {
					if(pair.key == 'budget' || pair.key == 'guests') {
						if(isNaN(pair.value)) {
							basket.setError($('label_req_' + pair.key));
						} else {
							basket.clearError($('label_req_' + pair.key));
						}
					} else {
						basket.clearError($('label_req_' + pair.key));
					}
				}
			});
		}
		if(doRequestForm) {
			
			var url = "/services/ajaxhandler.php?action=requestbudget";
			url+= "&userid="+this.userid;
			params = {	budget:formValues.get('budget'),
						guests:formValues.get('guests'),
						partytype:formValues.get('partytype')}
			new Ajax.Request(url,{parameters:params,method:'post',onComplete:this.postBudgetRequest.bind(this)});
		} 
	},
	postBudgetRequest:function(r){
		
		xml = r.responseXML;
		var form = xml.getElementsByTagName('html').item(0).firstChild.data;
		tuksi.util.showPopup(form);
		
	},
	showOrderForm:function(r){
		xml = r.responseXML;
		var form = xml.getElementsByTagName('html').item(0).firstChild.data;
		tuksi.util.showPopup(form);
		this.setContactForm('overlay');
	},
	submitOrderForm:function(){
		
		var url = "/services/ajaxhandler.php?action=orderform&submit=1&type=orderform";
		url+= "&name="+escape($F('name'));
		url+= "&email="+ escape($F('email'));
		url+= "&phone="+ escape($F('phone'));
		url+= "&message="+escape($F('message'));
		url+= "&userid="+this.userid;
		new Ajax.Request(url,{method:'get',onComplete:this.updateOrderForm.bind(this)});
	},
	updateOrderForm:function(r){
		xml = r.responseXML;
		var html = xml.getElementsByTagName('html').item(0).firstChild.data;
		tuksi.util.updatePopup(""+html+'');
	},
	submitRequestForm:function(prepend,type,textstr){
		
		var ok = true;
		
		var formValues = $H({ name:escape($F(prepend + '_name')), 
													email: escape($F(prepend + '_email')),
													phone: escape($F(prepend + '_phone')),
													message: escape($F(prepend + '_message'))});
		formValues.each(function(pair) {
			if((pair.value == '' || pair.value == 'skal%20udfyldes') &&  pair.key != 'message') {
				basket.setError($('label_'+prepend+'_' + pair.key));
				$(prepend+'_' + pair.key).value = "skal udfyldes";
				ok = false;
			} else {
				if(pair.key == "email") {
					if(basket.isEmail(pair.value)) {
						basket.clearError($('label_'+prepend+'_' + pair.key));
					} else {
						ok = false;	
						basket.setError($('label_'+prepend+'_' + pair.key));
					}
				} else if(pair.key == "phone") {
						if(isNaN(pair.value) || pair.value.length != 8) {
							ok = false;	
							basket.setError($('label_'+prepend+'_' + pair.key));
						} else {
							basket.clearError($('label_'+prepend+'_' + pair.key));
						}
				} else {
					basket.clearError($('label_'+prepend+'_' + pair.key));
				}
			}
		});
		if(ok) {
			var url = "/services/ajaxhandler.php?action=orderform&submit=1&";
			url+= "&userid="+this.userid;
			url+= "&type="+type;
			url+= "&textstr=" + escape(textstr);
			params = {	name:formValues.get('name'),
						email:formValues.get('email'),
						phone:formValues.get('phone'),
						message:formValues.get('message')};
			if(type == "orderform") {
				new Ajax.Request(url,{parameters:params,onComplete:this.updateOrderForm.bind(this)});
			} else if (type == "budget") {
				urchinTracker('/tracking/budget_submit');
				var url = "/services/ajaxhandler.php?action=requestbudget&submit=1&";
				url+= "&userid="+this.userid;
				new Ajax.Request(url,{parameters:params,onComplete:this.updateOrderForm.bind(this)});
			} else {
				urchinTracker('/tracking/kontaktformular');
				new Ajax.Request(url,{parameters:params,onComplete:this.updateRequestForm.bind(this)});
			}
		
		}
	},
	updateRequestForm:function(r){
		xml = r.responseXML;
		var html = xml.getElementsByTagName('html').item(0).firstChild.data;
		$('requestForm').innerHTML = html;
	},
	setContactForm:function (prepend){
		var fields = ['name','email','phone','message'];
		fields.each(function(i){
			var name = prepend + '_' + i;
			Event.observe(name,'focus',basket.activateField.bindAsEventListener(basket,name));
			Event.observe(name,'blur',basket.deactivateField.bindAsEventListener(basket,name));
		});
	},
	setBudgetForm:function (prepend){
		var fields = ['budget','guests'];
		fields.each(function(i){
			var name = prepend + '_' + i;
			Event.observe(name,'focus',basket.activateField.bindAsEventListener(basket,name));
			Event.observe(name,'blur',basket.deactivateField.bindAsEventListener(basket,name));
		});
	},
	setError:function(obj){
		obj.setStyle({color:"#dea600",fontWeight:'bold'});
	},
	clearError:function(obj){
		obj.setStyle({color:"#3F3B2D",fontWeight:'normal'});
	},
 	activateField:function(Event,obj){
 		if($(obj).value == 'skal udfyldes') {
			$(obj).value = "";
		}	
		$(obj).setStyle({border:'1px solid #dea600'});
	},
	deactivateField:function(Event,obj){
		$(obj).setStyle({border:'1px solid #ADA898'});
	},
	isEmail:function(str) {
		return /\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(str);
	}
});