/*
* @frmName sayfanın gönderildiği formun adı
* @name geçerliliği kontrol edilecek alanın adı
* @desc bu alanın mesajda görünmesi istenilen etiketi
* @type alanın tipi 'INTEGER', 'DOUBLE', 'DATE'
* @minValue alanın alabileceği en küçük değer
* @maxValue alanın alabileceği en büyük değer
* @isRequired alanın gerekli olup olmadığı
* bu metod aldığı parametrelere göre @name alanın gerekli kontrollerini yapar ve
* uygun hata mesajını döndürür
*/

function validate(frmName, name, desc, type, minValue, maxValue, length, isRequired){	
	var INTEGER = "INTEGER";
	var	DOUBLE = "DOUBLE";
	var STRING = "STRING";
	var DATE = "DATE";
	var LIST = "LIST";
	
	var frm = document.forms[frmName];
	var field = frm.elements[name];

	
	if(isRequired){
		if(isNull(field)){
			alert("LÜTFEN " + desc + " ALANINI GİRİNİZ!!!");
			field.focus();
			return false;
		}
	}	

	if (!isNull(field)){
		if (type == INTEGER){
			if (!isInteger(field)){
				alert(desc + " ALANI İÇİN GEÇERLİ BİR SAYI GİRİNİZ!!!");			
				field.focus();
				return false;				
			}
		}
		
		if (type == DOUBLE){
			if (!isFloat(field)){
				alert(desc + " ALANI İÇİN GEÇERLİ BİR SAYI GİRİNİZ!!!");			
				field.focus();
				return false;				
			}
		}	
		
		if (type == DATE){
			if (!isDateFormat(field) || !isValidDate(field)) {
				alert(desc + " ALANI İÇİN LÜTFEN 'gg.aa.yyyy' ŞEKLİNDE GEÇERLİ BİR TARİH GIRINIZ.");
				field.focus();
				return false;
			}
		}		
	
		// Tek seçimlik select listler için kullanılacak.
		if (type == LIST){
			if (!isSelected(field)) {
				alert("LÜTFEN BİR " + desc + " SEÇİNİZ.");
				field.focus();
				return false;
			}
		}
		
		if (minValue != null && maxValue!= null) {
			if(type == INTEGER || type == DOUBLE){
				if (field.value<minValue || field.value>maxValue){
					alert(desc + " ALANININ DEĞERİ " + minValue + " VE " + maxValue + " ARASINDA OLMALIDIR!!!");
					field.focus();
					return false;		
				}	
			}
			else if(type == STRING){
				if (field.value.length<minValue || field.value.length>maxValue){
					alert(desc + " ALANININ UZUNLUĞU " + minValue + " VE " + maxValue + " ARASINDA OLMALIDIR!!!");
					field.focus();
					return false;		
				}			
			}
		}		
		
		if (!isNull(minValue)){
			if (field.value<minValue){
				alert(desc + " ALANININ DEĞERİ " + minValue + " DEN BÜYÜK OLMALIDIR!!!");
				field.focus();
				return false;		
			}
		}	
		
		
		if (!isNull(maxValue)){
			if (field.value<maxValue){
				alert(desc + " ALANININ DEĞERİ " + maxValue + " DEN KÜÇÜK OLMALIDIR!!!");
				field.focus();
				return false;		
			}
		}	
		
		if (length != null){
			if (field.value.length != length){
				alert(desc + " ALANI " + length + " KARAKTER OLMALIDIR!!!");
				field.focus();
				return false;		
			}
		}			
	}//isRequired
	

	return true;	
}



/*
* @frmName sayfanın gönderildiği formun adı
* @name geçerliliği kontrol edilecek alanın adı
* @label bu alanın mesajda görünmesi istenilen etiketi
* @minLen minimum uzunkluk
* @maxLen max uzunluk
* @isRequired alanın gerekli olup olmadığı
* bu metod aldığı parametrelere göre @name alanın gerekli kontrollerini yapar ve
* uygun hata mesajını döndürür
* minLen ile maxLen birbirine eşitse uzunluk kontrolü bir defa yapılır
*/

function simpleValidate(frmName, name, label, minLen, maxLen, isRequired){	
	
	// alert(frmName);	
	var frm = document.forms[frmName];
	var field = frm.elements[name];

	//alert(field.name);
		
	if(isRequired){
		if(isEmpty(field)){
			alert("Lütfen '" + label + "' alanını doldurduğunuzdan emin olunuz!");
			field.focus();
			return false;
		}
	}
	
	if (!isEmpty(field)){		
		if (minLen != null && maxLen!= null) {		
			if (minLen==maxLen) {
				if (field.value.length != minLen){
					alert("Lütfen '"+ label + "' alanının '" + minLen + "' karakter uzunluğunda olmasına dikkat ediniz.");
					field.focus();
					return false;
				}		
			}
			else {
				if (field.value.length<minLen || field.value.length>maxLen) {
					alert("Lütfen '"+ label + "' alan uzunluğunun '" + minLen + "' ve '"+ maxLen +"' arasında olmasına dikkat ediniz.");
					field.focus();
					return false;		
				}
			}
		}
		else {
			if (minLen != null) {
				if (field.value.length < minLen){
					alert("Lütfen '"+ label + "' alanının minimum '" + minLen + "' karakter uzunluğunda olmasına dikkat ediniz.");
					field.focus();
					return false;
				}				
			} else if (maxLen != null) {
				if (field.value.length > maxLen){
					alert("Lütfen '"+ label + "' alanının maksimum '" + maxLen + "' karakter uzunluğunda olmasına dikkat ediniz.");
					field.focus();
					return false;
				}	
				
			}
		}
		
		return true;
	}
	
	function isEmpty( param )
	{
		if (param == null) {
			return true;
		}
   		if ((param.value == null)||(param.value.length==0)) {
			return true;
		} else	{
		
		return false;
	}
}
}


