/* Declare a namespace for the site */
var Site = window.Site || {};
var addthis_config = { "data_track_clickback" : true, "ui_language" : 'nl' };
var addthis_share = {
    templates: { twitter: '{{title}} {{url}} via @caymanagency' }
};

/* Create a closure to maintain scope of the '$'
   and remain compatible with other frameworks.  */
(function($) {
    //initHomepage();

	//Background parallax effect
	var backgroundscroll = 0;
	var lastScrollTop = 0;
	var currentScrollTop = 0;
	var speed = 5;
	$(window).scroll(function(){
		lastScrollTop = currentScrollTop;
		currentScrollTop = $(window).scrollTop();
		var direction = (currentScrollTop > lastScrollTop) ? -1 : 1;
		backgroundscroll += direction * speed;
		$('body').css('background-position', '0 ' + backgroundscroll + 'px');
	});
	
	//Stop the autoscroll when user stats to scroll manually
	if(window.addEventListener) {
        document.addEventListener('DOMMouseScroll', stopScroll, false); }
	document.onmousewheel = stopScroll;	

    //Hide all preloaders
    $("img.preloader").hide();

    //Hide paging if only one page
    $(".paging").each(function(){
        if($(this).find("li").length <= 1)
            $(this).hide();
    });
	
    //subscribe email:
    $("#newsletter a").click(function(evt){
        evt.preventDefault();
        var requestURL = "/ws.asmx/SubscribeNewsletter?email=" + $("#newsletter input").val();
        $("#newsletter .form").hide();
        $("#newsletter .sending").show();
        $.get(requestURL, function(data) {  
            $("#newsletter .sending").hide();
            $("#newsletter .sent").show();
        });
    });
    
    $("input#email").focus(function () {
		$(this).attr("value", "");
	});

})(jQuery);

function stopScroll() {
    $('html, body').stop();
};

function initHomepage(){
    // Address handler
    $.address.init(function(event) {
    	//apply address to navigation
    	$(".nav a.internal").address();
    }).internalChange(function(evt) {
  		addressChange(evt, true);      
    }).externalChange(function(evt) {
    	addressChange(evt, false);
    }).history(true);
	
     $(".tweet").tweet({
        join_text: "auto",
        username: "caymanagency",
        avatar_size: 48,
        count: 3,
        auto_join_text_default: "",
        auto_join_text_ed: "",
        auto_join_text_ing: "",
        auto_join_text_reply: "",
        auto_join_text_url: "",
        loading_text: "loading tweets..."
    });

    $(".twitter-text").hide();
    $(".twitter-bird").hover(
        function () {
            $(".twitter-text").fadeIn(100);
        }, 
        function () {
            $(".twitter-text").fadeOut(100);
        }
    );

    initWorkHovers();

	$("#news a.detail, #work a.detail").click(function(evt){
		//load new data file when clicking on news or work detail
		evt.preventDefault();
		loadData($(this));
	});

	$(".paging a").click(function (evt) {
	    //load new list file when clicking on news or work paging
	    evt.preventDefault();
	    loadPage($(this));
	    //change paging active state
	    $(this).parents(".paging").find("a span.active").removeClass("active");
	    var i = parseInt($(this).attr("rel"));

	    var obj = $(this).parents(".paging").find(".paging-list [rel='" + i + "'] span");
	    obj.addClass("active");
	    var target = $(this).parents(".paging");

	    var lnkVorigObj = target.find(".lnkVorig");
	    var lnkVolgendObj = target.find(".lnkVolgend");

	    if (i > 1) {
	        lnkVorigObj.show();
	        lnkVorigObj.attr("href", "/" + target.attr("title") + ".aspx?p=" + (i - 1));
	        lnkVorigObj.attr("rel", (i - 1));
	    }
	    else {
	        lnkVorigObj.hide();
	    };

	    var total = $(this).parents(".paging").find(".paging-list li").length;
	    var cat = $("#work-types a span.checked").parents("a");
	    var max = parseInt(cat.attr("rel"));
	    if (max == 1000)
	        max = total;

	    if (i == max) {
	        lnkVolgendObj.hide();
	    }
	    else {
	        lnkVolgendObj.show();
	        lnkVolgendObj.attr("href", "/" + target.attr("title") + ".aspx?p=" + (i + 1) + "&cat=" + cat.attr("rev"));
	        lnkVolgendObj.attr("rel", (i + 1));
	    }
	});

	$("#work-types a").click(function (evt) {
	    //load new list file when clicking on news or work paging

	    evt.preventDefault();
	    loadPage($(this));
	    //change paging active state
	    $("#work-types a span.checked").removeClass("checked");
	    $(this).find("span").addClass("checked");
	    //rebuild the urls of paging
	    var catID = $(this).attr("rev");
	    var numberOfPages = $(this).attr("rel");
	    buildWorkPagingUrl(catID, numberOfPages);
	});

    //Default close news & work detail
	if($.browser.msie && ($.browser.version=="6.0" || $.browser.version=="7.0")){
		$(".detail-holder").hide();
	} else{
		$(".detail-holder").slideUp(0);
	}
}

function buildWorkPagingUrl(catID, numberOfPages) {
    var cnt = 1;
    var target = $("#work .paging");
    target.show();

    if (numberOfPages <= 1) {
        target.hide();
    } else {
        $("#work .paging .paging-list a").each(function () {

            $(this).attr("href", $(this).attr("href").split("&cat=")[0] + "&cat=" + catID);

            if (cnt > numberOfPages)
                $(this).hide();
            else
                $(this).show();

            cnt++;
        });

        var lnkVorigObj = target.find(".lnkVorig");
        var lnkVolgendObj = target.find(".lnkVolgend");

        lnkVorigObj.hide();
        lnkVolgendObj.show();

        $("#work .paging .paging-list a span.active").removeClass("active");
        $("#work .paging .paging-list a:first span").addClass("active");
        lnkVolgendObj.attr("href", "/" + target.attr("title") + ".aspx?p=2&cat=" + catID);
        lnkVorigObj.attr("href", "#");
    }
}

