var Ajax;
if (Ajax && (Ajax != null)) {
    Ajax.Responders.register({
        onCreate: function() {
            if($('spinner') && Ajax.activeRequestCount>0)
                Effect.Appear('spinner',{
                    duration:0.5,
                    queue:'end'
                });
        },
        onComplete: function() {
            if($('spinner') && Ajax.activeRequestCount==0)
                Effect.Fade('spinner',{
                    duration:0.5,
                    queue:'end'
                });
        }
    });
}

function toggleDivs(id, cssclass) {
    $$('div.togglediv').each(Element.hide)
    $(id).appear();
}

function mytoggle(listen, id) {
    $(id).toggle();
//    listen.update();
}

/* This script and many more are available free online at
The JavaScript Source!! http://javascript.internet.com
Created by: Mario Costa |  */
function currencyFormat(fld, thousandSep, e) {
    var sep = 0;
    var key = '';
    var i = j = 0;
    var len = len2 = 0;
    var strCheck = '0123456789';
    var aux = aux2 = '';
    var whichCode = (window.Event) ? e.which : e.keyCode;

    if (whichCode == 13) return true;  // Enter
    if (whichCode == 8) return true;  // Delete
    key = String.fromCharCode(whichCode);  // Get key value from key code
    if (strCheck.indexOf(key) == -1) return false;  // Not a valid key
    len = fld.value.length;
    for(i = 0; i < len; i++)
        if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
    aux = '';
    for(; i < len; i++)
        if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
    aux += key;
    len = aux.length;
    if (len == 0) fld.value = '';
    if (len == 1) fld.value = aux;
    if (len == 2) fld.value = aux;
    if (len > 2) {
        aux2 = '';
        for (j = 0, i = len - 3; i >= 0; i--) {
            if (j == 3) {
                aux2 += thousandSep;
                j = 0;
            }
            aux2 += aux.charAt(i);
            j++;
        }
        fld.value = '';
        len2 = aux2.length;
        for (i = len2 - 1; i >= 0; i--)
            fld.value += aux2.charAt(i);
        fld.value += aux.substr(len - 2, len);
    }
    return false;
}

function setCityValues(city, district, ico, orp) {
    if ($('city')) $('city').value = city;
    if ($('district')) $('district').value = district;
    if ($('bankSpecNumber')) $('bankSpecNumber').value = ico;
    if ($('orp')) $('orp').value = orp;
    if ($('foundcities')) {
        Effect.SlideUp($('foundcities'));
    }
}

function setKaCityValues(city, district, ico, orp) {
    if ($('kaCity')) $('kaCity').value = city;
    if ($('kaDistrict')) $('kaDistrict').value = district;
    if ($('kaOrp')) $('kaOrp').value = orp;
    if ($('foundkacities')) {
        Effect.SlideUp($('foundkacities'));
    }
}

function changeFropovTheme() {
    if ($('projectTheme').value == 'Dotace úroků z úvěrů') {
        $('d1').hide();
        $('d2').show();
        $('app-readiness').hide();
        
        $$('#realizationEstates, .realizationEstates').invoke('hide');
    } else if ($('projectTheme').value == 'Veřejný rozhlas') {
        $('d1').show();
        $('d2').hide();
        $('app-readiness').show();
        
        $$('#realizationEstates, .realizationEstates').invoke('hide');
    } else {
        $('d1').show();
        $('d2').hide();
        $('app-readiness').show();
        
        $$('#realizationEstates, .realizationEstates').invoke('show');
    }
}

function changeFrovepTheme() {
    if ($('projectTheme').value == 'Místní komunikace - pouze spolufinancování projektů z fondů EU') {
        $$('#euDotationFieldset')[0].appear();
        if ($('euDotation')) { $('euDotation').checked = 1; }
        //$('euDotation').disable();
    } else if ($('projectTheme').value == 'Veřejný rozhlas') {
        $$('#realizationEstates, .realizationEstates').invoke('hide');
    } else {
        $$('#realizationEstates, .realizationEstates').invoke('show');
        toggleEuDotation(null, $('euDotation'));
        //$('euDotation').enable();
    }
}

