/**
 *
 * @name Funkcja sprawdzaja czy typ jest tablicą
 *
 */
function is_array(arr){
    if((typeof arr)=='object'){
        if(arr instanceof Array){
            return true;
        }
    }
    return false;
}

/**
 *
 * @name funkcja on MOUSE Over / Out zmieniająca src obrazka 
 *
 */   
function changeImage(v, newSrc)
{
  this.src = newSrc;
} 


/**
 *
 * @name Metoda odlicza ilość pozostałych znaków dla pola ograniczonego ilością znaków
 *
 */
function updateLeftKeys(field, maxSigns, value)
{
    var v = (maxSigns-value);
    if(v<0) v = 0;
    document.getElementById(field).innerHTML=v;
}


/**
 *
 * @name funkcja obsługująca limit znaków dla pól formularza
 *
 */
function keyLimit(v, signLimit, text) {
  var msg = v.value;
	var max_length = signLimit;
	if (msg.length>max_length) {
		msg = v.value = msg.substr(0, max_length);
		alert(text);
	}
	return true;
}


/*************************************************
/ zmiana klasy elementu
/************************************************/
function newClass(el, newClassName){
    el.className = newClassName;
}

/*************************************************
/ Redirect na URL
/************************************************/
function go2UrlAndSend(v, link, varname, modrewrite)
{
    var tmp = '';
    if(v.value!=''){
        if(modrewrite==1){
            tmp = link + '/' + v.value;
        }else{
            if(varname!='')
                tmp = link + '&' + varname + '=' + v.value;
            else
                tmp = link + '&' + v.value;
        }
    }
    if(tmp!='') window.location = tmp;
}

/*************************************************
   Pobieranie wartości z danego elementu ID
/************************************************/
function getValueFromID(fieldID)
{
  if(document.getElementById(fieldID))
  return document.getElementById(fieldID).value;
  else if(fieldID.value)
  return fieldID.value
}

/**
 *
 * Metoda uzupełnia pole z daną wartością
 *
 */
function fillField(field, value, areaField){
    document.getElementById(field).value = value;
    document.getElementById(areaField).style.display="none";
}
/**
 *
 * Metoda ukrywająca pole z daną wartością
 *
 */
function hide(areaField){
    document.getElementById(areaField).style.display="none";
}

/*************************************************
/ Auto ukrywanie/odsłanianie elementów (inna)
/************************************************/
function HideShowAreas(tab)
{
    for(var i in tab){
        var el = document.getElementById(tab[i]);
        if(el){
            if(el.style.display=='block' || el.style.display=='')
                el.style.display='none';
            else
                el.style.display='';
        }
    }
    return true;
}

/*************************************************
/ Wysyłanie formularza
/************************************************/
function formSubmit(id, confirmText)
{
    if(document.getElementById(id)){
        var s = false;
        if(confirmText!='' && confirmText!=undefined)
        s = confirm(confirmText);
        else
        s = true;
        if(s)
        document.getElementById(id).submit();
    }
}


function addTag(tag, id)
{
    var txt = document.getElementById(id);

    if(txt.selectionStart>=0 && txt.selectionEnd>=0) {
        txt.value = (txt.value).substring(0, txt.selectionStart) + "["+tag+"]" + (txt.value).substring(txt.selectionStart, txt.selectionEnd) + "[/"+tag+"]" + (txt.value).substring(txt.selectionEnd, txt.textLength);
        txt.selectionEnd.focus();

    } else if(document.selection.createRange().text){
        theSelection = document.selection.createRange().text;
        document.selection.createRange().text = "["+tag+"]" + theSelection + "[/"+tag+"]";
        txt.focus();
        
    } else {
        txt.value += "["+tag+"]" + "[/"+tag+"]";
        txt.focus();
    }
}



// s: Pokaż/Ukryj DIV
function show_hide(id) {
    var el = document.getElementById(id);
    if(el) {
        el.style.display = (el.style.display == "none") ? '' : 'none';
    }
}
// e: Pokaż/Ukryj DIV