function addressChange(evt, internal){
   	if(evt.value.length > 1) {
		var linkParts = evt.value.split("/");
		var block = $("#" + linkParts[1]);
		if(internal) {
			// if internal change use sliding
		    var ypos = block.offset().top - 40;
			$('html, body').animate({ scrollTop: ypos }, "slow", "swing");
		    
		    if(linkParts.length <= 2) {
		        $.each(block.find(".detail-holder"), function(index, detail) {
		            if ($.browser.msie && ($.browser.version == "6.0" || $.browser.version == "7.0")) {
		                $(detail).hide();
		            } else {
		                $(detail).slideUp("normal");
		                $(detail).find(".item").fadeOut("normal");
		            }
		        });
		    }
		} else {
			// if external visit then directly go to the block
			$('html, body').scrollTop(block.offset().top - 40);
			// if subpage (news- or work detail) open the subpage
			if(linkParts.length > 2) {
                var url = evt.value.replace("/news", "/newsDetail").replace("/work", "/caseDetail");
                loadDataByURL(url, block);
			}
		}

	    // Sets the page title
	    var link = $(".nav a[href='#/" + linkParts[1] + "']");
	    $.address.title(link.html() + ' | Cayman');
	} else {
	    // Sets the page title
		$.address.title('Home | Cayman');
	}
}

function loadPageByURL(requestURL, article, sender) {
    $.get(requestURL, function (data) {
        //add the result to the html
        article.find(".list-holder").html(data);
        //add click events on items
        article.find("a.detail").click(function (evt) {
            evt.preventDefault();
            loadData($(this));
        });
        //Hide all preloaders
        $("img.preloader").hide();

        initWorkHovers();
        
    }, 'html');
}

function initWorkHovers() {
    $("#work .image").hover(
        function () {
            $(this).find('.image-window').animate({
                    width: "296px",
                    height: "165px"
                }, 50, "linear" );
            $(this).find('.title').addClass("hover");
        }, 
        function () {
            $(this).find('.image-window').stop();
            $(this).find('.image-window').animate({
                    width: "294px",
                    height: "164px"
                }, 50);	
            $(this).find('.title').removeClass("hover");
        }
	);
}

function loadPage(sender) {
    var requestURL = sender.attr("href").replace(".aspx", ".ashx");
    if(requestURL != "#") {	
		//parent block element
		var article = sender.parents("article");
        //start loader
        article.find(".paging img.preloader").show();

        loadPageByURL(requestURL, article, sender);
	}
}

function showOverview(sender){
	var article = sender.parents("article");
	//move to the article block by clicking on the navigation item
	$('html, body').animate({ scrollTop: article.offset().top - 40 }, "slow", "swing");
	closeDetail(sender);
}

function closeDetail(sender) {
	var article = sender.parents("article");
	
	//close the detail-holder
	if($.browser.msie && ($.browser.version == "6.0" || $.browser.version == "7.0")) {
		article.find(".detail-holder").hide();
	} else {
		article.find(".detail-holder").slideUp("normal");
		article.find(".detail-holder .item").fadeOut("normal");
	}
	$.address.value("/" + article.attr("id"));
}

function loadDataByURL(requestURL, article) {
    //Change URL from rewrited to ashx
    var requestURLParts = requestURL.split("/");
    requestURL = requestURLParts[1] + ".ashx?id=" + requestURLParts[2] + "&title=" + requestURLParts[3];
    if(requestURLParts[4] != null && requestURLParts[4] != "")
        requestURL += "&cat=" + requestURLParts[4];
    
    $.get(requestURL, function (data) {
        //move to the article block by clicking on the navigation item
        $('html, body').animate({ scrollTop: article.offset().top - 40 }, "slow", "swing");

        //add the result to the html
        article.find(".detail-holder").html(data);
        //start animation
        if ($.browser.msie && ($.browser.version == "6.0" || $.browser.version == "7.0")) {
            article.find(".detail-holder").show();
        } else {
            article.find(".detail-holder").slideDown("normal");
        }
        //add click events on next/previous/overview
        article.find(".detail-holder a.overview").click(function (evt) {
            evt.preventDefault();
            showOverview($(this));
        });
        article.find(".detail-holder a.detail").click(function (evt) {
            evt.preventDefault();
            loadData($(this));
        });
        //Hide all preloaders
        $("img.preloader").hide();
        //Set URL
        var urlvalue = "/" + article.attr("id") + "/" + requestURLParts[2] + "/" + requestURLParts[3] + "/";
        if(requestURLParts[4] != null && requestURLParts[4] != "")
            urlvalue += requestURLParts[4] + "/";
        $.address.value(urlvalue);
        //Render the addthis buttons
        addthis.toolbox(".addthis_toolbox");
    }, 'html');
}

function loadData(sender) {
	//Get the datafile
    var requestURL = sender.attr("href");
    
    //do following to bypass weird IE7 implementation of .href
    requestURL = requestURL.replace("//", "");
    requestURL = requestURL.substring(requestURL.indexOf("/"));
    
    //parent block element
	var article = sender.parents("article");
	//show preloader
    sender.parent().parent().find("img.preloader").show();

	loadDataByURL(requestURL, article);
}
