jQuery.fn.exists = function(){return jQuery(this).length>0;}

var activeLn = 0;
var lang = activeLn == 0 ? 'tr' : 'en';
var activeSect = 0;
var oldCatObj = $('.cat-container:first-child');
var dataDir = "/static/json/";
var imgDir = "/static/images/content/";
var sign = -1;
var tlInterval;

var loadCategories = function (ctype) {
    var url;
    var lang = activeLn == 0 ? 'tr' : 'en';
    switch(ctype) {
        case 'kronolojik':
            url = "/Json.aspx?module=getcategoriesbygruop&lang="+ (activeLn==0 ? "TR": "EN") +"&groupname=chronological";
            activeSect = 0;
            break;
        case 'tematik':
            url = "/Json.aspx?module=getcategoriesbygruop&lang="+ (activeLn==0 ? "TR": "EN") +"&groupname=thematical";
            activeSect = 1;
            break;
    }

    var wrapDiv = $('#content');
    wrapDiv.html('');
    wrapDiv.css('left', 0);
    $('.timeline-wrap').remove();

    $.ajax({
        url: url,
        type: "GET",
        dataType: "json",
        success: function(res) {
            wrapDiv.html('');
            $.each(res.categories, function(key, val) {
                var catContainer = $('<div>').attr({'id': 'cat-' + val.slug, 'class': 'clearfix cat-container', 'rev': key }).appendTo(wrapDiv);
                key == 0 ? catContainer.addClass('hover') : void(0);
                var catLink = $('<a>').attr({'id': 'link-cat-' + key, 'class': 'cat-link'}).appendTo(catContainer);
                var opaqueEl = $('<span>').attr('class', 'cat-opaque').appendTo(catLink);
                var catPic = $('<img>').attr({'id': 'img-cat-' + key, 'src': imgDir + val.cover }).appendTo(catLink);
                var catInfoContainer = $('<div>').attr('class', 'cat-info').appendTo(catContainer);

                if (val.from || val.to) {
                    var from = (val.from!=null) ? val.from : "";
                    var to = (val.to!=null) ? val.to : "";
                    var catYears = $('<h1>').attr('class', 'cat-year').text(from + " " + to ).appendTo(catInfoContainer);
                    var catTitle = $('<h1>').attr('class', 'cat-title').text(val.title).appendTo(catInfoContainer);
                } else {
                    var catYears = $('<h1>').attr('class', 'cat-title theme-title').text(val.title).appendTo(catInfoContainer);
                }

                var catNav = $('<nav>').empty().attr({'class': 'cat-nav'}).appendTo(catContainer);
                catNav.empty().appendTo($(catContainer, this));
                var catNavWrap = $('<div>').attr({'class': 'cat-nav-wrap' }).appendTo(catNav);
                var categoryArticlesurl = "/Json.aspx?module=searcharticles&lang=" + (activeLn==0 ? "TR" : "EN") + "&categoryid=" + val.id;
                if (val.articles != null) {
                    var catNavBg = $('<div>').attr({'class': 'cat-nav-bg' }).appendTo(catNavWrap);
                    var catNavUL = $('<ul>').appendTo(catNavWrap);

                    $.each(val.articles, function(k, v) {
                        var catNavLI = $('<li>').appendTo(catNavUL);
                        var catA = $('<a>').attr({'href': '#' + v.slug, 'rel': 'cat-' + val.slug, 'rev': key }).appendTo(catNavLI);
                        var articleYear = $('<span>').attr({'class': 'article-year'}).text(v.year).appendTo(catA);
                        var articleTitle = $('<span>').attr({'class': 'article-title'}).text(v.title).appendTo(catA);

                        catA.click(function(e) {
                            e.preventDefault();
                            $('li', catNav).removeClass('active');
                            $(this).parent().addClass('active');
                            var articleDetailUrl = "/Json.aspx?module=articledetail&lang=" + (activeLn==0 ? "TR" : "EN") +"&id=" + v.id;
                            getArticleDetail(val.slug, v);
                        });

                    });
                };

                var catContent = $('<div>').attr({'id': 'cat-content-' + key, 'class': 'cat-content' });
                var aarticleCatTitle = $('<h1>').attr({'class': 'article-cat-title'}).text(val.title).appendTo(catContent);
                var articleHTMLContainer = $('<div>').attr({'class': 'article-html'}).html(val.content).appendTo(catContent);
                catContent.appendTo(catContainer);
                if ((val.timeline!=null) && activeSect==0 ) {
                    buildTimeline(key, val.timeline);
                }
            });

            $('a.pager.prev, a.pager.next').remove();
            $('<a>').attr({'class': 'hidden pager prev', 'rel': 'prev' }).appendTo($('#mid-sect'));
            $('<a>').attr({'class': 'hidden pager next', 'rel': 'next' }).appendTo($('#mid-sect'));
        }
    });
};

