var OrderSearch = Class.create(
{
	initialize: function(formObj)
	{
		if( formObj )
		{
			if(!$(formObj.searchBtnId)) { return false;}
			if(!$(formObj.orderListBtnId)) { return false;}
			this.setObserver(formObj);
		}
	},
	
	setObserver: function(formObj)
	{
		Event.observe(formObj.searchBtnId, 'click', function()
		{
			if(this.validate($(formObj.searchText).value)){
				$(formObj.getlistId).value = "";
				this.showResult(formObj);
			}else{
				return false;
			}
		}.bind(this));
		
		Event.observe(formObj.orderListBtnId, 'click', function()
		{
			$(formObj.getlistId).value = "run";
			this.showResult(formObj);
		}.bind(this));
		
		Event.observe(formObj.formId, 'submit', function()
		{
			if(this.validate($(formObj.searchText).value)){
				$(formObj.getlistId).value = "";
				this.showResult(formObj);
			}else{
				return false;
			}
		}.bind(this));
	},
	
	validate: function(searchText)
	{
		return true;
	},
	
	showResult: function(formObj)
	{
		var resultContainer = formObj.resultContainerId;
		new Ajax.Request('/index.php', 
		{
			method: 'GET',
			parameters: {
				'c_' : 'SO_OrderformAJAX_Controller',
				'm_' : 'getData',
				'nameSearch' : $(formObj.searchText).value,
				'reference' : $(formObj.referenceText).value,
				'stateKey' : $('stateKey').value,
				'cid' : $('cid').value,
				'step' : $('step').value,
				'action' : $('action').value,
				'getlist' : $('getlist').value
			},
			onSuccess: function(transport)
			{
				//$(resultContainer).absolutize();
				$(resultContainer).update(transport.responseText);
				new Effect.SlideDown(resultContainer,
				{
					duration: 0.5,
					scaleContent: false,
					afterFinish: function()
					{
						//new Effect.Appear(formObj.nextStepContainerId);
					}
				});
			}
		});			
	}
});
var ProductSearch = Class.create(
{
	initialize: function(formObj)
	{
		if( formObj )
		{
			if(!$(formObj.searchBtnId)) { return false;}
			this.setObserver(formObj);
		}
	},
	
	setObserver: function(formObj)
	{
		Event.observe(formObj.searchBtnId, 'click', function()
		{
			if(this.validate($(formObj.searchText).value))
				this.showResult(formObj);
			else
				return false;
		}.bind(this));
		Event.observe(formObj.formId, 'submit', function()
		{
			if(this.validate($(formObj.searchText).value))
				this.showResult(formObj);
			else
				return false;
		}.bind(this));
	},
	
	validate: function(searchText)
	{
		return true;
	},
	
	showResult: function(formObj)
	{
		var resultContainer = formObj.resultContainerId;
		new Ajax.Request('/index.php', 
		{
			method: 'get',
			parameters: {
				'c_' : 'SO_OrderformAJAX_Controller',
				'm_' : 'getData',
				'searchstring' : $(formObj.searchText).value,
				'reference' : $(formObj.referenceText).value,
				'stateKey' : $('stateKey').value,
				'cid' : $('cid').value,
				'action' : $('action').value
			},
			onSuccess: function(transport)
			{
				$(resultContainer).update(transport.responseText);
				new Effect.SlideDown(resultContainer,
				{
					duration: 0.5,
					scaleContent: false
				});
			}
		});			
	}
});

