﻿//#region -- Prototypes
if (!"".trim) {
    String.prototype.trim = function() {
        return this.replace(/^\s*/, "").replace(/\s*$/, "");
    }
}
//#endregion -- Prototypes

//#region -- Egghead
//#region -- Egghead base 
Egghead = {
    //#region -- properties
    application: {
        path: function() { return window.location.protocol + "//" + window.location.hostname + window.location.port; }
    }
	, debug: { petedit: 0, ajaxloaderror: 0 }
	, isdebug: true
	, templates: {}
	, defaults: {
	    dialogcnt: function() {
	        if ($("#dialogContainer").length == 0) {
	            $("body").append('<div id="dialogContainer"></div>');
	        }
	        return $("#dialogContainer");
	    }
	}
    //#endregion -- properties

    //#region -- fn
	, fn: {
	    mergeOptions: function() { }
		, dialog: function() { }
		, isInt: function(evt) {
		    var charCode = (evt.which) ? evt.which : event.keyCode
		    if (charCode > 31 && (charCode < 48 || charCode > 57)) return false;
		    if (charCode == 13) return false;
		    return true;
		}
		, dictToJson: function(dictParsed) {
		    var json = {};
		    $.each(dictParsed, function(i, item) { json[item.Key] = item.Value; });
		    return json;
		}
		, dictToGroupedOptions: function(dict) {
		    var options = "";
		    $.each(dict, function(gi, group) {
		        options += "<optgroup label='" + group.Key + "'>";
		        $.each(group.Value, function(i, item) {
		            options += "<option value='" + item.Key + "' group='" + group.Key + "'>" + item.Value + "</option>";
		        });
		        options += "</optgroup>";
		    });
		    return options;
		}
		, formToJson: function(form) {
		    var json = {};
		    for (var i = 0; i < form.length; i++) {
		        var el = form[i];
		        var val = $(el).val();
		        if (el.type && el.type === "checkbox") {
		            val = el.checked;
		        }
		        json[el.name] = val;
		    }
		    return json;
		}
		, intColumnEdit: function(pattern, container) { }
		, checkEmailSyntax: function(email) { return /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/.test(email); }
		, setDebug: function(info) { var dg = $("#eggheadDebug span"); if (dg.length == 0) { $("body").append('<div id="eggheadDebug"><span></span></div>'); dg = $("#eggheadDebug span"); $("#eggheadDebug").dialog({ modal: false, title: "debug", width: 200, height: 800, position: ["left"] }); } dg.html(info + "<br />"); }
		, addDebug: function(info) { var dg = $("#eggheadDebug span"); if (dg.length == 0) this.setDebug(info); else dg.html(dg.html() + info + "<br />"); }
	}
    //#endregion -- fn

    //#region -- services
	, services: {
	    ajax: { path: function() { }
			, load: function() { }
			, ucLoad: function() { }
			, ucUpdate: function() { }
	    }
	}
    //#endregion -- services

    //#region -- busy 
	, busy: { obj: $()
		, items: []
		, visible: false
		, hide: function() {
		    Egghead.busy.visible = false;
		    Egghead.busy.obj.hide();
		    Egghead.busy.items = []; //reset
		}
		, show: function() {
		    if (!Egghead.busy.visible && Egghead.busy.items.length) {

		        Egghead.busy.obj.show();
		        Egghead.busy.visible = true;
		    }
		}
		, subscribe: function(id) {
		    if (id) {
		        Egghead.busy.items.push(id);
		        Egghead.busy.show();
		    }
		}
		, unsubscribe: function(id) {
		    var a = [], removed = false;
		    for (var i = 0; i < Egghead.busy.items.length; i++) {
		        if (!removed && Egghead.busy.items[i] === id) removed = true
		        else a.push(Egghead.busy.items[i]);
		    }
		    Egghead.busy.items = a;
		    if (Egghead.busy.visible && !Egghead.busy.items.length) Egghead.busy.hide();
		}
		, move: function(e) {
		    if (Egghead.busy.visible) {
		        Egghead.busy.obj.css({ "left": e.pageX + 8, "top": e.pageY - 10 });
		    }
		}
	}
    //#endregion -- busy

    //#region -- controls
	, controls: {
	    //#region -- datepicker
	    datepicker: function(jqPattern, container) {
	        $(jqPattern, container) //z-index fixed per class, z-index + possition: relative, absolute, fixed
			.datepicker({
			//beforeShow: function(input, inst){ }

});
	    }
	    //#endregion -- datepicker
	}
    //#endregion -- controls
};
//#endregion -- Egghead base 

