﻿String.prototype.startsWith = function(str)
{return (this.match("^"+str)==str)}

$(document).ready(function () {

    //external links
    $("a[href^='http']").attr('target', '_blank');

});

//galerija
function initGallery() {
    $(window).load(_initGallery);
}
function _initGallery() {
    var _gallerybase = ".gallery";
    var _gallery = ".gallery div";
    var _uptArrow = ".gallery .up-arrow";
    var _downArrow = ".gallery .down-arrow";
    var _step = 230;
    var _duration = 500;
    var _liPadding = 3;
    var _visibleImages = 2;

    $(_gallerybase).fadeIn();

    var galleryHeight = ($(_gallery + " li").height() + _liPadding) * Math.min(_visibleImages, $(_gallery + " li").length) - _liPadding;
    $(_gallery).css('height', galleryHeight);

    var _gHidth = galleryHeight + _liPadding;
    var _liHidth = $(_gallery + " li").height() + _liPadding;
    var _liSum = $(_gallery + " li").length * _liHidth;
    var _margin = 0;
    var f = 0;

    _step = _gHidth;

    $(_downArrow).click(function () {
        if (_liSum - _gHidth <= _margin + _step) {
            if (f == 0) {
                _margin = _liSum - _gHidth
                f = 1;
            } else {
                _margin = 0;
                f = 0
            }
        }
        else _margin = _margin + _step;
        $(_gallery + " ul").animate({ marginTop: -_margin + "px" }, { queue: false, duration: _duration });
        return false;
    });
    $(_uptArrow).click(function () {
        _margin = _margin - _step;
        if (_margin < 0) _margin = 0;
        $(_gallery + " ul").animate({
            marginTop: -_margin + "px"
        }, {
            queue: false, duration: _duration
        });
        return false;
    });
}

//animacije za ajax load
function ajaxanim_start(e) {
    e.animate({ 'opacity': 0.4 });
    if (e.css('position') != 'absolute') e.css('position', 'relative');
    e.append('<div class="ajax-loader" />')
    e.find('.ajax-loader').addClass(e.height() < 50 ? 'ajax-loader-small' : '').css('height', e.height()).css('width', e.width());
}
function ajaxanim_stop(e) {
    e.find('.ajax-loader').remove();
    e.stop().animate({ 'opacity': 1 });
}

function getJSON(url, data, success, error) {
    $.ajax({
        "url": url,
        "dataType": "json",
        "data": data,
        "success": success,
        "error": error,
        "timeout": 8000
    });
}

//top lista ajax naslovnica
function toplista_get(tlid, find) {
    ajaxanim_start($('#toplista'));
    getJSON('/', { "n": "tl_get", "tlid": tlid, "find": find }, function (json) {
        $('#toplista').html(json.html);
        ajaxanim_stop($('#toplista'));
    }, function (json, status) {
        ajaxanim_stop($('#toplista'));
        alert('Greška! Osvježite stranicu. (' + status + ')');
    });
    return false;
}

var toplista_voted = false;
function toplista_vote(sender, tlid, id) {
    if (toplista_voted) {
        toplista_get(tlid, '');
    }
    else {
        ajaxanim_start($(sender));
        getJSON("/shared/tasks.aspx", { "n": "tl_vote", "tlid": tlid, "id": id }, function (json) {
            ajaxanim_stop($(sender));
            if (json.error != null) {
                if (json.error == 'votedtoday')
                    alert('Glasanje je moguće jednom dnevno!');
                else if (json.error == 'loginfirst')
                    alert('Prijavi se prije glasanja!');
                else
                    alert('Greška! (' + json.error + ')');
            }
            else {
                var glasovi = $(sender).parent().find('span');
                glasovi.text(parseInt(glasovi.text()) + 1);
                toplista_voted = true;
                $('#najigre ul li .glasovi .btn').css('visibility', 'hidden');
                toplista_sort();
            }
        }, function (json, status) {
            ajaxanim_stop($(sender));
            alert('Pokušaj ponovo. (' + status + ')');
        });
    }
    return false;
}

