Event.observe(window, 'load', init, false);

function init(){
// inicijalizacija na javascriptite


ukradiformsubmit();

// ako ima div so id='poraka' t.e. ako ima sesiska poraka napraj ja prvo da svetne i posle 
// da ischezne posle 2 sekundi.
    var sesporaka = $('sesporaka')
    if (sesporaka) {
            setTimeout("Effect.Fade('sesporaka')",5000);
    }
}

function ukradiformsubmit() {
// "ukradi" im go na site form elmenti oznacheni kako formprvcekor eventot i napraj gi ajax kompatibilni. :)
//    var sitef = document.getElementsByTagName('form')
    var sitef = document.getElementsByClassName('formprvcekor')
    for (i=0; i<sitef.length; i++) {
        Event.observe($(sitef[i]), 'submit', procesiraj, false);
    }
}

function keshnaslikite() {
/* im prai load na slikite da ne mi se kochat efektite */
    var slikite = new Array(
    '/media/sliki/prodzirno.gif',
    '/media/sliki/prodzirno.png',
    '/media/sliki/vote-active.gif',
    '/media/sliki/vote-active-svezhi.gif',
    '/media/sliki/pointer.gif'
    );

    for (var i = 0; i < slikite.length; ++i) {
        var s = new Image();
        s.src = slikite[i];
    }
    return true;
}

function unpopp(){
    poppDiv=$('poppDiv');
    if(poppDiv) { poppDiv.remove(); poppDiv=false;   }
}

function popup(id) {
unpopp();
element = $('str_'+id);
element.innerHTML += '<div id="poppDiv" class="vnimanie"><div><p><a href="/korisnik/najava/">Најавете се</a> или <a href="/korisnik/registracija/">регистрирајте се</a> за да гласате.<a class="zatvori" href="javascript:unpopp()"><img width="16px" height="16px" src="/media/sliki/iks.gif" class="iks" alt="Затвори"></a></p></div></div>';
return(false);
}

function najavapopup() {
    unpopp();
    $('heder').innerHTML += '<div class="najavapopup" style="display:none;" id="poppDiv"><form class="najavaform" id="najavaform" method="post" action="/korisnik/najava/"><fieldset><label for="username">Корисничко име:</label><input name="username" type="text" id="username" class="najavaform" /><br /><br /><label for="password">Лозинка:</label><input name="password" type="password" id="password" class="najavaform" /><input type="hidden" name="next" value="'+window.location.pathname+'" /><input type="hidden" name="odglavna" value="odglavna"><br /><br /><input type="submit" value="Најава" class="najavaformsubmit" id="pratikopche"></fieldset></form><a href="javascript:unpopp()"><img src="/media/sliki/iks.gif" alt="Затвори" class="iks"></a></div>';
//    Effect.Appear($('poppDiv'));
    Effect.Appear('poppDiv', { duration: 1.0, afterFinish: function() { $('username').focus();} })
    return(false);
}

function regpopup() {
    unpopp();
    $('heder').innerHTML += '<div class="regpopup" style="display:none;" id="poppDiv"><form id="najavaform" class="najavaform" method="post" action="javascript:registracija()"><fieldset><label for="eposhta">Е-пошта:</label><span id="for_eposhta"></span><input name="eposhta" type="text" id="id_eposhta" class="najavaform sffocus" /><br /><br /><input type="button" onclick="javascript:registracija()" class="najavaformsubmit" value="Прати" id="pratikopche"></fieldset></form><p>Внесете е-пошта на која ќе ви пратиме информации за регистрација.</p><a href="javascript:unpopp()"><img src="/media/sliki/iks.gif" alt="Затвори" class="iks"></a></div>';
    Effect.Appear('poppDiv', { duration: 1.0, afterFinish: function() { $('id_eposhta').focus();} })
    return(false);
}

function registracija() {
        var ajaxloaderhtml = '<img src="/media/sliki/ajax-loader.gif" id="ajaxloader" />';
        new Insertion.Before($('pratikopche'), ajaxloaderhtml);
        $('for_eposhta').remove()
        $('pratikopche').remove()
        var eposhta = 'eposhta='+$F('id_eposhta');
        $('najavaform').disable();
        var myAjax = new Ajax.Request('/korisnik/registriraj/ajax/',{
            method: 'post', 
            parameters: eposhta, 
            onSuccess: function(req) {
                    $('poppDiv').innerHTML = req.responseText; 
                    $('id_eposhta').focus(); 
                    },
            onFailure: function() { alert('Greshka so serverot.Agrhhh. :('); }
            });

        $('id_eposhta').focus();
}

function preostanatiznaci(poleto, rezultatot, max) {
    if (poleto.value.length > max) 
        poleto.value = poleto.value.substring(0, max);
    else 
        $(rezultatot).innerHTML= max - poleto.value.length;
    return true;
}