//#region -- fn 
//#region -- Egghead.fn.mergeOptions(options, extended)
Egghead.fn.mergeOptions = function(options, extended) {
    if (extended) for (var key in extended) {
        if (extended.hasOwnProperty(key)) {
            if (options.hasOwnProperty(key) && (typeof extended[key] === "object") && (typeof options[key] === "object")) {
                Egghead.fn.mergeOptions(options[key], extended[key]);
            }
            else {
                options[key] = extended[key];
            }
        }
    }
    return options;
};
//#endregion -- Egghead.fn.mergeOptions(options, extended)

//#region -- Egghead.fn.dialog(options, html)
Egghead.fn.dialog = function(options, html) {
    var defaults = { autoOpen: true, height: 'auto', width: 570
		, modal: true
		, title: "Dialog"
		, buttons: {}
		, close: function() { $(this).empty(); }
    };

    Egghead.fn.mergeOptions(defaults, options);

    return Egghead.defaults.dialogcnt()
		.empty().html(html)
		.dialog(defaults);
}
//#endregion -- Egghead.fn.dialog(options, html)

//#region -- Egghead.fn.intColumnEdit(pattern, container)
Egghead.fn.intColumnEdit = function(pattern, container) {
    return $(pattern, container)
	.keypress(Egghead.fn.isInt)
	.keydown(function(event) {
	    if (event.keyCode != 38 && event.keyCode != 40) return;
	    var inputs = $(pattern);
	    for (var i = 0; i < inputs.length; i++) {
	        if ($(inputs[i]).attr("id") == $(this).attr("id")) {
	            if (event.keyCode == 38) if (i > 0) $(inputs[i - 1]).focus();
	            if (event.keyCode == 40) if (inputs.length > i) $(inputs[i + 1]).focus();
	        }
	    }
	})
	.focus(function() { if ($(this).val() == 0) $(this).val(''); })
	.blur(function() { if ($(this).val() == '') $(this).val('0'); });
}
//#endregion -- Egghead.fn.intColumnEdit(pattern, container)

//#endregion -- fn 

//#region -- services
Egghead.services.ajax.path = function() { return Egghead.application.path() + "/AjaxServices.asmx"; };

//#region -- load(options: {service_fn, data:stringify'ied}) - success(result.d, srv_result), error(msg.responseText)
Egghead.services.ajax.load = function(options) {
    var defaults = { type: 'POST'
		, url: Egghead.services.ajax.path() + options.service_fn
        //,data: {}
		, contentType: "application/json; charset=utf-8"
		, dataType: "json"
		, success: function(result) { }
		, error: function(msg) { alert(msg.responseText); } // default one

		, busy: "default"
		, beforeSend: function(rq) {
		    Egghead.busy.subscribe(this.busy);
		}
		, complete: function(rq) {
		    Egghead.busy.unsubscribe(this.busy);
		}
    };

    Egghead.fn.mergeOptions(defaults, options);

    if (Egghead.debug.ajaxloaderror) defaults.error = function(msg) { alert(msg.responseText); };

    $.ajax(defaults);

    return this;
};
//#endregion -- load

//#region -- ucLoad(options: { controlPath: 'folder/control', data: {}, success:(result.d), error })
Egghead.services.ajax.ucLoad = function(options) {
    var defaults = { service_fn: "/RenderUserControl", controlPath: "" }
    Egghead.fn.mergeOptions(defaults, options);
    defaults.data = JSON.stringify({ controlPath: defaults.controlPath
		, options: defaults.data
    });
    return Egghead.services.ajax.load(defaults);
};
//#endregion -- ucLoad

//#region -- ucUpdate(options: { controlPath: 'folder/control', data: {}, success:(json, srv_result), error })
Egghead.services.ajax.ucUpdate = function(options) {
    var defaults = { service_fn: "/RenderUserControlUpdate", controlPath: "" }
    Egghead.fn.mergeOptions(defaults, options);
    defaults.data = JSON.stringify({ controlPath: defaults.controlPath
		, options: defaults.data
    });

    defaults.clientSuccess = options.success;
    defaults.success = function(msg, result) {
        var dict = JSON.parse(msg.d);
        //if(json.result === "success")
        return defaults.clientSuccess(Egghead.fn.dictToJson(dict), result); //data, service result
    }
    return Egghead.services.ajax.load(defaults);
};
//#endregion -- ucUpdate



//#endregion -- services

//#endregion -- Egghead

//#region === (jQuery.extend)

//#region -- serializeFormToJson (jQuery.extend)
jQuery.extend({
    serializeFormToJson: function(form) {
        var json = {};
        for (var i = 0; i < form.length; i++) {
            var el = form[i];
            var val = $(el).val();
            if (el.type && el.type === "checkbox") {
                val = el.checked;
            }
            json[el.name] = val;
        }
        var res = JSON.stringify(json);
        return res;
    }
});
//#endregion -- serializeFormToJson

