// tutaj laduja pola ktore maja byc sprawdzone
// lista niepustych zawiera nazwy pol spradzanych ifem po ""
// lista niepustych select przyrownuje selectedIndex do -1 (czyli brak)
var listaWymaganych         = new Array();
var listaNiepustych       = new Array();
var listaNiepustychSelect = new Array();
var listaNiepustychRadio = new Array();
var listaNiepustychCheckBox = new Array();
var listaNiepustychCheckBoxes = new Array();
var listaNiepustychInny = new Array();
var listaWymaganychEmail = new Array();
var listaWymaganychLiczba = new Array();


var formularz_blad_komunikat = 'Formularz zawiera błędy';

var uzyty_jezyk = 'python';

 /**
   *
   * @desc
   *   Funckja spradzajaca oeikt formularza
   *   Pola do spradzania pobiera z listaniepustych
   *   zwraca true jesli nie ma bledow,
   *   zwraca false i wczesniej alert
   */


function sprawdzFormularz(form)
{
    i = 0;
    for (name in listaWymaganych) {
        //if (!form[name]) continue;
        elementy = document.getElementsByName(name);
        my_type_el = typ_el(elementy);
        switch (my_type_el) {
            case 'text':
            case 'textarea':
                listaNiepustych[name] = listaWymaganych[name];
                break;
            case 'select-one':
            case 'select':
                listaNiepustychSelect[name] = listaWymaganych[name];
                break;
            case 'radio':
                listaNiepustychRadio[name] = listaWymaganych[name];
                break;
            case 'checkbox':
                listaNiepustychCheckBox[name] = listaWymaganych[name];
                break;
            case 'checkboxes':
                listaNiepustychCheckBoxes[name] = listaWymaganych[name];
                break;
            default:
                listaNiepustychInny[name] = listaWymaganych[name];
        }

    }
    return sprawdzFormularz2(form);
}

function sprawdz_attr_form(form, name)
{
	elementy = document.getElementsByName(name);
	for (nr = 0; nr < elementy.length; nr++) {
        element  = elementy[nr];
		if (element.form && element.form == form) {
			return true;
		}
	}
	return false;
}

function typ_el(elementy)
{
    checkboxes = 0;
    //for (element in elementy) {
	for (nr = 0; nr < elementy.length; nr++) {
        element  = elementy[nr];
        
    	//alert(elementy[element].type
        if (element.type) {
            switch (element.type) {
                
                case 'select-one':
                case 'select':
                case 'text':
                case 'textarea':
                case 'radio':
                    return element.type;
                case 'checkbox':
                    checkboxes++;
                    break;
                default:
            }
        }
    }
    if (checkboxes == 1) {
        return 'checkbox';
    } 
    if (checkboxes > 1) {
        return 'checkboxes';
    } 
    return false;
}


