﻿ var selectedElement = 0;
 $(document).ready(function(){
    emailLinkBuilder()
    if($("body#references").length != 0) {
        $.history.init(getDataFromUrl);
    }
    if($(".referenceFooter").length != 0) {
        $.history.init(getDetailDataFromUrl);
    }

    $("#paging a").each(function() {
        var el = $(this);
        if(el.attr("href") == undefined) {
            el.addClass("disabled");
        }
    });
    
    //$("#referencesNav a").setReferencesLink();
    $("#refTopNav").selectType();
    
	$("#solutionList").animateHoverArrow();
 	//$("#banners a.moreInfo").animateHover("horizonal");
 	$("#referencesNav a").animateHover("vertical");
 	$("p.contactPanel a").animateHover("vertical");
 	$("ul.socialLinks a").animateHover("opacity");
 	$("a.firstPage:not(.disabled)").animateHover("vertical");
 	$("a.prevPage:not(.disabled)").animateHover("vertical");
 	$("a.nextPage:not(.disabled)").animateHover("vertical");
 	$("a.lastPage:not(.disabled)").animateHover("vertical");
 	$("#menu a").animateHover("vertical");
	$('#banners').bannerSlider();
	$('#refListTable').hide();
	$('.userItem').showUserDetail();
 });

$.fn.showUserDetail = function () {
    var el = $(this);
    el.delegate("h2","click", function() {
        $(this).siblings(".userDetail").slideToggle(500);
        $(this).toggleClass("active");
        return false;
    })
    .delegate(".linkCv a","click", function() {
        $(this).parent().siblings(".userDetail").slideToggle(500);
        $(this).parent().siblings("h2").toggleClass("active");
        return false;
    });
};

$.fn.setHover = function () {
    var el = $(this);
    if(el.length != 0) {
        el.hover(
            function () {
                $(this).closest("table").addClass("hoverTable");
                //$(this).addClass("hoverItem");
            },  
            function () {    
                $(this).closest("table").removeClass("hoverTable");
                //$(this).removeClass("hoverItem");  
            });
    }   
};

$.fn.setSolutionLink = function () {
    var el = $(this);
    if(el.length != 0) {
        var linkUrl = encodeURIComponent($("#refSecondNav1 li.selected a").text());
        for (var x = 0; x < el.length; x++) { 
            el.eq(x).attr("href", el.eq(x).attr("href")+"#"+linkUrl);
        }
    }   
};
$.fn.setReferencesLink = function () {
    var el = $(this);
    if(el.length != 0) {
        for (var x = 0; x < el.length; x++) { 
            var referencesLink = el.eq(x).attr("href").split("_")[0];
            var solutionLink = el.eq(x).attr("href").replace(referencesLink, "");
            el.eq(x).attr("href", referencesLink+"#"+solutionLink);
        }
    }
};

$.fn.selectType = function () {
    var el = $(this);
    if(el.length != 0) {
        $("a",this).click(function(){
            var url = $(this).attr('href');                    
            url = url.replace(ReferenceCategory, '');                    
            $.history.load(url);
            return false;
        });
    }
};

$.fn.showReferenceDetail = function () {
    var el = $(this);
    if(el.length != 0) {
        $(".typeItem").css({opacity: 0}).hide();
		var selectedElement = $("#solutionList .selected");
		if(selectedElement.length == 0)
		{
		    $("#solutionList li").eq(0).addClass("selected");
		    $(".typeItem").eq(0).addClass("selected");
		    selectedElement = $(".typeItem.selected");
		}
		else {
		    var selectedGuid = $("#solutionList li.selected a").attr("href").replace("#","");
		    $(".typeItem[data-solution='"+selectedGuid+"']").addClass("selected");
		    selectedElement = $(".typeItem.selected");
		}
		
		selectedElement.css({opacity: 1}).show();
        $("a",el).click(function(){
            if(!$(this).parent().hasClass("selected")) {
                $("li.selected",el).removeClass("selected");
                $(this).parent().addClass("selected");
                el.setArrowPosition();
                var selectedGuid = $(this).attr("href").replace("#","");
                
                $(".typeItem.selected").animate({opacity: 0},100, function(){
                    $(".typeItem.selected").removeClass("selected").hide();
                });
                var elmHeight = $(".typeItem[data-solution='"+selectedGuid+"']").outerHeight(true);
                $("#solutionsWrap").animate({height:elmHeight},500);
                
                $(".typeItem[data-solution='"+selectedGuid+"']").show();
                $(".typeItem[data-solution='"+selectedGuid+"']").animate({opacity: 1},500, function(){
                    $(".typeItem[data-solution='"+selectedGuid+"']").addClass("selected");
                });
            }
            return false;
        });
    }
};

