//===============================================
// Villumeðhöndlun á svæðum í skjámynd
//===============================================

function isDateValid(sDateString)
{
	var aiMonthDays = new Array(31,28,31,30,31,30,31,31,30,31,30,31);

	var sP1 = "";
	var sP2 = "";
	var iRetVal = true;
	var iYear = 0;
	var iMonth = 0;
	var iDay = 0;
	var sDate = sDateString.value;
	var sSkilabod = "Dagsetning er á röngu formi eða dagsetning er röng. Vinsamlegast leiðréttið og reynið aftur! \nDæmi um leyfilega dagsetningu er 23.03.2003";
		
	if (sDate.length==10)
	{
		iDay = parseInt(sDate.substring(0, 2),10);
		iMonth = parseInt(sDate.substring(3, 5),10);
		iYear = parseInt(sDate.substring(6, 10),10);
		sP1 = sDate.substring(2,3);
		sP2 = sDate.substring(5,6);
		if (sP1 != "." || sP2 != ".")
		{
			alert(sSkilabod);
			return false;
		}		
	}
	else
	{
			alert(sSkilabod);
			return false;
	}
	
	if (isNaN(iDay) || isNaN(iMonth) || isNaN(iYear))
	{
		alert(sSkilabod);
		return false;
	}

	if(iMonth < 1 || iMonth > 12)
		iRetVal = false;

	else
	{
		if ((iYear % 4) == 0 && iMonth==2)
		{
			aiMonthDays[1] = 29;
		}

		if(iDay > aiMonthDays[iMonth-1] || iDay <= 0) 
			iRetVal = false;

		if (iYear < 1900)
		{
			alert("Ártal verður að vera 1900 eða hærra. Vinsamlegast leiðréttið og reynið aftur!");
			return false;
		}
	}

	if(!iRetVal)
	{
		alert(sSkilabod);
		return false;
	}
	else
	{
		return true;
	}
}

function isDateValid2(sDateString)
{
	//alert("isDateValid2");
	var aiMonthDays = new Array(31,28,31,30,31,30,31,31,30,31,30,31);

	var sP1 = "";
	var sP2 = "";
	var iRetVal = true;
	var iYear = 0;
	var iMonth = 0;
	var iDay = 0;
	var sDate = sDateString.value;
	var sSkilabod = "Dagsetning er á röngu formi eða dagsetning er röng. Vinsamlegast leiðréttið og reynið aftur! \nDæmi um leyfilega dagsetningu er 23.03.2003";
		
	if (sDate.length==10)
	{
		iDay = parseInt(sDate.substring(0, 2),10);
		iMonth = parseInt(sDate.substring(3, 5),10);
		iYear = parseInt(sDate.substring(6, 10),10);
		sP1 = sDate.substring(2,3);
		sP2 = sDate.substring(5,6);
		if (sP1 != "." || sP2 != ".")
		{
			//alert(sSkilabod);
			return false;
		}		
	}
	else
	{
			//alert(sSkilabod);
			return false;
	}
	
	if (isNaN(iDay) || isNaN(iMonth) || isNaN(iYear))
	{
		//alert(sSkilabod);
		return false;
	}

	if(iMonth < 1 || iMonth > 12)
		iRetVal = false;

	else
	{
		if ((iYear % 4) == 0 && iMonth==2)
		{
			aiMonthDays[1] = 29;
		}

		if(iDay > aiMonthDays[iMonth-1] || iDay <= 0) 
			iRetVal = false;

		if (iYear < 1900)
		{
			//alert("?rtal ver?ur a? vera 1900 e?a h?rra. Vinsamlegast lei?r?tti? og reyni? aftur!");
			return false;
		}
	}

	if(!iRetVal)
	{
		//alert(sSkilabod);
		return false;
	}
	else
	{
		return true;
	}
}

function changeDate(dateObject)
{

	var sDate = dateObject.value;
	
	if(sDate.length < 8)
		return false;
	if(sDate.length==8)	
	{
		sDate = sDate.substring(0, 2)+"."+sDate.substring(2,4)+"."+sDate.substring(4,8);
		dateObject.value = sDate;
	}
}
function checkIfValidNumber(e)
{

	var key;
	var keychar;


	if (window.event)
	   key = window.event.keyCode;
	else if (e)
	   key = e.which;
	else
	   return true;

	keychar = String.fromCharCode(key);
	keychar = keychar.toLowerCase();
	
	// control keys
	if ((key==null) || (key==0) || (key==8) ||
		(key==9) || (key==13) || (key==27) )
	{
	   return true;
	}
	else if ((("0123456789").indexOf(keychar) > -1))
	{
		return true;
	}
	else
	{
	   return false;
	}
}

