﻿$(document).ready(function () {
    resetLocalization();
    buildMenuGallery();
    centerMenuGallery();
    buildPortfolioGallery();
    newsCalendar();

    $(".scroll-bar-wrap-background").click(function (event) {
        var windowWidth = $(window).width();
        var scroller = $(".scroll-bar");
        var value = scroller.slider("value");
        var step = 10;

        if (event.pageX < windowWidth / 2) {
            step = step * -1;
        }

        scroller.slider("value", value + step);
    });
});

$(window).load(function () {
    resizeJQGallery();
    centerMenuGallery();
    buildWebPortfolioGallery();
});

var userLanguage = "";
var resetLocalization = function () {
    userLanguage = $("#_userLaguage_").val();
}

var centerMenuGallery = function () {
    var totalElements = $(".scroll-content-item");
    var elementCounts = totalElements.length;

    if (elementCounts > 7) {
        var selectedTitle = $(".scroll-content-item.current").find("a").attr("alt");
        var i = 0;
        var selected = 0;
        totalElements.each(function () {
            if ($(this).find("a").attr("alt") == selectedTitle) {
                selected = i;
            }
            i++;
        });

        var relative = selected / elementCounts * 100;
        $(".scroll-bar").slider("value", relative);
    }
    else {
        $(".scroll-bar").slider("value", 0);
    }
}

var buildPortfolioGallery = function () {
    $("ul.preview").jqGalScroll({ height: 650, width: 380, ease: 'easeInOutCubic', speed: 1000 });
}

var resizeJQGallery = function () {
    var firstImageHeight = $("img.slide").height();
    $(".jqGSImgContainer").css({ height: firstImageHeight });
}

var buildWebPortfolioGallery = function () {
    $('ul.gallery').galleria({
        history: true,
        clickNext: true,
        insert: '#main_image',
        onImage: function (image, caption, thumb) {
            if (!($.browser.mozilla && navigator.appVersion.indexOf("Win") != -1)) {
                image.css('display', 'none').fadeIn(1000);
            }
            caption.css('display', 'none').fadeIn(1000);
            var _li = thumb.parents('li');
            _li.siblings().children('img.selected').fadeTo(500, 0.3);
            thumb.fadeTo('fast', 1).addClass('selected');
            image.attr('title', 'Next image >>');
        },
        onThumb: function (thumb) {
            var _li = thumb.parents('li');
            var _fadeTo = _li.is('.active') ? '1' : '0.3';
            thumb.css({ display: 'none', opacity: _fadeTo }).fadeIn(1500);
            thumb.hover(
					function () { thumb.fadeTo('fast', 1); },
					function () { _li.not('.active').children('img').fadeTo('fast', 0.3); }
				)
        }
    });
}

var isChangedMonth = false;
var updateNewsList = function (year, month, inst) {
    $("#newsList").html('<img src="/Content/Img/loading_image.gif"/>');
    var noNews = $("#noNews").text();

    $.getJSON('/newslist/newsbymonth', { month: month, year: year, language: userLanguage, all: !isChangedMonth }, function (data) {
        $("#newsList").text('');
        isChangedMonth = true;

        if (data.length == 0) {
            $("#newsList").text(noNews);
        }

        for (var i = 0; i < data.length; i++) {
            var news = data[i];
            var newsText;
            newsText = '<div class="item"><h2><a id="' + news.PublishDate.replace(/./g, "") + '" href="' + news.NewsUrl + "#" + news.Name + '">' + news.Title +
                                       '</a></h2><input type="hidden" value="' + news.ShortDate + '" class="newsDate"><span class="date clear" title="' + news.NewsUrl + '" name="' + news.Name + '">' + news.PublishDate +
                                       '</span>';
            //            if (news.Image != "") {
            //                newsText = newsText + '<div class="preview"><img src="' + news.Image + ' " /></div>';
            //            }

            newsText = newsText + news.Body + '</div>'; //;+ '<div style="display:block;">' + news.Body + '</div></div>';
            if (i < 3) {
                $("#newsList").append(newsText);
            } else {
                var hidden = '<div class="hidden">' + newsText + '</div>';
                $("#newsList").append(hidden);
            }
        }

        updateCalendarCells(year, month);
    });
}

