/* **************************************************************
   @Nazwa: /js/formularz2.js
   @Autor: Tomasz Łabacki
   @Email: tomasz@labacki.com
   @www:   http://labacki.com
   @Data:  13 marca 2010 13:08
   @Opis:  Walidacja formularzy klasy "sprawdz". Po kliknięciu w submit następuje zamknięcie okna i otwarcie strony zapisanej w action w formularzu

Aby formularz został sprawdzony podczas próby jego wysłania,
należy nadać mu klasę "sprawdz". Sprawdzenie wykonuje się następująco:
każdy element formularza (input, select czy textarea) ma opisującą go
etykietę (<label>), bezpośrednio na niego wskazującą (dzięki atrybutowi
"for"). Jeśli w treści etykiety będzie gwiazdka ("*"), to wskazywany
przez nią element formularza zostanie sprawdzony, czy nie jest pusty
(input,textarea), lub czy nie ma wartości "none" (select, domyślna
pierwsza wartość). Całość dzieje się w formularz.js, a przykładami są
formularze wykonane i pokazywane na stronie, lub to:

<label for="test">* Adres email</label>
<input id="test" name="moja_nazwa"/>
ten input musi mieć wartość i javascript to sprawdzi

<label for="test">Adres email</label>
<input id="test" name="moja_nazwa"/>
ten input nie musi mieć wartości
************************************************************** */

$(document).ready(function(){
    $("form.sprawdz").submit(function(){
        if(pola_zaznaczone($(this))){
            var typ = $(this).find("select#typ").val();
            var transtyp = $(this).find("select#transtyp").val();
            var miejscowosc = $(this).find("select#miejscowosc").val();
            var cenado = $(this).find("input#cenado").val();
            var powod = $(this).find("input#powod").val();
            var poddo = $(this).find("input#poddo").val();
            var nroferty = $(this).find("input#nroferty").val();
            self.parent.location.href=$(this).attr("action")+","+typ+"|"+transtyp+"|"+miejscowosc+"|"+cenado+"|"+powod+"|"+poddo+"|"+nroferty;
            /* Każdy parametr oddzielony będzie &
             * var dane=$(this).serialize();
            self.parent.location.href=$(this).attr("action")+"?"+dane;*/
        }
        return false;
    });
});

function pola_zaznaczone(formularz){
    // Walidacja formularza
    // na początku zakładamy, że błędu nie ma
    var error_form=false;

    $(formularz).find("input,textarea,select").each(function(){
        // id elementu formularza
        var id=$(this).attr("id");

        // szukamy treść <label> powiązanego z tym elementem
        var tresc_label=$(formularz).find("label[for="+id+"]").text();

        // czy ta treść zawiera gwiazdkę?
        var szukane_reg=new RegExp("\\*","i");
        if(szukane_reg.test(tresc_label)){
            // OK, ten element formularza musi być wypełniony
            if( ($(this).is("input") && $(this).val()=="") ||
                ($(this).is("textarea") && $(this).val()=="") ||
                ($(this).is("select") && $(this).val()=="none")) {
                    $(this).addClass("error");
                    error_form=true;
            } else {$(this).removeClass("error");}

            // A jeśli element to checkbox, to zaznaczamy jego <label> jako error
            if ($(this).attr("type")=="checkbox" && $("input#"+id+":checked").val()===undefined){
                $(formularz).find("label[for="+id+"]").addClass("error");
            } else {$(formularz).find("label[for="+id+"]").removeClass("error");}
        }
    });
    return !error_form;
}
