//*******************
// FORM VALIDATION start
//******************

form_fields = Array();

TYP_NOT_NULL = 1    // kesin girilmeli
TYP_TEXT = 2;       // [tum karakterler]
TYP_DIGIT = 4;      // [0-9]
TYP_ALPHA = 8;      // [0-9] [a-b] [A-Z]
TYP_DROPDOWN = 16;  // combobox seçili değeri (-1) olmamali
TYP_EMAIL = 32;     // gecerli email adresi
TYP_PASSWORD = 64;
TYP_RADIO = 128;
TYP_RIGHT = 256;
TYP_FUNCTION = 512;	//Form validation'un standart yapısına uymayıpta kontrol edilmesi gereken ikinci bir fonksiyon için, kaan

header = "Lütfen aşağıdaki eksikleri tamamlayınız:\n-------------------------------------------------------------\n";

function check_form(frm){
	var why = "";
	for (i = 0 ; i < form_fields.length ; i++) {
		if (form_fields[i][0] != "") {
		//for right check
		      if (form_fields[i][2] == TYP_RIGHT) {
			         
		         if (!client_sc(Right[form_fields[i][0]]))
		         {
		            //hakkı yoksa nedenini yazar!
		            alert(form_fields[i][1]);
		            return false;
		         }
		      }
		      else{

		            if (form_fields[i][2] == TYP_RADIO) {
		               why += form_route(radio_group(document.all(form_fields[i][0])), form_fields[i][1], form_fields[i][2]);
		            }
		            else if (form_fields[i][2] == TYP_FUNCTION) {
		                why += form_route(form_fields[i][0], form_fields[i][1], form_fields[i][2]);
		            }
		            else {
		                why += form_route((document.all(form_fields[i][0]).value), form_fields[i][1], form_fields[i][2]);
		            }
		       } 
		}
	}
	if (why != "") {
	   alert(header+why);
	   return false;
	}
	return true;
}

function form_route(field,warning,type) {
  var field;
  var warning;
  var type;
  var $error = "";
  if (type & TYP_NOT_NULL) { $error += isEmpty(field,warning); }
  if (type & TYP_DROPDOWN) { $error += checkDropdown(field,warning); }
  if (type & TYP_RADIO) { $error += checkRadio(field,warning); }
  if (type & TYP_DIGIT) { $error += checkDigit(field,warning); }
  if (type & TYP_EMAIL) { $error += checkEmail(field); }
  if (type & TYP_FUNCTION) { $error += eval(field)(); }
  
  return $error;
}

function checkDigit(field,warning)
{
	//BOS ise hata döndürmez
  var error = "";
  if (isNaN(field)) {
     error = warning + "\n";
  }    
  return error;
  
  if (strng == "") {
	  error = "";
  }
}
function checkEmail (strng) {
var error="";
//BOS ise hata döndürmez
    var emailFilter=/^.+@.+\..{2,3}$/;
    if (!(emailFilter.test(strng))) { 
       error = "Lütfen geçerli bir e-mail adresi giriniz.\n";
    }
    else {
//test email for illegal characters
       var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/
         if (strng.match(illegalChars)) {
          error = "Girdiğiniz e-mail geçersiz karakterler içermektedir.\n";
       }
    }

	if (strng == "") {
    error = "";
	}

return error;
}


// phone number - strip out delimiters and check for 10 digits

function checkPhone (strng) {
var error = "";
if (strng == "") {
   error = "Bir telefon numarası girmediniz.\n";
}

var stripped = strng.replace(/[\(\)\.\-\ ]/g, ''); //strip out acceptable non-numeric characters
    if (isNaN(parseInt(stripped))) {
       error = "Telefon numarası geçersiz karakter içeriyor.";
  
    }
    if (!(stripped.length == 10)) {
	error = "Telefon numarasına alan kodu eklediğinizden emin olunuz.\n";
    } 
return error;
}


// password - between 6-8 chars, uppercase, lowercase, and numeral

function checkPassword (strng) {
var error = "";
if (strng == "") {
   error = "Bir password girmediniz.\n";
}

    var illegalChars = /[\W_]/; // allow only letters and numbers
    
    if ((strng.length < 6) || (strng.length > 8)) {
       error = "Girdiğiniz şifrenin karakter sayısı yanlış.\n";
    }
    else if (illegalChars.test(strng)) {
      error = "Girdiğiniz şifre geçersiz karakterler içeriyor.\n";
    } 
    else if (!((strng.search(/(a-z)+/)) && (strng.search(/(A-Z)+/)) && (strng.search(/(0-9)+/)))) {
       error = "Girdiğiniz şifre en az bir büyük, bir küçük ve bir de rakam içermek zorundadır.\n";
    }  
return error;    
}    


// username - 4-10 chars, uc, lc, and underscore only.

function checkUsername (strng) {
var error = "";
if (strng == "") {
   error = "Kullanıcı adı girmediniz.\n";
}


    var illegalChars = /\W/; // allow letters, numbers, and underscores
    if ((strng.length < 4) || (strng.length > 10)) {
       error = "Kullanıcı adının karakter uzunluğu yanlış.\n";
    }
    else if (illegalChars.test(strng)) {
    error = "Kullanıcı adı geçersiz karakter içeriyor.\n";
    } 
return error;
}       


// non-empty textbox

function isEmpty(strng, warn) {
  var error = "";
  if (strng.length == 0) {
     error = warn + "\n";
  }
  return error;	  
}

// was textbox altered

function isDifferent(strng) {
var error = ""; 
  if (strng != "Can\'t touch this!") {
     error = "Değimemesi gereken bir alanı değiştirmeye çalışıyorsunuz.\n";
  }
return error;
}

// exactly one radio button is chosen

function checkRadio(checkvalue,warn) {
  var error = "";
  if (!checkvalue) {
     error = warn + "\n";
  }
  return error;
}

// valid selector from dropdown list

function checkDropdown(choice,warn) {
  var error = "";
//içindeki verisi diğer bir selectbox'taki seçime göre dolmayı bekleyen boş selectbox kontrolü için (choice == "") eklendi.
  if ((choice == -1) || (choice == "")) {
    error = warn + "\n";
  }    
  return error;
}

function radio_group(radiogroup) 
{
   for(var j = 0 ; j < radiogroup.length ; ++j) 
   {
      if(radiogroup[j].checked) 
      {
	      return true;
       }
   }
   return false;
 }


//*******************
// FORM VALIDATION end
//******************