var getArticleDetail = function(o, object){
    var lang = activeLn == 0 ? 'tr' : 'en';
    var articleId = object.id;

    $.ajax({
        url: '/Json.aspx?module=articledetail&Id='+ articleId +'&lang='+ (activeLn==0 ? 'TR' : 'EN'),
        type: "GET",
        dataType: "json", 
        success: function(object) {
            var obj = $('#cat-' + o);
            $('.cat-content', obj).addClass('hidden');
            obj.addClass('detail');
            $('.article-detail').remove();

            if($('#article-detail-' + object.slug).exists()){
                var articleDetail = $('#article-detail-' + object.slug);
                articleDetail.removeClass('hidden');
            } else {
                var articleDetail = $('<div>').attr({'id': 'article-detail-' + object.slug, 'class': 'article-detail clearfix'}).appendTo(obj);
            }

            var articleBody = $('<div>').attr({'class': 'article-body'}).appendTo(articleDetail);
            var articleTitle = $('<h1>').attr({'class': 'article-title'}).text(object.title).appendTo(articleBody);
            var articleContent = $('<div>').attr({'class': 'article-content scroll no-arrows'}).html(object.content ? object.content : "").appendTo(articleBody);
            var strDownloadOriginal = activeLn == 0 ? "Bu sitedeki belgelerin orjinallerine <a href='http://www.saltonline.org/tr/' target='_blank'>saltonline.org</a>'dan ulaşabilirsiniz." : "The original documents are accessible via <a href='http://www.saltonline.org/en/' target='_blank'>saltonline.org</a>";
            var saltonlineLink = $('<p>').attr({'class': 'saltonline-text'}).html(strDownloadOriginal).appendTo(articleContent);
            var imgPager = $('<div>').attr({'id': 'img-pager-' + object.slug, 'class': 'article-pager clearfix'}).appendTo(articleBody);

            $('.cat-container').css({'display': 'none'});
            $(obj).css({'display': 'block'});

            $('.cat-opaque', obj).css({'width': 240 });
            obj.css({'position': 'absolute'}).animate({'left': 0, 'width': 966, 'duration': 1500, 'queue':false });

            var articleGallery = $('<div>').attr({'id': 'gallery-' + object.slug, 'class': 'article-gallery' }).appendTo(articleDetail);
            var articleGalleryWrap = $('<div>').attr({'id': 'gallery-wrap-' + object.slug, 'class': 'gallery-wrap' }).appendTo(articleGallery);
            var picDesc = $('<div>').attr({'class': 'pic-desc' }).appendTo(articleGalleryWrap);

            $.each(object.images, function(key, val) {
                var imgPagerLink = $('<a>').attr({'href': imgDir + 'articles/' + val.src, 'rel': key, 'alt': val.alt, 'title': val.tooltip }).text(parseInt(key)+1).appendTo(imgPager);
                key == 0 ? imgPagerLink.addClass('active') : void(0);
                var imgEl = $('<img>').attr({'src': imgDir + 'articles/' + val.src, 'width': 360 }).appendTo(articleGalleryWrap);
                key!=0 ? imgEl.addClass('hidden') : void(0);
                key==0 ? picDesc.text(val.alt) : void(0);

                if(val.transcript!=null){
                    var str = activeLn==0 ? "BELGENİN TERCÜMESİ" : "TRANSLATION OF THE DOCUMENT";
                    var transcriptBtn = $('<a>').attr({'class': 'btn-article-transcript hidden', 'rel': key, 'id': 'btn-transcript-' + key }).text(str).appendTo(articleBody);

                    transcriptBtn.click(function() {
                        var transcriptDiv = $('<div>').attr({'class': 'transcript-wrap'}).appendTo($(this).parent());
                        var transcriptContent = $('<div>').attr({'class': 'transcript-content'}).html((val.transcript!='null' ? val.transcript : "")).appendTo(transcriptDiv).scrollbar();
                        var closeStr = activeLn == 0 ? "KAPAT" : "CLOSE";
                        var transcriptClose = $('<a>').attr({'class': 'btn-transcript-close'}).text(closeStr).appendTo(transcriptDiv);

                        transcriptClose.unbind('click').click(function(e) {
                            $(this).parent('.transcript-wrap').remove();
                        });
                    });

                    key == 0 ? transcriptBtn.removeClass('hidden') : void(0);
                }
            });

            $(".article-pager a").tooltip({
                'position': 'top center',
                'effect': 'slide',
                'offset': [8, 0]
            });

            $('.pager').addClass('hidden category-pager');
            $('.scroll.no-arrows').scrollbar();
        }
    });
}

