var generic = generic || {};
var brx = brx || {};

// resource bundling
brx.globalnav = {
	emailInputNode : null,
	emailContainerNode : null,
	emailFormNode : null,
	emailSubmitNode : null,
	emailProgressNode : null,
	initEmailSignup : function() {
		emailContainerNode = $("div.email-signup-container");
		if (!emailContainerNode) {
			return null;
		}
        
        emailContainerNode.each(function() {
            emailFormNode = $(this).find("form");
            emailSubmitNode = $(this).find("input.input-image");
            emailProgressNode = $(this).find("span.progress");
            emailInputNode = $(this).find("input.email-signup");
            emailOptStatusNode = $("#address-info-newsletter");
            errorNode = $(this).find("ul.errors");
            emailFormNode.bind("submit", function(submitEvt) {
                submitEvt.preventDefault();
                emailSubmitNode.addClass("hidden");
                emailProgressNode.removeClass("hidden");
                // retrieve form data in querystring format
                var formSerial = emailFormNode.serialize(); 
                // transform string into array of form elements
                var paramArr = formSerial.split("&"),
                    paramStr = "";
                // iterate through collection to transform form name/value into key/value properties of a literal object string.
                $.each(paramArr, function(index){
                    paramStr += '"'+ this.split('=')[0] + '":"' + this.split('=')[1] + '",'
                });	 
                // parse the string and create the literal object
                var params = eval("(" + "{"+paramStr.substring(0,(paramStr.length-1)).replace("undefined","").replace("%40","@")+"}" + ")");
                generic.jsonrpc.fetch({
                    method : 'rpc.form',
                    params: [params],
                    onSuccess:function(jsonRpcResponse) {
                        emailProgressNode.addClass("hidden");
                        emailSubmitNode.removeClass("hidden");
                        var d = jsonRpcResponse.getData();
                        var rb = generic.rb('language');
                        var msg = rb.get("email_signup_text");
                        if(emailOptStatusNode.length > 0 && (d.userinfo.pc_email_address == emailInputNode.val())){ 
                             emailOptStatusNode.find("p").html("yes");
                        }
                        
                        if (errorNode.length) {
                            generic.showErrors([{text: msg, displayMode: "message"}], errorNode);
                        } else {
                            generic.showErrors([{text: msg, displayMode: "message"}]);
                        }
                    },
                    onFailure: function(jsonRpcResponse){ 
                        var errorObjectsArray = jsonRpcResponse.getMessages();
                        if (errorNode.length) {
                            generic.showErrors(errorObjectsArray, errorNode);
                        } else {
                            generic.showErrors(errorObjectsArray);
                        }
                        
                        emailProgressNode.addClass("hidden");
                        emailSubmitNode.removeClass("hidden");
                        emailInputNode.addClass("error");
                    }
                });
            });
        });
	},
	initFooterLinks : function () {

		$(".footer_nav a.store-locator-link").click(function(){ window.location = '/locator/index.tmpl'; });

	},
    initForgotPassword: function() {
        var emailNode = $('.return-user-email-nav');

        if (emailNode.length) {
            brx.signin.forgotPassword({
                resetPassword: true,
                emailNode: emailNode,
                errorListNode: $('#lpw-text-nav'),
                forgotPasswordLink: $('#forgot-password-nav'),
                forgotPasswordNote: $('#forgot_pw_note_nav'),
                containerNode: $('#return-user-utility-nav')
            });
        }
    }
    
};

brx.iPadGnav = function() {
    if(navigator.platform.indexOf("iPad") != -1){
        $("#global_nav li.item").find(">:first-child").each(function() { 
            var onClick; 
            var firstClick = function() {
                onClick = secondClick;
                return false;
            };
            var secondClick = function() {
                onClick = firstClick;
                return true;
            };
            onClick = firstClick;
            $(this).click(function() {
                return onClick();
            });
        });
    }
};

$(document).ready(function() {
    //console.log(brx.isiPad());
    brx.iPadGnav();
    // setup user
    var userParams = {};
    userParams.pageDataKey = 'globalnav.user';
    // generic.user.getUser(userParams);

    // setup cart
    var cartParams = {};
    cartParams.pageDataKey = 'globalnav.cart';
    // generic.checkout.cart.getCart(cartParams);

	brx.globalnav.initEmailSignup();

    brx.globalnav.initFooterLinks();

    brx.globalnav.initForgotPassword();
    
    var searchForm = $('#global-nav-search-form');
    searchForm.submit( function() {
        if ( this.search.value == 'Search' ) {
            this.search.value = '';
        }
    });
    
    $('.arrow_rollover').mouseover(function(){
        $('.rw_arrow').css('background-position', '0 -8px');
    });
    $('.arrow_rollover').mouseout(function(){
        $('.rw_arrow').css('background-position', '0 0');
    });
});

$(document).bind("cart.countsUpdated", function(){
    console.log( "cart.countsUpdated event caught" );
    // update global qty display
});

// assumes user:loaded event exists
$(document).bind("user.updated", function(){
    console.log( "user.updated event caught" );
    // update any user-dependent display
});


