var formName = "calculator";

//
//functii de validare
//

function trim(str){
	var val;
	val = str.replace(/^\s+/g, '').replace(/\s+$/g, '');
	return val;
}

function validNumber(obj){
	var anum=/(^\d+$)|(^\d+\.\d+$)/
	var returnVal = true;

	returnVal = anum.test(obj.value);

//	if(parseFloat(obj.value) <=0 ){
//		returnVal = false;
//	}

	if(!returnVal){
		alert("Va rugam sa introduceti un numar real pozitiv valid.");
		obj.focus();
	}
		
	return returnVal;
}

function validIntNumber(obj){
	var anum=/(^\d+$)/
	var returnVal = true;

	returnVal = anum.test(obj.value);
	
	if(!returnVal){
		alert("Va rugam sa introduceti un numar intreg pozitiv valid.");
		obj.focus();
	}
		
	return returnVal;
}

function validNumberGlobal(obj){
	var anum=/(^\d+$)|(^\d+\.\d+$)/
	var returnVal = true;

	returnVal = anum.test(obj.value);

//	if(parseFloat(obj.value) <=0 ){
//		returnVal = false;
//	}

	if(!returnVal){
		alert("Va rugam sa introduceti un numar real pozitiv valid.");
		obj.focus();
	}
		
	return returnVal;
}

function forceEvenNumber(obj){
	var val = parseInt(obj.value);
	if(val % 2 == 1){
		obj.value = val+1;
	}
}

function validateXFinit(obj){
	formObj = document.forms[formName];
	x1 = parseFloat(formObj.xFinitDesfasurat.value);
	x2 = parseFloat(formObj.xFinitInchis.value);

	if(validNumber(obj)){
		if(obj.value > 0 && obj.value <= 68){
			if(x1 >= x2){
				schimbaNrIndoituri();
			}
			else{
				x2 = parseFloat(formObj.xFinitDesfasurat.value);
				obj.value = x2;
			}
		}
		else{
			if(x1 < x2){
				x2 = parseFloat(formObj.xFinitDesfasurat.value);
				obj.value = x2
			}
			else{
			obj.value = 68;
			}
		}

	}
}

function validateYFinit(obj){
	formObj = document.forms[formName];
	y1 = parseFloat(formObj.yFinitDesfasurat.value);
	y2 = parseFloat(formObj.yFinitInchis.value);

	if(validNumber(obj)){
		if(obj.value > 0 && obj.value <= 48){
			if(y1 >= y2){
				schimbaNrIndoituri();
			}
			else{
				y2 = parseFloat(formObj.yFinitDesfasurat.value);
				obj.value = y2
			}
		}
		else{
			if(y1 < y2){
				y2 = parseFloat(formObj.yFinitDesfasurat.value);
				obj.value = y2
			}
			else{
			obj.value = 48;
			}
		}
	}
}

function validateIndoituri(obj){
//	x1 = parseFloat(formObj.xFinitDesfasurat.value);
//	y1 = parseFloat(formObj.yFinitDesfasurat.value);

//	if(validIntNumber(obj)){
//		schimbaFormatFinitInchis();
//	}
}

function validateNCulori(obj){
//	if(validNumber(obj)){
	obj.value = parseInt(obj.value);

	if(obj.value < 0 || obj.value == "NaN"){
		obj.value = 0;
	}
	if(obj.value > 8){
		obj.value = 8;
	}
}

function validateNumber(obj){
	validNumber(obj);
}

function validateIntNumber(obj){
	validIntNumber(obj);
}

function validateNrPagini(obj){
	nrIndoituri = parseInt(formObj.nrIndoituri.value);

	if(validIntNumber(obj)){
		if(obj.value < 2*(nrIndoituri+1)){
			obj.value = 2*(nrIndoituri+1);
		}
		
		forceEvenNumber(obj);
	}
}

function validateDropDown(obj, minVal){
	var val = obj.options[obj.selectedIndex].value;

	if(val < minVal){
		alert("Va rugam sa alegeti o optiune din lista indicata.");
		obj.focus();
		return false;
	}
	
	return true;
}

//
//functii pt interfata
//