var ProductCountUpdater = Class.create(
{
	initialize: function(elementsSelector)
	{
		if($$(elementsSelector))
			this.setObservers($$(elementsSelector));
		else
			return false;
	},
	
	setObservers: function(arr)
	{
		var self = this;
		arr.each(function(elem)
		{
			if($($(elem).getElementsByTagName('input')[0])){
				var price = $(elem).getElementsByTagName('input')[0].value;
			}
			
			$($(elem).getElementsByTagName('input')[1]).observe('keyup', function()
			{
				self.changeCount(this.id,price);
			});
			
			if($(elem).getElementsByTagName('input')[2]){
				$($(elem).getElementsByTagName('input')[2]).observe('keyup', function()
				{
					self.changeDiscount(this.id,price);
				});
			}
			
			if($(elem).getElementsByTagName('input')[3]){
				$($(elem).getElementsByTagName('input')[3]).observe('click', function()
				{
					self.rmGlobal(this.id,price);
				});
			}
			
		});
	},
	
	changeCount: function(id,price)
	{
		
		var idString = $(id).id.replace('count','')
		var idArray = idString.split("/");
		
		new Ajax.Request('/index.php',
		{
			method: 'get',
			parameters: {
				'c_' : 'SO_OrderformAJAX_Controller',
				'm_' : 'getData',
				'stateKey' : $('stateKey').value,
				'productid' : idArray[0],
				'userid' : idArray[1],
				'count' : $(id).value,
				'price' : price,
				'action' : 'addCount'
			},
			onSuccess: function(transport)
			{
				var json = transport.responseText.evalJSON(true);
				$('singel'+json[2]).innerHTML = 'Pris pr stk: ' + json[0];
				$('total'+json[2]).innerHTML = 'Kr ' + json[1];
			}
		});
	},
	
	changeDiscount: function(id,price)
	{
		var idString = $(id).id.replace('discount','')
		var idArray = idString.split("/");
		
		new Ajax.Request('/index.php',
		{
			method: 'get',
			parameters: {
				'c_' : 'SO_OrderformAJAX_Controller',
				'm_' : 'getData',
				'stateKey' : $('stateKey').value,
				'productid' : idArray[0],
				'userid' : idArray[1],
				'discount' : $(id).value,
				'price' : price,
				'action' : 'changeDiscount'
			},
			onSuccess: function(transport)
			{
				var json = transport.responseText.evalJSON(true);
				
				$('singel'+json[2]).innerHTML = 'Pris pr stk: ' + json[0];
				$('total'+json[2]).innerHTML = 'Kr ' + json[1];
				$('global'+json[2]+'/'+json[4]).checked = false;
			}
		});
	},
	
	rmGlobal: function(id,price)
	{
		var idString = $(id).id.replace('global','')
		var idArray = idString.split("/");
		var discount = 0;
		var act = 'rmGlobal';
		
		if ($(id).checked == false){
			act = 'changeDiscount';
		}
		
		new Ajax.Request('/index.php',
		{
			method: 'get',
			parameters: {
				'c_' : 'SO_OrderformAJAX_Controller',
				'm_' : 'getData',
				'stateKey' : $('stateKey').value,
				'productid' : idArray[0],
				'userid' : idArray[1],
				'discount' : discount,
				'price' : price,
				'action' : act
			},
			onSuccess: function(transport)
			{
				var json = transport.responseText.evalJSON(true);
				
				$('singel'+json[2]).innerHTML = 'Pris pr stk: ' + json[0];
				$('total'+json[2]).innerHTML = 'Kr ' + json[1];
				$('discount'+json[2]+'/'+json[4]).value = json[3];
			}
		});
	}
});

Event.observe(window, 'load', function()
{
	var OrderSearchModule = new OrderSearch(
	{
		resultContainerId : 'searchResultContainer',
		searchText : 'nameSearch',
		referenceText : 'reference',
		searchBtnId : 'orderSearchBtn',
		orderListBtnId :'orderListBtn',
		formId : 'orderSearchForm',
		nextStepContainerId : 'orderformBottom',
		getlistId : 'getlist'
	});
	var CountUpdater = new ProductCountUpdater('.prodCount');
	
	var ProductSearchModule = new ProductSearch(
	{
		resultContainerId : 'searchResultContainer',
		searchText : 'productSearchText',
		referenceText : 'productnumber',
		searchBtnId : 'productSearchBtn',
		formId : 'productSearchForm'
	});
});