function changeHufsocTheme() {
    if ($('projectTheme').value == 'Podpora procesů plánování rozvoje sociálních služeb na území Středočeského kraje - komunitní plánování') {
        $('d1').hide();
        $('d2').show();
    } else {
        $('d1').show();
        $('d2').hide();
    }
}

function textareaSizeLimit(e, limit, counterDesired) {
    if (counterDesired == null)
        counterDesired = false;
    var length = $F(this).length;
    if (length > limit)
        $(this).value = $(this).value.substring(0, limit);
    if (counterDesired) {
        if ($($(this).id + '_counter')) {
            $($(this).id + '_counter').update(' Napsáno je ' + $F(this).length + " a zbývá ještě " + (limit - $F(this).length) + ' znaků');
        } else {
            var counterText = new Element('span', {
                'id': $(this).id + '_counter'
            });
            counterText.update(' Napsáno je ' + $F(this).length + " a zbývá ještě " + (limit - $F(this).length) + ' znaků');
            $(this).insert({
                'after': counterText
            });
        }
    }
}


/*Function for Email validation */

function validateEmail(e, element) {
    if (e != undefined) {
        element = this;
    }
    var emailRegEx = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
    var errorText = '';

    var str = $(element).value;
    if(str.match(emailRegEx)){
        errorText = '';
    } else{
        errorText = ' Neplatná emailová adresa';
    }

    if ($($(element).id + '_emailerror')) {
        $($(element).id + '_emailerror').update(errorText);
    } else {
        var errorElm = new Element('span', {
            'id': $(element).id + '_emailerror',
            'class': 'error'
        });
        errorElm.update(errorText);
        $(element).insert({
            'after': errorElm
        });
    }
}

function validateNumbers(e, element) {
    if (e != undefined) {
        element = this;
    }

    var charCode = (e.which) ? e.which : e.keyCode;
    var errorText = '';

    if(isAllowedKeyForNumbersOnly(charCode)){
        errorText = '';
    } else{
        errorText = ' Zadávejte pouze čísla';
        $(element).value = cleanStringFromNonnumbers($(element).value);
        //$(element).value = $(element).value.substring(0,$(element).value.length-1)
    }

    if ($($(element).id + '_numbererror')) {
        $($(element).id + '_numbererror').update(errorText);
    } else {
        var errorElm = new Element('span', {
            'id': $(element).id + '_numbererror',
            'class': 'error'
        });
        errorElm.update(errorText);
        $(element).insert({
            'after': errorElm
        });
    }
}

function cleanStringFromNonnumbers(str) {
    return str.replace(/[^\d]/g, "");
}

function isAllowedKeyForNumbersOnly(charCode) {
    //numbers
    if(charCode < 106 && charCode > 95) {
        return true;
    }

    //backspace, alt, ctrl, tab
    if (charCode==8 || charCode==17 || charCode==18 || charCode==9) {
        return true;
    }

    return false;
}

function populateBankHousesSelectBox() {
    var selectBox = $('bankHouses');
    var options = selectBox.options;

    for (var i=0; i<bankHouses.length; i++) {
        if (i==0) {
            options[selectBox.options.length] = new Option(
                bankHouses[i],
                ''
                );
            continue;
        }
        options[selectBox.options.length] = new Option(
            bankHouses[i],
            bankHouses[i].substring(0,4)
            );
    }
}

function populateBankHiddenFields(e) {
    if ($(this).options[this.selectedIndex].value.length == 4) {
        $('bankHouse').value = $(this).options[this.selectedIndex].text.substring(7);
        $('bankCode').value = $(this).options[this.selectedIndex].value;
    }
}

function selectSelectboxValue(element, value) {
    $$('select#' + element.id + ' option').each(function(o){
        if(o.value==value){
            o.selected = true;
            $break;
        }
    });
}

function removeSelectboxValue(elementId, value) {
    console.log('test');
    $$('select#' + elementId + ' option').each(function(o){
         console.log(o);
        if(o.value==value){
             console.log(value);
            $(o).remove();
            $break;
        }
    });
}