var buildTimeline = function(key, val) {
    var lang = activeLn == 0 ? 'tr' : 'en';
    var tlWrap= $('<div>').attr({ 'id': 'tl-' + key, 'class': 'timeline-wrap' }).appendTo($('#tl-wrap'));
    var dataWrap = $('<ul>').attr({'class' : 'clearfix' }).appendTo(tlWrap);
    var lastKey=0;
    $.each(val, function(key, val) {
        var evWrap = $('<li>').appendTo(dataWrap);
        var evTitle = $('<h3>').attr({ 'class': 'ev-title' }).text(val.year).appendTo(evWrap);
        var d1 = $('<p>').attr({ 'class': 'first' }).text(val.ottoman).appendTo(evWrap);
        var d1 = $('<p>').text(val.world).appendTo(evWrap);
        lastKey = key;
    });
    dataWrap.css('width', (parseInt(lastKey) + 1) * 200);
}

var catBoxEvents = function() {

    $('.cat-container').unbind().bind({
        mouseenter: function(e) {
            $('.cat-container.hover').removeClass('hover');
            $('.cat-container.hover').stop().animate({'width': 120}, 400);
            $('.cat-opaque', this).stop().animate({'opacity': 0.8 }, 400);

            $(this).stop().css({'width': 240}).animate({width: 240}, 400, function() {
                $(this).addClass('hover');
            });
        },
        mouseleave: function(e) {
            $('.cat-opaque').stop().animate({'opacity': 0 }, 400);

            $(this).stop().animate({width: 120}, 250, function() {
                $(this).removeClass('hover');
            });

            oldCatObj = $(this);
            if($('.cat-container.hover').length == 0){
                $('.cat-container').not(oldObj).stop().css({'width': 120 }).animate({'width': 120});
                $(oldCatObj).stop().css({'width': 240}).animate({'width': 240});
            }
        }
    });

    // $('.cat-container').hover(function(e) {
    //     $('.cat-container.hover').removeClass('hover');
    //     $('.cat-container.hover').stop().animate({'width': 120}, 400);
    //     $('.cat-opaque', this).stop().animate({'opacity': 0.8 }, 400);

    //     $(this).stop().css({'width': 240}).animate({width: 240}, 400, function() {
    //         $(this).addClass('hover');
    //     });
    // }, function(e) {
    //     $('.cat-opaque').stop().animate({'opacity': 0 }, 400);

    //     $(this).stop().animate({width: 120}, 250, function() {
    //         $(this).removeClass('hover');
    //     });

    //     oldCatObj = $(this);
    //     if($('.cat-container.hover').length == 0){
    //         $('.cat-container').not(oldObj).stop().css({'width': 120 }).animate({'width': 120});
    //         $(oldCatObj).stop().css({'width': 240}).animate({'width': 240});
    //     }
    // });
};

var unbindCatBoxEvents = function() {
    $('.cat-container').unbind('mouseenter mouseleave')
};

