﻿        /*! RECALC General v1 <http://nvinteractive.co.nz>
	        Copyright (c) NV Interactive
        	
	        References:
		        jquery-1.2.6.js
        		
	        Release Notes:

        		
        */

ui = function () {

    var SEARCHURL = "/recipes/search.aspx?keywords={0}";
    var SEARCHCRAWLERURL = "/net/search/default.aspx?q=";

    //
    // private function for debugging
    //
    function debug(msg) {
        if (window.console && window.console.log)
            window.console.log('nvui: ' + msg);
    };

    var init = function () {
        //Init Menus
        $("#mainnav-menu").nvmenu();
        $("#footer-sitemap").nvmenu({ disableSubs: true });
        //Init Forms
        $(".form").nvforms();

        //$("form").keypress(function(e){e.preventDefault()});

        /* [ Add code for browsers ] */
        if (jQuery.browser.safari) $("body").addClass("webkit");
        if (jQuery.browser.msie) {
            $("body").addClass("msie");
            if (jQuery.browser.version == 7.0) $("body").addClass("msie7");
            if (jQuery.browser.version == 6.0) $("body").addClass("msie6");
        }
        if (jQuery.browser.mozilla) $("body").addClass("mozilla");

        $("a.more").each(function () {
            $(this).click(function (e) {
                e.preventDefault();
                $(this).next('.expand').toggle('slow');
                $(this).text($(this).text() == '+ Ingredients' ? '- Ingredients' : '+ Ingredients');
            });
        });

        $('.print a').click(function (e) {
            window.print();
        });


        /*
        $('div#content').localScroll({
        target: 'body',
        axis: 'y'
        });
        */

        /*$('.slideshow').cycle({
        fx: 'fade',
        speed: 500,
        timeout: 0,
        sync: false,
        pager: '.thumbs',
        pagerAnchorBuilder: function(idx, slide) {
        // return selector string for existing anchor 
        return '.thumbs li:eq(' + idx + ') a';
        }
        });*/
        /*
        $('.refine_category ul li:nth-child(10)').nextAll().hide().end().parent().append('<li><a class="show-more">+ Show more</a></li>');
        $('a.show-more').click(function(e) {
        e.preventDefault();
        $(this).parent().prevAll().toggle();
        $(this).text($(this).text() == '+ Show more' ? '- Show less' : '+ Show more');
        });*/

        // RECIPE SEARCH

        //$('#wrapper').append('<div id="results"></div>');


        function search(keyword) {
            $.ajax({
                type: "POST",
                url: "/webservices/Recipes.asmx/SearchRecipes",
                data: "{keyword:'" + keyword + "'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: searchPreviewSucess,
                failure: function (msg) { }
            });
        }

        /* $('.go').click(function(e) {
        search($('#keyword').val());
        }); */

        $('#simple-search .field').keyup(searchPreviewKeyUp);


        //Keyup event handler
        function searchPreviewKeyUp(e) {


            var $current = $('#searchPreview .focus');
            // 13 enter bailout
            if (e.keyCode == 13) {
                if ($current.length) {
                    window.location = $('.title a', $current).attr('href');
                }
                return false;
            }


            // 27 - escape key
            if (e.keyCode == 27) {
                searchPreviewPanelCleanup();
                return false;
            }

            if (e.keyCode == 40) {
                if ($current.length) {
                    if ($current.next().length) $current.removeClass("focus").next().addClass("focus");
                } else {
                    $("#searchPreview li:first").addClass("focus")
                }
            } else if (e.keyCode == 38) {
                if ($current.length) {
                    if ($current.prev().length) $current.removeClass("focus").prev().addClass("focus");
                } else {
                    $("#searchPreview li:last").addClass("focus")
                }
            } else {
                if ($(this).val().length >= 3) {
                    search($(this).val());
                } else {
                    //Not enough characters, so remove panel
                    searchPreviewPanelCleanup();
                }
            }
        }

        //Create and destroy search preview window
        function searchPreviewPanelInit() {

            if ($("#searchPreview").length) {
                $("#searchPreview ul").empty();
                return; //Panel already exists
            } else {
                $("#simple-search").append("<div id='searchPreview'><h5>Recipe Results</h5><ul id='simpleSearchRecipes'></ul><div id='searchPreviewShowAll'>See all →</div><h5>Other Results</h5><ul id='simpleSearchCrawler'></ul><div id='searchPreviewShowAllOther'>Other Results →</div></div>");
                $("body").bind("click", searchPreviewPanelCleanup);
                $("#simple-search .field").data("preventsubmit", true);
            }

        }

        function searchPreviewPanelCleanup() {
            debug("cleanup");
            //$("#searchPreview").animate( {height: 1, opacity: 0}, 300, function(){ $("#searchPreview").css({opacity: 1, height: 50}).remove(); });//remove();
            $("#searchPreview").remove();
            $("body").unbind("click", searchPreviewPanelCleanup);
            $("#simple-search .field").data("preventsubmit", false);
        }

        //Setup live bound events
        $("#simple-search")
			.delegate("#searchPreview li", "click", function () {
			    window.location = $("a", this).attr("href");
			    return false;
			})
			.delegate("#searchPreview li", "mouseover", function () {
			    $('#searchPreview .focus').removeClass('focus');
			    $(this).addClass('focus');
			})
			.delegate("#searchPreview li", "mouseout", function () {
			    $(this).removeClass("focus");
			})
			.delegate("#searchPreviewShowAll", "click", function () { $("#simple-search .default").click(); })
            .delegate("#searchPreviewShowAllOther", "click", function () { window.location = SEARCHCRAWLERURL + $("#simple-search input").val(); })

			.click(function (e) { e.stopPropagation(); });



        //Search Preview Handle Successfull results
        function searchPreviewSucess(response) {

            searchPreviewPanelInit();

            var recipes = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;

            for (var i = 0; i < recipes.length; i++) {
                if (!recipes[i].IsOther) {
                    var sResult = '<li>';
                    //if (recipes[i].ImageUrl) { sResult += '<div class="thumb"><img src="' + recipes[i].ImageUrl + '" alt="" /></div>'; }
                    sResult += '<div class="thumb"><img src="' + recipes[i].ImageUrl + '" alt="" /></div>';
                    if (recipes[i].RecipeUrl) { sResult += '<div class="title"><a href="' + recipes[i].RecipeUrl + '">' + recipes[i].RecipeName + '</a></div>'; }
                    if (recipes[i].CategoryUrl) { sResult += '<div class="title"><a href="' + recipes[i].CategoryUrl + '">' + recipes[i].CategoryName + '</a></div>'; }
                    if (recipes[i].CookingDesc) { sResult += '<div class="description">' + recipes[i].CookingDesc + '</div>'; }
                    if (recipes[i].CategoryName) { sResult += '<div class="category">Appears in <strong>' + recipes[i].CategoryName + '</strong></div>'; }
                    sResult += "</li>";
                    $('#searchPreview ul[id=simpleSearchRecipes]').append(sResult);
                }
                else {
                    var sResult = '<li>';
                    sResult += '<div class="title"><a href="' + recipes[i].ImageUrl + '">' + recipes[i].RecipeName + '</a></div>';
                    sResult += "</li>";
                    $('#searchPreview ul[id=simpleSearchCrawler]').append(sResult);
                }
            }

        }

    } //init


    return {
        /* Public API
        */
        init: init
    }

} ();

    $(ui.init);