var updateCalendarCells = function (year, month) {
    var day;
    var dayCalendar;
    var url;
    var count = 0;
    var newsMonth = 0;
    var newsYear = 0;

    $(".newsDate").each(function (i) {
        var str = $(this).val();
        var dataString = str.substring(0, 10);
        day = parseFloat(dataString.substring(0, 2));
        newsMonth = parseFloat(dataString.substring(3, 5));
        newsYear = parseFloat(dataString.substring(6, 10));
        url = $(this).attr("title");
        name = $(this).attr("name");
        url = url + "#" + name;
        $(".ui-datepicker-title").find("span").each(function (i) {
            $(".ui-state-default").each(function (i) {
                dayCalendar = $(this).text();
                if (day == dayCalendar && newsMonth == month && newsYear == year) {
                    count++;
                    var blucalendar = count / 2;
                    if (blucalendar <= 3) {
                        $(this).addClass('bgNews');
                    } else {
                        $(this).addClass('borderNews');
                    }
                    $(this).attr("href", url)
                }

            });

        });
    });
}

var newsCalendar = function () {
    var now = new Date();
    updateNewsList(now.getFullYear(), now.getMonth()+1);

    $.datepicker.setDefaults($.datepicker.regional[userLanguage]);
    $("#datepicker").datepicker({
        onSelect: function (selectedDate) {
            selectedDate = selectedDate.replace(/./g, "");
            document.location($("#" + selectedDate).attr("href"));
        },
        onChangeMonthYear: updateNewsList
    });
}

/*MENU GALLERY*/
var buildMenuGallery = function () {
    //scrollpane parts
    var scrollPane = $('.scroll-pane');
    var scrollContent = $('.scroll-content');
    var scrollWrap = $('.scroll-bar-wrap');
    var ul = $('ul', scrollContent);

    var item = $('.scroll-content-item');
    var length = item.outerWidth(true) * item.length;

    scrollContent.width(length + 30);


    //build slider
    var scrollbar = $(".scroll-bar").slider({
        animate: true,
        slide: function (e, ui) {
            if (scrollContent.width() > scrollPane.width()) {
                scrollContent.css('margin-left', Math.round(ui.value / 100 * (scrollPane.width() - scrollContent.width())) + 'px');
            }
            else {
                scrollContent.css('margin-left', 0);
            }
        },
        change: function (e, ui) {
            if (scrollContent.width() > scrollPane.width()) {
                scrollContent.css('margin-left', Math.round(ui.value / 100 * (scrollPane.width() - scrollContent.width())) + 'px');
            }
            else {
                scrollContent.css('margin-left', 0);
            }
        }
    });

    //append icon to handle
    var handleHelper = scrollbar.find('.ui-slider-handle')
		.mousedown(function () {
		    scrollbar.width(handleHelper.outerWidth());
		})
		.mouseup(function () {
		    scrollbar.width('100%');
		})
		.append('<span class="ui-icon ui-icon-grip-dotted-vertical"></span>')
		.wrap('<div class="ui-handle-helper-parent"></div>').parent();

    //change overflow to hidden now that slider handles the scrolling
    scrollPane.css('overflow', 'hidden');

    //size scrollbar and handle proportionally to scroll distance
    function sizeScrollbar() {
        var remainder = scrollContent.width() - scrollPane.width();
        var proportion = remainder / scrollContent.width();
        var handleSize = scrollPane.width() - (proportion * scrollPane.width());
        handleSize = 141;
        scrollbar.find('.ui-slider-handle').css({
            width: handleSize,
            'margin-left': -handleSize / 2
        });
        handleHelper.width('').width(scrollbar.width() - handleSize);
    }

    //reset slider value based on scroll content position
    function resetValue() {
        var remainder = scrollPane.width() - scrollContent.width();
        var leftVal = scrollContent.css('margin-left') == 'auto' ? 0 : parseInt(scrollContent.css('margin-left'));
        var percentage = Math.round(leftVal / remainder * 100);
        scrollbar.slider("value", percentage);
    }
    //if the slider is 100% and window gets larger, reveal content
    function reflowContent() {
        var showing = scrollContent.width() + parseInt(scrollContent.css('margin-left'));
        var gap = scrollPane.width() - showing;
        if (gap > 0) {
            scrollContent.css('margin-left', parseInt(scrollContent.css('margin-left')) + gap);
        }
    }
    //change handle position on window resize
    $(window)
		.resize(function () {
		    resetValue();
		    sizeScrollbar();
		    reflowContent();
		});
    //init scrollbar size
    setTimeout(sizeScrollbar, 10); //safari wants a timeout
}