//#region -- dictionaryToJson 
jQuery.extend({
    dictionaryToJson: function(dictUnparsed) {
        var dic = JSON.parse(dictUnparsed);
        var json = {};
        $.each(dic, function(i, item) {
            json[item.Key] = item.Value;
        });
        return json;
    }
		, pDictionaryToJson: function(dictParsed) {
		    var json = {};
		    $.each(dictParsed, function(i, item) {
		        json[item.Key] = item.Value;
		    });
		    return json;
		}
});
//#endregion -- dictionaryToJson

//#region -- dictionaryToOptions
jQuery.extend({
    dictionaryToOptions: function(dictUnparsed) {
        var dic = JSON.parse(dictUnparsed);
        var options = "";
        $.each(dic, function(i, item) {
            options += "<option value='" + item.Key + "'>" + item.Value + "</option>";
        });
        return options;
    }
});
//#endregion -- dictionaryToOptions

//#region -- dictionaryToGroupedOptions
jQuery.extend({
    dictionaryToGroupedOptions: function(dictUnparsed) {
        var dic = JSON.parse(dictUnparsed);
        var options = "";
        $.each(dic, function(gi, group) {
            options += "<optgroup label='" + group.Key + "'>";
            $.each(group.Value, function(i, item) {
                options += "<option value='" + item.Key + "' group='" + group.Key + "'>" + item.Value + "</option>";
            });
            options += "</optgroup>";
        });
        return options;
    }
});
//#endregion -- dictionaryToGroupedOptions

//#region -- groupOptions
jQuery.extend({
    groupOptions: function(id, group) {
        if (!group) group = "group";
        id = "#" + id;
        var a = {};
        $(id + " [" + group + "]").each(function() {
            g = $(this).attr(group);
            if (!a[g]) a[g] = true;
        });
        $.each(a, function(key, val) {
            $(id + " [" + group + "='" + key + "']").wrapAll("<optgroup label='" + key + "'>");
        });
        return true;
    }
});
//#endregion -- groupOptions

//#endregion === (jQuery.extend)


    

(function($) {
    $.fn.extend({
        displayInProgress: function(options) {
            //#region -- options
            var defaults = {
                controlPath: '/InProgress'
				, error: function(response, result) {
				    alert("Error while loading In Progress dialog");
				}
            }

            Egghead.fn.mergeOptions(defaults, options);
            var container = this;
            container.options = defaults;


            //#endregion -- options

            //#region -- Initialize
            this.initialize = function() {

                Egghead.services.ajax.ucLoad({ controlPath: "/InProgress"
					, data: {}
					, error: function(resonse, result) {}
					, success: function(response, result) {
					    if (result === "success") {
					        Egghead.fn.dialog({ title: "", width: 350, height: 150 }, "<table width='100%'><tr><td align='center'><img src='images/spinner.gif' border='0'/></td></tr></table>");
					        
					        $("a[role ^= 'button']").css({ "display": 'none' });
					        
					        $(".ui-resizable-handle", $(".ui-dialog")).css({ "display": 'none' });
					        $(".ui-dialog").css({ "background": 'transparent' });
					        $(".ui-dialog").css({ "border": '0px' });
					    }
					}
                });
            }

            //#endregion -- Initialize 
            this.initialize();

            return this;
        }
    })
})(jQuery);

//#region -- Initialize
$(function() {

    //#region -- ajax busy trailer
    $("body").append('<div id="ajaxBusy" style="z-index: 2000000;"><table width="100%"><tr><td align="center"><p><img src="images/spinner.gif" /></p></td></tr></table></div>');
    Egghead.busy.obj = $("#ajaxBusy").css({
        display: "none"
		, margin: "0px"
		, paddingLeft: "0px"
		, paddingRight: "0px"
		, paddingTop: "0px"
		, paddingBottom: "0px"
		, position: "absolute"
		, left: "3px"
		, top: "3px"
		, width: "auto"
    });

    $(document).ajaxStart(Egghead.busy.show)
		.ajaxStop(Egghead.busy.hide);

    $(document).mousemove(Egghead.busy.move);

    //#endregion -- ajax busy trailer

    //#region -- datepickers
    //$(".datepicker").datepicker();

    //#endregion -- datepickers

});

//#endregion -- Initialize



//HOME ANIMATED BANNER
$(window).load(function() {
    $('#slider').nivoSlider({
        effect: 'fade',
        captionOpacity: 1,
        animSpeed: 500,
        pauseTime: 4000,
        directionNav: false
    });
    $('#slider').css("overflow", "visible");
});

//HOME SEO TEXT
//$(window).load(function() {

