/**
    @author: smate, 2008
    tato js trieda zgrupuje js funkcie ktore sa pouzivaju (prevazne) v admine 
    rodosu. 
    pre svoju funkcnost potrebuju jQuery (kernel/vendor/jquery/jquery.js)
*/

/**
    funckia ulahcujuca pracu s ajaxom
    automaticky sa posiela na skript ulozeny v premennej ajax_url:  "../admin/ajax.php"
    @params
    <ul>
        <li>method: bud GET alebo POST</li>
        <li>params: parametre ktore sa poielaju vyzeraju takto "var1=val1&var2=val2" </li>
        <li>div: div element (objekt jQuery) kde sa ma vysledny obsah zobrazit. jQuery div dostanes takto $("div#id")</li>
    </ul>
*/
function ajax_call(method,params,div){
  var ajax_url = "../admin/ajax.php";
  $.ajax({
    method: method,url: ajax_url ,data: params,
    beforeSend: function(){$("#loading").show("fast");}, //show loading just when link is clicked
    complete: function(){ $("#loading").hide("fast");}, //stop showing loading when the process is complete
    success: function(html){ //so, if data is retrieved, store it in html
    if(div != null){
      div.show();
      div.html(html); //show the html inside .content div
   }
    }
  }); //close $.ajax(
}

/**
    funckia ulahcujuca pracu s ajaxom
    automaticky sa posiela na skript ulozeny v premennej ajax_url:  "../admin/ajax.php"
    @params
    <ul>
        <li>method: bud GET alebo POST</li>
        <li>params: parametre ktore sa poielaju vyzeraju takto "var1=val1&var2=val2" </li>
        <li>fction: funkcia ktora spracuje obsah napr var f = function(html){alert(html);};</li>
    </ul>
*/
//to iste co ajax_call ale odpoved sa nesnazi nasukat do divka ale ako parameter sa posiela fcia ktora rozhodne co sa urbi s odpovedou servera
function ajax_call_return(method,params,fction){
  var ajax_url = "../admin/ajax.php";
  $.ajax({
    method: method,url: ajax_url ,data: params,
    beforeSend: function(){$("#loading").show("fast");}, //show loading just when link is clicked
    complete: function(){ $("#loading").hide("fast");}, //stop showing loading when the process is complete
    success: function(html){ //so, if data is retrieved, store it in html
    fction(html); //tu sa urobi co chceme ;)
   }
    
  }); //close $.ajax(
}

/**
    funkcia ktora vlastne len rozsiruje checkForm jej uloha je poslat forular ak prejde testom checkForm
    @params: form_name: meno forulara ktory sa bude posielat <form name="meno">
*/
function checkAndSend(form_name){
  if(checkForm(form_name)) {
    eval("document."+form_name+".submit()"); //ci ta ja som js hacker :D (smate 2008)
  }
}

/**
    skontroluje formular. vracia true ako ok inak false, zle vyplnene polia zvyraznuje
    parametre ktore sa nastavuju vo formulary:
        <input rfch='mandatory'> = bude musiet byt povinne vyplneny inak sa vrati false
    TODO: dorobit dalsie testy pre cislo, email, url, porovnanie2 textovych poli, kontrola sily hesla atd
    @params: form_name: meno forulara ktory sa bude posielat <form name="meno">
*/
function checkForm(form_name) {
//  alert('af');
  //return false;
  var form = $("form#"+form_name);
  
  var man_inputs = $("form#"+form_name+" input[rfch='mandatory']");
  
  var ret = true;
  //alert(form.serialize());
  for(i = 0; i < man_inputs.length; i++) {
      
    var element = $("form#"+form_name+" input[rfch='mandatory']:eq("+i+")");
    
    var value = element.val();
    if(value != "" && value != 0) {
      element.css({ border:"1px gray solid", fontWeight:"normal" });
      ret = ret && true;    
      
    } else {
      element.prev("label.mandatory").css({background: "#51180D"});
      element.css({ border:"2px red groove", fontWeight:"bold" });
      ret = false;
    }
    
  }
  
  var radios = $("form#"+form_name+" input[type=radio][rfch='mandatory']");
  var checkboxes = $("form#"+form_name+" input[type=checkbox][rfch='mandatory']");

  for(i = 0; i < radios.length; i++ ) {
    var element = $("form#"+form_name+" input[type=radio][rfch='mandatory']:eq("+i+")");
    
    var name = element.attr('name');
    if($("form#"+form_name+" input[type=radio][name="+name+"][rfch='mandatory']:checked").length == 0) {
      element.parent("label").css({background: "#51180D", fontWeight:"bold"});
      ret = false;
    }
    
  }
  
  for(i = 0; i < checkboxes.length; i++ ) {
    var element = $("form#"+form_name+" input[type=checkbox][rfch='mandatory']:eq("+i+")");
    
    var name = element.attr('name');
    if($("form#"+form_name+" input[type=checkbox][name="+name+"][rfch='mandatory']:checked").length == 0) {
      element.parent("label").css({background: "#51180D", fontWeight:"bold" });
      ret = false;
    }
    
  }  
  
  return ret;
}

function showHide(id) {
  var elem = $("div#"+id);
  elem.css({display:"block"});
}


function propagateError(message){
    //alert(message);
    $('span#user_message').show();
    $('span#user_message').html(message);
}


