/* AJAX ERROR */
$(document).ajaxError(function (request,settings,e) {
    alert('Error requesting URL: '+e.url);
});
/* URL ROUTER */
var Router = function (route,params) {
    //parametre
    if (typeof(params) == 'object') {
        var p = '';
        $.each(params,function (name,value) {
            if (p != '') {
                p += '&';
            }
            p += escape(name)+'='+escape(value);
        });
        return Router(route)+'?'+p;
    }
    else {
        return '/' + route;
    }
};
Router.route = function (route,params) {
    var url = Router(route,params);
    location.href = url;
}

/* Plugin na input hint */
jQuery.fn.inputHint = function () {
    this.each(function () {
        var self = $(this);
        if (self.is('input[type=text]')) {
            jQuery.inputHintShow(self);
            self.focus(function () {
                jQuery.inputHintHide(this);
            }).blur(function () {
                jQuery.inputHintShow(this);
            }).closest('form').submit(function () {
                jQuery.inputHintHide(self);
                return true;
            });
        }
    });
    return this;
};
jQuery.inputHintShow = function (inpt) {
    inpt = jQuery(inpt);
    if (inpt.val() == inpt.attr('title') || inpt.val() == '') {
        inpt.addClass('hint').val(inpt.attr('title'));
    }
}
jQuery.inputHintHide = function (inpt) {
    inpt = jQuery(inpt);
    inpt.removeClass('hint');
    if (inpt.val() == inpt.attr('title')) {
        inpt.val('');
    }
}

$(function(){
	//hinty vo formularoch
	$('input.hint').inputHint();
	//stylish select jquery plugin
	$('select.sselect').sSelect({
        ddMaxHeight: 150,
        minListWidth: 150
	});
	//SSELECT
    $('select.search-large').sSelect({
        width: 130,
        minListWidth: 150
	});
	$('select.search-medium').sSelect({
        width: 115,
        minListWidth: 150
	});
	$('select.search-small').sSelect({
        width: 85,
        minListWidth: 150
	});
	//topmenu
	$('#topMenu ul.menu > li').hover(function () {
        if (!$(this).hasClass('nohover')) {
            $(this).addClass('hover');
        }
    },function () {
        $(this).removeClass('hover');
    })
	//interior look
    $('a.interiorLook').click(function () {
        var interiorOverflow = $('<div></div>');
        var b = $('body');
        var w = $(window);
        interiorOverflow.css({
                position: 'absolute',
                top:0,
                left:0,
                width:b.width(),
                height:Math.max(w.height(),b.height()),
                background: '#000000',
                opacity: 0.5
        });
        interiorOverflow.appendTo($('body'));
        var interiorContainer = $('<div></div>');
        interiorContainer.css({
                position: 'absolute',
                top:(w.scrollTop() + 20) + 'px',
                left:((w.width() - 800) / 2 + w.scrollLeft()) + 'px',
                background:'#F7F4ED',
                border: '3px solid #44281C'
        });
        var closer = $('<div></div>');
        closer.css({
                textAlign:'right',
                padding:'5px 10px'
        });
        var closeTrigger = $('<a href="javascript:void(0);">zatvoriť okno</a>');
        interiorContainer.append(closer);
        closer.append(closeTrigger);
        var interiorIframe = $('<iframe width="800" frameborder="0" scrolling="no" height="800" src="'+this.href+'" />');
        interiorContainer.append(interiorIframe);
        interiorContainer.appendTo($('body'));
        //ked sa iframe loadne, zmenime jeho sirku a vysku
        interiorIframe.load(function () {
            var c = $(this).contents().find('#container');
            $(this).width(c.width()).height(c.height());
        });
        closeTrigger.click(function () {
            interiorContainer.remove();
            interiorOverflow.remove();
        });
        //VERZIA V NOVOM OKNE
        // var win = window.open(this.href, 'interiorLookWindow', 'width=790, height=800, status=0, toolbar=0, location=0, menubar=0, directories=0, resizable=1, scrollbars=0');
        // if (!win) {
        //     alert('Your browser is probably blocking popup windows');
        // } else {
        //     win.focus();
        // }
        return false;
    });
    //gallery Add
    $('a.galleryAdd, a.galleryRem').click(function (e) {
        var $this = $(this);
        //otvorime si popup
        var popup = $('<div class="popupinfo"></div>');
        var popuptext = $('<div class="descr"></div>');
        popuptext.appendTo(popup);
        popuptext.addClass('loading');
        var popupclose = $('<span class="close"></span>');
        popupclose.click(function () {
            popup.remove();
        });
        popupclose.appendTo(popup);
        popup.appendTo($('body'));
        var top = e.pageY - popup.height();
        var left = Math.round(e.pageX - (popup.width() / 2));
        if (top < 0) {
            top = 0;
        }
        if (left < 0) {
            left = 0;
        }
        var ppw = popup.width() + 40;
        popup.css({
            top: top + 'px',
            left: left + 'px'
        });
        popup.css('opacity',0.6);
        $.getJSON($this.attr('href'),function (json) {
            popuptext.removeClass('loading');
            popuptext.html(json.message);
            popup.fadeTo(200, 0.9);
            if (json.type == 'SUCCESS') {
                window.setTimeout(function () {
                    popup.fadeOut('slow', function () {
                        popup.remove();
                    })
                },2000);
            } else if (json.type == 'ERROR') {
                //doplnime do liniek
                popuptext.find('a').attr('href',function (index, attr) {
                    return attr += '?goto=' + escape($this.attr('href'));
                });
            }
        });
        //zmenime styl linky
        if ($(this).is('.galleryRem')) {
            $(this).closest('li').removeClass('galleryon').addClass('gallery');
        } else {
            $(this).closest('li').addClass('galleryon').removeClass('gallery');
        }
        return false;
    });
    //color palette toggle
    $('#colorPaletteToggle, a.colorPaletteToggle').click(function () {
        $('#colorPalette').toggle();
        $('html,body').animate({
            scrollTop: $('#colorPalette').offset().top
        },500);
        $('#colorPalette')
    });
    //vyhladavanie artistov - autocomplete
    $('#artistNameAutocomplete').autocomplete({
        source: Router('utils/artist-autocomplete/'),
        delay: 400,
        select: function (event, ui) {
            var aid = $('#artistAutocompleteId');
            if (aid.length == 0) {
                aid = $('<input type="hidden" name="artist" id="artistAutocompleteId" />');
                $(this).after(aid);
            }
            aid.val(ui.item.id);
        }
    });
});