function sprawdzFormularz2(el_formularz) {
      var komunikaty = "";
      var jestBlad = false;
      // sprawzdanie ogolnych pol
      for(pole in listaNiepustych){
         if (!sprawdz_attr_form(el_formularz, pole)) continue;
         if(!el_formularz[pole] || !listaNiepustych[pole]){
         }
         else{
             if(el_formularz[pole].value == ""){
               jestBlad = true;
               komunikaty  += " - " +  listaNiepustych[pole] + "\n\n";
              if(el_formularz[pole].style) {
                  el_formularz[pole].style.borderColor = "red";
                  el_formularz[pole].style.borderStyle = "dotted";
                  el_formularz[pole].style.borderWidth = "1px";
                  el_formularz[pole].style.backgroundColor= "mistyrose";
               } 
             }else{
                 if(el_formularz[pole].style) {
                      el_formularz[pole].style.borderColor = "black";
                      el_formularz[pole].style.borderStyle = "solid";
                      el_formularz[pole].style.borderWidth = "1px";
                      el_formularz[pole].style.backgroundColor= "white";
                  }
             }
         }
      }

      for(pole in listaNiepustychInny){
         if (!sprawdz_attr_form(el_formularz, pole)) continue;
         if(!el_formularz[pole] || !listaNiepustychInny[pole]){
         }
         else{
             if(el_formularz[pole].value == ""){
               jestBlad = true;
               komunikaty  += " - " +  listaNiepustychInny[pole] + "\n\n";
              if(el_formularz[pole].style) {
                  el_formularz[pole].style.borderColor = "red";
                  el_formularz[pole].style.borderStyle = "dotted";
                  el_formularz[pole].style.borderWidth = "1px";
                  el_formularz[pole].style.backgroundColor= "mistyrose";
               }
             }else{
                 if(el_formularz[pole].style) {
                      el_formularz[pole].style.borderColor = "black";
                      el_formularz[pole].style.borderStyle = "solid";
                      el_formularz[pole].style.borderWidth = "1px";
                      el_formularz[pole].style.backgroundColor= "white";
                  }
             }
         }
      }
      
      // sprawdzanie pol typu select
      for(pole in listaNiepustychSelect){
         if (!sprawdz_attr_form(el_formularz, pole)) continue;
         if(el_formularz[pole].selectedIndex == -1 || el_formularz[pole].value == -1 || el_formularz[pole].value == ""){
            jestBlad = true;
            komunikaty  += " - " +  listaNiepustychSelect[pole] + "\n\n";
            if(el_formularz[pole].style) {
               el_formularz[pole].style.borderColor = "red";
               el_formularz[pole].style.borderStyle = "dotted";
               el_formularz[pole].style.borderWidth = "1px";
               el_formularz[pole].style.backgroundColor= "mistyrose";
           }
         }else{
          if(el_formularz[pole].style) {
               el_formularz[pole].style.borderColor = "";
               el_formularz[pole].style.borderStyle = "";
               el_formularz[pole].style.borderWidth = "";
               el_formularz[pole].style.backgroundColor= "";
           }
         }
      }
      
      var radioblad=true;
      for(pole in listaNiepustychRadio){
         if (!sprawdz_attr_form(el_formularz, pole)) continue;
        var i;
        radioblad=true;
        
        for(i=0;i<el_formularz[pole].length;i++) {
            if(el_formularz[pole][i].checked){
                radioblad=false;
            }
        }
        if(radioblad){
            jestBlad = true;
            komunikaty  += " - " +  listaNiepustychRadio[pole] + "\n\n";
            if(el_formularz[pole].style) {
                el_formularz[pole].style.borderColor = "red";
                el_formularz[pole].style.borderStyle = "dotted";
                el_formularz[pole].style.borderWidth = "1px";
                el_formularz[pole].style.backgroundColor= "mistyrose";
            }
        }else{
                if(el_formularz[pole].style) {
                    el_formularz[pole].style.borderColor = "";
                    el_formularz[pole].style.borderStyle = "";
                    el_formularz[pole].style.borderWidth = "";
                    el_formularz[pole].style.backgroundColor= "";
                }
              }
        
      }
      var checkboxblad=true;
      for(pole in listaNiepustychCheckBox){
         if (!sprawdz_attr_form(el_formularz, pole)) continue;
        var i;
        checkboxblad=true;
        if(!el_formularz[pole] || !listaNiepustychCheckBox[pole]){
             //// w ramach testow odkomentowac obie ponizsze linie.
             //alert("Brak pola lub jego definiji: "+pole);
             //jestBlad = true;
        }
        else{
            if(!el_formularz[pole].checked){
               jestBlad = true;
               komunikaty  += " - " +  listaNiepustychCheckBox[pole] + "\n\n";
                if(el_formularz[pole].style) {
                    el_formularz[pole].style.borderColor = "red";
                    el_formularz[pole].style.borderStyle = "dotted";
                    el_formularz[pole].style.borderWidth = "1px";
                    el_formularz[pole].style.backgroundColor= "mistyrose";
                }
             }else{
                if(el_formularz[pole].style) {
                    el_formularz[pole].style.borderColor = "";
                    el_formularz[pole].style.borderStyle = "";
                    el_formularz[pole].style.borderWidth = "";
                    el_formularz[pole].style.backgroundColor= "";
                }
             }
         }

      }
      var checkboxesblad=true;
        var rozszerzenie_php = (uzyty_jezyk == 'php') ? '[]' : '';
        for(pole in listaNiepustychCheckBoxes){
         if (!sprawdz_attr_form(el_formularz, pole)) continue;
            checkboxesblad=true;
            for (i = 0; i < el_formularz.length ; i++) {
                if (el_formularz.elements[i].type == 'checkbox' && el_formularz.elements[i].name == pole + rozszerzenie_php) {
                    if (el_formularz.elements[i].checked) {
                        checkboxesblad = false;
                    }
                }
            }
            if (checkboxesblad) {
                jestBlad = true;
                komunikaty  += " - " +  listaNiepustychCheckBoxes[pole] + "\n\n";
            }
        }
      
      if(jestBlad == true){
        alert(formularz_blad_komunikat + ": \n\n" + komunikaty);
         return false;
      }else{
         return true;
      }
   }
   


