/*
 * InventSoft sp. z o.o.
 * Copyright 2010
 */

function isEmpty(val) {
	if ((val=="") || (val=="0") || (val==null)) {
 		return true;
 	}
	else {
		return false;
	}
}

function isNumeric(strString) {
   	return (isInteger(strString) || isFloat(strString));
}

function isInteger(strString) {
   	var strValidChars = "0123456789";
   	var strChar;
   	var blnResult = true;

   	if (strString.length == 0) return false;

   	for (i = 0; i < strString.length && blnResult == true; i++) {
      	strChar = strString.charAt(i);
      	if (strValidChars.indexOf(strChar) == -1) {
         	blnResult = false;
        }
	}
   	return blnResult;
}

function isFloat(strString) {
   	var strValidChars = "0123456789.-";
   	var strChar;
   	var blnResult = true;

   	if (strString.length == 0) return false;

   	for (i = 0; i < strString.length && blnResult == true; i++) {
      	strChar = strString.charAt(i);
      	if (strValidChars.indexOf(strChar) == -1) {
         	blnResult = false;
        }
	}
   	return blnResult;
}

Order = {
	sendOrder: function() {
		if (Sheet.activeSheets>0) {
			var form = $('addOrderForm');
			$('ordMaterialHidden').value = $('ordMaterial').value;
			$('ordThicknessHidden').value = $('ordThickness').value;
			$('ordVeneerThicknessHidden').value = $('ordVeneerThickness').value;
			$('ordUnitHidden').value = $('ordUnit').value;
			form.submit();
		} else {
			alert("Nie można wysłać zamówienia z pustą listą formatek.")
		}
	},
	
	sendDoorOrder: function() {
		if (this.isDoorOrderValid()) {
			var form = $('addOrderForm');
			form.submit();
		}
	},
	
	sendCustomOrder: function() {
		if (this.isCustomOrderValid()) {
			var form = $('addOrderForm');
			form.submit();
		}
	},
	
	confirmDoorOrder: function() {
		if (Order.isOrderDescriptionEmpty()) 
			Order.sendDoorOrder(); 
		else if (confirm('Czy na pewno chcesz wysłać zamówienie niestandardowe (wszystkie pola dotyczące drzwi nie zostaną wysłane)?'))
			Order.sendDoorOrder(); 
		return false;
	},
	
	isOrderDescriptionEmpty: function() {
		var orderDescription = $('ordDescription').value;
		if (orderDescription=="") {
			return true;
		}
		else {
			return false;
		}
	},
 	
	isDoorOrderValid: function() {
		var result = true;
		var errorText = "";
		
		var doorLength = $('dorHeight').value;
		var doorWidth = $('dorWidth').value;
		var doorTrack = $('dorTrack').value;
		var doorLeavesQuantity = $('dorLeafsQuantity').value;
		var orderDescription = $('ordDescription').value;
		var flag = false;
		
		var orderSystem = $('ordSystem').value;
		var orderSystemColor = $('ordSystemColor').value;
		
		if (orderSystem=="") {
			result = false;
			$('ordSystem').className = "error_field";;
			errorText += "System musi zostać wybrany<br>";
		}
		else {
			$('ordSystem').className = "field";;
		}
		if (orderSystemColor=="") {
			result = false;
			$('ordSystemColor').className = "error_field";;
			errorText += "Kolor systemu musi zostać wybrany<br>";
		}
		else {
			$('ordSystemColor').className = "field";;
		}
		if (orderDescription=="") {
			doorLength = doorLength.replace(",", ".");
			doorWidth = doorWidth.replace(",", ".");
			doorTrack = doorTrack.replace(",", ".");
			
			if (isEmpty(doorLength)) {
				result = false;
				$('dorHeight').className = "error_field";;
				errorText += "Długość nie może być pusta<br>";
			}
			else {
				if (!isNumeric(doorLength) || doorLength<=0) {
					result = false;
					$('dorHeight').className = "error_field";
					errorText += "Długość musi być liczbą dodatnią<br>";
				}
				else {
					$('dorHeight').className = "field";
				}
			}
			if (isEmpty(doorWidth)) {
				result = false;
				$('dorWidth').className = "error_field";;
				errorText += "Szerokość nie może być pusta<br>";
			}
			else {
				if (!isNumeric(doorWidth) || doorWidth<=0) {
					result = false;
					$('dorWidth').className = "error_field";;
					errorText += "Szerokość musi być liczbą dodatnią<br>";
				}
				else {
					$('dorWidth').className = "field";;
				}
			}
			if (!isEmpty(doorTrack)) {
				if (!isNumeric(doorTrack) || doorTrack<=0) {
					result = false;
					$('dorTrack').className = "error_field";;
					errorText += "Długość toru musi być liczbą dodatnią<br>";
				}
				else {
					$('dorTrack').className = "field";
				}
			}
			else {
				$('dorTrack').className = "field";
			}
			
			for (var i=0; i < doorLeavesQuantity; i++) {
				var material = $('lefMaterial'+i).value;
				var mirror = $('lefMirror'+i).value;
				
				if ((material==0) && (mirror==0)) {
					result = false;
					$('lefMaterial'+i).className = "error_field";
					$('lefMirror'+i).className = "error_field";
					errorText += "Rodzaj wypełnienia musi być wybrany (skrzyło nr "+(i+1)+") <br>";
				}
				else if ((material!=0) && (mirror!=0)) {
					result = false;
					$('lefMaterial'+i).className = "error_field";
					$('lefMirror'+i).className = "error_field";
					errorText += "Tylko jeden rodzaj wypełnienia może być wybrany (skrzyło nr "+(i+1)+") <br>";
				}
				else {
					$('lefMaterial'+i).className = "field";
					$('lefMirror'+i).className = "field";
				}
			}
		}
		
		if (result) {
			$('orderErrorDiv').style.display = "none";
			$('orderErrorDiv').innerHTML = "";
		}
		else {
			$('orderErrorDiv').style.display = "block";
			$('orderErrorDiv').innerHTML = errorText;
		}
		
		return result;
		
	},
	
	isCustomOrderValid: function() {
		var result = true;
		var orderDescription = $('ordDescription').value;
		var errorText = "";
		
		if (orderDescription=="") {
			result = false;
			Sheet.highlightErrorFields('ordDescription');
			errorText = "Opis ze szczegółami zamówienia nie może być pusty";
		} else {
			Sheet.unhighlightErrorFields('ordDescription');
		}
		
		if (result) {
			$('orderErrorDiv').style.display = "none";
			$('orderErrorDiv').innerHTML = "";
		}
		else {
			$('orderErrorDiv').style.display = "block";
			$('orderErrorDiv').innerHTML = errorText;
		}
		
		return result;
	},
	
	materialChanged: function(select) {
		var option = select.children[select.selectedIndex];
		var thicknessSelect = document.getElementById('ordThickness');
		var thick10 = option.getAttribute('thickness10');
		var thick18 = option.getAttribute('thickness18');
		thicknessSelect.innerHTML = '';
		var o1 = document.createElement('option');
		o1.value = '0';
		//o1.text = '-------';
		o1.innerHTML = '-------';
	 	thicknessSelect.appendChild(o1);
		var o2 = document.createElement('option');
		var o3 = document.createElement('option');
		if (thick10==1) {
			o2.value = '10';
			//o2.text = '10mm';
			o2.innerHTML = '10mm';
			thicknessSelect.appendChild(o2);
		}
		if (thick18==1) {
			o3.value = '18';
			//o3.text = '18mm';
			o3.innerHTML = '18mm';
			thicknessSelect.appendChild(o3);
		}
	},
	
	unitChanged: function() {
		var unitSelect = $('ordUnit').value;
		if (unitSelect == "mm") {
			$('lengthUnit').innerHTML = "mm";
			$('widthUnit').innerHTML = "mm";
		}
		else {
			$('lengthUnit').innerHTML = "cm";
			$('widthUnit').innerHTML = "cm";
		}
	},
	
	colorChanged: function(select) {
		var option = select.children[select.selectedIndex];
		var colorSelect = document.getElementById('ordSystemColor');
		var colorsQuantity = $('colQuantity').value;
		colorSelect.innerHTML = "";
		for (var i = 0; i < colorsQuantity; i++) {
			var colorName = $('colName'+i).value;
			var colorId = $('colId'+i).value;
			var hasColor = option.getAttribute('color'+i);
			if (hasColor==1) {
				var o = document.createElement('option');
				o.value = colorId;
				//o.text = colorName;
				//o.label = colorName;
				o.innerHTML = colorName;
				colorSelect.appendChild(o);
			}
		}
	},
	
	showLeafs: function(selectedIndex) {
		var oldQuantity = $('dorOldLeafsQuantity').value;
		var quantity = $('dorLeafsQuantity').value;
		var leafsDiv = $('leafsDiv');
		if (oldQuantity < quantity) {
			for (var i=oldQuantity; i< quantity; i++) {
				var leafDivContent = $('leafPrototype').innerHTML;
				leafDivContent = leafDivContent.replace('%NUMBER%', i);
				leafDivContent = leafDivContent.replace('%NUMBER%', i);
				var tmpDiv = document.createElement('div');
				tmpDiv.innerHTML = leafDivContent;
				leafsDiv.appendChild(tmpDiv);
			}
		}
		else if (oldQuantity > quantity) {
			for (var i=quantity; i< oldQuantity; i++) {
				leafsDiv.removeChild(leafsDiv.lastChild);
			}
		}
		
		$('dorOldLeafsQuantity').value = quantity;
	},
	
	areThicknessesSelected: function() {
		var select = $('ordMaterial');
		var option = select.children[select.selectedIndex];
		var matType = option.getAttribute('matType');
		var thickness = $('ordThickness').value;
		var veneerThickness = $('ordVeneerThickness').value;
		var result = false;
		
		if (matType=='MDF') {
			if ((veneerThickness!=0) && (thickness!=0)) {
				result = true;
			}
		}
		else if (matType=='HDF') {
			result = true;
		}
		
	/*	
		if (veneerThickness!=0) {
			if (matType=='MDF') {
				if (thickness!=0) {
					result = true;
				}
			}
			else {
				result = true;
			}
		}
	*/
		return result;
	}
}