function checkIfArrowsKey(e)
{
	if (window.event)
	   key = window.event.keyCode;
	else if (e)
	   key = e.which;
	else
	   return false;
	
	// örvatakkar
	if ( (key==38) || (key==40) ||
		(key==39) || (key==37) )
	{
	   return false;
	}
	return true;
}

function checkIfValidKey(e, mask){

	var key;
	var keychar;
	var sep;

	if ( mask == "N,N" )
		sep = ",";
	else
		sep = ".";

	if (window.event)
	   key = window.event.keyCode;
	else if (e)
	   key = e.which;
	else
	   return true;

	keychar = String.fromCharCode(key);
	keychar = keychar.toLowerCase();
	
	// control keys
	if ((key==null) || (key==0) || (key==8) ||
		(key==9) || (key==13) || (key==27) )
	{
	   return true;
	}
	else if (((sep + "0123456789").indexOf(keychar) > -1))
	{
		return true;
	}
	else
	{
	   return false;
	}
}

// Allows percent sign ('%') for sql search.
function checkIfValidKeySearch(e, mask)
{
	if(!e)
		e=window.event;
	if (e.keyCode==37) // '%'
	{
		return true;
	}
	return checkIfValidKey(e, mask);
}

function checkIfValidCommaKey(e, mask){

	var key;
	var keychar;

	if (window.event)
	   key = window.event.keyCode;
	else if (e)
	   key = e.which;
	else
	   return true;

	keychar = String.fromCharCode(key);
	keychar = keychar.toLowerCase();

	// control keys
	if ((key==null) || (key==0) || (key==8) ||
		(key==9) || (key==13) || (key==27) )
	{
	   return true;
	}
	else if ((("0123456789,").indexOf(keychar) > -1))
	{
		return true;
	}
	else
	{
	   return false;
	}
}



function checkIfValidDateKey(e, mask){

	var key;
	var keychar;

	if (window.event)
	   key = window.event.keyCode;
	else if (e)
	   key = e.which;
	else
	   return true;

	keychar = String.fromCharCode(key);
	keychar = keychar.toLowerCase();

	// control keys
	if ((key==null) || (key==0) || (key==8) ||
		(key==9) || (key==13) || (key==27) )
	{
	   return true;
	}
	else if ((("0123456789/.").indexOf(keychar) > -1))
	{
		return true;
	}
	else
	{
	   return false;
	}
}


function floatValue(number)
{
	if ( number == "" )
		return "";
	else
		return number.replace(/[\,]/g,".") * 1;
}

function isMaskFormatOK(maskFormat)
{
	return true;
}

function isMaskValueOK(maskMinMaxValue)
{
	if ( floatValue(takaUtPunkta(val)) >= floatValue(maskMinMaxValue[0]) && 
		 floatValue(takaUtPunkta(val)) <= floatValue(maskMinMaxValue[1]) )
	{
		return true;
	}
	else
	{
		return false;
	}
}

function formatField(svaedi,mask)
{
   val=svaedi.value;

   if (mask != '') {
		var maskarray = mask.split("|");
		//alert ( maskarray[0] + " dd " + maskarray[1] );

		var maskFormat = maskarray[0].split(",");
		var maskMinMaxValue = maskarray[1].split("-");

		//alert ( floatValue(maskMinMaxValue[0]) + "|" + takaUtPunkta(val) + "|" + floatValue(maskMinMaxValue[1]) );

		if (val == '')
		{
		}
		else if ( isMaskValueOK(maskMinMaxValue) && isMaskFormatOK(maskFormat))
		{
			//alert ( "OK " + val );
		}
		else
		{
			msg = "Gildið má vera tala á bilinu " + tdl(maskMinMaxValue[0]) + " til " + tdl(maskMinMaxValue[1]);
			alert ( "Ekki leyfilegt gildi " + val + "\n" + msg);
			svaedi.focus();
		}
   }
}