var search = function(q) {
    $('.pager').addClass('hidden');
    $('#prim-nav .active').removeClass('active');
    $('#mid-wrap').hide();
    $('#mid-sect').addClass('tall-free');
    $('#timeline').addClass('hidden');

    $.ajax({
        url: '/Json.aspx?module=searcharticles&lang=' + (activeLn==0 ? "TR" : "EN") + '&keyword=' + q,
        type: "GET",
        dataType: "json",
        success: function(res) {
            $('#search-wrap').remove();
            var searchWrap = $('<div>').attr({'id': 'search-wrap', 'class': 'clearfix'}).appendTo($('#mid-sect'));
            var articleTitle = $('<h1>').attr({'class': 'page-title'}).text((activeLn==0 ? "ARAMA SONUÇLARI" : "SEARCH RESULTS")).appendTo(searchWrap);
            var resultsHolder = $('<div>').attr({'class': 'search-results-holder clearfix'}).appendTo(searchWrap);
            var lastKey;

            $.each(res.articles, function(key, val) {
                var resultItemHolder = $('<div>').attr({'class': 'result-item'}).appendTo(resultsHolder);
                var itemTitle = $('<h3>').attr({'class': 'item-title'}).appendTo(resultItemHolder);
                var itemLink = $('<a>').attr({'rel': val.slug, 'rev': val.id }).text(val.title).appendTo(itemTitle);
                var itemDesc = $('<div>').attr({'class': 'item-desc'}).html(val.content).appendTo(resultItemHolder);
                lastKey = key;
            });

            var resultText = activeLn==0 ? "'<strong>"+ q +"</strong>' ile ilgili toplam <strong>"+ (!isNaN(parseInt(lastKey)) ? parseInt(lastKey) + 1 : 0) +"</strong> sonuç bulundu" : "Total <strong>"+ lastKey +"</strong> results found for '<strong>"+ q +"</strong>' keyword";
            $('<p>').attr({'class': 'results-found'}).html(resultText).insertAfter(articleTitle);
            isNan(lastKey) ? $(searchWrap).addClass('hidden') : $(searchWrap).removeClass('hidden');
        }
    });
};

var slideTimeline = function() {
    var obj = $('.timeline-wrap.active ul');
    if (obj.length > 0) {
        if (parseInt($(obj).position().left + $(obj).width()) > 800 && sign==-1) {
            $('.timeline-wrap.active ul').stop().animate({ 'left': '-=5'}, 50, 'linear');
        } else {
            sign=1;
            if(parseInt($(obj).position().left) < 0 && sign==1){
                $('.timeline-wrap.active ul').stop().animate({ 'left': '+=5'}, 50, 'linear');
            } else {
                sign = -1 * sign;
            }
        }
    }
};

var loadHash = function(hash){
    var hash = hash ? hash : window.location.hash.split('#')[1];
    var lang = activeLn == 0 ? 'tr' : 'en';

    if (hash!='iletisim') {
        loadCategories(hash);
    }

    unbindCatBoxEvents();

    if (hash == "tematik") {
        $('#timeline').addClass('hidden');
    }

    if (hash == "iletisim") {
        $('#timeline').addClass('hidden');
        $('#mid-sect').addClass('hidden');
        $('#contact').removeClass('hidden');
        $('#contact div').addClass('hidden');
        $('#contact-' + lang ).removeClass('hidden');
    } else {
        $('#mid-sect').removeClass('hidden');
        $('#contact').addClass('hidden');
    }
};