$.fn.animateHoverArrow = function (outerWidth) {
	var el = $(this);
	if(el.length != 0) {
		var listItems = $("li",this); 
		selectedElement = $("li.selected",this);
		if(selectedElement.length == 0)
		{
		    listItems.eq(0).addClass("selected");
		    selectedElement = $("li.selected",this);
		}
		var arrowPosition =  selectedElement.position().left + selectedElement.outerWidth(outerWidth)/2 - 968;
		el.css({backgroundPosition: arrowPosition + "px bottom"}); 
		
		listItems.mouseover(function(){
			var currentElement = $(this);
			var listWraper = $(this).parent();
			var newArrowPosition = currentElement.position().left + currentElement.outerWidth(outerWidth)/2 - 968;
			listWraper.stop().animate({backgroundPosition: newArrowPosition + "px bottom"}, {duration:500});	
		})
		.mouseout(function(){
			var listWraper = $(this).parent();
			arrowPosition =  selectedElement.position().left + selectedElement.outerWidth(outerWidth)/2 - 968;
			listWraper.stop().animate({backgroundPosition:"(" + arrowPosition + "px bottom)"}, {duration:500})
		});
	}
};

$.fn.setArrowPosition = function () {
	var el = $(this);
	if(el.length != 0) {
    	var listItems = $("li",this); 
		selectedElement = $("li.selected",this);
		var arrowPosition =  selectedElement.position().left + selectedElement.outerWidth(outerWidth)/2 - 968;
		el.css({backgroundPosition: arrowPosition + "px bottom"}); 
	}
};


$.fn.animateHover = function (direction) {
	var el = $(this);
	if(direction == "horizonal") {
		$(this).css({backgroundPosition: "0% top"});
		el.mouseover(function(){
			$(this).stop().animate({backgroundPosition: "100% top"}, {duration:800});	
		})
		.mouseout(function(){
			$(this).stop().animate({backgroundPosition: "0% top"}, {duration:500})
		});
	}
	else if (direction == "vertical"){
		$(this).css({backgroundPosition: "left 0%"});
		el.mouseover(function(){
			$(this).stop().animate({backgroundPosition: "left 100%"}, {duration:500});	
		})
		.mouseout(function(){
			$(this).stop().animate({backgroundPosition: "left 0%"}, {duration:500})
		});
	}
	else {
		$(this).css({opacity: 0.5});
		el.mouseover(function(){
			$(this).stop().animate({opacity: 1}, {duration:250});	
		})
		.mouseout(function(){
			$(this).stop().animate({opacity: 0.5}, {duration:250})
		});
	}
};

$.fn.bannerSlider = function() {
    if (typeof $(this) == "undefined") { return; }
    var banners = $('div',this);
	var bannersBg = $("#bannersBg div");
	if (banners.length == 0) { return; }
    if (banners.length == 1) { 
        banners.show();
        return;
    }
    
    if(banners.length > 1) {
	    var bannersPager = "<ul id=\"bannerPager\">";
	    for (var x = 0; x < banners.length; x++) { 
	    	bannersPager += "<li><a href=\"#\">" + (x+1) + "</a></li>";
	    };
	    bannersPager += "</ul>";
	    $(this).append(bannersPager);
	    var bannerPager = $("#bannerPager a");
	   	bannerPager.click(function() {
	   		clearTimeout(globalTimeout);
	   		bannerSlide($(this).text()-2, true);
	   		return false;
	   	});
	   	/*
	   	bannerPager.hover(function() {
			clearTimeout(globalTimeout);
		}, function() {
			clearTimeout(globalTimeout);
			var nextSlide = $("#bannerPager li.selected a").text()-1;
			globalTimeout = window.setTimeout("bannerSlide(\"" + nextSlide + "\",false)", 2000);
		});*/
	   	bannerPager.animateHover("vertical");
	   	bannerPager.eq(0).parent().addClass("selected");
    }
    

    banners.first().show().addClass("visible");
    bannersBg.hide().first().addClass("selected").show();
    globalTimeout = window.setTimeout("bannerSlide(\"" + 0 + "\",false)", 15000);
};

