//Kalkulatora lauku pārbaude
var OCTASC_DebugLevel = 3;
var OCTASC_Input_RegNum_ID = 'OCTASC_Input_RegNum';
var OCTASC_Input_RegCertNum_ID = 'OCTASC_Input_RegCertNum';
var OCTASC_Button_ProcessCalculation_ID = 'OCTASC_Button_ProcessCalculation';
var KASKO_Button_ProcessCalculation_ID = 'KASKO_Button_ProcessCalculation';
var OCTASC_Input_Label_Valid_ClassName = 'correct';
var OCTASC_Input_Label_Invalid_ClassName = 'incorrect';
var OCTASC_Input_RegNum_ValidationExpression = '^[a-z0-9]{2,12}$';
var OCTASC_Input_RegNum_Uppercase = true;

var OCTASC_Input_RegCertNum_ValidationExpression = '^[a-z]{1,2}[0-9]{6,7}$';
var OCTASC_Input_RegCertNum_ValidationModel = 'AE111111';
var OCTASC_Input_RegCertNum_Uppercase = true;

function OCTASC_CheckField()
{
	OCTASC_RegNum = document.getElementById(OCTASC_Input_RegNum_ID);
	OCTASC_RegCertNum = document.getElementById(OCTASC_Input_RegCertNum_ID);
	OCTASC_ProcessCalcButton = document.getElementById(OCTASC_Button_ProcessCalculation_ID);
	KASKO_ProcessCalcButton = document.getElementById(KASKO_Button_ProcessCalculation_ID);
	
	if((OCTASC_RegNum.tagName == 'INPUT') && (OCTASC_RegNum.type == 'text')){
		OCTASC_RegNum.onkeyup = function() { OCTASC_ValidateField(this); };
		OCTASC_RegNum.onkeydown = function() { OCTASC_ValidateField(this); };
		OCTASC_RegNum.onchange = function() { OCTASC_ValidateField(this); };
		OCTASC_RegNum.onblur = function() { OCTASC_ValidateField(this); };
		
		OCTASC_RegNum.onkeypress = function() { try { OCTASC_ProcessIfEnterPressed(window.event); } catch(e) {} };
		
		OCTASC_RegNum.setAttribute('expression', OCTASC_Input_RegNum_ValidationExpression);
		
		OCTASC_RegNum.setAttribute('valid', 0);
		
		if(OCTASC_Input_RegNum_Uppercase)
			OCTASC_RegNum.setAttribute('uppercase', 'true');
	}else{
		if(OCTASC_DebugLevel >= 1)
			alert('Automašīnas reģistrācijas numura ievades lauks ir jābūt formas -input- elementam un ar tipu -text-');
	}
	
	if((OCTASC_RegCertNum.tagName == 'INPUT') && (OCTASC_RegCertNum.type == 'text')){
		OCTASC_RegCertNum.onkeyup = function() { OCTASC_ValidateField(this); };
		OCTASC_RegCertNum.onkeydown = function() { OCTASC_ValidateField(this); };
		OCTASC_RegCertNum.onchange = function() { OCTASC_ValidateField(this); };
		OCTASC_RegCertNum.onblur = function() { OCTASC_ValidateField(this); };
		
		OCTASC_RegCertNum.onkeypress = function() { try { OCTASC_ProcessIfEnterPressed(window.event); } catch(e) {} };
		
		OCTASC_RegCertNum.setAttribute('expression', OCTASC_Input_RegCertNum_ValidationExpression);
		OCTASC_RegCertNum.setAttribute('model', OCTASC_Input_RegCertNum_ValidationModel);
		
		OCTASC_RegCertNum.setAttribute('valid', 0);
		
		if(OCTASC_Input_RegCertNum_Uppercase)
			OCTASC_RegCertNum.setAttribute('uppercase', 'true');
	}else{
		if(OCTASC_DebugLevel >= 1)
			alert('Automašīnas apliecības numura ievades lauks ir jābūt formas -input- elementam un ar tipu -text-');
	}
	
	OCTASC_ValidateField(OCTASC_RegNum);
	OCTASC_ValidateField(OCTASC_RegCertNum);
	
	document.getElementById(OCTASC_Input_RegNum_ID).disabled = false;
	document.getElementById(OCTASC_Input_RegCertNum_ID).disabled = false;
	document.getElementById(OCTASC_Button_ProcessCalculation_ID).disabled = true;
	document.getElementById(KASKO_Button_ProcessCalculation_ID).disabled = true;
	OCTASC_ProcessCalcButton.onclick = function()
	{
		OCTASC_GoCalculate();
	};
	KASKO_ProcessCalcButton.onclick = function()
	{
		KASKO_GoToForm();
	};
}

function OCTASC_GoCalculate(){
  document.calculatorForm.action = OCTASC_POST_URL;
  document.calculatorForm.submit();
}

function KASKO_GoToForm(){
  document.calculatorForm.action = KASKO_POST_URL;
  document.calculatorForm.submit();
}

function OCTASC_ProcessIfEnterPressed(ElementEvent)
{
	try{
		if((OCTASC_RegNum.getAttribute('valid') == 1) && (OCTASC_RegCertNum.getAttribute('valid') == 1)){
			if(ElementEvent.keyCode == 13){
				OCTASC_StartCalculation();
			}
		}
	}catch(e) {}
}