function formatField2(svaedi,mask,villubod)
{
   val=svaedi.value;

   if (mask != '') {
		var maskarray = mask.split("|");
		//alert ( maskarray[0] + " dd " + maskarray[1] );

		var maskFormat = maskarray[0].split(",");
		var maskMinMaxValue = maskarray[1].split("-");

		//alert ( floatValue(maskMinMaxValue[0]) + "|" + takaUtPunkta(val) + "|" + floatValue(maskMinMaxValue[1]) );

		if (val == '')
		{
		}
		else if ( isMaskValueOK(maskMinMaxValue) && isMaskFormatOK(maskFormat))
		{
			//alert ( "OK " + val );
		}
		else
		{
			alert ( "Ekki leyfilegt gildi " + val + "\n" + villubod);
			svaedi.focus();
		}
   }
}

function validatePhonenumber(svaedi,mask)
{
   val=svaedi.value;

   if (mask != '') {
		var maskarray = mask.split("|");
		//alert ( maskarray[0] + " dd " + maskarray[1] );

		var maskFormat = maskarray[0].split(",");
		var maskMinMaxValue = maskarray[1].split("-");

		//alert ( floatValue(maskMinMaxValue[0]) + "|" + takaUtPunkta(val) + "|" + floatValue(maskMinMaxValue[1]) );

		if (val == '')
		{
		}
		else if ( isMaskValueOK(maskMinMaxValue) && isMaskFormatOK(maskFormat))
		{
			//alert ( "OK " + val );
		}
		else
		{
			alert ( "Símanúmer verður að vera 7 stafir og má ekki byrja á 0,1,2,3 eða 9");
			svaedi.focus();
			return false;
		}
		return true;		
   }
}

function checkReikningsnumer(svaedi)
{
	val=svaedi.value;
	
	counter = 0;
	for (var i=0; i < svaedi.value.length; i++)
		if( val.charAt(i) == '0')
			counter++
	
	if( counter == svaedi.value.length && counter > 0 )
	{
		alert ( "Uppgefið reikningsnúmer er ekki leyfilegt" );
		svaedi.select();
		svaedi.focus();
	}

}


function setjaKommurARettaStadi(fieldObject)
{

	gildi = fieldObject.value;
	gildi = takaUtKommurOgPunkta(gildi);

	fieldObject.value = tdl(gildi);

}

function tdl(gildi)
{
   sep="";
   res="";
   gildi=res+gildi;
   while(gildi.length>0){
		if (gildi.length>3) {
			res=gildi.substring(gildi.length-3,gildi.length)+sep+res;
			gildi=gildi.substring(0,gildi.length-3);
		}else{
			res=gildi+sep+res;
			gildi="";
		}
		sep=".";
	}
	return res;
}

function takaUtKommurOgPunkta( gildi )
{
	return gildi.replace(/[\,\.]/g,"");
}

function takaUtPunkta( gildi )
{
	return gildi.replace(/[\.]/g,"");
}

function checkLength(o, length) 
{
	var gildi = o.value
	if (gildi.length >= length)
	{
		alert('Ekki er hægt að hafa fleiri en ' + length + ' stafi í skýringu.');
		o.value= gildi.substring(0,length)

		return false;                         
	}
}

function stafirEftirKommu(svaedi,fjoldi) 
{
	val=svaedi.value.split(",");
	var fjoldiStafaeftirkommu = 0;
	if (val[1])
		fjoldiStafaeftirkommu = val[1].length;
	
	if (fjoldiStafaeftirkommu > fjoldi)
	{
		alert('Ekki er hægt að hafa fleiri en ' + fjoldi + ' staf/stafi eftir kommu.');
		svaedi.focus();
		return false;                         
	}
	else
	{
		return true;
	}
}

// add . at every third number, starting from back
function addSeperators( value )
{
	value = removeSeperators( value )

	while (value.match(/^\d\d{3}/)){
       value = value.replace(/(\d)(\d{3}(\.|,|$))/, '$1.$2');
    }
    
	return value;
}

// remove all .
function removeSeperators( value )
{
	return value.split(".").join("");
}		

// clear all inputs where name starts with number
function clearNumbers( form )
{
	// omits onBlur if submit on input
	for (var i = 0; i < form.elements.length; i++)
	{
		if (form.elements[i].name.substring(0,6) == "number")
			form.elements[i].value = removeSeperators( form.elements[i].value );
	}
}