bannerSlide = function(currentPos, speedTimer) {
    var banners = $("#banners div");
    var bannersBg = $("#bannersBg div");
    var bannerPager = $("#bannerPager a");
        
    if (typeof currentPos == "undefined") { var currentPos = 0; }
    currentPos = parseInt(currentPos);
    var nextPos = (currentPos + 1 < banners.length) ? currentPos + 1 : 0;
        
    if(speedTimer == true) {
        var fadeOutSpeed = 200;
        var fadeInSpeed = 500;
        $("#banners div.visible").stop(true, true).hide().removeClass("visible");
        if(bannerPager.length != 0) {
	        bannerPager.parent().removeClass("selected");
	        bannerPager.eq(nextPos).parent().addClass("selected");
        }
        banners.eq(nextPos).addClass("visible");
        banners.eq(nextPos).stop(true, true).show();
        clearTimeout(globalTimeout);
        globalTimeout = window.setTimeout("bannerSlide(\"" + nextPos + "\",false)", 15000);
    }
    else {
        var fadeOutSpeed = 2000;
        var fadeInSpeed = 5000;

	    $("#banners div.visible").fadeOut(fadeOutSpeed, function() {
            $(this).removeClass("visible");
            //alert(2);

	        if(bannerPager.length != 0) {
		        bannerPager.parent().removeClass("selected");
		        bannerPager.eq(nextPos).parent().addClass("selected");
	        }
	        /*
	        bannersBg.eq(nextPos).fadeIn("slow");
	        if(bannersBg.eq(nextPos).hasClass("black")) {
		        $("body").switchClass("","black");
	        } else {
		        $("body").switchClass("black","");
	        }
	        $("#bannersBg div.selected").fadeOut("fast");
	        bannersBg.removeClass("selected");
	        bannersBg.eq(nextPos).addClass("selected");
            */
            banners.eq(nextPos).addClass("visible");
            banners.eq(nextPos).fadeIn(fadeInSpeed, function() {
                clearTimeout(globalTimeout);
                globalTimeout = window.setTimeout("bannerSlide(\"" + nextPos + "\",false)", 15000);
            });
        });
    }
};
function getDetailDataFromUrl(hash) {
    if($('#solutionList a').length != 0)
    {
        for (var x = 0; x < $('#solutionList a').length; x++) { 
            if($('#solutionList a').eq(x).text() == hash) {
                $('#solutionList a').eq(x).parent().addClass("selected");
            }
        }
        $("#solutionList").showReferenceDetail();
    }
};

function getDataFromUrl(hash) {
    if(hash == "") {
        getClients(1,"",false);
    }
    else {
        var selectedType = hash.split("/")[0];
        var selectedSubType = hash.split("/")[1]; 
        var topList = $("#refTopNav li");
        var segmentList = $("#refSecondNav1 li");
        var solutionList = $("#refSecondNav2 li");
        var subType = false;
        
        if(selectedSubType == undefined) {
            if(!segmentList.hasClass("selected")) {
                segmentList.eq(0).addClass("selected");
            }
            if(!solutionList.hasClass("selected")) {
                solutionList.eq(0).addClass("selected");
            }
        } else {
            $('.refSecondNav li').removeClass("selected");
            $('#refSecondNav1 a[href*="'+selectedSubType+'"]').parent().addClass("selected");
            $('#refSecondNav2 a[href*="'+selectedSubType+'"]').parent().addClass("selected");
        }

        topList.removeClass("selected");
        if(selectedType == "_vsetky") {
            topList.eq(0).addClass("selected");
            getClients(1,"",subType);
        } else if(selectedType == "_odvetvie") {
            topList.eq(1).addClass("selected");
            var segmentGuid = $("#refSecondNav2 li.selected a").data("guid");
            getClients(3,segmentGuid,subType);
        } else if(selectedType == "_typ_riesenia") {
            topList.eq(2).addClass("selected");
            var solutionGuid = $("#refSecondNav1 li.selected a").data("guid");
            getClients(2,solutionGuid,subType);
        }
    }
};



getClients = function(type, solution, subType) {
    $.ajax({
        type: "POST",
        url: "/Modules/References/WebService/ReferencesService.asmx/GetReferences",
        data: "{'type':'"+type+"','id':'"+solution+"','langId':'"+CurrentLanguage+"','webId':'"+CurrentWebSite+"'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(data) {
            generateTable(data, type, subType);
        }
    });
};

