$(function(){
    $.ajaxSetup({
        beforeSend: function(){ajaxSetupLoadStart( $('#content') )},
        complete: function(){ajaxSetupLoadComplete( $('#content') )}
    })

    if($('#header-slider UL').get(0))
    $('#header-slider UL').cycle({
        fx:     'fade',
        speed:  8000,
        timeout: false,
        pager:  '#nav',
        slideExpr: 'li',
        continuous: 1
    });
    // Drop Down Menu
    $('#menu.sf-menu').superfish({
        dropShadows : false,
        speed : 'fast'
        //pathClass:  'current'
    });
    
    hashAjaxHandler();
    content_functions_load();
});


function mycarousel_itemLoadCallback(carousel, state)
{
    for (var i = carousel.first; i <= carousel.last; i++) {
        if (carousel.has(i)) {
            $('A',carousel.get(i).get(0)).gallery_photo_view();
            continue;

        }

    }
};
$.fn.gallery_photo_view = function(elementPreview){
    var elementPreview = elementPreview || $(this);
    elementPreview.click(function(){
                var ahref = $(this).attr('href');
                var aid = $(this).attr('id');
                var parent_div = $('IMG#gallery-preview').parents('DIV:first');
                $('IMG#gallery-preview').fadeOut(function(){
                    parent_div.addClass('loading');
                    $(this).attr('src',ahref);
                    $(this).load(function(evt){
                        $(evt.target).fadeIn();
                        parent_div.removeClass('loading');
                    });
                    var gallery_id = aid.split('_')[1];
                    var photo_id = aid.split('_')[2];
                    clickAjaxHandler($('#content'), base_history+'photos/'+gallery_id+'/'+photo_id);

                });
//                $('IMG#gallery-preview').attr('src',$(this).attr('href'));
                return false;
            });

}


/**
 * @TODO recursive function aftrer html update;
*/
$.fn.paging= function(loadElement){
    var loadElement = loadElement || $(this).parents('#content');
    var sthis = $(this);
    sthis.each(function(){
        $(this).click(function(){
            $.ajax({type:'GET',
                url:$(this).attr('href'), 
                success: function(data) {
                    loadElement.html(data);
                    var url = sthis.attr('href');
                    clickAjaxHandler(loadElement, url);
                    content_functions_load();
                }
            });
            return false;
        })
    });
}

function clickAjaxHandler(contentElement, url) {
    var aname = url;
    document.location.hash = document.location.hash.replace(/#.*/gi,'') + aname;
    markActiveItemMenu()
}
function hashAjaxHandler(contentElement) {
    var cElement = contentElement || $('#content');
    var load_url = document.location.hash.replace('#','');
    if(load_url != ''){
        cElement.load(load_url, function(){
            content_functions_load();
            markActiveItemMenu();
        });
    }
}
function markActiveItemMenu(){
    var hasharr = document.location.hash.replace('#'+base_history,'');
    menuitems = hasharr.split('/');
    var m = '';
    for (var i = 0; i < menuitems.length; i++) {
        if(i > 0) m += '/';
        m += menuitems[i];
        if(i > 1) break;
    }
    var proper_a = $('#footer-menu A[href$="'+base_history+m+'"]');
    if(typeof(proper_a.get(0)) != 'undefined'){
        $('#footer-menu A').removeClass('active');
        proper_a.addClass('active');
    }
    $('#footer-menu .active').each(function(){
        var atop = $(this).parents('LI.top').find('A.top:first');
        atop.addClass('active');
    });

}

function load_page(url, loadElement){
    var loadElement = loadElement || $('#content');
    $('.load_page').each(function(){
        $(this).click(function(){
            var url = $(this).attr('href');
            loadElement.load(url, function(data){
                    //loadElement.html(data);
                    content_functions_load();
                    clickAjaxHandler(loadElement, url);
            });
            return false;
        });
    });
}
content_functions_load = function(loadElement){
    var loadElement = loadElement || $('#content');
//    $('A.lightbox').lightBox({overlayBgColor:'#000',overlayOpacity:0.8,fixedNavigation:false,imageLoading:base+'/js/plugins/lightbox/images/lightbox-ico-loading.gif',imageBtnPrev:base+'/js/plugins/lightbox/images/lightbox-btn-prev.gif',imageBtnNext:base+'/js/plugins/lightbox/images/lightbox-btn-next.gif',imageBtnClose:base+'/js/plugins/lightbox/images/lightbox-btn-close.gif',imageBlank:base+'/js/plugins/lightbox/images/lightbox-blank.gif',containerBorderSize:10,containerResizeSpeed:400,txtImage:'Image',txtOf:'of',keyToClose:'c',keyToPrev:'p',keyToNext:'n',imageArray:[],activeImage:0});
    $('A.lightbox').lightBox({overlayBgColor:'#000',overlayOpacity:0.8,imageLoading:base+'/js/plugins/lightbox/images/lightbox-ico-loading.gif',imageBtnPrev:base+'/js/plugins/lightbox/images/lightbox-btn-prev.gif',imageBtnNext:base+'/js/plugins/lightbox/images/lightbox-btn-next.gif',imageBtnClose:base+'/js/plugins/lightbox/images/lightbox-btn-close.gif',imageBlank:base+'/js/plugins/lightbox/images/lightbox-blank.gif'});
    $("#content SELECT").sb({ useTie: true, fixedWidth: false });
    $('.paging A').paging(loadElement);
    load_page();
    mycarousel_itemLoadCallback($('#carousel'));
    if(typeof($('.ajax_form', loadElement) != 'undefined')) {
        $('.ajax_form', loadElement).submit(function(){
            $(this).ajaxSubmit({
                success:function(data){ 
                    loadElement.html(data) ;
                    content_functions_load();
                    return false;
                }
            });
            return false;
        });
    }
    ajaxMessageShow();

    /*
    // Back Link
    if(typeof(back_link) != 'undefined' && history.length > 1){
        var div = $('#content');
        div.append('<a href="#" class="back float-right">'+back_link+'</a>');
        $('.back').click(function(){
            history.back();return false;
        });
    }
    */
}

function change_h1(logo_image){
    var logo_image = logo_image || $("#logo").attr('src');
    if($("#logo").attr("src") != logo_image){
        $("H1").css("width","0");
        $("#logo").attr("src",logo_image);
        $("H1").animate({"width":"26em"}, 1000);
    }
}

function formFieldBlur(form){
    $('input:text,textarea,select',form).each(function(){
        var element = $(this);
        var label = $('LABEL[for='+element.attr('id')+']')

        element.bind('click focus', function(){ if(element.val() == label.text()) element.val('') });
        element.bind('focusout', function(){ if(element.val() == '') element.val(label.text()) });
    });
}

function ajaxMessageShow(){
    if(typeof($('#ajaxMessage').get(0)) != 'undefined'){
        setTimeout("$('#ajaxMessage').fadeOut()",3800);
    }
}


function ajaxSetupLoadStart(ContentElement){
    var CElement = ContentElement || $('#content');
    CElement.prepend('<div class="loader"></div>');
}
function ajaxSetupLoadComplete(ContentElement){
    var CElement = ContentElement || $('#content');
    $('.loader',CElement).fadeOut('fast',function(){$(this).remove()});
}