function toggleEuDotation(e, element) {
    if (e != undefined) {
        element = this;
    }
    if (!$('euDotationFieldset') || !$(element)) {
        return false;
    }
    if ($(element).checked) {
        $('euDotationFieldset').appear();
    } else {
        $('euDotationFieldset').hide();
    }
}

function enableIvestmentFields(e, element) {
    if (e != undefined) {
        element = this;
    }

    if (element.selectedIndex == undefined) {
        return false;
    }

    if ($(element).options[element.selectedIndex].value == 'investiční') {
        enableWrite(investmentElementsId);
        disableWrite(nonInvestmentElementsId);
        enterValueToFields(nonInvestmentElementsId, '0');
    } else if ($(element).options[element.selectedIndex].value == 'neinvestiční') {
        disableWrite(investmentElementsId);
        enableWrite(nonInvestmentElementsId);
        enterValueToFields(investmentElementsId, '0');
    } else {
        enableWrite(nonInvestmentElementsId);
        enableWrite(investmentElementsId);
    }
}

function enableWrite(elmIds) {
    for (var i=0; i<elmIds.length; i++) {
        if ($(elmIds[i])) {
            //$(elmIds[i]).enable();
            $(elmIds[i]).removeAttribute('readonly');
            $(elmIds[i]).removeClassName('disabled');
        }
    }
}

function disableWrite(elmIds) {
    for (var i=0; i<elmIds.length; i++) {
        if ($(elmIds[i])) {
            //$(elmIds[i]).disable();
            $(elmIds[i]).setAttribute('readonly', 'true');
            $(elmIds[i]).addClassName('disabled');
        }
    }
}

function enableFields(elmIds) {
    for (var i=0; i<elmIds.length; i++) {
        if ($(elmIds[i])) {
            $(elmIds[i]).enable();
            $(elmIds[i]).removeClassName('disabled');
        }
    }
}

function disableFields(elmIds) {
    for (var i=0; i<elmIds.length; i++) {
        if ($(elmIds[i])) {
            $(elmIds[i]).disable();
            $(elmIds[i]).addClassName('disabled');
        }
    }
}

function blankFields(elmIds) {
    for (var i=0; i<elmIds.length; i++) {
        if ($(elmIds[i])) $(elmIds[i]).value = '';
    }
}

function enterValueToFields(elmIds, value) {
    for (var i=0; i<elmIds.length; i++) {
        if ($(elmIds[i])) $(elmIds[i]).value = value;
    }
}

function zipMaxLength() {
    if ($('zip')) {
        $('zip').setAttribute('maxLength', '5');
    }
    if ($('kaZip')) {
        $('kaZip').setAttribute('maxLength', '5');
    }
}

function setNumberFieldsEvents() {
    for (var i=0; i<numberElementsId.length; i++) {
        if ($(numberElementsId[i])) Event.observe(numberElementsId[i], 'keyup', validateNumbers.bindAsEventListener($(numberElementsId[i])));
    }
}

