function Product()
{
	this.request = new Request();
	this.xmlType = '';
	this.awaitingXML = false;
	this.checkbox = '';
	this.saveAll = false;
}

Product.prototype.checkAll = function()
{
	var table = document.getElementById('tableProducts');
	var trs = table.getElementsByTagName('tr');
	checkboxinfo = '';
	
	for(var i = 0; i < trs.length; i++)
	{
		var elements = trs[i].getElementsByTagName('input');
		for (var j = 0; j < elements.length; j++)
		{
			if(elements[j].getAttribute('type') == 'checkbox')
			{
				var tds = trs[i].getElementsByTagName('td');
				
				if(this.saveAll)
				{
					for(var k = 0; k < tds.length; k++)
					{
						tds[k].style.backgroundColor = '';
					}
					elements[j].checked = false;
					checkboxinfo += '&product_'+elements[j].getAttribute('id')+'=0';
				}
				else
				{
					for(var k = 0; k < tds.length; k++)
					{
						tds[k].style.backgroundColor = '#BBBBBB';
					}
					elements[j].checked = true;
					checkboxinfo += '&product_'+elements[j].getAttribute('id')+'=1';
				}
			}
		}
	}
	
	if(this.saveAll)
	{
		this.saveAll = false;
	}
	else
	{
		this.saveAll = true;
	}
	
	this.awaitingXML = true;
	this.xmlType = 'saveAllProduct';
	this.request.method = 'post';
	this.request.url = '/src/modules/ajax/saveAllProduct.php';
	this.request.data = 'save='+this.saveAll+checkboxinfo;
	this.request.addRequestListener(this);
	this.request.open();
}

Product.prototype.save = function(checkbox, id, _top)
{
	this._top = _top;
	
	var save = 0;
	if (checkbox.checked)
	{
		save = 1;
	}
	
	this.checkbox = checkbox;
	var injectionsize = 1;

	if(document.getElementById('injection2_'+id) && document.getElementById('injection2_'+id).checked)
	{
		injectionsize = 2;
	}
	else if(document.getElementById('injection3_'+id) && document.getElementById('injection3_'+id).checked)
	{
		injectionsize = 3;
	}
	else if(document.getElementById('injection4_'+id) && document.getElementById('injection4_'+id).checked)
	{
		injectionsize = 4;
	}
	
	this.awaitingXML = true;
	this.xmlType = 'saveProduct';
	this.request.method = 'post';
	this.request.url = '/src/modules/ajax/saveProduct.php';
	this.request.data = 'save='+save+'&id='+checkbox.getAttribute('id')+'&injectionsize='+injectionsize;
	this.request.addRequestListener(this);
	this.request.open();
}

Product.prototype.finishSaveProduct = function()
{
	var basket = this.request.getResponseText();
	var div = document.getElementById("basket");
	if(document.getElementById('productFinder'))
	{
		document.getElementById('productFinder').removeChild(div);
		document.getElementById('productFinder').innerHTML += basket;
	}
	else if (document.getElementById('SubpageContent'))
	{
		document.getElementById('SubpageContent').removeChild(div);
		document.getElementById('SubpageContent').innerHTML += basket;
	}
	
	if(this.checkbox.parentNode.parentNode)
	{
		var tr = this.checkbox.parentNode.parentNode;
		var tds = tr.getElementsByTagName('td');
		
		if(this.checkbox.checked)
		{
			for(var i = 0; i < tds.length; i++)
			{
				tds[i].style.backgroundColor = '#BBBBBB';
			}
		}
		else
		{
			for(var i = 0; i < tds.length; i++)
			{
				tds[i].style.backgroundColor = '';
			}
		}
		this.checkbox = '';
	}
}

Product.prototype.finishSaveAllProduct = function()
{
	var basket = this.request.getResponseText();
	var div = document.getElementById("basket");
	if(document.getElementById('productFinder'))
	{
		document.getElementById('productFinder').removeChild(div);
		document.getElementById('productFinder').innerHTML += basket;
	}
	else if (document.getElementById('SubpageContent'))
	{
		document.getElementById('SubpageContent').removeChild(div);
		document.getElementById('SubpageContent').innerHTML += basket;
	}
	
	this.checkbox = '';
}

Product.prototype.hideDiv = function()
{
	$(document).ready(function()
	{
		$("#messageDiv").fadeOut("slow");
	});
}

Product.prototype.validateRequestQuote = function()
{
	var table = document.getElementById('tableProducts');
	var trs = table.getElementsByTagName('tr');
	var lines = new Array();
	var validated = true;
	
	var errorDiv = document.getElementById('errordiv');
	errorDiv.style.display = 'none';
	
	// First, lets make sure user selected at least one injection size for each
	// requested product for quote.
	
	for (var i = 0; i < trs.length; i++)
	{
		var radiobts = new Array();
		var inputs = trs[i].getElementsByTagName('input');
		var lineradiochecked = true;
		
		if(inputs.length > 0)
		{
			var checkbox = inputs[0];
			if(checkbox.checked)
			{
				var lineradiochecked = false;
			}
			
			for(var j = 0; j < inputs.length; j++)
			{
				if(inputs[j].getAttribute('type') == 'radio')
				{
					radiobts.push(inputs[j]);
					if(inputs[j].checked)
					{
						var lineradiochecked = true;
					}
				}
			}
		}
		if(!lineradiochecked)
		{
			validated = false;
		}
	}
	if(!validated)
	{
		this.showErrorMsg('Please, select at least one injection size for <br/> each product you want information about');
	}
	else
	{
		// Now, le's validate the whole form
		msg = 'Please, fill these fields in:<br/>';
		if(document.getElementById('firstName').value == '')
		{
			msg += '- Name<br/>';
			validated = false;
		}
		if(document.getElementById('company').value == '')
		{
			msg += '- Company<br/>';
			validated = false;
		}
		if(document.getElementById('requestEmail').value == '')
		{
			msg += '- E-mail<br/>';
			validated = false;
		}
		if(document.getElementById('phone').value == '')
		{
			msg += '- Phone<br/>';
			validated = false;
		}
		if(validated)
		{
			document.getElementById('requestQuote').submit();
		}
		else
		{
			this.showErrorMsg(msg);
		}
	}
}

Product.prototype.showErrorMsg = function(msg)
{
	var errorDiv = document.getElementById('errordiv');
	errorDiv.innerHTML = msg;
	errorDiv.style.display = '';
}

Product.prototype.ajaxRequestFinished = function()
{
	if (this.awaitingXML)
	{
		switch (this.xmlType)
		{
			case 'saveProduct':
				this.finishSaveProduct();
			break;
			case 'saveAllProduct':
				this.finishSaveAllProduct();
			break;
		}
	}
	else
	{
		
	}
}

Product.prototype.addListeners = function()
{
	var checkboxes = new Array();
	var inputs = document.getElementsByTagName('input');
	for(var i = 0; i < inputs.length; i++)
	{
		if(inputs[i].getAttribute('type') == 'checkbox')
		{
			checkboxes.push(inputs[i]);
		}
	}
	
	var me = this;
	
	for(var i = 0; i < checkboxes.length; i ++)
	{
		checkboxes[i].onclick = function()
		{
			me.save(this, this.getAttribute('id'));
		}
	}
}

var oProduct = new Product();