function procesiraj(e) {
/*
Procesira formata za greshki.
view-to treba da vrati JSON format koj gi ima site greshki za formata.
Jas odam edna po edna i gi prikazhuvam
*/

    // poshto ne sekoga eventot e na samata forma tuku mozhe na nekoe od 
    // nejzinite elementi pa vaka ja vrakjam samata forma
    var forma = Event.findElement(e, 'form'); 
    var ajaxurl = forma.action; 
    var parametri = forma.serialize(true); // zemi gi od formata pred da ja disabluvam
    forma.disable(); // da ne ja prakja formata po pet pati.


    // skrij go dugmeto za prakjanje i na negovo mesto stai ajaxloader
    var pratikopche = forma.getInputs('submit')[0]; // vo sushtina prvoto submit
    ajaxloaderhtml = '<div id="ajaxloader"><img src="/media/sliki/ajax-loader.gif" />Вчитувам...</div>';
    new Insertion.Before(pratikopche, ajaxloaderhtml);
    pratikopche.hide() 
//    forma.enable();
    // ischisti gi dosega greshkite (elementite so class=errorlist)
    var stari = forma.getElementsByClassName('errorlist');
    for (i=0; i<stari.length; i++) { stari[i].remove(); }

    var myAjax = new Ajax.Request(ajaxurl,
        {
        method: 'post',
        parameters: parametri, 
                    onSuccess: rezultat,
//                    onLoaded: function() {  /*$('ajaxloader').remove(); pratikopche.show()*/ },
                    onFailure: function(req) { alert('Greshka kaj serverot. Prevchitajte ja stranicata i probajte pak. :('); $('ajaxloader').remove(); pratikopche.show(); forma.enable(); } } );

    function rezultat(req) {
        // evauliraj go tekstot shto go vrati vo js object
        var greski = eval('(' + req.responseText + ')');

        // ako ima OK togash evauliraj ja negovata vrednost t.e. izvrshi go.
        // ako nema OK znachi ima greski pa prikazhi gi.
        if ( greski.OK ){
            eval(greski.OK);
        } else {
            // enabliraj ja formata pred da manipulirash so nejze.
            forma.enable();
            // napraj go object hash za da ima key:value
            // i vmetni ja greskata vo for_key elementot
            var i = 1;
            $H(greski).each(function(pair) {
                $('for_'+pair.key).innerHTML = '<ul class="errorlist"><li>'+pair.value+'</li></ul>';
                // fokusiraj na prvoto so greshki.
                if (i==1) { $('id_'+pair.key).focus(); }
                i++;
                // efekt da mu privleche vnimanie ama vo IE e sranje dava saatche deka raboti
                //new Effect.Highlight('for_'+pair.key, {duration: 2});

            });
            // ova tuka samo posle greshki da go vrati dugmeto poshto
            // koga nema greshki ili redirektiram ili ja trgam formata i glupo izgleda 
            // da go vrakja prvo kopcheto pa posle da go prai toa, poshto malku kasni ne 
            // redirektira odma.
            //forma.enable();
            $('ajaxloader').remove(); pratikopche.show();
        }
    }
    // da ne go prosledi vistinskiot submit
    Event.stop(e);
}

function glasaj(stranicaid){
    /* koga kje glasa   
        - Trgni go linkot za glasanje od linkza_stranicaid
        - Skrij go brojot na glasovi poshto kje se azhiraat.
        - Smeni ja clasata na divot vo "glasano"
        - Prati na /glasaj/ i ocehkuvaj da ti vrati zamena za div-ot
        - Koga kje dojde zamenata smeni go.
    */
        var storijadiv = $('storija_'+stranicaid)
        var linkza = $('linkza_'+stranicaid)

        linkza.blur() // ona accesibility okolu elementot shto go stavaat site go trgne koga gubi fokus
        linkza.href="javascript:void(0)"
        new Effect.Opacity('glasoviza_'+stranicaid, {duration:0.5, from:1.0, to:0.0});
        new Effect.Opacity('akcijaza_'+stranicaid, {duration:0.5, from:1.0, to:0.0});
        storijadiv.toggleClassName('glasano')
        

        var myAjax = new Ajax.Request(
        '/glasaj/',
        {
            method: 'post',
            parameters: 'stranicaid='+stranicaid,
            onSuccess: function(req) { storijadiv.innerHTML = req.responseText;},
            onFailure: function () { alert('Agrh...'); } // demek sum mu vratil nekoja http greshka
        });
}

function getPageSize(){

    var xScroll, yScroll;

    if (window.innerHeight && window.scrollMaxY) {
        xScroll = document.body.scrollWidth;
        yScroll = window.innerHeight + window.scrollMaxY;
    } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
        xScroll = document.body.scrollWidth;
        yScroll = document.body.scrollHeight;
    } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
        xScroll = document.body.offsetWidth;
        yScroll = document.body.offsetHeight;
    }

    var windowWidth, windowHeight;
    if (self.innerHeight) { // all except Explorer
        windowWidth = self.innerWidth;
        windowHeight = self.innerHeight;
    } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
        windowWidth = document.documentElement.clientWidth;
        windowHeight = document.documentElement.clientHeight;
    } else if (document.body) { // other Explorers
        windowWidth = document.body.clientWidth;
        windowHeight = document.body.clientHeight;
    }

    // for small pages with total height less then height of the viewport
    if(yScroll < windowHeight){
        pageHeight = windowHeight;
    } else {
        pageHeight = yScroll;
    }

    // for small pages with total width less then width of the viewport
    if(xScroll < windowWidth){
        pageWidth = windowWidth;
    } else {
        pageWidth = xScroll;
    }


    arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)
    return arrayPageSize;
}


