// //

		function validateExpertReq(form, req) {
			ok=true;
			for (i=0; i < req.length; i++){
				elm = form.elements[req[i]];
				if (elm.type == 'text'){
					if (elm.value.length == 0){
						showAlert();						
						ok = false;
						elm.focus();
						break;
					}
				}
			}
			return ok;
		}

		function showAlert()
		{
			alert("Nie wszystkie wymagane pola zostały wypełnione!\nProsimy wypełnić pola zaznaczone czerwoną ramką.");
		}
		
		function trimAll(sString)
		{
			while (sString.substring(0,1) == ' ') {
				sString = sString.substring(1, sString.length);
			}
			while (sString.substring(sString.length-1, sString.length) == ' ') {
				sString = sString.substring(0,sString.length-1);
			}
			return sString;
		}
	
		function validatePhone(sString)
		{
		    var ValidChars = "0123456789.- +()";
			for (var i=0;i < sString.length;i++) {
				if (ValidChars.indexOf(sString.charAt(i)) == -1) {
					return false;
				}
			}
			return true;
		}
	
		function validateEmail(sString)
		{
			var apos=sString.indexOf("@")
			var dotpos=sString.lastIndexOf(".")
			if (apos < 1 || dotpos-apos < 2) {
				return false;
			}
			return true;
		}
		
		function checkForm(form, ftype) {
			var isOk = validateExpertReq(form,new Array('clientName', 'clientSurname', 'clientPhoneNumber'));
		
			var mb = false;


			// Zbieramy checkboxy z id w postaci rowFieldValues[0].checked
			var inputs = document.getElementsByTagName( "INPUT" );
			var rowFieldValues = new Array();
			
			for ( i = 0; i < inputs.length; i++ ) {
				var currentElement = inputs[i];
				
				if ( currentElement.type == 'checkbox' && currentElement.name.match( /rowFieldValues\[[0-9]+\]\.checked/i ) ) {
					rowFieldValues[rowFieldValues.length]= currentElement;
					// Czyscimy ewentualne zaznaczenia wszystkich powiazanych checkboxow

					var relatedSelectName = currentElement.name.replace( /\.checked/i, ".idProductEstimateAmount" );

					var relatedSelect = document.getElementById( relatedSelectName );

					if ( relatedSelect ) {
						removeBorder( relatedSelect.parentNode );
					}
				}
			}


			// Zbieramy liste zaznaczonych checkboxow
			var checkedRowFieldValues = new Array();

			for ( i = 0; i < rowFieldValues.length; i++ ) {
				var currentElement = rowFieldValues[i];

				if ( currentElement.checked  ) {
					checkedRowFieldValues[checkedRowFieldValues.length] = currentElement;
				}
			}


			// Walidujemy poprawnosc zaznaczenia (musi byc zaznaczony przynajmniej jeden
			// checkbox)
			if ( rowFieldValues.length > 0 && checkedRowFieldValues.length == 0 ) {
				for ( i = 0; i < rowFieldValues.length; i++ ) {
					addRedBorder( rowFieldValues[i].parentNode );
				}

				if ( isOk ) {
					isOk = false;
					showAlert();
				}
			}
			else {
				for ( i = 0; i < rowFieldValues.length; i++ ) {
					removeBorder( rowFieldValues[i].parentNode );
				}
			}
			
			
			if (!(form.clientName.value != null && trimAll(form.clientName.value) != "")) {
				addRedBorder(document.getElementById('tdName'));
				if (isOk) {
					isOk = false;
					showAlert();
				}
			} else {
				removeBorder(document.getElementById('tdName'));			
			}
			

			if (!(form.clientSurname.value != null && trimAll(form.clientSurname.value) != "")) {
				addRedBorder(document.getElementById('tdSurname'));
				if (isOk) {
					isOk = false;
					showAlert();
				}
			} else {
				removeBorder(document.getElementById('tdSurname'));
			}
			
			removeBorder(document.getElementById('tdPhone'));
			if (!(form.clientPhoneNumber.value != null && trimAll(form.clientPhoneNumber.value) != "")) {
				addRedBorder(document.getElementById('tdPhone'));
				if (isOk) {
					isOk = false;
					showAlert();
				}
			}
			
			if (form.clientPhoneNumber.value != null && trimAll(form.clientPhoneNumber.value) != "" && !validatePhone(form.clientPhoneNumber.value)) {
				if (!mb) {
					alert("Nieprawidłowy format w polu \"Twój numer telefonu\".");
					mb = true;
					isOk = false;
				}
				addRedBorder(document.getElementById('tdPhone'));
			}
			
			//removeBorder(document.getElementById('tdMail'));
			/*
			if (form.clientEmail.value != null && trimAll(form.clientEmail.value) != "" && !validateEmail(form.clientEmail.value)) {
				if (!mb) {
					alert("Nieprawidłowy format w polu \"Twój e-mail\".");
					mb = true;
					isOk = false;
				}
				addRedBorder(document.getElementById('tdMail'));
			}
			
			if (!(form.clientEmail.value != null && trimAll(form.clientEmail.value) != "")) {
				addRedBorder(document.getElementById('tdMail'));
				if (isOk) {
					isOk = false;
					showAlert();
				}
			}
			*/
			if (isOk) form.submit();
		}

		function checkNewForm(form, ftype) {
			
			var reqs = new Array() 
			reqs[0] = 'clientName';
			reqs[1] = 'clientSurname';
			
			var isOk = validateExpertReq(form, reqs);
		
			var mb = false;

			//czy user wybiera produkt?
			if (form.msgbody_Kredyt != null) {

				if (!(checkCount(form) > 0)) {
					//if (!mb) {
						//alert("Zaznacz produkt, kt?ry Ci? interesuje.");
						//mb = true;
					//}
					tab = document.getElementsByTagName("td");
					for (i = 0; i < tab.length; i++) {
						if (tab[i].id.indexOf('tdOption') >= 0) {
							addRedBorder(tab[i]);
						}
					}
					if (isOk) {
						isOk = false;
						showAlert();
					}	
				} else {
					tab = document.getElementsByTagName("td");
					for (i = 0; i < tab.length; i++) {
						if (tab[i].id.indexOf('tdOption') >= 0) {
							removeBorder(tab[i]);
						}
					}
				}
			
				estimate = document.getElementsByName('estimate');
				for (i = 0; i < estimate.length; i++) {
					if (estimate[i].disabled == false && estimate[i].value == "") {
						//if (!mb) {
							//alert("Prosz? wybra? szacunkow? kwot?.");
							//mb = true;
						//}
						//addRedBorder(estimate[i]);
						addRedBorder(document.getElementById(estimate[i].id.replace(/estimate/,"td1")));
						if (isOk) {
							isOk = false;
							showAlert();
						}
					} else {
						removeBorder(document.getElementById(estimate[i].id.replace(/estimate/,"td1")));
					}
				}
			}

			// Zbieramy checkboxy z id w postaci rowFieldValues[0].checked

			var inputs = document.getElementsByTagName( "INPUT" );
			var rowFieldValues = new Array();
			
			for ( i = 0; i < inputs.length; i++ ) {
				var currentElement = inputs[i];
				
				if ( currentElement.type == 'checkbox' && currentElement.name.match( /rowFieldValues\[[0-9]+\]\.checked/i ) ) {
					rowFieldValues[rowFieldValues.length]= currentElement;

					// Czyscimy ewentualne zaznaczenia wszystkich powiazanych checkboxow

					var relatedSelectName = currentElement.name.replace( /\.checked/i, ".idProductEstimateAmount" );

					var relatedSelect = document.getElementById( relatedSelectName );

					if ( relatedSelect ) {
						removeBorder( relatedSelect.parentNode );
					}
				}
			}

			// Zbieramy liste zaznaczonych checkboxow

			var checkedRowFieldValues = new Array();

			for ( i = 0; i < rowFieldValues.length; i++ ) {
				var currentElement = rowFieldValues[i];

				if ( currentElement.checked  ) {
					checkedRowFieldValues[checkedRowFieldValues.length] = currentElement;
				}
			}

			// Walidujemy poprawnosc zaznaczenia (musi byc zaznaczony przynajmniej jeden
			// checkbox)

			if ( rowFieldValues.length > 0 && checkedRowFieldValues.length == 0 ) {
				for ( i = 0; i < rowFieldValues.length; i++ ) {
					addRedBorder( rowFieldValues[i].parentNode );
				}

				if ( isOk ) {
					isOk = false;
					showAlert();
				}
			}
			else {
				for ( i = 0; i < rowFieldValues.length; i++ ) {
					removeBorder( rowFieldValues[i].parentNode );
				}

				// Sprawdzamy czy kazdy zaznaczony checkbox jest powiazany z jakims
				// selectem

				for ( i =0; i < checkedRowFieldValues.length; i++ ) {
					var currentElement = checkedRowFieldValues[i];

					var relatedSelectName = currentElement.name.replace( /\.checked/i, ".idProductEstimateAmount" );

					var relatedSelect = document.getElementById( relatedSelectName );

					// Walidujemy powiazany select (musi miec zaznaczona opcje inna niz 1sza)

					if ( relatedSelect ) {
						if ( relatedSelect.selectedIndex == 0 ) {
							addRedBorder( relatedSelect.parentNode );

							if ( isOk ) {
								isOk = false;
								showAlert();
							}
						}
						else {
							removeBorder( relatedSelect.parentNode );
						}
					}
				}
			}
			
			if (!(form.clientName.value != null && trimAll(form.clientName.value) != "")) {
				addRedBorder(document.getElementById('tdName'));
				if (isOk) {
					isOk = false;
					showAlert();
				}
			} else {
				removeBorder(document.getElementById('tdName'));			
			}
			

			if (!(form.clientSurname.value != null && trimAll(form.clientSurname.value) != "")) {
				addRedBorder(document.getElementById('tdSurname'));
				if (isOk) {
					isOk = false;
					showAlert();
				}
			} else {
				removeBorder(document.getElementById('tdSurname'));
			}
			
			
			if (form.client_phone1 && form.client_cell_phone1) {
			form.clientPhoneNumber.value = form.client_phone1.value + form.client_phone2.value + form.client_phone3.value + form.client_phone4.value;

			form.clientCellPhoneNumber.value = form.client_cell_phone1.value + form.client_cell_phone2.value + form.client_cell_phone3.value;
			}
			
			if (form.clientCellPhoneNumber.value != null) {
				form.clientCellPhoneNumber.value = trimAll(form.clientCellPhoneNumber.value);
			}
			
			if (form.clientPhoneNumber.value != null) {
				form.clientPhoneNumber.value = trimAll(form.clientPhoneNumber.value);
			}
			
            //form.fikcyjnepole.value=null;
            
			removeBorder(document.getElementById('tdPhone'));
			removeBorder(document.getElementById('tdCellPhone'));
			if (!(form.clientCellPhoneNumber.value != null && trimAll(form.clientCellPhoneNumber.value) != "") && !(form.clientPhoneNumber.value != null && trimAll(form.clientPhoneNumber.value) != "")) {
				addRedBorder(document.getElementById('tdPhone'));
				addRedBorder(document.getElementById('tdCellPhone'));
				if (isOk) {
					isOk = false;
					showAlert();
				}
			}

			if (form.clientPhoneNumber.value != null && trimAll(form.clientPhoneNumber.value) != "") {
				if (!validatePhone(form.clientPhoneNumber.value) || form.clientPhoneNumber.value.length != 9) {
					if (!mb) {
						alert("Nieprawidłowy format w polu \"Twój numer telefonu stacjonarnego\".");
						mb = true;
						isOk = false;
					}
					addRedBorder(document.getElementById('tdPhone'));
				}
			}
			
			if (form.clientCellPhoneNumber.value != null && trimAll(form.clientCellPhoneNumber.value) != "") {
				if (!validatePhone(form.clientCellPhoneNumber.value) || form.clientCellPhoneNumber.value.length != 9) {
					if (!mb) {
						alert("Nieprawidłowy format w polu \"Twój numer telefonu komórkowego\".");
						mb = true;
						isOk = false;
					}
                    addRedBorder(document.getElementById('tdCellPhone'));
				}
			}
			
			//removeBorder(document.getElementById('tdMail'));
			/*
			if (form.clientEmail.value != null && trimAll(form.clientEmail.value) != "" && !validateEmail(form.clientEmail.value)) {
				if (!mb) {
					alert("Nieprawidłowy format w polu \"Twój e-mail\".");
					mb = true;
					isOk = false;
				}
				addRedBorder(document.getElementById('tdMail'));
			}
			
			if (!(form.clientEmail.value != null && trimAll(form.clientEmail.value) != "")) {
				//if (!mb) {
					//alert("Prosz? poda? adres e-mail");
					//mb = true;
				//}
				addRedBorder(document.getElementById('tdMail'));
				if (isOk) {
					isOk = false;
					showAlert();
				}
			}
			*/
			
			if (!(form.comment3 != null && form.comment3.checked)) {
				//if (!mb) {
					//alert("Prosz? poda? adres e-mail");
					//mb = true;
				//}
				addRedBorder(document.getElementById('comment3'));
				if (isOk) {
					isOk = false;
					showAlert();
				}
			} else {
				removeBorder(document.getElementById('comment3'));
			}
			
			//form.return_url.value = prepareReturnUrl(form);
			if (isOk) form.submit();
		}

		function addRedBorder(elem) {
			if (elem) {
				elem.style.borderWidth = "1px";
				elem.style.border = "solid";
				elem.style.borderColor = "#ff0000";
			}
		}

		function removeBorder(elem) {
			if (elem) {
				elem.style.border = "none";
				elem.style.borderWidth = "0px";
			}
		}
		
				var downStrokeField;
		function autojump(fieldName,nextFieldName,fakeMaxLength)
		{
			var myForm=document.forms[document.forms.length - 1];
			var myField=myForm.elements[fieldName];
			myField.nextField=myForm.elements[nextFieldName];
				if (myField.maxLength == null)
				myField.maxLength=fakeMaxLength;
				myField.onkeydown=autojump_keyDown;
				myField.onkeyup=autojump_keyUp;
		}
		
		function autojump_keyDown()
		{	
			this.beforeLength=this.value.length;
			downStrokeField=this;
		}
		
		
		function autojump_keyUp()
		{
			if (
			(this == downStrokeField) && 
			(this.value.length > this.beforeLength) &&
			(this.value.length >= this.maxLength)
			)
			this.nextField.focus();
			
			downStrokeField=null;
		}
 