// s: Odblokuj przycisk rejestracji
function unlockRegisterButton() {
    var btn = document.getElementById('RegOptions_Submit');
    var ck1 = document.getElementById('RegOptions_Agreement');
    var ck2 = document.getElementById('RegOptions_Send');

    if(btn) {
        if((ck1 && ck1.checked) && (ck2 && ck2.checked)){
            btn.disabled = false;
            btn.src = pathgfx+'/buttons/en/register.gif';
        } else {
            btn.disabled = true;
            btn.src = pathgfx+'/buttons/en/register_disabled.gif';
        }
    //alert('btn: '+btn.disabled+'     '+btn.className+"\n"+'ck1: '+ck1.checked+"\n"+'ck2: '+ck2.checked+"\n");
    }
}
// e: Odblokuj przycisk rejestracji


// s: Odblokuj przycisk aktualizacji
function unlockUpdateButton() {
    var btn = document.getElementById('RegOptions_Submit');
    var ck1 = document.getElementById('RegOptions_Agreement');
    var ck2 = document.getElementById('RegOptions_Send');

    if(btn) {
        if((ck1 && ck1.checked) && (ck2 && ck2.checked)){
            btn.disabled = false;
            btn.src = pathgfx+'/buttons/en/update.gif';
        } else {
            btn.disabled = true;
            btn.src = pathgfx+'/buttons/en/update_disabled.gif';
        }
    //alert('btn: '+btn.disabled+'     '+btn.className+"\n"+'ck1: '+ck1.checked+"\n"+'ck2: '+ck2.checked+"\n");
    }
}
// e: Odblokuj przycisk aktualizacji





function showHiddenArea(id)
{
    for(var a in id){
        if(document.getElementById(id[a])){
            var item = document.getElementById(id[a]);
            if(item.style.display=='')
                item.style.display='none';
            else
                item.style.display='';
        }
    }
}

function showHideSubMenu(v, count, name)
{
    for(var a in name){
        for(i=1; i<=count; i++){
            if(document.getElementById(name[a] + i))
                document.getElementById(name[a] + i).style.display='none';
        }
        if(document.getElementById(name[a] + v))
            document.getElementById(name[a] + v).style.display='';
    }
}


/*
 * autor: jacek wasilewski (netcare)
 */
function jw_addMaxlengthTextarea(){
    if(document.getElementsByTagName){
        var el=document.getElementsByTagName('textarea'), ile=el.length;
        for(var i=0;i<ile;i++){
            if(el[i].getAttribute("maxlength")){
                var max=parseInt(el[i].getAttribute("maxlength"),10);
                var fieldID = el[i].getAttribute("id") + '_count';
                if(!isNaN(max)){
                    el[i].msgid='textarea__msg__'+i;
                    el[i].maxlength = max;
                    el[i].onfocus=function(){
                        if(document.getElementById(fieldID)) document.getElementById(fieldID).innerHTML=(this.maxlength-this.value.length);
                    }
                    el[i].onblur=function(){
                        if(this.value.length>this.maxlength){
                            this.value=this.value.substr(0,this.maxlength);
                        }
                        if(document.getElementById(this.msgid)){
                            document.getElementById(this.msgid).style.display='none';
                        }
                    }
                    el[i].onkeyup=function(){
                        if(this.value.length>this.maxlength){
                            this.value=this.value.substr(0,this.maxlength);
                        }
                        if(document.getElementById(fieldID)) document.getElementById(fieldID).innerHTML=(this.maxlength-this.value.length);
                    }
                }
            }
        }//end for
    }
}
if(window.addEventListener){
    window.addEventListener("load", jw_addMaxlengthTextarea, false);
}else if(window.attachEvent){
    window.attachEvent("onload", jw_addMaxlengthTextarea);
}