function problemPrikazhi(stranicaid,naslov) {
    /* Prikazhuva na samata strana formular za prijavuvanje na problem so nekoja stranica */

    var nizcela = $('nizcela');
    var goleminastr = getPageSize();
    naslov = naslov.escapeHTML();

    shto = '<div id="problem"><form class="formprvcekor" id="formprvcekor" name="formprvcekor" method="post" action="/problem/"><fieldset width="90%"><legend>Кој е проблемот со статијава?</legend><label>Статијата е <b>„'+naslov+'“</b>.</label><span id="for_kojproblem"></span><ul><li><label><input type="radio" id="id_kojproblem_0" value="Duplikat" name="kojproblem" /> Дупликат статија</label></li><li><label><input type="radio" id="id_kojproblem_1" value="Nedostapna" name="kojproblem" /> Линкот е недостапен</label></li><li><label><input type="radio" id="id_kojproblem_2" value="Nesoodvetna" name="kojproblem" /> Во несоодветна категорија</label></li><li><label><input type="radio" id="id_kojproblem_3" value="Netochna" name="kojproblem" /> Неточна информација</label></li><li><label><input type="radio" id="id_kojproblem_4" value="Spam" name="kojproblem" /> Спам</label></li><li><label><input type="radio" id="id_kojproblem_5" value="Glupa" name="kojproblem" /> Не ми се допаѓа</label></li></ul><input type="hidden" name="stranicaid" value="'+stranicaid+'"></fieldset><p class="pomosh">Пријавете го проблемот со статијава. Направете го Кајмакот поубаво место.</p><br /><input type="submit" value="Пријави" class="formprvcekorsubmit" id="pratikopche"></form><a class="problem" href="javascript:problemSkrij()"><img width="16px" height="16px" src="/media/sliki/iks.gif" class="iks" alt="Затвори"></a></div>';

    new Insertion.After(nizcela, shto);

    ukradiformsubmit(); // poshto na pochetok ne postoi a sega postoi

    var problem = $('problem');

    offset = window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop;

    nizcela.style.height = goleminastr[1] + 'px';
    problem.style.top = 100 + offset + 'px';
    nizcela.style.display = 'block';
    problem.style.display = 'block';
}

function problemSkrij() {
    $('problem').remove()
    $('nizcela').style.display = 'none';
}


function prikaziKomentar(komentarid,koekliknato) {
    /* Го прикажува комнетарот кој е под прагот. */
    Effect.SlideDown('kom'+komentarid, { afterFinish: function() { 
                                        koekliknato.style.display='none';
                                        $('skrijkom'+komentarid).style.display='inline';
                                        }
                                        }
                    );
    return false; 
}

function skrijKomentar(komentarid,koekliknato) {
    /* Го крие коментарот кој е под прагот */
    Effect.SlideUp('kom'+komentarid, { afterFinish: function() {
                                        koekliknato.style.display='none';
                                        $('prikazikom'+komentarid).style.display='inline'
                                                                }
                                        }
                    );
    return false;
}

function komentarplus(komentarid) {

        komentariglasovidiv = $('komentariglasovi'+komentarid);

        var myAjax = new Ajax.Request(
        '/komentari/plus/',
        {
            method: 'post',
            parameters: 'komentarid='+komentarid,
            onSuccess: function(req) { komentariglasovidiv.innerHTML = req.responseText;},
            onFailure: function () { alert('Agrh...'); } // demek sum mu vratil nekoja http greshka
        });    

}

function komentarminus(komentarid) {

        komentariglasovidiv = $('komentariglasovi'+komentarid);

        var myAjax = new Ajax.Request(
        '/komentari/minus/',
        {
            method: 'post',
            parameters: 'komentarid='+komentarid,
            onSuccess: function(req) { komentariglasovidiv.innerHTML = req.responseText;},
            onFailure: function () { alert('Agrh...'); } // demek sum mu vratil nekoja http greshka
        });
}

function odgovori(komentarid, username){
    $('id_tatkoid').value = komentarid;
    $('novreply').innerHTML = 'Како одговор на коментар од '+username+'. <small>(<a href="." onclick="return(otkaziodgovor())">откажи</a>)</small>';
    $('id_tekst').focus();
    return false;
}

function otkaziodgovor() {
    $('id_tatkoid').value = 0;
    $('novreply').innerHTML = '';
    return false;
}