function toplista_sort() {
    var firstId = $('#toplista ul li .idvalue:first').text();
    var total = $('#toplista ul li').length;
    var igre = $('#toplista ul li');
    for (var i = 0; i < total - 1; i++) {
        for (var j = i; j < total; j++) {
            if (i != j) {
                var igraA = $(igre[i]);
                var igraB = $(igre[j]);
                if (parseInt(igraA.find('.glasovi span').text()) < parseInt(igraB.find('.glasovi span').text())) {
                    switchText(igraA.find('.idvalue'), igraB.find('.idvalue'));
                    switchText(igraA.find('h3'), igraB.find('h3'));
                    switchText(igraA.find('.platforma'), igraB.find('.platforma'));
                    switchText(igraA.find('.glasovi'), igraB.find('.glasovi'));
                }
            }
        }
    }
    if (firstId != $('#toplista ul li .idvalue:first').text()) {
        sender = $('#toplista ul li.first .image img');
        getJSON("/shared/tasks.aspx", { "n": "tl_image", "id": $('#toplista ul li .idvalue:first').text() }, function (json) {
            sender.attr('src', json.src);
            ajaxanim_stop($(sender));
        }, function (json, status) {
            ajaxanim_stop($(sender));
            alert('Pokušaj ponovo. (' + status + ')');
        });
    }
}

function switchText(obj1, obj2) {
    var s = obj1.html();
    obj1.html(obj2.html());
    obj2.html(s);
}

//anketa ajax naslovnica
function anketa_get(aid, find) {
    ajaxanim_start($('#anketa_container'));
    getJSON('/', { "n": "an_get", "aid": aid, "find": find }, function (json) {
        $('#anketa_container').html(json.html);
        ajaxanim_stop($('#anketa_container'));
        if ($('#anketa .nav .next').css('visibility') != 'hidden') {
            anketa_rezultati();
        }
    }, function (json, status) {
        ajaxanim_stop($('#anketa_container'));
        alert('Pokušaj ponovo. (' + status + ')');
    });
    return false;
}

function anketa_rezultati() {
    $('#anketa_container ol li span.rezultat').fadeIn();
    $('#anketa_container ol li input.radio').fadeOut();
    $('#anketa_container .buttons').fadeOut();
    $('#anketa_container ol li span.pozadina').each(function () {
        var percent = 0;
        var percent_list = $(this).attr('class').split(' ');
        for (var i = 0; i < percent_list.length; i++) {
            if (percent_list[i].startsWith('perc')) {
                percent = percent_list[i].replace('perc', '');
                break;
            }
        }
        $(this).animate({ 'width' : percent + '%' });
    });
    return false;
}

function anketa_vote(sender, aid) {
    var id = $('#anketa_container ol li input.radio:checked').val();
    if (id == null) return false;
    ajaxanim_start($(sender));
    getJSON("/shared/tasks.aspx", { "n": "an_vote", "aid": aid, "id": id }, function (json) {
        ajaxanim_stop($(sender));
        if (json.error != null) {
            if (json.error == 'votedtoday')
                alert('Već si glasao/la!');
            else if (json.error == 'loginfirst')
                alert('Prijavi se prije glasanja!');
            else
                alert('Greška! (' + json.error + ')');
        }
        else {
            anketa_rezultati();
        }
    }, function (json, status) {
        ajaxanim_stop($(sender));
        alert('Pokušaj ponovo. (' + status + ')');
    });
    return false;
}

function initOcjena(id) {
    var sender = $('#ocjeni');
    $('.ocjena .slider li').mouseenter(function () {
        $('#ocjena2').text($(this).text());
        $('#pointer').css('left', $(this).position().left);
        $(this).css('background-color', '#fff');
        $(this).prevAll().css('background-color', '#fff');
        $(this).nextAll().css('background-color', '#424045');
    }).click(function () {
        var ocjena = parseInt($(this).text());
        ajaxanim_start($(sender));
        getJSON("/shared/tasks.aspx", { "n": "ei_ocjena", "id": id, "o": ocjena }, function (json) {
            ajaxanim_stop($(sender));
            if (json.error != null) {
                if (json.error == 'loginfirst')
                    alert('Prijavi se prije ocjenjivanja!');
                else
                    alert('Greška! (' + json.error + ')');
            }
            else {
                $('#ocjeni').animate({ 'opacity': 0 }, function () { $(this).css('visibility', 'hidden'); });
                var newocjena = (parseInt($('#o1').val()) + ocjena) / (parseFloat($('#o2').val()) + 1);
                $('#ocjena1').text(newocjena.toFixed(1).replace('.', ','));
            }
        }, function (json, status) {
            ajaxanim_stop($(sender));
            alert('Pokušaj ponovo. (' + status + ')');
        });
        return false;
    });
}