function OCTASC_ActivateProcessCalcButton()
{
	if((OCTASC_RegNum.getAttribute('valid') == 1) && (OCTASC_RegCertNum.getAttribute('valid') == 1)){
		OCTASC_ProcessCalcButton.disabled = false;
		KASKO_ProcessCalcButton.disabled = false;
	}else{
		OCTASC_ProcessCalcButton.disabled = true;
		KASKO_ProcessCalcButton.disabled = true;
	}
}

function OCTASC_ValidateField(FieldObject)
{
	var FieldIsOk = true;
	
	if(FieldObject.getAttribute('model') && (OCTASC_DebugLevel >= 1)){
		var re = new RegExp(FieldObject.getAttribute('expression'), 'i');
		
		if(re.test(FieldObject.getAttribute('model')) == false){
			alert('Norādītais paraugs neatbilst lauka ievades informācijas prasībām\n\n' + FieldObject.tagName + '\ntype="' + FieldObject.type + '"\nname="' + FieldObject.name + '"\nid="' + FieldObject.id + '"\n\nmodel="' + FieldObject.getAttribute('model') + '"\nexpression="' + FieldObject.getAttribute('expression') + '"');
		}
	}
	
	if(FieldObject.id){
		if(FieldObject.value.replace(/(^\s+)|(\s+$)/g, '') == ''){
			OCTASC_GetLabelForField(FieldObject.id).className = OCTASC_Input_Label_Invalid_ClassName;
			FieldObject.setAttribute('valid', 0);
			FieldIsOk = false;
		}else{
			if(FieldObject.getAttribute('expression')){
				if(FieldObject.getAttribute('model')){
					var re = new RegExp(FieldObject.getAttribute('expression'), 'i');
					
					if(re.test(FieldObject.getAttribute('model')) == false){
						alert(FieldObject.tagName + '; type="' + FieldObject.type + '"; name="' + FieldObject.name + '"; id="' + FieldObject.id + '"\n\nmodel does not match the expression\nmodel="' + FieldObject.getAttribute('model') + '"; expression="' + FieldObject.getAttribute('expression'));
					}
					
					if(re.test(FieldObject.value) == true){
						OCTASC_GetLabelForField(FieldObject.id).className = OCTASC_Input_Label_Valid_ClassName;
						FieldObject.setAttribute('valid', 1);
						FieldIsOk = true;
					}else{
						FieldIsOk = false;
						var ModelLength = FieldObject.getAttribute('model').length;
						var FieldLength = FieldObject.value.length;
						
						while(re.test(FieldObject.value.substr(0, FieldLength) + FieldObject.getAttribute('model').substr(FieldLength)) == false){
							FieldLength--;
							FieldObject.value = FieldObject.value.substr(0, FieldLength);
						}
						
						if(re.test(FieldObject.value) == true){
							OCTASC_GetLabelForField(FieldObject.id).className = OCTASC_Input_Label_Valid_ClassName;
							FieldObject.setAttribute('valid', 1);
							FieldIsOk = true;
						}else{
							OCTASC_GetLabelForField(FieldObject.id).className = OCTASC_Input_Label_Invalid_ClassName;
							FieldObject.setAttribute('valid', 0);
							FieldIsOk = false;
						}
					}
				}else{
					// поле могло не быть обязательным, но оно заполнено, и заполнено неправильно. необязательные, но неправильно заполненные поля мы тоже не принимаем
					var re = new RegExp(FieldObject.getAttribute('expression'), 'i');
					if(re.test(FieldObject.value) == false){
						OCTASC_GetLabelForField(FieldObject.id).className = OCTASC_Input_Label_Invalid_ClassName;
						FieldObject.setAttribute('valid', 0);
						FieldIsOk = false;
					}else{
						OCTASC_GetLabelForField(FieldObject.id).className = OCTASC_Input_Label_Valid_ClassName;
						FieldObject.setAttribute('valid', 1);
						FieldIsOk = true;
					}
				}
			}else{
				if(OCTASC_GetLabelForField(FieldObject.id)){
					OCTASC_GetLabelForField(FieldObject.id).className = OCTASC_Input_Label_Valid_ClassName;
					FieldObject.setAttribute('valid', 1);
				}
			}
		}
	}
	//Aizkomentēts burtu pārveidošana uz Lielo, lai iekš IE kursoru no string-a vidus nemet uz strng beigām
	/*if(FieldObject.getAttribute('uppercase') && (FieldObject.getAttribute('uppercase') == 'true'))
		FieldObject.value = (FieldObject.value + '').toUpperCase();
*/
	OCTASC_ActivateProcessCalcButton();
	
	return(FieldIsOk);
}

function OCTASC_GetLabelForField(FieldID)
{
	var Labels = document.getElementsByTagName('label');
	
	for(i = 0; i < Labels.length; i++){
		if(Labels[i].htmlFor == FieldID){
			return Labels[i];
		}
	}
	
	return false;
}
window.onload = function()
{
	OCTASC_CheckField();
};