function isNull( param )
{
	if (param == null) {
		return true;
	}
   	if ((param.value == null)||(param.value.length==0)) {
		return true;
	} else	{
		return false;
	}
}

function isValidLength( param,uzunluk )
{
   	if (param.value.length==uzunluk) {
		return true;
	} else	{
		return false;
	}
}

function exists( param )
{
	if (param == null) {
		return false;
	} else {
		return true;
	}
}

function isInteger( param ) 
{
	if (isNull(param)) {
		return false;
	}
   	var paramstr = param.value; 

	for (var i = 0; i < paramstr.length; i++)
	{
		if ((paramstr.charAt(i) < "0") || (paramstr.charAt(i) > "9")) {
			return false;
		}
   	}
   	return true;
}

function isFloat( param ) 
{
	if (isNull(param)) {
		return false;
	}
   	var paramstr = param.value; 
	var decimalPointFound = false;
	for (var i = 0; i < paramstr.length; i++)
	{
		if ((paramstr.charAt(i) == ".")){
			if (decimalPointFound) {
				return false;
			} else {
				decimalPointFound = true;
			}
		} else {
			if ((paramstr.charAt(i) < "0") || (paramstr.charAt(i) > "9")) {
				return false;
			}
		}
   	}
   	return true;
}

function checkVirgul( param ) 
{
	if (isNull(param)) {
		return false;
	}
   	var paramstr = param.value; 
	for (var i = 0; i < paramstr.length; i++)
	{
	if ((paramstr.charAt(i) != "0") && (paramstr.charAt(i) != "1") && (paramstr.charAt(i) != "2") && (paramstr.charAt(i) != "3") && (paramstr.charAt(i) != "4") && (paramstr.charAt(i) != "5") && (paramstr.charAt(i) != "6") && (paramstr.charAt(i) != "7") && (paramstr.charAt(i) != "8") && (paramstr.charAt(i) != "9") && (paramstr.charAt(i) != ".") && (paramstr.charAt(i) != ",")){
		return false;
	}	
   	}
   	return true;
}

function isLeapYear( yil )
{
	if (((yil%4)==0) && ((yil%100)!=0) || ((yil%400)==0)) {
		return true;
	} else {
		return false;
	}
}

function isDateFormat( param ) 
{
   	if (isNull(param)) {
		return false;
	}

	var paramstr = param.value; 
	if (paramstr.length !=10)  {
		return false;
	}

	if ((paramstr.charAt(0) < "0") || (paramstr.charAt(0) > "3")) {
		return false;
	}
	if ((paramstr.charAt(1) < "0") || (paramstr.charAt(1) > "9")) {
		return false;
	}
	if (paramstr.charAt(2) !=".") {
		return false;
	}
	if ((paramstr.charAt(3) < "0") || (paramstr.charAt(3) > "1")) {
		return false;
	}
	if ((paramstr.charAt(4) < "0") || (paramstr.charAt(4) > "9")) {
		return false;
	}
	if (paramstr.charAt(5) !=".") {
		return false;
	}
	if ((paramstr.charAt(6) < "1") || (paramstr.charAt(6) > "2")) {
		return false;
	}
	if ((paramstr.charAt(7) < "0") || (paramstr.charAt(7) > "9")) {
		return false;
	}
	if ((paramstr.charAt(8) < "0") || (paramstr.charAt(8) > "9")) {
		return false;
	}
	if ((paramstr.charAt(9) < "0") || (paramstr.charAt(9) > "9")) {
		return false;
	}
	return true;
}


function isValidDate( param ) {
	var paramstr = param.value;
	var gun = paramstr.substring(0,2);
	var ay  = paramstr.substring(3,5);
	var yil = paramstr.substring(6);
   
	if ((ay=="01") || (ay=="03") || (ay=="05") || (ay=="07") || (ay=="08") || (ay=="10") || (ay=="12")) {
		if ((gun<"01") || (gun>"31")) {
			return false;
		}
	} else if ((ay=="04") || (ay=="06") || (ay=="09") || (ay=="11")) {
		if ((gun<"01") || (gun>"30")) {
			return false;
		}
	} else if ((ay=="02")) {
		if(isLeapYear(yil))	{
			if ((gun<"01") || (gun>"29")) {
				return false;
			}
		} else {
			if ((gun<"01") || (gun>"28")) {
				return false;
			}
		}
   	} else { 
   		return false; 
   	}
   	return true;
}

function isDate( param ) 
{
	if (!isDateFormat(param)) {
		alert("Lütfen tarihi 'gg.aa.yyyy' formatında giriniz.");
		return false;
	}
	if (!isValidDate(param)) {
		alert ("Lütfen doğru bir tarih değeri giriniz.");
		return false;
	}	
	return true;
}

function intValue( param )  {
	return parseInt( param.value );
}

function floatValue( param )  {
	return parseFloat( param.value );
}