function initRadGlasaj(s) {
    $('#radovi ul li .btn').click(function () {
        var id = parseInt($(this).attr('data-id'));
        return radGlasaj(this, s, id);
    });
}

function radGlasaj(sendr, s, id) {
    var sender = $(sendr);
    ajaxanim_start(sender);
    getJSON("/shared/tasks.aspx", { "n": "er_ocjena", "id": id, "s": s }, function (json) {
        ajaxanim_stop(sender);
        if (json.error != null) {
            if (json.error == 'loginfirst')
                alert('Prijavi se prije glasanja!');
            else
                alert('Greška! (' + json.error + ')');
        }
        else {
            sender.prev('.glasovi').text(parseInt(sender.prev('.glasovi').text()) + 1);
            sender.next('.glasovi').text(parseInt(sender.next('.glasovi').text()) + 1);
            sender.css('visibility', 'hidden');
        }
    }, function (json, status) {
        ajaxanim_stop(sender);
        alert('Pokušaj ponovo. (' + status + ')');
    });
    return false;
}

function radPrijaviToggle(sender) {
    var exp = $('.prijaviExpanded');
    if (exp.is(':visible')) {
        exp.slideUp();
    }
    else {
        if (isLoggedIn())
            exp.slideDown();
        else
            alert('Prijavi se prije slanja!');
    }
    return false;  
}

function isLoggedIn() {
    var response;
    FB.getLoginStatus(function(x) {
        if (x.status == 'connected') response = true;
        else response = false;
    });
    return response;
}

function onsearchsubmit() {
    if ($('#s').val() != '') {
        if ($('.contentwrap').length == 0) {
            $('#content > *').wrapAll('<div class="contentwrap" />')

            $('#content').append('<div><div id="googleresults"><div class="googleclose"><img src="/js/fancybox/fancy_closebox.png" alt="" /></div><div id="googlebranding"></div><div id="googleresultsinner" class="gsc-results"></div></div></div>');

            googleresults = $('#googleresults');
            googleresultsinner = $('#googleresultsinner');
            google.search.Search.getBranding($('#googlebranding')[0]);
        }
        $('.contentwrap').slideUp();
        dosearch();
    }
    return false;
}

//google search
var ws;
var googleresults;
var googleresultsinner;
var activesearch = '';

function dosearch() {
    if (ws) {
        var restrict = $('#searchform .radio:checked').val();
        var searchtxt = $('#s').val();
        var newactivesearch = searchtxt + (restrict ? restrict : '');
        if (newactivesearch != activesearch) {
            googleresults.show();
            ws.setSiteRestriction(restrict);
            ws.execute(searchtxt);
            activesearch = newactivesearch;
        }
        else {
            hidesearch();
        }
    }
}
function hidesearch() {
    if (googleresults) {
        activesearch = '';
        googleresults.hide(); 
        $('.contentwrap').slideDown();
    }
}

$(document).ready(function () {
    $('#s').bind('focus', ucitajSearch);
    $('#s').val('');
});

var googleapi = false;
function ucitajSearch() {
    $('#s').unbind('focus');
    if (!googleapi) {
        $.getScript('http://www.google.com/jsapi', function () {
            googleapi = true;
            google.load('search', '1.0', { "language": "hr", "nooldnames": true, "callback": googleloaded });
        });
    }
    else {
        google.load('search', '1.0', { "language": "hr", "nooldnames": true, "callback": googleloaded });
    }
}