Sheet = {
	sheetsCount: 0,
	editedSheet: 0,
	activeSheets: 0,
	
	isSheetValid: function() {
		var result = true;
		var errorText = "";
		var unit = $('ordUnit').value;
		
		var sheetQuantity = $('shtQuantity').value;
		var sheetWidth = $('shtWidth').value;
		var sheetLength = $('shtLength').value;
		var sheetDescription = $('shtDescription').value;
		var flag = false;
		
		sheetWidth = sheetWidth.replace(",", ".");
		sheetLength = sheetLength.replace(",", ".");
		
		if (isEmpty(sheetQuantity)) {
			result = false;
			this.highlightErrorFields('shtQuantity');
			errorText += "Ilość nie może być pusta<br>";
		}
		else {
			if (!isInteger(sheetQuantity)) {
				result = false;
				this.highlightErrorFields('shtQuantity');
				errorText += "Ilość musi być dodatnią liczbą całkowitą<br>";
			} 
			else {
				this.unhighlightErrorFields('shtQuantity');
			}
		}
		
		if (isEmpty(sheetLength)) {
			result = false;
			this.highlightErrorFields('shtLength');
			errorText += "Długość nie może być pusta<br>";
		}
		else {
			if (!isNumeric(sheetLength) || sheetLength<=0) {
				result = false;
				this.highlightErrorFields('shtLength');
				errorText += "Długość musi być liczbą dodatnią<br>";
			}
			else {
				if (unit=="mm") {
					if (sheetLength > 2760) {
						result = false;
						this.highlightErrorFields('shtLength');
						errorText += "Maksymalny rozmiar formatki to 276 cm na 203 cm<br>";
					}
					else if (sheetLength > 2030) {
						this.unhighlightErrorFields('shtLength');
						flag = true;
					}
					else {
						this.unhighlightErrorFields('shtLength');
					}
				}
				else {
					if (sheetLength > 276) {
						result = false;
						this.highlightErrorFields('shtLength');
						errorText += "Maksymalny rozmiar formatki to 276 cm na 203 cm<br>";
					}
					else if (sheetLength > 203) {
						this.unhighlightErrorFields('shtLength');
						flag = true;
					}
					else {
						this.unhighlightErrorFields('shtLength');
					}
				}
			}
		}
		
		if (isEmpty(sheetWidth)) {
			result = false;
			this.highlightErrorFields('shtWidth');
			errorText += "Szerokość nie może być pusta<br>";
		}
		else {
			if (!isNumeric(sheetWidth) || sheetWidth<=0) {
				result = false;
				this.highlightErrorFields('shtWidth');
				errorText += "Szerokość musi być liczbą dodatnią<br>";
			}
			else {
				if (unit=="mm") {
					if (sheetWidth > 2760) {
					result = false;
					this.highlightErrorFields('shtWidth');
						errorText += "Maksymalny rozmiar formatki to 276 cm na 203 cm<br>";
					}
					else if (sheetWidth > 2030) {
						if (flag) {
							result = false;
							this.highlightErrorFields('shtWidth');
							errorText += "Maksymalny rozmiar formatki to 276 cm na 203 cm<br>";
						}
						else {
							this.unhighlightErrorFields('shtWidth');
						}
					}
					else {
						this.unhighlightErrorFields('shtWidth');
					}
				}
				else {
					if (sheetWidth > 2760) {
					result = false;
					this.highlightErrorFields('shtWidth');
						errorText += "Maksymalny rozmiar formatki to 276 cm na 203 cm<br>";
					}
					else if (sheetWidth > 2030) {
						if (flag) {
							result = false;
							this.highlightErrorFields('shtWidth');
							errorText += "Maksymalny rozmiar formatki to 276 cm na 203 cm<br>";
						}
						else {
							this.unhighlightErrorFields('shtWidth');
						}
					}
					else {
						this.unhighlightErrorFields('shtWidth');
					}
				}
				
			}
		}
		
		if (result) {
			$('sheetErrorDiv').style.display = "none";
			$('sheetErrorDiv').innerHTML = "";
		}
		else {
			$('sheetErrorDiv').style.display = "block";
			$('sheetErrorDiv').innerHTML = errorText;
		}
		
		return result;
	},
	
	addSheet: function() {
		var flag = true;
		if (this.activeSheets==0) {
			if (!Order.areThicknessesSelected()) {
				var errorText = "Grubość płyty i okleiny musi być wybrana<br>";
				$('sheetErrorDiv').style.display = "block";
				$('sheetErrorDiv').innerHTML = errorText;
				flag = false;
			}
		}
		
		if (flag) {
			if (this.isSheetValid() ) {
				if (this.activeSheets==0) {
					$('ordMaterial').disabled = true;
					$('ordThickness').disabled = true;
					$('ordVeneerThickness').disabled = true;
					$('ordUnit').disabled = true;
				}
				var content = $('sheetTemplate').innerHTML;
				var container = document.createElement('div');
				var sheetsList = $('sheetsTable');
				content = content.replace(/\[Number\]/g, this.sheetsCount);
				container.setAttribute('class', 'row');
				container.setAttribute('id', 'sheetRow'+this.sheetsCount);
				container.innerHTML = content;
				sheetsList.appendChild(container);
				this.fillRowFields(this.sheetsCount, $('ordUnit').value);
				this.updateNumbers();
				this.sheetsCount++;
				this.activeSheets++;
				this.clearBaseForm();
			}
		}
	},
	
	removeSheet: function(sheetId) {
		var response = confirm("Czy na pewno chcesz usunąć tą formatkę?");
		if (response) {
			var sheetsList = $('sheetsTable');
			var container = $('sheetRow'+sheetId);
			sheetsList.removeChild(container);
			this.updateNumbers();
			this.activeSheets--;
		}
		if (this.activeSheets==0) {
			$('ordMaterial').disabled = false;
			$('ordThickness').disabled = false;
			$('ordVeneerThickness').disabled = false;
			$('ordUnit').disabled = false;
		}
	},
	
	editSheet: function(number) {
		this.fillFormFields(number);
	},
	
	fillRowFields: function(sheetId, unit) {
		var n = sheetId;
		$('sheetLength'+n).value = ($('shtLength').value).replace(",", ".");
		//$('value_sheetLength'+n).innerHTML = ($('shtLength').value).replace(",", ".") + " cm";
		$('value_sheetLength'+n).innerHTML = ($('shtLength').value).replace(",", ".") + " " + unit;
		$('sheetWidth'+n).value = ($('shtWidth').value).replace(",", ".");
		//$('value_sheetWidth'+n).innerHTML = ($('shtWidth').value).replace(",", ".") + " cm";
		$('value_sheetWidth'+n).innerHTML = ($('shtWidth').value).replace(",", ".") + " " + unit;
		$('sheetQuantity'+n).value = $('shtQuantity').value;
		$('value_sheetQuantity'+n).innerHTML = $('shtQuantity').value + " szt.";
		$('sheetDescription'+n).value = $('shtDescription').value;
		$('value_sheetDescription'+n).innerHTML = $('shtDescription').value;
		$('sheetVeneerL1'+n).value = $('shtVeneerL1').value;
		$('value_sheetVeneerL1'+n).innerHTML = $('shtVeneerL1').options.item($('shtVeneerL1').selectedIndex).text;
		$('sheetVeneerL2'+n).value = $('shtVeneerL2').value;
		$('value_sheetVeneerL2'+n).innerHTML = $('shtVeneerL2').options.item($('shtVeneerL2').selectedIndex).text;
		$('sheetVeneerW1'+n).value = $('shtVeneerW1').value;
		$('value_sheetVeneerW1'+n).innerHTML = $('shtVeneerW1').options.item($('shtVeneerW1').selectedIndex).text;
		$('sheetVeneerW2'+n).value = $('shtVeneerW2').value;
		$('value_sheetVeneerW2'+n).innerHTML = $('shtVeneerW2').options.item($('shtVeneerW2').selectedIndex).text;
		this.moveFileInput('row', n);
	},
	
	fillFormFields: function(sheetId) {
		var n = sheetId;
		this.clearBaseForm();
		$('shtLength').value = $('sheetLength'+n).value;
		$('shtWidth').value = $('sheetWidth'+n).value;
		$('shtQuantity').value = $('sheetQuantity'+n).value;
		$('shtDescription').value = $('sheetDescription'+n).value;
		$('shtVeneerL1').value = $('sheetVeneerL1'+n).value;
		$('shtVeneerL2').value = $('sheetVeneerL2'+n).value;
		$('shtVeneerW1').value = $('sheetVeneerW1'+n).value;
		$('shtVeneerW2').value = $('sheetVeneerW2'+n).value;
		this.moveFileInput('form', n);
		this.editedSheet = n;
		$('addSheet').style.display = "none";
		$('clearSheet').style.display = "none";
		$('saveSheet').style.display = "inline";
		$('cancelSheet').style.display = "inline";
		window.location.href = "#formatka";
	},
	
	clearBaseForm: function() {
		$('shtVeneerL1').selectedIndex = 0;
		$('shtVeneerL2').selectedIndex = 0;
		$('shtVeneerW1').selectedIndex = 0;
		$('shtVeneerW2').selectedIndex = 0;
		$('shtLength').value = "";
		$('shtWidth').value = "";
		$('shtQuantity').value = "";
		$('shtDescription').value = "";
		$('shtFile').value = "";
		this.editedSheet = 0;
		$('addSheet').style.display = "inline";
		$('clearSheet').style.display = "inline";
		$('saveSheet').style.display = "none";
		$('cancelSheet').style.display = "none";
		this.unhighlightErrorFields('shtLength,shtWidth,shtQuantity');
		$('sheetErrorDiv').style.display = "none";
		$('sheetErrorDiv').innerHTML = "";
	},
	
	saveSheet: function() {
		if (this.isSheetValid()) {
			this.fillRowFields(this.editedSheet, $("ordUnit").value);
			this.clearBaseForm();
		}
	},
	
	cancelSheet: function() {
		this.clearBaseForm();
	},
	
	updateNumbers: function() {
		var sheetsList = $('sheetsTable');
		var children = sheetsList.childNodes;
		for (var i=1, il=children.length; i<il; i++) {
			var items = children[i].childNodes;
			for (var j=0; j<items.length;  j++) {
				var item = items[j];
				if (item.id!==undefined && item.id.substring(0,17)=='value_sheetNumber') {
					item.innerHTML = i-2;
				}
			}
		}
	},
	
	highlightErrorFields: function(fields) {
		if (fields != undefined && fields != "") {
			var fieldsArray = fields.split(',');
			for (var i=0; i<fieldsArray.length; i++) {
				$(fieldsArray[i]).className = "error_field";
			}
		}
	},
	
	unhighlightErrorFields: function(fields) {
		if (fields != undefined && fields != "") {
			var fieldsArray = fields.split(',');
			for (var i=0; i<fieldsArray.length; i++) {
				$(fieldsArray[i]).className = "field";
			}
		}
	},
	
	moveFileInput: function(mode, nr) {
		if (mode=='row') {
			var srcInput = document.getElementById('shtFile');
			var dstInput = srcInput.cloneNode(true);
			var srcInputDiv = document.getElementById('shtFileDiv');
			var dstInputDiv = document.getElementById('sheetFileDiv'+nr);
			srcInput.value = "";
			dstInput.id = 'sheetFile'+nr;
			dstInput.name = 'sheetFile[]';
			dstInputDiv.innerHTML = "";
			dstInputDiv.appendChild(dstInput);
		} else if (mode=='form') {
			var srcInput = document.getElementById('sheetFile'+nr);
			var dstInput = srcInput.cloneNode(true);
			var srcInputDiv = document.getElementById('sheetFileDiv'+nr);
			var dstInputDiv = document.getElementById('shtFileDiv');
			dstInput.id = 'shtFile';
			dstInput.name = 'shtFile';
			dstInputDiv.innerHTML = "";
			dstInputDiv.appendChild(dstInput);
		}
	}
}