generateTable = function(data, type, subType) {
    var items = data.d.length;
    var cycles = Math.floor(data.d.length / 4);
    var modulus = data.d.length % 4;
    var itemTable = "";
    var itemIntex = 0;
    itemTable += "<table class='type"+type+"'>";
    for (var x = 0; x < cycles; x++) { 
	    itemTable += "<tr>";
	    for (var y = 0; y < 4; y++) { 
	    	if(itemIntex <= items-1){
	    	    itemTable += "<td><div class='referenceItem'><a href='"+ReferenceDetailCategory+"/_"+data.d[itemIntex].SeoUrl+"'><img src='"+data.d[itemIntex].Logo+"' alt='"+data.d[itemIntex].CompanyTitle+"' /></a></div></td>";
	    	}
	    	else {
	    	    itemTable += "<td></td>";
	    	}
	    	itemIntex++;
	    };
	    itemTable += "</tr>";
	}
    if (modulus != 0) {
        itemTable += "<tr>";
	    for (var y = 0; y < 4; y++) { 
	    	if(itemIntex <= items-1){
	    	    itemTable += "<td><div class='referenceItem'><a href='"+ReferenceDetailCategory+"/_"+data.d[itemIntex].SeoUrl+"'><img src='"+data.d[itemIntex].Logo+"' alt='"+data.d[itemIntex].CompanyTitle+"' /></a></div></td>";
	    	}
	    	else {
	    	    itemTable += "<td></td>";
	    	}
	    	itemIntex++;
	    };
	    itemTable += "</tr>";
    }
    itemTable += "</table>";
    if(subType) {
        showTable(itemTable, type);
    } else {
        showType(itemTable, type);
    }
};

showTable = function(table, type) {
     if($("#referenceContent table").length != 0) {
        var refHeight = $("#referenceContent").outerHeight(true);
        $("#referenceContent table").css({ position: "absolute"}).addClass("oldTable");
        $("#referenceContent").css({height:refHeight});
        
        var table = $(table).addClass("newTable");
        table.css({opacity: 0});
        $("#referenceContent table").animate({opacity: 0},200);
        $("#referenceWrapper").append(table);
        var contentHeight = table.outerHeight(true);
        if(type == 2) {
            contentHeight = contentHeight + $("#refSecondNav2").outerHeight(true);
        }
        if(type == 3) {
            contentHeight = contentHeight + $("#refSecondNav1").outerHeight(true);
        }
        
        $("#referenceContent").animate({height:contentHeight},700);
        $("#referenceContent table.newTable").animate({opacity: 1},500, function() {
            $("#referenceContent table.oldTable").remove();
            $("#referenceContent table").css({ position: "relative"});
            $("#referenceContent table").removeClass("newTable");
            $("#referenceContent table a").setHover();
        });
     } else {
        $("#referenceWrapper").append(table);
        $("#referenceContent table a").setHover();
     }
};

showType = function(table, type) {
     if(type == 1){
            var refHeight = $("#referenceContent").outerHeight(true);
            $("#referenceContent").css({height:refHeight});
            
            $("#referenceWrapper").css({ position: "absolute", top : 0}).addClass("oldContent");
            var newWrapper = $("<div>").attr("id","referenceWrapper").addClass("newContent").css({ position: "absolute", opacity: 0, top : 0});

            $(".oldContent").animate({opacity: 0},200, function() {
                $(".oldContent").remove();
            });
            $(".refSecondNav").clone().appendTo(newWrapper);
            newWrapper.append(table);
            $("#referenceContent").append(newWrapper);
            $(".newContent .refSecondNav").hide();
            var contentHeight = newWrapper.outerHeight(true);
            if(refHeight != 0) {
                $("#referenceContent").animate({height:contentHeight},500);
            } else {
                $("#referenceContent").css({height:contentHeight});
            }
            
            $(".newContent").animate({opacity: 1},200, function() {
                $("#referenceContent table.oldTable").remove();
                //$("#referenceWrapper").css({ position: "relative"});
                $("#referenceWrapper").removeClass("newContent");
                $("#referenceContent table a").setHover();
            });
     } else if (type == 2){
            var refHeight = $("#referenceContent").outerHeight(true);
            $("#referenceContent").css({height:refHeight});
            
            $("#referenceWrapper").css({ position: "absolute", top : 0}).addClass("oldContent");
            var newWrapper = $("<div>").attr("id","referenceWrapper").addClass("newContent").css({ position: "absolute", opacity: 0, top : 0});

            $(".oldContent").animate({opacity: 0},200, function() {
                $(".oldContent").remove();
            });
            $(".refSecondNav").clone().appendTo(newWrapper);
            newWrapper.append(table);
            $("#referenceContent").append(newWrapper);
            $(".newContent .refSecondNav").hide();
            $(".newContent .refSecondNav").eq(0).show();
            $(".newContent .refSecondNav").eq(0).selectType();
            $(".newContent .refSecondNav").eq(0).animateHoverArrow(true);
            var contentHeight = newWrapper.outerHeight(true);
            $("#referenceContent").animate({height:contentHeight},500);
            
            $(".newContent").animate({opacity: 1},200, function() {
                $("#referenceContent table.oldTable").remove();
                $("#referenceWrapper").css({ position: "relative"});
                $("#referenceWrapper").removeClass("newContent");
                $("#referenceContent table a").setHover();
                $("#referenceContent table a").setSolutionLink();
            });
     } else {
            var refHeight = $("#referenceContent").outerHeight(true);
            $("#referenceContent").css({height:refHeight});
            
            $("#referenceWrapper").css({ position: "absolute", top : 0}).addClass("oldContent");
            var newWrapper = $("<div>").attr("id","referenceWrapper").addClass("newContent").css({ position: "absolute", opacity: 0, top : 0});

            $(".oldContent").animate({opacity: 0},200, function() {
                $(".oldContent").remove();
            });
            $(".refSecondNav").clone().appendTo(newWrapper);
            newWrapper.append(table);
            $("#referenceContent").append(newWrapper);
            $(".newContent .refSecondNav").hide();
            $(".newContent .refSecondNav").eq(1).show();
            $(".newContent .refSecondNav").eq(1).selectType();
            $(".newContent .refSecondNav").eq(1).animateHoverArrow(true);
            var contentHeight = newWrapper.outerHeight(true);
            $("#referenceContent").animate({height:contentHeight},500);
            
            $(".newContent").animate({opacity: 1},200, function() {
                $("#referenceContent table.oldTable").remove();
                $("#referenceWrapper").css({ position: "relative"});
                $("#referenceWrapper").removeClass("newContent");
                $("#referenceContent table a").setHover();
            });     
    }
};