function labelBgSwitch(v,action, field){
	
    if(action==1 && !v.sc){
        v.className = SElabeln;
    }else if(action==2 && !v.sc) {
        v.className = SElabela;
    }
    if(action==3 && !v.sc){
        for(i=1; i<=SElabels; i++){
            var item = document.getElementById(SElabelsName+i);
            item.className=SElabeln;
            item.sc = false;
        }
        v.sc = true;
        v.className = SElabela;
        document.getElementById(SEHiddenField).value=field;
    }
}



function showHideOnValue(v, values, idek)
{
    for(var a in values){
        if(v.value==values[a]){
            for(var i in idek){
                document.getElementById(idek[i]).style.display='';
            }
            return true;
        }else{
            for(var i in idek){
                document.getElementById(idek[i]).style.display='none';
            }
        }
    }
}


/*************************************************
/ Auto ukrywanie/odsłanianie elementów (inna)
/************************************************/
function HideShowAreas(tab, action, clear)
{
    for(var i in tab){
        var el = document.getElementById(tab[i]);

        if(el){
            if((action=='none' && (el.style.display=='block' || el.style.display=='')) || (action=='' && el.style.display=='none')){
                el.style.display=''+action+'';
            }
        }
        if(clear==1) clearValues(tab[i]);
    }
    return true;
}

/*************************************************
/ Akcja wywołujaca ukrywanie/odsłanianie obszarów
/ ~ na daną wartość selecta
/************************************************/
function autoShowSections(v, values, idek, clear, invert)
{
    for(var i in idek){
        if(is_array(idek[i])){
            HideShowAreas(idek[i], (invert==1 ? '' : 'none'), clear);
        }else{
            if(document.getElementById(idek[i])){
                document.getElementById(idek[i]).style.display=(invert==1 ? '' : 'none');
                if(clear==1) clearValues(idek[i]);
            }
        }
    }

    for(var a in values){
        if(v.value==values[a]){
            if(is_array(idek[a])){
                HideShowAreas(idek[a], (invert==1 ? 'none' : ''));
            }else{
                if(document.getElementById(idek[a]))
                    document.getElementById(idek[a]).style.display=(invert==1 ? 'none' : '');
            }
        }
    }
}

function clearValues(id)
{
    var area = document.getElementById(id);
    if(area){
        var t = area.getElementsByTagName('input');
        for(var i=0; i<t.length; i++){
            //alert(t[i].type + " : " + t[i].name + " : " + t[i].value);
            if(t[i].type=='radio'){
                //alert(t[i].defaultChecked);
                t[i].checked = t[i].defaultChecked;
            }
            if(t[i].type=='text'){
                t[i].value = '';
            }
        }
        t = area.getElementsByTagName('select');
        for(var i=0; i<t.length; i++){
            t[i].selectedIndex = t[i].defaultSelected;
        }

        t = area.getElementsByTagName('textarea');
        for(var i=0; i<t.length; i++){
            t[i].value = '';
        }
    }
}


/*************************************************
/ Obsługa zakładek
/************************************************/
function switchTab(tab){
  
}


/*
 * Pokazywanie/ukrywanie elementu o zadanym ID
 */
function expand(id, linkid){
    var el = document.getElementById(id);
    var link = document.getElementById(linkid);
    if(el){
        if(el.style.display == "block") {
            el.style.display =  '';
            if(link)
                link.innerHTML = 'Rozwiń firmy';
        } else {
            el.style.display =  'block';
            if(link)
                link.innerHTML = 'Zwiń firmy';
        }// if .. else

        childs = el.getElementsByTagName('div');

        for(var i = 0; i<childs.length; i++) {
            childs[i].style.display = (childs[i].style.display == "block") ? '' : 'block';
        } // for
    } // if
}

/*
 * Zwracanie tablicy elementów o zadanej nazwie klasy
 */
function getElementsByClass(cn){
    var arr = new Array();
    var els = document.getElementsByTagName("*");
    var exp= new RegExp("^(.* )?"+cn+"( .*)?$", "g");
    for (var i = 0; i < els.length; i++ ){
        if (exp.test(els[i].className)){
            arr.push(els[i]);
        }
    }
    return arr;
}

