// JavaScript Document
var displaySearchResults;
var displayFacebookCommentString;

(function($) {
    $(document).ready(function() {
    	// Campaign home page
        hookUpInifiniteScroll();

        var imageIndex = 0;
        var resume = true;
        if (location.hash != '')
        {
            var deepLinkName = location.hash.substring(1);
            var hiddeninput = $('#cycleContainer input[value="' + deepLinkName + '"]');
            if(hiddeninput != null)
            {
                var deepLinkImageIndex = hiddeninput.prev().attr('rel');
                if(deepLinkImageIndex != null)
                {
                    imageIndex = deepLinkImageIndex - 1; 	    
                    resume = false;
                }
            }

            //setPagingPage(deepLinkName);
        }

		var slideshow = $('.slideshow').cycle({
			fx: 'scrollHorz',
			pager: '#cyclePagination',
			timeout:  5000, 
			pause: 1,
            after: ResumeSlideShow,
            startingSlide: imageIndex,
			pagerAnchorBuilder: function (idx, slide) {
				return '<li><a href="#"></a></li>';
			}
		});

        slideshow.cycle(resume ? 'resume' : 'pause', true);



    	$("#sub_column img").error(function() {
		  $(this).hide();
		});
    
	    $('#topics_overview #sections .item ol li:last').css('border-bottom', 'none');
    	
    
        // Stories select resize
        $('select.styled').css( {width : '287px', height : '34px', '-webkit-appearance' : 'menulist-button' } );
    
        // Search form label
        $('#search_form label').perfectForm();
        $('#search_form label').css({top : '13px', color : '#898989'});

    	//Fancybox
        var shareFrame = $("#shareStoryFrame");
        
        $("#shareStory, #shareStoryTitle, a.campaign-page.submit-story")
        	.fancybox({
        		width: 'auto',
        		height: 'auto',
        		autoDimensions: true,
        		autoScale: false,
        		padding: 0,
                showCloseButton: true,
                hideOnOverlayClick: false,
                hideOnContentClick: false,
                enableEscapeButton: false
    		})
            .click(function(){
                shareFrame.attr("src", "/layouts/Stories/Story.aspx");
            })
			.css('cursor','pointer');
        ;
		
		$('.product_breadcrumb .view_all')
		    .fancybox({
        		width: 'auto',
        		height: 'auto',
        		autoDimensions: true,
        		autoScale: false,
        		padding: 0
			});
    	

		//jscrollpane initialization
    	$('.scroll').jScrollPane();
        

		$('#product_carousel .carousel').jcarousel({
			visible: 5,
			scroll: 3,
			itemFallbackDimension: 158,
			buttonNextHTML: '<a href="#" class="button next">Next</a>',
			buttonPrevHTML: '<a href="#" class="button prev">Previous</a>'
		});
		
        //search result view switching
        $('.list_view a').click(function(e) {
            e.preventDefault();
            var state = $(this).attr('rel');
            switchView(state);
        });
        
        $('.grid_view a').click(function(e) {
            e.preventDefault();
            var state = $(this).attr('rel');
            switchView(state);
        });
        
        //jQuery UI Accordion
        var icons = {
            header: "ui-icon-circle-arrow-e",
            headerSelected: "ui-icon-circle-arrow-s"
        };
        $( "#accordion" ).accordion({
            /* icons: icons */
            icons: { 'header': 'expand', 'headerSelected': 'collapse' },
			change: function(e, els){
				$(els.newContent).jScrollPane();
			}
        });
        
        $( "#toggle" ).button().toggle(function() {
            $( "#accordion" ).accordion( "option", "icons", false );
        }, function() {
            $( "#accordion" ).accordion( "option", "icons", icons );
        });
        
        //Image Carousel
        $('#display img:first')
            .addClass('active')
            .css({'opacity': '1.0','z-index': '2'})
        ;
        
        var thumbCounter = 1;
        $('#display img:not(a img)')
        	.each(
        		function() {
	            	var thumbImg = $(this)
	                	.clone()
	                	.css('width', 'auto')
		            ;			
		            var thumbImageLink = $('<a href="#" rel="'+thumbCounter+'"></a>').html(thumbImg);
		            var listItemWrapper = $('<li></li>').html(thumbImageLink);
		            $('#nav ol').append(listItemWrapper);
		            thumbCounter++
        		}
    		)
        ;
        
        $('#nav li:first')
            .addClass('active')
        ;
        $('#nav li a').click(function(e) {
            e.preventDefault();
            clearInterval(play);
            if($(this).parent('li').attr('class') != 'active') {
                carSwitch($(this).attr('rel'));
            }
            play = setInterval(carAutoSwitch, 5000);
        });
                
    	var play = setInterval(carAutoSwitch, 5000);
        
        var selectedSearchTermUrl = null;

        $('input.search_input').autocomplete({
            source: function(request, response) {
                var searchTerm =  $('input.search_input').val()
                $.ajax({
                    url: '/Services/SearchService.svc/GetSearchResults?Query=' + searchTerm,
                    type: 'get',
                    success: function(data) {
                        response($.map(data, function(item) {
                            return {
                                label: item.Title.replace(new RegExp(searchTerm,"i"),'<strong>' + searchTerm + '</strong>'),
                                value: item.Title,
                                url: item.URL
                            };
                        }));
                    },
                    error: function(request, status, error) {
                        
                    }
                });
            },
            minLength: 2,
            html: true,
            select: function(event, ui) {
                window.location.pathname = ui.item.url;
            },
			focus: function(e){
//				var el = $(e.relatedTarget);
//				el.parents("ul:first").find(".ui-state-hover")
//					.removeClass("ui-state-hover");
//				
//				if(el.is("span")){
//					el.parent().addClass("ui-state-hover");	
//				}
//				else{
//					el.addClass("ui-state-hover");
//				}
			},
            open: function() {
                //Auto Complet DropDown
                
                $('.ui-autocomplete').css('margin-top', '3px');
                $('.ui-autocomplete li:odd').addClass('odd');
                
                $('.ui-autocomplete li a').each(function() {
                    var item = '<span>'+$(this).html()+'</span>';
                    $(this).html(item);
                });
                $('.ui-autocomplete li a span').widthTruncate({width:360});
            }
        });

		//Custom Dropdown
		$('.dropdown .drop_list')
			.hide()
		;
		$('.dropdown .drop_trigger')
			.click(function(e) {
				e.preventDefault();
		   		$(this).siblings('.drop_list').show();
			})
		;
		$('.dropdown .drop_list li:first')
			.click(function(e) {
				e.preventDefault();
		   		$(this).parent('.drop_list').hide();
			})
		;
		$('.dropdown .drop_list .close')
			.click(function() {
		   		$(this).parent('.drop_list').hide();
			})
		;
		$('.dropdown')
			.mouseleave(function() {
				$(this).find('.drop_list').hide();
			})
		;

		$('.dropdown .drop_list li a')
			.click(function(e) {
				if(hasValidClientSideTarget())
				{
					e.preventDefault();
					var href = setClientSideHref($(this).attr('href'));
					displaySearchResults(href);
				}
			})
		;

		//Paged List Grid
		$('a[id*=SearchResultsList_next]')
			.click(function(e) {
				if(hasValidClientSideTarget())
				{
					e.preventDefault();
					var href = setClientSideHref($(this).attr('href'));
					displaySearchResults(href);
				}
			})
		;
		$('a[id*=SearchResultsList_prev]')
			.click(function(e) {
				if(hasValidClientSideTarget())
				{
					e.preventDefault();
					var href = setClientSideHref($(this).attr('href'));
					displaySearchResults(href);
				}
			})
		;



		//sidbar box text shrink
		$(".mod .mod_content").each(function(){
			var el = $(this);
			var copy = el.find(".mod_copy");
			var trimmed = false;
			while(el[0].clientHeight < el[0].scrollHeight){
				var text = copy.text();
                
                if (text.length > 10)
                {
				  copy.text(text.slice(0,text.length-10));
                }
                else
                {
                  copy.text(text.slice(0,text.length-1));
                }
				trimmed = true;
			}
			if(trimmed){
				copy.html(copy.text().slice(0,text.length-10) + "&hellip;");
			}
		});

        //setup tracking events
        (function(){
            $("a[data-unica],a[data-floodlight],a[data-sem]").each(function(){
                var te = new TrackingEvent(this);
                var $el = $(this);
                if($el.is("[data-unica]")){
                    te.unica($el.attr("data-unica"));
                }
                if($el.is("[data-floodlight]")){
                    te.floodlight($el.attr("data-floodlight"));
                }
                if($el.is("[data-sem]")){
                    te.sem($el.attr("data-sem"));
                }
            });
        })();
    });

    function ResumeSlideShow() {

        $('.slideshow').cycle('resume');
    }

    var setPagingPage = function(pageNumber)
    {
        if($('#search_results').length !== 0)
        {
            var action = $('form').attr('action');
            var url = action + '?p=' + pageNumber;
            var href = setClientSideHref(url);
            displaySearchResults(href);
        }
    }

	var setClientSideHref = function(originalHref)
	{
        originalHref = originalHref.toLowerCase();
		if(!hasValidClientSideTarget()) 
		{
			return originalHref;
		}

		if(pagedListGridClientTargetUrl.indexOf("?") >= 0 && originalHref.indexOf("?") >= 0 && pagedListGridServerTargetUrl.indexOf("?") < 0)
		{
			// If we're in here, we're about to have two query-string start characters (?) and we need to change one, giving priority to the base url
			originalHref = originalHref.replace("?","&");
		}
		return originalHref.replace(pagedListGridServerTargetUrl.toLowerCase(), pagedListGridClientTargetUrl.toLowerCase());
	};

	var hasValidClientSideTarget = function()
	{
		return !(!pagedListGridClientTargetUrl || !pagedListGridServerTargetUrl);
	};

    hookUpInifiniteScroll = function() {
        if($('#gridResults').length == 0)
        {
            return;
        }
        var infiniteScroll = $('#gridResults').infinitescroll({
            navSelector : ".paginator",
            nextSelector : ".paginator .next2",
            itemSelector : "#gridResults li",
            debug : false,
            loading : {
                img : "",
                msgText : "",
                finishedMsg : ""
            }
        }, 
        function(arrayOfNewElems){
            $('#gridResults').infinitescroll('hashCurrentPage',null);
        });

        $('.paginator').hide();
        if(location.hash != '')
        {
            var currentPage = parseInt(location.hash.substring(1));
            if(isNaN(currentPage))
            {
                currentPage = 1;
            }
            var action = $('form').attr('action');
            var url = action + '?p=' + currentPage + '&s=1';

            if(action.indexOf('?') != -1)
            {
                var url = action + '&p=' + currentPage + '&s=1';
            }
            var href = setClientSideHref(url);
            displaySearchResults(href);
            $('#gridResults').infinitescroll('updateCurrentPage',currentPage);
        }
        
    };

	displaySearchResults = function(href) {
		$.get( href, function(data) {
			var categoryText = $(data).find('#CurrentCategory').val();
			var pageCountText = $(data).find('#PageCountText').val();
			var currentPage = parseInt($(data).find('#CurrentPageValue').val());
			var totalPages = parseInt($(data).find('#TotalPagesValue').val());

			//Handle paging
			//handlePagedListGridPaging(currentPage, totalPages, pageCountText, categoryText);

			// Handle category dropdown
			$('.dropdown .drop_trigger').text((categoryText == '') ? 'View All Results' : categoryText);
    		$('.dropdown .drop_list').hide();

			// Replace data
            if($("#gridResults li").length == 0)
            {
                $("#gridResults").append($(data).find("li"));
            }
            else
            {
			    $("#gridResults li").replaceWith($(data).find("li"));
            }
            $("#result_info span").text($(data).find("li").length + " Results");
//			$("#gridResults").quicksand($(data).find('li'), {
//				duration: 800,
//				easing: 'easeInOutQuad',
//				adjustHeight: 'auto'
//			});
		});
    };


	var handlePagedListGridPaging = function(currentPage, totalPages, pageCountText, currentCategory)
	{
		$(".paginator li.page_count").text(pageCountText);
		var nextButtons = $('a[id*=SearchResultsList_next]');
		var prevButtons = $('a[id*=SearchResultsList_prev]');
        
		//location.hash = '#' + currentPage;

		if(nextButtons && nextButtons.length > 0)
		{
			if(currentPage >= totalPages) 
			{
				nextButtons.hide();
			}
			else
			{
				nextButtons.show();
			}

			var href = nextButtons.attr('href');
			var newHref= href.replace(/p=(\d*)/, 'p='+(currentPage+1));
			//Handle Reverse Moves
			if(href == newHref) newHref = href.replace('p='+(currentPage+2), 'p='+(currentPage+1));

			newHref = setPagingUrlCategory(newHref, currentCategory);
			nextButtons.attr('href',newHref);
		}

		if(prevButtons && prevButtons.length > 0)
		{
			if(currentPage <= 1)
			{
				prevButtons.hide();
			}
			else
			{
				prevButtons.show();
			}
				
			var href = prevButtons.attr('href');
			var newHref= href.replace(/p=(\d*)/, 'p='+(currentPage-1));
			//Handle Reverse Moves
			if(href == newHref) newHref = href.replace('p='+(currentPage), 'p='+(currentPage-1));

			newHref = setPagingUrlCategory(newHref, currentCategory);
			prevButtons.attr('href',newHref);
		}
	};

	var setPagingUrlCategory = function(url, currentCategory)
	{
		var regx = new RegExp("&c=[^&$]*");
		var m = regx.exec(url);
		if(m != null)
		{
			url = url.replace(regx, "&c="+currentCategory);
		}
		else
		{
			if(url.indexOf("?") >= 0)
			{
				url += "&c="+currentCategory;
			}
			else
			{
				url += "?c="+currentCategory;
			}
		}
		
		return url;
	};

    //Filter results by category [deprecated?]
    var filterCat = function(cat, sortList, replacement) {
		$('.dropdown .drop_trigger').text(cat.text());
    	$('.dropdown .drop_list').hide();
    	
    	var category = cat.attr('id');
    	
    	if(category == 'all') {
	    	var filteredData = replacement.find('li');
    	} else {
	    	var filteredData = replacement.find('li[data-type="'+ category +'"]');
    	}
    	
    	//console.log(filteredData);
    	
		sortList.quicksand(filteredData, {
			duration: 800,
			easing: 'easeInOutQuad'
	    });
    }
    
    //Carousel Click Switch
    var carSwitch = function(slideNum) {
        var activeDisplay = $('#display img.active');
        var activeThumb = $('#nav li.active');
        
        $('#display img[rel*="'+slideNum+'"]')
            .stop()
            .addClass('active')
            .css({'opacity': '0', 'z-index': '2.0'})
            .animate({'opacity': '1.0'}, 1000)
        ;
        $('#nav li a[rel*="'+slideNum+'"]')
            .stop()
            .parent('li')
            .addClass('active')
        ;
        activeDisplay
            .stop()
            .removeClass('active')
            .animate({'opacity': '0'}, 1000)
        ;
        activeThumb
            .stop()
            .removeClass('active')
        ;
        
    }
    
    //Carousel Auto Switch
    var carAutoSwitch = function() {
        var activeDisplay = $('#display img.active');
        var activeThumb = $('#nav li.active');
        if(activeDisplay.next('img').length) {
            activeDisplay
                .next('img')
                .stop()
                .addClass('active')
                .css({'opacity': '0', 'z-index': '2.0'})
                .animate({'opacity': '1.0'}, 1000)
            ;
            activeThumb
                .next('li')
                .stop()
                .addClass('active')
            ;
        } else {
            $('#display img:first')
                .stop()
                .addClass('active')
                .css({'opacity': '0', 'z-index': '2.0'})
                .animate({'opacity': '1.0'}, 1000)
            ;
            $('#nav li:first')
                .stop()
                .addClass('active')
            ;
        }
        activeDisplay
            .stop()
            .removeClass('active')
            .animate({'opacity': '0'}, 1000)
        ;
        activeThumb
            .stop()
            .removeClass('active')
        ;
    }
        
    
    //search result view switching
    var switchView = function(state) {
        var list = $('.list');
        var grid = $('.grid');
        var list_btn = $('.list_view a')
        var grid_btn = $('.grid_view a')
        
        list_btn.removeClass('active');
        grid_btn.removeClass('active');
        
        grid.fadeOut(0);
        list.fadeOut(0);
        
        if(state == 'list') {
            grid.addClass('list');
            grid.removeClass('grid');
            list_btn.addClass('active');
            grid.find('img').css('visibility','hidden');
        } else if(state == 'grid') {
            list.addClass('grid');
            list.removeClass('list');
            grid_btn.addClass('active');
            list.find('img').css('visibility','visible');
        }
        
        grid.fadeIn();
        list.fadeIn();
        
    }

    jQuery.fn.perfectForm = function(options)
    {
        var settings = {
            overlap: true,
            ignore: ''             
        }

        if(options) {
            jQuery.extend(settings, options);
        };

        this.not(settings.ignore).each(function(){
            var input = $(this).next('input, textarea');
            var label = $(this);
        
            // first check all inputs for values, then hide it's label if it has a value
            if( settings.overlap ) {
                label.addClass('overlap');
            }
        
            if( settings.overlap && input.val() != '' ) {
                label.hide();
            }
        
            label.click(function(){
                label.hide();
                input.focus();
            }, function(){
                if( input.val() == '' ) {
                    label.show();
                }
            });
        
            // then add a focus event to all inputs to hide their labels when focused on, 
            // and remain hidden on blur if a value is entered
            input.focus(function(){
                label.hide();
            }).blur(function(){
                if( $(this).val() == '' ) {
                    label.show();
                }
            });
        });
    };

	displayFacebookCommentString = function(itemId, targetId) {
		$.ajax({
			type: "POST",
			contentType: "application/json; charset=utf-8",
			url: "/sitecore%20modules/FacebookFieldType/ContentDelivery.aspx/GetFacebookComments",
			data: "{'itemId': '" + itemId + "', 'getFromCacheOnly':false}",
			dataType: "json",
			success: function (msg) {
				$(targetId).text(msg.d);
			}
		});
	};
})(jQuery);