function emailLinkBuilder() {
    $('.encodedAddress').replaceWith(function() {
        return '<a href="mailto:' + $(this).text().replace("[at]", "@") + '">' + $(this).text().replace("[at]", "@") + '</a>';
    });
};

/**
 * JQERY 1.5, 1.6  bug, fix backgroundPosition animation 
 * @author Alexander Farkas
 * v. 1.22
 */


(function($) {
	if(!document.defaultView || !document.defaultView.getComputedStyle){ // IE6-IE8
		var oldCurCSS = $.curCSS;
		$.curCSS = function(elem, name, force){
			if(name === 'background-position'){
				name = 'backgroundPosition';
			}
			if(name !== 'backgroundPosition' || !elem.currentStyle || elem.currentStyle[ name ]){
				return oldCurCSS.apply(this, arguments);
			}
			var style = elem.style;
			if ( !force && style && style[ name ] ){
				return style[ name ];
			}
			return oldCurCSS(elem, 'backgroundPositionX', force) +' '+ oldCurCSS(elem, 'backgroundPositionY', force);
		};
	}
	
	var oldAnim = $.fn.animate;
	$.fn.animate = function(prop){
		if('background-position' in prop){
			prop.backgroundPosition = prop['background-position'];
			delete prop['background-position'];
		}
		if('backgroundPosition' in prop){
			prop.backgroundPosition = '('+ prop.backgroundPosition;
		}
		return oldAnim.apply(this, arguments);
	};
	
	function toArray(strg){
		strg = strg.replace(/left|top/g,'0px');
		strg = strg.replace(/right|bottom/g,'100%');
		strg = strg.replace(/([0-9\.]+)(\s|\)|$)/g,"$1px$2");
		var res = strg.match(/(-?[0-9\.]+)(px|\%|em|pt)\s(-?[0-9\.]+)(px|\%|em|pt)/);
		return [parseFloat(res[1],10),res[2],parseFloat(res[3],10),res[4]];
	}
	
	$.fx.step. backgroundPosition = function(fx) {
		if (!fx.bgPosReady) {
			var start = $.curCSS(fx.elem,'backgroundPosition');
			if(!start){//FF2 no inline-style fallback
				start = '0px 0px';
			}
			
			start = toArray(start);
			fx.start = [start[0],start[2]];
			var end = toArray(fx.end);
			fx.end = [end[0],end[2]];
			
			fx.unit = [end[1],end[3]];
			fx.bgPosReady = true;
		}
		//return;
		var nowPosX = [];
		nowPosX[0] = ((fx.end[0] - fx.start[0]) * fx.pos) + fx.start[0] + fx.unit[0];
		nowPosX[1] = ((fx.end[1] - fx.start[1]) * fx.pos) + fx.start[1] + fx.unit[1];           
		fx.elem.style.backgroundPosition = nowPosX[0]+' '+nowPosX[1];

	};
})(jQuery);