/*
 * Zaznaczanie checkboxów o zadanej klasie w podanym formularzu
 */
function check_all(cl, form) {
    if(form) {
        var toCheck = getElementsByClass(cl);

        for(var i = 0; i < toCheck.length; i++) {
            toCheck[i].checked = 'checked';
        }
    }
}
/*
 * Aktualizacja formularza dodawania nowego gościa
 */
function updateGuestAdd(val, form) {
    if(form && val) {
        // Pola do aktualizacji we formularzu
        var d1d = document.getElementById('divGuestCompanion');
        var d1l = document.getElementById('GuestCompanionLabel');
        var d2d = document.getElementById('divGuestKids');
        var d2s = document.getElementById('GuestKids');
        var d3d = document.getElementById('divGuestFamily');
        var d2d1 = document.getElementById('divGuestKid1');
        var d2d2 = document.getElementById('divGuestKid2');
        var d2d3 = document.getElementById('divGuestKid3');
        var d2d4 = document.getElementById('divGuestKid4');
        var d2d5 = document.getElementById('divGuestKid5');

        // Aktualizacja pól formularza
        switch(val.value){
            // 1 - z os. towarzyszącą
            case "1":
                d1d.style.display = "block";
                d1l.className = "with1";
                d1l.innerHTML = "Imię i nazwisko os. towarzyszącej";
                d2d.style.display = "none";
                d3d.style.display = "none";
                d2d1.style.display = "none";
                d2d2.style.display = "none";
                d2d3.style.display = "none";
                d2d4.style.display = "none";
                d2d5.style.display = "none";
                break;
            // 2 - z rodziną
            case "2":
                d1d.style.display = "block";
                d1l.className = "with2";
                d2d.style.display = "block";
                d3d.style.display = "block";
                d2d1.style.display = "block";
                d2d2.style.display = "block";
                d2d3.style.display = "block";
                d2d4.style.display = "block";
                d2d5.style.display = "block";
                updateGuestAdd2(d2s, form)
                break;
            // 0 - bez os. towarzyszącej
            default:
                d1d.style.display = "none";
                d2d.style.display = "none";
                d3d.style.display = "none";
                d2d1.style.display = "none";
                d2d2.style.display = "none";
                d2d3.style.display = "none";
                d2d4.style.display = "none";
                d2d5.style.display = "none";
                break;
        }
    }
}

function updateGuestAdd2(val, form) {
    if(form && val) {
        // Pola do aktualizacji we formularzu
        var d2d1 = document.getElementById('divGuestKid1');
        var d2d2 = document.getElementById('divGuestKid2');
        var d2d3 = document.getElementById('divGuestKid3');
        var d2d4 = document.getElementById('divGuestKid4');
        var d2d5 = document.getElementById('divGuestKid5');

        // Aktualizacja pól formularza
        switch(val.value){
            case "1":
                d2d1.style.display = "block";
                d2d2.style.display = "none";
                d2d3.style.display = "none";
                d2d4.style.display = "none";
                d2d5.style.display = "none";
                break;
            case "2":
                d2d1.style.display = "block";
                d2d2.style.display = "block";
                d2d3.style.display = "none";
                d2d4.style.display = "none";
                d2d5.style.display = "none";
                break;
            case "3":
                d2d1.style.display = "block";
                d2d2.style.display = "block";
                d2d3.style.display = "block";
                d2d4.style.display = "none";
                d2d5.style.display = "none";
                break;
            case "4":
                d2d1.style.display = "block";
                d2d2.style.display = "block";
                d2d3.style.display = "block";
                d2d4.style.display = "block";
                d2d5.style.display = "none";
                break;
            case "5":
                d2d1.style.display = "block";
                d2d2.style.display = "block";
                d2d3.style.display = "block";
                d2d4.style.display = "block";
                d2d5.style.display = "block";
                break;
            default:
                d2d1.style.display = "none";
                d2d2.style.display = "none";
                d2d3.style.display = "none";
                d2d4.style.display = "none";
                d2d5.style.display = "none";
                break;
        }
    }
}

