if(typeof(Scriptaculous) == 'undefined') {
  document.write('<script type="text/javascript" src="/sys-js/scriptaculous/scriptaculous.js?load=effects"><\/script>\n');
}

Event.observe(window, 'load', function(){
 var list = $$('.body form');
 if(!list)    return;
 if(!list[0]) return;
 var frm = list[0]; list = false;


 Event.observe(frm, 'submit', simpleValidate);
});

// {{{ simpleValidate(evt)
function simpleValidate(evt) {
 var badsibs = new Array();

 var inModifyForm = $$('input[name="renew_ad"]').length;

 $$('.paf_required').each(function(req) {
  req.previousSiblings().each(function(sibs) {
   if(inModifyForm && sibs.name.match(/^auth_/)) return;

   if(sibs.nodeName == 'INPUT' ||
      sibs.nodeName == 'SELECT' ||
      sibs.nodeName == 'TEXTAREA') {
     var v = sibs.value.replace(/^\s+/, '').replace(/\s$/, '');

     if(v === '') {
       var label = sibs.up('TR').childElements()[0];
       var nlabel = label.down('label');
       if(nlabel)
         label = nlabel;

       badsibs.push(label);
     } else {
       var row = sibs.up('TR');
       row.removeClassName('needed');
     }
   }
  })
 });

 if(typeof(reStripe) === 'function') {
   $$('.can_stripe').each(function(tbl) {
     reStripe(tbl);
   });
 }

 if(badsibs.length){
   Event.stop(evt);
   var txt = "The following form fields require values:\n";
   badsibs.each(function(badsib){
     txt += badsib.innerHTML.stripTags() + "\n";
   });

   $(badsibs[0]).scrollTo();

   var hasST = $$('script').grep({ match : function(js) {
     return js.src.match(/scriptaculous.*effects/);
   } });

   alert(txt);

   if(typeof(Scriptaculous) && typeof(Effect)) {

     badsibs.each(function(badsib){
       var row = badsib.up('TR');

       new Effect.Highlight(row, {
         afterFinish: function(row) {
           $(row.element).removeClassName('zstripe')
                         .addClassName('needed')
                         .setAttribute('style', '');
           clearNoStripe(row.element);
         }
       })
     });
   }
   return true;
 }
}; // }}}


// {{{ clearNoStripe(row)
function clearNoStripe(row) {
  var tbl = row.up('TABLE');
  if(!tbl) return;

  $w(tbl.className).each(function(cName){
    var mat = cName.match('stripeodd_(.+)');
    if(mat)
      row.removeClassName(mat[1]);
  });
} // }}}