function googleloaded() {

    ws = new google.search.WebSearch();
    ws.setResultSetSize(google.search.Search.LARGE_RESULTSET);

    ws.setSearchCompleteCallback(null, function (w) {

        googleresultsinner.empty();
        if (!w.results) { return; }
        for (var i = 0, len = w.results.length; i < len; i++) {
            var r = w.results[i];
            googleresultsinner.append(r.html);
        }
        $('.gs-watermark').remove();

        if (w.cursor) {
            var cn = $('<div class="gsc-cursor-box"><div class="gsc-cursor"></div></div>');
            var label = $('<div class="label">&nbsp;</div>');
            cn.append(label);
            for (var i = 0, len = w.cursor.pages.length; i < len; i++) {
                var pn = $('<div class="gsc-cursor-page"></div>');
                if (i == w.cursor.currentPageIndex) {
                    pn.addClass('gsc-cursor-current-page');
                }
                pn.html(w.cursor.pages[i].label);
                pn[0].idx = i;
                pn.bind('click', function () {
                    ws.gotoPage($(this)[0].idx);
                });
                cn.append(pn);
            }
            googleresultsinner.append(cn);

        }

        $('#googleresults .googleclose').click(hidesearch);

    }, [ws]);
}


function dcScroll(left) {
    $('.desk_crtez_holder').animate({ 'left': left });
    return false;
}

function initZid() {
    $('#zid_button').click(function () {
        var message = $('#zid_poruka').val();
        if (message != '') {
            var sender = $('.wallpost');
            ajaxanim_start(sender);
            getJSON("/shared/tasks.aspx", { "n": "wall_post", "m": message }, function (json) {
                ajaxanim_stop(sender);
                if (json.error != null) {
                    if (json.error == 'loginfirst')
                        alert('Prijavi se prije glasanja!');
                    else
                        alert('Greška! (' + json.error + ')');
                }
                else {
                    $('.wallpost').hide();
                    $('.wallpostdone').fadeIn(500);
                }
            }, function (json, status) {
                ajaxanim_stop(sender);
                alert('Pokušaj ponovo. (' + status + ')');
            });
            return false;
        }
    })
}

//radovi ajax naslovnica
function rad_get(sadrzaj, id, find) {
    var sender = (sadrzaj == 'enterdesktop') ? 'desktop-tjedna' : 'crtez-tjedna';
    var container = $('#' + sender).parent();
    ajaxanim_start(container);
    getJSON('/radovi/', { "n": "rad_get", "id": id, "find": find, "s" : sadrzaj }, function (json) {
        container.html(json.html);
        ajaxanim_stop(container);
    }, function (json, status) {
        ajaxanim_stop(container);
        alert('Greška, osvježi stranicu. (' + status + ')');
    });
    return false;
}


(function ($) {

    /*
    * Auto-growing textareas; technique ripped from Facebook
    */
    $.fn.autogrow = function (options) {

        this.filter('textarea').each(function () {

            var $this = $(this),
                minHeight = $this.height(),
                lineHeight = $this.css('lineHeight');

            var shadow = $('<div></div>').css({
                position: 'absolute',
                top: -10000,
                left: -10000,
                width: $(this).width() - parseInt($this.css('paddingLeft')) - parseInt($this.css('paddingRight')),
                fontSize: $this.css('fontSize'),
                fontFamily: $this.css('fontFamily'),
                lineHeight: $this.css('lineHeight'),
                resize: 'none'
            }).appendTo(document.body);

            var update = function () {

                var times = function (string, number) {
                    for (var i = 0, r = ''; i < number; i++) r += string;
                    return r;
                };

                var val = this.value.replace(/</g, '&lt;')
                                    .replace(/>/g, '&gt;')
                                    .replace(/&/g, '&amp;')
                                    .replace(/\n$/, '<br/>&nbsp;')
                                    .replace(/\n/g, '<br/>')
                                    .replace(/ {2,}/g, function (space) { return times('&nbsp;', space.length - 1) + ' ' });

                shadow.html(val);
                $(this).css('height', Math.max(shadow.height() + 20, minHeight));

            }

            $(this).change(update).keyup(update).keydown(update);

            update.apply(this);

        });

        return this;

    }

})(jQuery);