function changeCoverStatus(){
	formObj = document.forms[formName];
	coverStatus = formObj.statusCoperta.checked;

	changeFieldStatus(document.getElementsByTagName("input"), coverStatus);
	changeFieldStatus(document.getElementsByTagName("select"), coverStatus);
}

function changeFieldStatus(objArray, status){
	for(var i = 0; i < objArray.length; i++){
		if(objArray[i].id == "coperta"){
			if(status){
				//activeaza campuri coperta
				objArray[i].style.backgroundColor = "#ffffff";
				objArray[i].disabled = false;
			}
			else{
				//dezactiveaza campuri coperta
				objArray[i].style.backgroundColor = "#cccccc";
				objArray[i].disabled = true;
			}
		}
	}
}

function schimbaStatusLaturaSpiralare(IDSpiralare){
	formObj = document.forms[formName];
	finisareVal = formObj.finisare.options[formObj.finisare.selectedIndex].value;

	if(finisareVal == IDSpiralare){
		//activeaza latura spiralare
		formObj.finisareLaturaSpirala.style.backgroundColor = "#ffffff";
		formObj.finisareLaturaSpirala.disabled = false;
	}
	else{
		//dezactiveaza latura spiralare
		formObj.finisareLaturaSpirala.style.backgroundColor = "#cccccc";
		formObj.finisareLaturaSpirala.disabled = true;
	}
}

function schimbaNrIndoituri(){
	formObj = document.forms[formName];
	
	x1 = parseFloat(formObj.xFinitDesfasurat.value);
	y1 = parseFloat(formObj.yFinitDesfasurat.value);
	x2 = parseFloat(formObj.xFinitInchis.value);
	y2 = parseFloat(formObj.yFinitInchis.value);
	
	formObj.nrIndoituri.value = determinaNrIndoituri(x1, y1, x2, y2);
}

function schimbaFormatFinitInchis(){
	var dimFinitInchis = new Array();
	formObj = document.forms[formName];
	
	x1 = parseFloat(formObj.xFinitDesfasurat.value);
	y1 = parseFloat(formObj.yFinitDesfasurat.value);
	n = parseFloat(formObj.nrIndoituri.value);
	
	dimFinitInchis = determinaDimensiuniFormatInchis(x1, y1, n);

	formObj.xFinitInchis.value = dimFinitInchis[0];
	formObj.yFinitInchis.value = dimFinitInchis[1];
}

function validateCampFormular(obj, tip){
	if(tip == "n"){
		if(obj.value <= 0){
			obj.focus();
			alert("Va rugam sa completati campul indicat cu o valoare pozitiva.");
			return false;
		}
	}

	if(tip == "nz"){
		if(obj.value < 0){
			obj.focus();
			alert("Va rugam sa completati campul indicat cu o valoare pozitiva sau zero.");
			return false;
		}
	}
	
	if(tip == "nx"){
		if(obj.value <= 0 || obj.value > 68){
			alert("Va rugam sa completati campul indicat cu o valoare pozitiva mai mica de 68.");
			obj.focus();
			return false;
		}
	}

	if(tip == "ny"){
		if(obj.value <= 0 || obj.value > 48){
			alert("Va rugam sa completati campul indicat cu o valoare pozitiva mai mica de 48.");
			obj.focus();
			return false;
		}
	}

	if(tip == "s"){
		if(trim(obj.value) == ""){
			obj.focus();
			alert("Va rugam sa completati campul indicat.");
			return false;
		}
	}
	
	return true;
}

