var $D = YAHOO.util.Dom;       // elementlerin DOM objesine erişmek için gerekli class
var $E = YAHOO.util.Event;     // elementlere listener eklemek için gerekli class
var select = YAHOO.util.Selector.query; // elementleri seçmek için gerekli class
$E.onDOMReady(function() {
  $E.on('form1', 'submit', function(e) {
    formu_dogrula(e);
  }); // 'form1' formuna listener ekledik
});
function formu_dogrula(e) {
  
  // CSS3 Selector'leri kullanarak istediğimiz elementleri Selector class'ı sayesinde seçebiliyoruz. Detaylar için: XXXXXXXXXXXXXXXXX
  var zorunlu_alanlar = select('input.zorunlu');  // zorunlu class'ına sahip tüm input elemanlarını -array olarak- seçtik. YAHOO.util.Selector.query fonksiyonu elementleri seçip array olarak döndürür. Seçilen elementlerin tüm DOM özelliklerine erişmek mümkündür. ör: select('input.zorunlu')[0].style.display
  var yil_alanlari = select('input.yil');         // yil class'ına sahip tüm input elemanlarını -array olarak- seçtik.
  
  // Seçtiğimiz zorunlu_alanlar'ı kontrol etmek için hepsini teker teker for döngüsüyle gezeceğiz.
  for(var i=0;i<zorunlu_alanlar.length;i++) {
    
    if(zorunlu_alanlar[i].value == "") { // value boş ise
      $D.setStyle(zorunlu_alanlar[i], 'background', '#FF7791'); // doldurulmamış alanı kırmızıya boyuyoruz. Dom fonksiyonları için: XXXXXXXXXX
      alert('Lütfen gerekli alanları doldurunuz.');  // uyarı gösteriyoruz.
      zorunlu_alanlar[i].focus(); // Doldurulmamış alana focus ettik.
      $E.preventDefault(e); // formun submit edilmesini engelliyoruz. Tüm Event fonksiyonları için: XXXXXXXXXXX
      return false;
    }
    else {
      $D.setStyle(zorunlu_alanlar[i], 'background', '#97F297'); // Herhangi bir CSS kuralını setStyle fonksiyonuyla elementlere atayabiliriz.
    }
    
  }
  
  // Zorunlu alanlar için kontrolleri yaptık şimdi de yil_alanlari'ni kontrol edeceğiz. Bu kez for döngüsü yerine YUI'nin batch fonksiyonunu kullanacağız. batch, fonksiyonel dillerdeki map'in karşılığır. For döngüsünden daha hızlı ve verimli çalışır. Ayrıca anlaşılması da daha kolaydır.
  
  $D.batch(yil_alanlari, function(el) {
  
    if(!YAHOO.lang.isNumber(el.value*1)) { // YAHOO.lang class'ı javascript yazarken sıkça kullanılan yardımcı fonksiyonları barındırıyor. Detaylar için:XXXXXXXXX
      $D.setStyle(el, 'background', '#FF7791'); // yanlış doldurulmuş alanı kırmızıya boyuyoruz.
      alert('Yıl alanına yalnızca rakam giriniz.');  // uyarı gösteriyoruz.
      $E.preventDefault(e); // formun submit edilmesini engelliyoruz.
      return false;
    }
    else {
      $D.setStyle(el, 'background', '#97F297');
    }
    
  });
  
  return true; // Burada tüm doğrulamalardan geçmiş olan formumuzun post edilmesi için true değerini döndürüyoruz.
}