function setTextAreaMaxSizeEvents() {
    var myregexp = /maxsize-(.*?)[\s|"]/; //find maxsize-XXXX in className

    var inputElms = $$('input[class*=maxsize-]');
    var textareaElms = $$('textarea[class*=maxsize-]');

    for (var i=0; i<inputElms.length; i++) {
        var elm = inputElms[i];
        var mymatch = myregexp.exec(elm.className + ' ');
        var size = (mymatch!=null && mymatch.length>0) ? mymatch[1] : '100';
        elm.setAttribute('maxLength', size);
    }

    var elms = inputElms.concat(textareaElms);

    for (var i=0; i<elms.length; i++) {
        var elm = elms[i];
        var mymatch = myregexp.exec(elm.className + ' ');
        var size = (mymatch!=null && mymatch.length>0) ? mymatch[1] : '1000';
        Event.observe(elm, 'keyup', textareaSizeLimit.bindAsEventListener(elm,size,true));
        Event.observe(elm, 'keydown', textareaSizeLimit.bindAsEventListener(elm,size,true));
    }
}

Event.observe(window, 'load', function() {
    toggleEuDotation(null, $('euDotation'));
    if ($('filledByEmail')) Event.observe('filledByEmail', 'keydown', validateEmail.bindAsEventListener($('filledByEmail')));
    if ($('filledByEmail')) Event.observe('filledByEmail', 'keyup', validateEmail.bindAsEventListener($('filledByEmail')));
    if ($('filledByEmail') && $('filledByEmail').value != '') validateEmail(null, $('filledByEmail'));

    if ($('bankHouses')) populateBankHousesSelectBox();
    if ($('bankHouses')) Event.observe('bankHouses', 'change', populateBankHiddenFields.bindAsEventListener($('bankHouses')));
    if ($('bankHouses')) selectSelectboxValue($('bankHouses'), $('bankCode').value);

    if ($('dotationType')) Event.observe('dotationType', 'change', enableIvestmentFields.bindAsEventListener($('dotationType')));
    if ($('dotationType') && $('dotationType').value != '') enableIvestmentFields(null, $('dotationType'));

    if ($('euDotation')) Event.observe('euDotation', 'click', toggleEuDotation.bindAsEventListener($('euDotation')));
    if ($('euDotation') && $('euDotation').value != '') toggleEuDotation(null, $('euDotation'));

    zipMaxLength();
    setNumberFieldsEvents();
    setTextAreaMaxSizeEvents();
});

var investmentElementsId = ["reqInvAmount", "ownInvAmount", "expInvAmount"];
var nonInvestmentElementsId = ["reqNonInvAmount", "reqNonInvAmount", "expNonInvAmount", "expNonInvAmount1", "expNonInvAmount2", "expNonInvAmount3", "ownNonInvAmount", "reqNonInvAmount1", "reqNonInvAmount2", "reqNonInvAmount3"];
var numberElementsId = ["filledByPhone", "phone", "fax", "birthNumber" ,"appIc-subject", "appIc-private", "zip", "kaZip", "reqInvAmount", "ownInvAmount", "expInvAmount", "reqNonInvAmount", "reqNonInvAmount", "expNonInvAmount", "expNonInvAmount1", "expNonInvAmount2", "expNonInvAmount3", "ownNonInvAmount", "bankPrefix", "bankAccount"]

var bankHouses = [  "Vyberte banku", "0100 - Komerční banka, a.s.",
"0300 - Československá obchodní banka, a.s.",
"0600 - GE Money Bank, a.s.",
"0710 - Česká národní banka",
"0800 - Česká spořitelna, a.s.",
"2010 - Fio banka, a.s.",
"2020 - Bank of Tokyo-Mitsubishi UFJ (Holland) N.V. Prague Branch, organizační složka",
"2030 - AKCENTA, spořitelní a úvěrní družstvo",
"2040 - UNIBON - spořitelní a úvěrní družstvo",
"2050 - WPB Capital, spořitelní družstvo",
"2060 - CITFIN, SPOřITELNí DRUžSTVO",
"2070 - Moravský Peněžní Ústav - spořitelní družstvo",
"2100 - Hypoteční banka, a.s.",
"2200 - Peněžní dům, spořitelní družstvo",
"2210 - Evropsko-ruská banka, a.s",
"2220 - Artesa, spořitelní družstvo",
"2230 - AXA Bank Europe, organizační složka",
"2240 - Poštová banka, a.s., pobočka Česká republika",
"2250 - Záložna CREDITAS, spořitelní družstvo",
"2600 - CITIBANK EUROPE PLC",
"2700 - UniCredit Bank Czech Republic, a.s.",
"3500 - ING Bank N.V.",
"4000 - LBBW Bank CZ a.s. (dříve BAWAG  Bank CZ a.s.)",
"4300 - Českomoravská záruční a rozvojová banka, a.s.",
"5000 - Crédit Agricole Corporate and Investment Bank S.A. Prague, organizační složka",
"5400 - The Royal Bank of Scotland N.V.",
"5500 - Raiffeisenbank a.s.",
"5800 - J and T Banka, a.s.",
"6000 - PPF banka a.s.",
"6100 - Banco Popolare Česká republika, a.s.",
"6200 - COMMERZBANK AG, pobočka Praha",
"6210 - BRE Bank S.A. (mBank)",
"6300 - Fortis Bank SA/NV, pobočka ČR",
"6700 - Všeobecná úverová banka, a.s., pobočka Praha",
"6800 - Volksbank CZ, a.s",
"7910 - Deutsche Bank AG Filiale Prag",
"7940 - Waldviertler Sparkasse von 1842 AG",
"7950 - Raiffeisen stavební spořitelna a.s.",
"7960 - Českomoravská stavební spořitelna a.s.",
"7970 - Wüstenrot-stavební spořitelna a.s.",
"7980 - Wüstenrot hypoteční banka a.s.",
"7990 - Modrá pyramida stavební spořitelna, a.s.",
"8030 - Raiffeisenbank im Stiftland eG pobočka Cheb, odštěpný závod",
"8040 - Oberbank AG pobočka Česká republika",
"8060 - Stavební spořitelna České spořitelny, a.s.",
"8090 - Česká exportní banka, a.s.",
"8150 - HSBC Bank plc - pobočka Praha"
];


//DESIGN
Event.observe(window, 'load', function() {
    renderInLineHelp();
});

function renderInLineHelp() {
    var inputElms = $$('li > input[class*=inline-help]');
    for (var i=0; i<inputElms.length; i++) {
        var inputElm = inputElms[i];
        var parent = $(inputElm).up();
        var title = $(inputElms[i]).readAttribute('title');

        if (title!=null && title!='') {
            var imgHelpElm = new Element('img', {
                'src': '/' + getPathElement(1) + '/images/info-20x20.png',
                'alt': 'info-ico',
                'title': title
            });
            $(parent).addClassName('inline-help');

            $(inputElm).insert({
                'after': imgHelpElm
            });
        }
    }
}

// TEST
Event.observe(window, 'load', function() {
    if (window.location.hostname == 'localhostx') {
        if ($('filledByName')) $('filledByName').value = 'filledByName';
        if ($('filledBySurname')) $('filledBySurname').value = 'filledBySurname';
        if ($('filledByPhone')) $('filledByPhone').value = 'filledByPhone';
        if ($('filledByEmail')) $('filledByEmail').value = 'pohoraly@gmail.com';
        if ($('dotationAmount')) $('dotationAmount').value = '1100000';
        if ($('ownAmount')) $('ownAmount').value = '200000';
        if ($('totalAmount')) $('totalAmount').value = '1300000';

        if ($('nazevPoskytovaneSluzby')) $('nazevPoskytovaneSluzby').value = 'nazevPoskytovaneSluzby';
        if ($('mistoPoskytovaniSluzby')) $('mistoPoskytovaniSluzby').value = 'mistoPoskytovaniSluzby';
        if ($('oblastPusobnosti')) $('oblastPusobnosti').value = 'oblastPusobnosti';
    }
});

//CONTEXT PATH
function getPathElement(partIndex) {
    var pathArray = window.location.pathname.split( '/' );
    
    return pathArray[partIndex];
}


//CUSTOM JS FOR SELECTED FUNDS
//
//SVC
Event.observe(window, 'load', function() {
    if (getPathElement(2)=='svcvsa') {
        if ($('projectTheme')) Event.observe('projectTheme', 'change', enableIvestmentFields.bindAsEventListener($('projectTheme')));
        if ($('projectTheme') && $('projectTheme').value != '') enableIvestmentFields(null, $('projectTheme'));

        if ($('projectTheme')) Event.observe('projectTheme', 'change', toggleProjectThemeDotationType.bindAsEventListener($('projectTheme')));

        if ($('dotationType')) Event.observe('dotationType', 'change', toggleProjectThemeDotationType.bindAsEventListener($('dotationType')));
    }
});

//SVC
function toggleProjectThemeDotationType(e, element) {
    if (e != undefined && e!=null) {
        element = this;
    }
    $('projectTheme').selectedIndex = element.selectedIndex;
    $('dotationType').selectedIndex = element.selectedIndex;
}