var __init__ = function() {
    var wrapDiv = $('#content');
    var contentDiv = $('#content');

    $('.cat-container h1.cat-year, .cat-container h1.cat-title').live('click', function() {
        $('.cat-link', $(this).parent().parent()).trigger('click');
    });

    $('.cat-container:not(.disabled) .cat-link').die().live('click', function(e) {
        e.preventDefault();

        unbindCatBoxEvents();
        $('.cat-container').removeClass('hover');

        var parentObj = $(this).hasClass('cat-year') || $(this).hasClass('cat-title') ? $(this).parent().parent() : $(this).parent();
        var obj = '#' + $(parentObj).attr('rel');
        var thisRev = parseInt($(parentObj).attr('rev'));

        $('.cat-opaque', this).stop().animate({'queue':false, 'opacity': .8, duration: 500});

        var oldObj = $('.cat-container.active.disabled');
        oldObj.removeClass('active').removeClass('disabled').removeClass('article');
        $('.cat-opaque', oldObj).stop().animate({'queue': false, 'opacity':0, 'duration':500 });
        oldObj.animate({'width': 120, 'queue': false, 'duration': 500});

        $(parentObj).addClass('active').addClass('disabled');
        $('.cat-nav', $(parentObj)).stop().animate({'queue': false, 'opacity': 1, 'left': 119 , 'duration': 1500});

        $(parentObj).css({'z-index': thisRev * 199}).animate({'queue':false, 'width': 722, 'duration': 1500});
        $('.cat-content', $(parentObj).prev()).removeClass('hidden');

        if (thisRev > 0 && thisRev < 6 ) {
            $(wrapDiv).css({'z-index': thisRev * 99 }).stop().animate({'left': -((thisRev-1) * 120 + (thisRev-1) ), 'queue':false });
        }
        else if(thisRev > 5) {
            $(wrapDiv).css({'z-index': thisRev * 99 }).stop().animate({'left': -484, 'queue':false });
        };

        $('.pager').removeClass('hidden');

        if (activeSect==0) {
            $('.timeline-wrap').css({'display': 'none' }).removeClass('active');
            $('#tl-' + thisRev).css({ 'display': 'block'}).addClass('active');
            $('#timeline').removeClass('hidden');
        }

        clearInterval(tlInterval);
        var tlInterval = setInterval(slideTimeline, 100);
    });

    $('.cat-nav a').die().live('click', function() {
        var obj = $('#' + $(this).attr('rel'));
        var thisRev = parseInt($(this).attr('rev'));

        $(obj).addClass('article');
        $('.article-gallery', $(obj)).css({'display': 'block'});
        $('.btn-article-back').exists() ? $('.btn-article-back').remove() : void(0);

        setTimeout(function() {
            var articleObj = $('.article-detail', obj);
            var btnCloseText = activeLn==0 ? 'GERİ' : 'BACK';
            var closeBtn = $('<a>').attr({'rel': thisRev, 'class': 'btn-article-back', 'title': btnCloseText} ).text(btnCloseText).appendTo(articleObj);

            closeBtn.unbind('click');
            closeBtn.click(function() {
                $('#timeline').removeClass('active').addClass('hidden');
                $(obj).removeClass('article detail disabled hover');

                $('.cat-nav li.active').removeClass('active');
                $('.cat-container').css({'display': 'block'});
                $(obj).css({'position': 'relative'});
                $(obj).removeClass('active');

                $(obj).stop().animate({'width': 240}, 500, function() {
                    unbindCatBoxEvents();

                    __init__();

                    $($('#prim-nav a')[activeSect]).trigger('click');

                        setTimeout(function() {
                            catBoxEvents();
                        }, 100);

                });
                $(wrapDiv).animate({'left': 0}, function() {
                    var thisRel = $(this).attr('rel');
                    var activeCat = $('.cat-container').get(thisRel);
                });
            });
        }, 250);

        $(wrapDiv).stop().animate({'left': 0, 'opacity': 1});
    });

    $('.article-pager a').live('click', function(e) {
        e.preventDefault();
        $('.article-pager a.active').removeClass('active'),
        $(this).addClass('active');

        var galleryObj = $(this).parent().parent().next();

        $('img', galleryObj).addClass('hidden');
        $('img:eq('+ ($(this).attr('rel')) +')', galleryObj).css({'opacity': 0}).removeClass('hidden').animate({'opacity': 1, 'queue': false });

        $('.pic-desc', galleryObj).text($(this).attr('alt'));

        $('.btn-article-transcript', $(this).parent().parent()).addClass('hidden');
        $('#btn-transcript-' + $(this).attr('rel')).removeClass('hidden');
    });

    $('.pager.prev:not(.category-pager), .pager.next:not(.category-pager)').die().live('click', function(e) {
        e.preventDefault();
        var activeCat = $('.cat-container.active');

        if ($(this).hasClass('next')) {
            if($(activeCat).next().length > 0){
                $('.cat-link', $(activeCat).next()).trigger('click');
            }
        }

        if ($(this).hasClass('prev')) {
            if($(activeCat).prev().length > 0){
                $('.cat-link', $(activeCat).prev()).trigger('click');
            }
        }
    });

    $('.pager.category-pager').live('click', function() {
        e.preventDefault();
        var activeCat = $('.cat-container.active');

        if ($(this).hasClass('next')) {
            if($(activeCat).next().length > 0){
                $('.cat-link', $(activeCat).next()).trigger('click');
            }
        }

        if ($(this).hasClass('prev')) {
            if($(activeCat).prev().length > 0){
                $('.cat-container')
                $('.cat-link', $(activeCat).prev()).trigger('click');
            }
        }
    });

    $('#prim-nav a, #contact-link').click(function(e) {
        $('#search-wrap').addClass('hidden').hide();
        $('.pager').removeClass('hidden');
        $('#mid-wrap').removeClass('hidden').show();
        $('#mid-sect').removeClass('tall-free');
        $('#timeline').removeClass('hidden').show();

        var hash = $(this).attr('href').split('#')[1];
        $('#prim-nav li').removeClass('active');
        $(this).parent('li').addClass('active');

        loadHash(hash);

        $('#mid-wrap').hover(function() {}, function() {
            $('.cat-opaque', $(oldCatObj)).stop();
            $(oldCatObj).stop();

            if($('.cat-container.hover').length == 0){
                $('.cat-container').not(oldObj).animate({'width': 120});
                $(oldCatObj).stop().animate({'width': 240}, 100);
            }
        });

        setTimeout(function() {
            catBoxEvents();
        }, 500); 
    });
};