//    var readmoreheight = $('.footerwrapper .introtext').height();
//   // alert(test);
//   $('.homeseobox').css("height", readmoreheight);
//    
//    $('.readmore').click(function(){
//        $('.homeseobox').css("height", "auto");
//        $('.readmore').css("display", "none");
//        return false;
//    });
//    
//    $('.readless').click(function(){
//        $('.homeseobox').css("height", readmoreheight);
//        $('.readmore').css("display", "inline");
//        return false;
//    });    
//    
//});


$(window).load(function() {
//TABS
    $('#Tabs .tabbedDiv').hide(); // Hide all divs
    $('#Tabs #Tab_One').show(); // Show the first div
    $('#Tabs ul li:first').addClass('active'); //Set the first link's class to active
    $('#Tabs ul li a').click(function() { //When any link is clicked
        $('#Tabs ul li').removeClass('active'); // Remove active class from all links
        $(this).parent().addClass('active'); //Set clicked link class to active
        var currentTab = $(this).attr('href'); // Set variable currentTab
        $("#Tabs .tabbedDiv:visible").hide(); //fade out visible div
        $(currentTab).show(); //fade in target div
        return false;
    });

//MINICART

//$(".shoppingbasket").hover(
//  function () {
//    $('.minicart').slideDown("medium");
//  }, 
//  function () {
//  $('.minicart').slideUp("medium");
//  }
//);


//$(".shoppingbasket").mouseover(
//  function () {
//    $(".minicart").stop([true],[true]).delay(300).slideDown("medium");
//  } 
//);

//$(".shoppingbasket").mouseout(
//  function () {
//    $(".minicart").slideUp("medium");
//  } 
//);


//HOME LOGO HOVER
if ($.browser.msie) {
    
    
    $(".headerlogo").hover(
  function () {
        $('.hometext').css("display","inline");
  }, 
  function () {
        $('.hometext').css("display","none");
    ;
  }
);

$(".currencybox").hover(
  function () {
        $('.currencytext').css("display","inline");
  }, 
  function () {
        $('.currencytext').css("display","none");
    ;
  }
);
    
    
    
} else {


$('.headerlogo').hover(function() {
        $(this).find('.hometext').stop(true).animate({opacity:'1'},400);
    }, function() {
        $(this).find('.hometext').stop(true).animate({opacity:'0'},400);
});

$('.currencybox').hover(function() {
        $(this).find('.currencytext').stop(true).animate({opacity:'1'},400);
    }, function() {
        $(this).find('.currencytext').stop(true).animate({opacity:'0'},400);
});

}




//TOOLTIP
    $(".tooltipfire").tooltip({
        effect: 'slide',
        position: 'bottom right',
        opacity: '1'
    });
    
    $(".tooltipfireleft").tooltip({
        effect: 'slide',
        position: 'bottom left',
        opacity: '1'
    });
    
    
//UPSELLS VIEW MORE/LESS

    $('.upsellswrap').css("display", "inline");

    var $pArr = $(".upsellswrap  div.UpsellsOuter");	    
        var pArrLen = $pArr.length;     
        
        if (pArrLen > 2){
        for (var i = 0;i < pArrLen;i+=2){
             $pArr.filter(':eq(0),:eq(1)').wrapAll('<div class="subnavrows" />');
             $pArr.filter(':gt(1)').wrapAll('<div class="subnavrowshide" />');
         };
                          
           $('.upsellreadmore').css("display", "block");              
                
           $(".upsellreadmore").click(function () {               
                $('.subnavrowshide').slideDown("medium");
                $('.upsellreadless').css("display","block");
                $('.upsellreadmore').css("display","none");
              return false;
              } 
            );
            
            $(".upsellreadless").click(function () {               
                $('.subnavrowshide').slideUp("medium");
                $('.upsellreadless').css("display","none");
                $('.upsellreadmore').css("display","block");
              return false;
              } 
            );
                  
         };
         
         
   $('div.categoryintrotop div').expander({
    slicePoint:       300,  // default is 100
    expandPrefix:     ' ', // default is '... '
    expandText:       ' [...] Read More', // default is 'read more'
    collapseTimer:    0, // re-collapses after 5 seconds; default is 0, so no re-collapsing
    userCollapseText: ' [-] Read Less'  // default is 'read less'
  });
  
  $('.introtext div').expander({
    slicePoint:       400,  // default is 100
    expandPrefix:     ' ', // default is '... '
    expandText:       ' [...] Read More', // default is 'read more'
    collapseTimer:    0, // re-collapses after 5 seconds; default is 0, so no re-collapsing
    userCollapseText: ' [-] Read Less'  // default is 'read less'
  });
  
  
  $('#divMiniCart').fadeIn('medium');
  
 

         

});
