dojo.provide("igldesigns.guestbook");

igldesigns.guestbook.checkForm = function() {
    var form = dijit.byId("GuestbookForm");
    
    if (form.validate()) {
      igldesigns.guestbook.checkCaptcha();
      return true;
    } else {
        return false;
    }
}

igldesigns.guestbook.checkCaptcha = function() {
    var captcha = dijit.byId('captcha').value;
    igldesigns.infoOverlay.registerText('Kontroluji správnost captchy.', '', 'Captcha se neshoduje!');
    igldesigns.infoOverlay.showText('check');
    
    dojo.xhrGet( {
        url : "/ajax/captcha.php",
        sync : "true",
        handleAs : "text",
        load : function(data) {
            if (data == MD5(captcha)) {
                igldesigns.guestbook.sendForm();
                return true;
            } else {
                igldesigns.infoOverlay.showText('error');
                igldesigns.infoOverlay.fadeOut();
                return false;
            }
        }
    });
    
}

igldesigns.guestbook.refreshCaptcha = function(event) {
    event.preventDefault()
    var captcha = dojo.byId("captchaimg");
    var src = captcha.src;
    dojo.attr(captcha, 'src', src+ "?" + new Date().getTime());         
}

igldesigns.guestbook.sendForm = function() {
    var JSONData = {
        text: dojo.byId("text").value,
        nick: dojo.byId("nickname").value
    };
    
    igldesigns.infoOverlay.registerText('Odesílám data na server.', 'Vše proběhlo v pořádku.<br/>Stránka se nyní aktualizuje.', 'Stala se chyba!');
    igldesigns.infoOverlay.showText('check');
    
    dojo.xhrGet( {
        url : "/ajax/guestbook.php",
        sync : "true",
        handleAs : "text",
        content: JSONData,
        
        load: function(data) {
            console.log(data);
            igldesigns.infoOverlay.showText(data);
            igldesigns.infoOverlay.fadeOut();
            
            // delete form
            dojo.byId("text").value = '';
            dojo.byId("nickname").value = '';
            dojo.byId("captcha").value = '';
            
            window.location.reload();
        }
    });
}

igldesigns.guestbook.paging = function(event, activePage) {
    if (event) {
        event.preventDefault();
    }
    
    var textsPerPage = 10;
    var pages = this.getNumPages(textsPerPage);

    var pagingBox = dojo.query('div.page_navigation');
    var pagingBoxCount = pagingBox.length;
    
    // refresh pagingBox
    for(var j=0; j<pagingBoxCount; j++) {
        var refresh = dojo.create("span");
        dojo.place(refresh, pagingBox[j], 'only');
    }
    
    for (var i=1; i<=pages; i++) {
        var a = dojo.create("a");
        
        if (activePage == i) {
            dojo.attr(a ,'class', 'page_link active_page');
        } else {
            dojo.attr(a ,'class', 'page_link');
        }
        dojo.attr(a ,'href', '#');
        dojo.attr(a ,'onclick', 'igldesigns.guestbook.paging(event, '+i+')');
        a.innerHTML = i;
        
        for(var j=0; j<pagingBoxCount; j++) {
            dojo.place(a, pagingBox[j], 'last');
            
            if (i == 20) {
                var br = dojo.create("br");
                dojo.place(br, pagingBox[j], "last");
            }
        }
    }
    
    igldesigns.guestbook.getTexts(activePage, textsPerPage);
    //<a class="page_link active_page" href="#" onclick="igldesigns.guestbook.goToPage(0)" longdesc="0">1</a>
}

igldesigns.guestbook.getTexts = function(activePage, textsPerPage) {
    var texts = dojo.query('div.text');
    var textsCount = texts.length;
    
    var lastIndex = (activePage * textsPerPage);
    var firstIndex = lastIndex-textsPerPage;
    
    for(var i=0; i<textsCount; i++) {
        if (i < lastIndex && i >= firstIndex) {
            dojo.style(texts[i], {"display": "block"});
        } else {
            dojo.style(texts[i], {"display": "none"});
        }
    }
    
}

igldesigns.guestbook.getNumPages = function(textsPerPage) {
    var texts = dojo.query('div.text');
    var textsCount = texts.length;
    
    var pages = Math.ceil(textsCount/textsPerPage);
    return pages;
}