$(document).ready(function() {
    $('#search-form').submit(function(e){
        e.preventDefault();
        var keyword = $('#q').val();
        search(keyword);
    });

    var lang = activeLn == 0 ? 'tr' : 'en';

    var wrapDiv = $('#content');
    __init__();

    var hash = window.location.hash.split('#')[1];

    if (hash) {
        loadHash(hash);
    } else {
        $($('#prim-nav a')[0]).trigger('click');
        activeSect = 0;
    }

    setTimeout(function() {
        catBoxEvents();
    }, 250);

    setTimeout(function() {
        oldCatObj.trigger('mouseover');
    }, 400);

    $(document).not('.cat-link').hover(function() {
        if($('.cat-container.hover').length == 0){
            $(oldCatObj).stop().css({'width': 240});
        }
    }, function() {
        if($('.cat-container.hover').length == 0){
            $(oldCatObj).stop().css({'width': 240});
        }
    });

    $('#lang-bar a').live('click', function() {
        $('#lang-bar a').removeClass('active');
        $(this).addClass('active');

        $('#timeline').addClass('hidden');
        activeLn = $(this).attr('rel');

        if(activeLn==0){
            $('#prim-nav li:first-child a').text('KRONOLOJİK AKIŞ').attr({'title': 'KRONOLOJİK AKIŞ'});
            $('#prim-nav li:last-child a').text('TEMATİK AKIŞ').attr({'title': 'TEMATİK AKIŞ'});
            $('p', '#slogan').html('<a href="http://saltonline.org/tr/anasayfa">SALT</a><br><em>kurucu</em> Garanti Bankası');
            $('#logo').removeClass('en').addClass('tr');
        }

        if(activeLn==1){
            $('#prim-nav li:first-child a').text('CHRONOLOGICAL').attr({'title': 'CHRONOLOGICAL'});
            $('#prim-nav li:last-child a').text('THEMATIC').attr({'title': 'THEMATIC'});
            $('p', '#slogan').html('<a href="http://saltonline.org/en/anasayfa">SALT</a><br><em>founded by</em> Garanti');
            $('#logo').removeClass('tr').addClass('en');
        }

        var contactText = activeLn==0 ? "İLETİŞİM" : "CONTACT";
        $('#contact-link').text(contactText)

        __init__();

        $($('#prim-nav a')[0]).trigger('click');
        activeSect = 0;

        setTimeout(function() {
            catBoxEvents();
        }, 20);

        setTimeout(function() {
            oldCatObj.trigger('mouseover');
        }, 40);

        $(document).not('.cat-link').hover(function() {
            if($('.cat-container.hover').length == 0){
                $(oldCatObj).stop().css({'width': 240});
            }
        }, function() {
            if($('.cat-container.hover').length == 0){
                $(oldCatObj).stop().css({'width': 240});
            }
        });
    });

    $('.search-results-holder h3 a').live('click', function(){
        var thisRel = $(this).attr('rel');
        var thisRev = $(this).attr('rev');

        $(this).parent().next().after();

        $('<div>').attr({'id': 'cat-search-detail-' + thisRel }).appendTo($(this).parent().next());

        getArticleDetail('search-detail-' + thisRel, {'id': thisRev});
    });

});