function validareFormular(){
	formObj = document.forms[formName];
	
	returnVal =	validateCampFormular(formObj.denumireLucrare, "s") &&
				validateCampFormular(formObj.xFinitDesfasurat, "nx") &&
				validateCampFormular(formObj.yFinitDesfasurat, "ny") &&
				validateCampFormular(formObj.xFinitInchis, "nx") &&
				validateCampFormular(formObj.yFinitInchis, "ny") &&
				validateCampFormular(formObj.nrPaginiInterior, "n") &&
				validateCampFormular(formObj.nrCuloriInteriorFata, "nz") &&
				validateCampFormular(formObj.nrCuloriInteriorVerso, "nz") &&
				validateCampFormular(formObj.tiraj, "n");

	if(!formObj.finisareLaturaSpirala.disabled){
		returnVal =	returnVal && validateCampFormular(formObj.finisareLaturaSpirala, "n");
	}

	//coperta
	if(!formObj.nrPaginiCoperta.disabled){
		returnVal =	returnVal && validateCampFormular(formObj.nrPaginiCoperta, "n");
	}

	if(!formObj.nrCuloriCopertaFata.disabled){
		returnVal =	returnVal && validateCampFormular(formObj.nrCuloriCopertaFata, "nz");
	}

	if(!formObj.nrCuloriCopertaVerso.disabled){
		returnVal =	returnVal && validateCampFormular(formObj.nrCuloriCopertaVerso, "nz");
	}

	//combo test

	if((returnVal) && (formObj.hartieInterior.options[formObj.hartieInterior.selectedIndex].value == 0)){
		validateDropDown(formObj.hartieInterior, 1);
		returnVal = false;
	}

	if((returnVal) && (!formObj.hartieCoperta.disabled)){
		if (formObj.hartieCoperta.options[formObj.hartieCoperta.selectedIndex].value == 0){
			validateDropDown(formObj.hartieCoperta, 1);
			returnVal = false;
		}
	}

	return returnVal;
}

//
//functii pt. calculator
//

//determina numarul de indoituri
function determinaNrIndoituri(x1, y1, x2, y2){
	var n = (Math.floor(x1/x2)-1) + (Math.floor(y1/y2)-1);
	if(n < 0){
		var n = (Math.floor(x1/x2)-1) + (Math.floor(y1/y2)-1)+1;
		return n;
	}
	else{
		if(!isFinite(parseFloat(n))){
			return 0;
		}
		else{
			return n;
		}
	}
}

//determina dimensiunile formatului inchis
function determinaDimensiuniFormatInchis(x, y, n){
	var result = new Array();

	if(x>y){
		result[0] = x/(n+1);
		result[1] = y;
	}
	else{
		result[0] = x;
		result[1] = y/(n+1);
	}

	return result;
}


//----------------------------------------------------

function validNumber2(val){
	var returnVal = true;
	
	if(val!=""){
		if(isNaN(parseFloat(val))){
			returnVal = false;
		}
		else{
			if(parseFloat(val)<0){
				returnVal = false;
			}
			else{
				if(parseFloat(val).toString()!=val){
					returnVal = false;
				}
			}
		}
	}
	
	return returnVal;
}

//some old functions
function validateForm(nume_form){
	var isOk = true;
	var pass = new Array();

	for(var i=0; i<document.forms[nume_form].length; i++){
		switch(document.forms[nume_form].elements[i].id){
			case "mandatory":
				switch(document.forms[nume_form].elements[i].type){
					case "password":
						if((typeof document.forms[nume_form].update) == "undefined"){
						//if((String(window.location).indexOf("act=view")<0) && (String(window.location).indexOf("act=update")<0)){
							if(trim(document.forms[nume_form].elements[i].value)==""){
								isOk = false;
							}
						}
						
						pass[pass.length]=document.forms[nume_form].elements[i].value;
						
						break;
					case "select":
						if(trim(document.forms[nume_form].elements[i].options[document.forms[nume_form].elements[i].selectedIndex].value)==""){
							isOk = false;
						}
						break;
					default:
						if(trim(document.forms[nume_form].elements[i].value)==""){
							isOk = false;
						}
				}

				break;
				
			case "mandatoryNumber":
				if((trim(document.forms[nume_form].elements[i].value)=="") || (!validNumber2(document.forms[nume_form].elements[i].value))){
					isOk = false;
				}

				break;

			case "isNumber":
				if(!validNumber2(document.forms[nume_form].elements[i].value)){
					isOk = false;
				}

				break;
		}
	}
	
	if(pass.length==2){
		if(pass[0]!=pass[1]){
			isOk = false;
		}
	}
	
	if(!isOk){
		alert("Va rugam sa completati corect toate campurile!");
	}
	
	return isOk;
}

//reset login
function resetLogin(){
	if((document.forms["loginform"].user.value == "Utilizator") && (document.forms["loginform"].pass.value == "Parola")){
		document.forms["loginform"].user.value = "";
		document.forms["loginform"].pass.value = "";
	}
}
