// Prevent console commands from throwing errors in IE
try { console.log('init console... done'); } catch(e) { console = { log: function() {} }; }
// Fix JS flash of unstyled content by hiding all descendents of HTML until DOM is loaded.


var merillat = {
    setGlobals: function() {
        $mainWrapper = $('#main-wrapper');
        $contentWrapper = $('#content-wrapper');
        $header = $('#header');
        $nav = $('#main-nav');
        $navPoints = $('#main-nav > li > a');
        $signInForm = $('#sign-in-form');
        $myDealers = $('div#my-dealers-container');
        $manageProjectLink = $('a#manage-project');
        $addProjectLink = $('a#add-project');
        $styleDescriptionLink = $('a#style-description');
        $manageDesignLink = $('a#manage-design');
        $curURL = document.URL;
    },



    viewSelector: function() {
        $('.view-link-container').click(function() {
            $('#list-option-container').find('.selected').removeClass('selected');
            $(this).addClass('selected');
            $('ul.wood-finishes li span').fadeOut('slow', function() {
                //$(this).fadeIn('fast').addClass('thumb_view');
            });
            return false;
        });
    },

    setButtonStyles: function() {
        var $myWidth, $myHeight;
        var $myHorzPadding = 0;
        var $myVertPadding = 0;

        var $myHtml, $curButtonLink, $curButton;
        var i = 0;
        $('button.button-replacer').each(function() {
            $myHtml = $(this).html();
            $(this).css({ 'position': 'absolute', 'width': '20px', 'height': '2px', 'top': '0', 'left': '0' });
            $(this).wrap('<div style="position: relative; display: inline;"></div>');
            if ($(this).hasClass('arrow')) {
                $(this).after('<a href="#" class="button-replaced button-replacer arrow">' + $myHtml + '</a>');
            } else {
                $(this).after('<a href="#" class="button-replaced button-replacer">' + $myHtml + '</a>');
            }
        });

        $('button.button-replacer-primary').each(function() {
            $myHtml = $(this).html();
            $(this).css({ 'position': 'absolute', 'width': '20px', 'height': '10px', 'top': '3px', 'left': '0' });
            $(this).wrap('<div style="position: relative; display: inline;"></div>');
            if ($(this).hasClass('arrow')) {
                $(this).after('<a href="#" class="button-replaced button-replacer-primary arrow">' + $myHtml + '</a>');
            } else {
                $(this).after('<a href="#" class="button-replaced button-replacer-primary">' + $myHtml + '</a>');
            }
        });

        $('a.button-replaced').each(function() {
            $curButtonLink = $(this);
            $curButtonLink.click(function() {
                $(this).parents('form').submit();
                return false;
            });
            i = i + 1;
        });

        $('a.button-replacer').each(function() {
            if ($(this).hasClass('arrow')) {
                $(this).append('<span class="button-arrow"></span>');
                $(this).css('padding-right', '14px');
            };
        });

        $('a.button-replacer-primary').each(function() {
            if ($(this).hasClass('arrow')) {
                $(this).append('<span class="button-arrow"></span>');
                $(this).css('padding-right', '14px');
            };
        });



    },

    activateCufon: function() {
        var $buttonReplacers = $('a.button-replacer').not('.project-dropdown a.button-replacer'), $h2s = $('h2').not('.colorbox-inline-content h2');
        Cufon.replace('h1', { textShadow: '2px 2px rgba(0,0,0,0.1), 1px 1px rgba(0,0,0,0.2)', fontFamily: 'Helvetica Neue' });
        Cufon.replace($h2s, { fontFamily: 'Helvetica Neue' });
		Cufon.replace('h3', { fontFamily: 'Helvetica Neue' });
        Cufon.replace('h3.inline-heading', { fontFamily: 'Helvetica Neue' });
        Cufon.replace('ul#footer-nav a', { hover: true, fontFamily: 'Helvetica Neue' });
        Cufon.replace('#footer-site-links-title', { fontFamily: 'Helvetica Neue' });
        Cufon.replace('h3.your-style strong', { textShadow: '2px 2px rgba(0,0,0,0.1), 1px 1px rgba(0,0,0,0.2)', fontFamily: 'Helvetica Neue' });
        Cufon.replace($buttonReplacers, { fontFamily: 'Helvetica Neue', textShadow: '1px 1px rgba(0, 0, 0, 0.3), 0 1px rgba(0, 0, 0, 0.3), 1px 0 rgba(0, 0, 0, 0.3)' });
        Cufon.replace('a.button-replacer-primary', { fontFamily: 'Helvetica Neue', textShadow: '1px 1px rgba(0, 0, 0, 0.3), 0 1px rgba(0, 0, 0, 0.3), 1px 0 rgba(0, 0, 0, 0.3)' });
    },

    /*
    * initialize login click handler for global login control
    */
    loginConfig: function() {
        $('#loginErrorMsg').hide();
        $('#loginMsg').hide();

        merillat.initLoginClick('global-login-form', 'btnLogin', 'globalLogin_Email', 'globalLogin_Password', 'loginMsg', 'loginErrorMsg', '/ideafolio/login-submit.html');
    },

    /*
    * initialize forgot password click handler for global login control
    */
    forgotPasswordConfig: function() {
        $('#loginErrorMsg').hide();
        $('#loginMsg').hide();

        merillat.initForgotPasswordClick('forgotPass', 'globalLogin_Email', 'loginMsg', 'loginErrorMsg');
    },

    /*
    * bind the login click event for the login control or registration page
    */
    initLoginClick: function(formId, loginBtnId, emailId, passwordId, loginMsg, loginErrorMsgId, jsonUrl) {
        $('#' + formId).bind('submit', { emailId: emailId, passwordId: passwordId, loginMsg: loginMsg, loginErrorMsgId: loginErrorMsgId, jsonUrl: jsonUrl, formId: formId }, merillat.loginClick);
    },

    /*
    * bind the forgot password click event for the login control or registration page
    */
    initForgotPasswordClick: function(forgotPasswordId, emailId, loginMsg, loginErrorMsgId) {
        $('#' + forgotPasswordId).bind('click', { emailId: emailId, loginMsg: loginMsg, loginErrorMsgId: loginErrorMsgId }, merillat.forgotPasswordClick);
    },

    /*
    * login click action, performs JSON call that either displays 
    * a message if there is an error or redirects the user to the 
    * scrapbook page if it is successful.
    */
    loginClick: function(event) {
        var email = $('#' + event.data.emailId).val();
        var password = $('#' + event.data.passwordId).val();

        /* add local scoped variables for event data, IE does not recognize the event data within the getJSON callback */
        var loginErrorMsgId = event.data.loginErrorMsgId;
        var loginMsg = event.data.loginMsg;
        var formId = event.data.formId;

        if ($('#' + formId).valid()) {
            var jsonArgs = {};
            jsonArgs[event.data.emailId] = email;
            jsonArgs[event.data.passwordId] = password;
            jsonArgs['nocache'] = (new Date()).getTime();

            $.getJSON(event.data.jsonUrl, jsonArgs, function(data, status) {
                if (data.IsValid) {
                    window.location = '/ideafolio/my-scrapbook.html';
                    $('#' + loginErrorMsgId).hide();
                } else {
                    $('#' + loginErrorMsgId).show();
                    $('#' + loginErrorMsgId).text(data.Message);
                }
                $('#' + loginMsg).hide();
            });
        }
        event.preventDefault();
    },

    /*
    * forgot password click action that makes a JSON call and 
    * displays either a confirmation or error message.
    */
    forgotPasswordClick: function(event) {
        var email = $('#' + event.data.emailId).val();

        var jsonArgs = {};
        jsonArgs["email"] = email;
        jsonArgs['nocache'] = (new Date()).getTime();

        $.getJSON('/ideafolio/forgot-password-submit.html', jsonArgs, function(data, status) {
            if (data.IsValid) {
                $('#' + event.data.loginErrorMsgId).hide();
                $('#' + event.data.loginMsg).show();
                $('#' + event.data.loginMsg).text(data.Message);
            } else {
                $('#' + event.data.loginMsg).hide();
                $('#' + event.data.loginErrorMsgId).show();
                $('#' + event.data.loginErrorMsgId).text(data.Message);
            }
        });

        event.preventDefault();
    },

    styleSelectOptions: function() {


        var i = 0, $optionIndex, $curSelect, $curForm;
        //		$('select').css('display', 'none');
        // $('select').each(function() {
        // 	if ($(this).parent().is('form')) {
        // 		$(this).parent().before('<div class="dropdown-list-container design-dropdown"><p>' + $('select:eq(' + i + ') option:selected').html() + '</p><ul class="dropdown-list"></ul></div>');
        // 	} else {
        // 		$(this).before('<div class="dropdown-list-container design-dropdown"><p>' + $('select:eq(' + i + ') option:selected').html() + '</p><ul class="dropdown-list"></ul></div>');
        // 	}

        // $(this).css('display', 'none');
        // 	$(this).find('option').each(function() {
        // 		$(this).parent().parent().parent().find('.dropdown-list').append('<li>' + $(this).html() + '</li>');
        // 	});
        // 	i = i + 1;
        // });
        //console.log(i);
        $('.dropdown-list li').each(function() {
            $(this).click(function() {
                $curForm = $(this).parent().parent().parent().find('form');
                $curSelect = $(this).parent().parent().parent().find('select');
                $optionIndex = $(this).prevAll().length;

                $curSelect.find('option:eq(' + $optionIndex + ')').attr('selected', 'selected');

                $curSelect.change();

            });
        });

        $('ul.dropdown-list').css('display', 'none');

        // var zIndexNumber = 10000;
        // 		$('dl dd').each(function() {
        // 			$(this).css('z-index', zIndexNumber);
        // 			zIndexNumber -= 10;
        // 		});
        // 		$('.project-names li span').each(function() {
        // 			$(this).css('z-index', zIndexNumber);
        // 			zIndexNumber -= 10;
        // 		});
        // 		$('.project-names li').each(function() {
        // 			$(this).css('z-index', zIndexNumber);
        // 			zIndexNumber -= 10;
        // 		});
        // 		$('form p').each(function() {
        // 			$(this).css('z-index', zIndexNumber);
        // 			zIndexNumber -= 10;
        // 		});
        // 		$('form').each(function() {
        // 			$(this).css('z-index', zIndexNumber);
        // 			zIndexNumber -= 10;
        // 		});
        // 		$('div').each(function() {
        // 			$(this).css('z-index', zIndexNumber);
        // 			zIndexNumber -= 10;
        // 		});

        $('#colorbox, #cboxOverlay, #cboxWrapper').css('z-index', '12000');

        // $('p.hidden-form').next().each(function() {
        // 	if (!$(this).hasClass('displayed')) {
        // 		$(this).hide().children().css({ opacity: 0 });
        // 	}
        // });

        var $theSlider;
        var $theLink;
        var inMotion = false;
        var toAppend = '';
        $('.project-form').css('display', 'none');
        var $projectDropdown = $('.project-dropdown');
        $projectDropdown.remove().appendTo('#content-wrapper');
        $('.project-dropdown .displayed').css('display', 'block');

        $('p.hidden-form').next().each(function() {
            if (!$(this).hasClass('displayed')) {
                $(this).children().css('opacity', '0');
            };
        });

        $('p.hidden-form a').click(function() {
            $theLink = $(this);
            $theSlider = $(this).parent().next();

            if (inMotion === true) {
                return false;
            } else {
                inMotion = true;
                if ($theLink.hasClass('selected')) {
                    $theLink.removeClass('selected');
                } else {
                    $theLink.addClass('selected');
                };

                if ($theSlider.hasClass('displayed')) {
                    $theLink.removeClass('selected');
                    $theSlider.children().stop().animate({
                        opacity: 0
                    }, 150, function() {
                        $theSlider.slideUp(500, function() {
                            inMotion = false;
                        });
                        $theSlider.removeClass('displayed');
                        $theLink.removeClass('selected');
                    });
                } else {
                    $theLink.addClass('selected');
                    inMotion = false;
                    $theSlider.slideDown(500, function() {
                        $(this).children().stop().animate({
                            opacity: 1
                        }, 500, function() {
                            $theSlider.addClass('displayed');
                            $theLink.addClass('selected');
                        });
                    });
                };
            }
            return false;
        });

        $('.project-dropdown').hide();
        $manageProjectLink.click(function() {
            var wrapOffset = $contentWrapper.offset();
            var offset = $manageProjectLink.offset();
            var dropdownLeft = (offset.left + 15) - (wrapOffset.left + $('#manage-project-dropdown').width());
            var dropdownTop = (offset.top + $manageProjectLink.height());
            $('.project-dropdown').hide();
            $('.project-dropdown .dropdown-list').css('display', 'none');
            $('#manage-project-dropdown').css({ 'left': dropdownLeft, 'top': dropdownTop }).slideDown();
        });

        $addProjectLink.click(function() {
            var wrapOffset = $contentWrapper.offset();
            var offset = $addProjectLink.offset();
            var dropdownLeft = (offset.left + 15) - (wrapOffset.left + $('#add-project-dropdown').width());
            var dropdownTop = (offset.top + $addProjectLink.height());
            $('.project-dropdown').hide();
            $('.project-dropdown .dropdown-list').css('display', 'none');
            $('#add-project-dropdown').css({ 'left': dropdownLeft, 'top': dropdownTop }).slideDown();
        });

        $styleDescriptionLink.click(function() {
            var wrapOffset = $contentWrapper.offset();
            var offset = $styleDescriptionLink.offset();
            var dropdownLeft = (offset.left + 15) - (wrapOffset.left + $('#style-description-dropdown').width());
            var dropdownTop = (offset.top + $styleDescriptionLink.height());
            $('.project-dropdown').hide();
            $('.project-dropdown .dropdown-list').css('display', 'none');
            $('#style-description-dropdown').css({ 'left': dropdownLeft, 'top': dropdownTop }).slideDown();
        });

        $manageDesignLink.click(function() {
            var wrapOffset = $contentWrapper.offset();
            var offset = $manageDesignLink.offset();
            var dropdownLeft = (offset.left + 15) - (wrapOffset.left + $('#manage-design-dropdown').width());
            var dropdownTop = (offset.top + $manageDesignLink.height());
            $('.project-dropdown').hide();
            $('div#manage-design-dropdown').css({ 'left': dropdownLeft, 'top': dropdownTop }).slideDown();
        });
        $('.project-dropdown .close-dropdown').click(function() {
            $('.project-dropdown').slideUp();
        });



        /*
        $('div.dropdown-list-container').click(function() {
        $(this).find('ul.dropdown-list').slideDown();
        });*/






        var $curDropdownItem;


        $('.design-dropdown').click(function(e) {
            // $('.project-dropdown').hide();
            if (!$(e.target).is('div.dropdown-list-container p')) {
                if ($(e.target).is('ul.dropdown-list li')) {
                    $curDropdownItem = $(this).find('p');
                    $curDropdownItem.html($(e.target).html());
                }
                $(this).find('ul.dropdown-list').slideUp();
            };
        });



        $('ul.dropdown-list li').hover(
			function() {
			    $(this).css('background-color', '#efefef');
			    $(this).css('cursor', 'pointer');
			},
			function() {
			    $(this).css('background-color', '#fff');
			}
		);

        $('.dropdown-list-container').hover(function() {
            $(this).css('cursor', 'pointer');
        });


    },

    selectOptionTimeout: function() {

        var hideDelayTimer = null;
        var beingShown = false;
        var shown = false;
        var menuSpeed = 500;
        var hideDelay = 500;
        var $this;

        $('div.dropdown-list-container').each(function() {
            $(this).click(function() {
                if (hideDelayTimer) clearTimeout(hideDelayTimer);
                if (beingShown || shown) {
                    $(this).find('ul.dropdown-list').slideUp(menuSpeed, function() {
                        shown = false;
                    });
                } else {
                    // reset position of info box
                    beingShown = true;

                    $(this).find('ul.dropdown-list').slideDown(menuSpeed, function() {
                        beingShown = false;
                        shown = true;
                    });
                }
                return false;
            });


            $(this).find('ul.dropdown-list').mouseover(function() {
                if (hideDelayTimer) clearTimeout(hideDelayTimer);
                return false;
            });

            $(this).find('ul.dropdown-list').each(function() {
                $(this).mouseleave(function() {
                    $this = $(this);
                    if (hideDelayTimer) clearTimeout(hideDelayTimer);
                    hideDelayTimer = setTimeout(function() {
                        hideDelayTimer = null;

                        $this.slideUp(menuSpeed, function() {
                            shown = false;
                        });

                    }, hideDelay);

                });
            });


        });

    },


    fixFooterBackgroundIE6: function() {
        if ($('#footer-site-links').length > 0) {
            $('#footer-site-links').ifixpng();
        }
    },

    kitchenPlannerLinks: function() {
        if ($('.kitchen-planner-link').length > 0) {
            $('.kitchen-planner-link').click(function() {
                var newwindow = window.open($(this).attr('href'), 'KitchenPlannerWindow');
                newwindow.focus();
                return false;
            });
        }
    },


    //
    // IdeaFolio Save/Remove
    //

    itemSaveRemoveConfig: function() {
        $('.tools-response').css('display', 'none');
        // save click event
        $("a.jsonSave").each(function() {
            $(this).bind('click', { URL: this.href, parentDivId: $(this).parent().attr("id") }, merillat.itemSaveRemove);
        });
        // remove click event
        $("a.jsonDelete").each(function() {
            $(this).bind('click', { URL: this.href, parentDivId: $(this).parent().attr("id") }, merillat.itemSaveRemove);
        });
    },

    itemSaveRemove: function(event) {
        var gJsonURL = event.data.URL;

        var jsonArgs = {};
        jsonArgs['cacheBust'] = (new Date()).getTime();

        $.getJSON(gJsonURL, jsonArgs, function(data, status) {
            merillat.itemSaveRemoveResponse(data, status, event.data.parentDivId);
        });
        event.preventDefault();
    },

    itemSaveRemoveResponse: function(data, status, parentDivId) {
        if (status == "success") {
            if (data.Success == true) {
                $("#" + parentDivId).children(".jsonSave").toggle();
                $("#" + parentDivId).children(".jsonDelete").toggle();
                merillat.parentNeedsPositionStart(parentDivId);
                $("#" + parentDivId).children(".tools-response").eq(0).html(data.Message).fadeIn('slow');
                window.setTimeout(function() {
                    $("#" + parentDivId).children(".tools-response").eq(0).fadeOut('slow', function() { $("#" + parentDivId).children(".tools-response").eq(0).html(''); merillat.parentNeedsPositionEnd(parentDivId); });
                }, 2500);
            } else {
                merillat.parentNeedsPositionStart(parentDivId);
                $("#" + parentDivId).children(".tools-response").eq(0).html(data.ErrorMessage).fadeIn('slow');
                window.setTimeout(function() {
                    $("#" + parentDivId).children(".tools-response").eq(0).fadeOut('slow', function() { $("#" + parentDivId).children(".tools-response").eq(0).html(''); merillat.parentNeedsPositionEnd(parentDivId); });
                }, 2500);

                if (data.HasMaxAnonItems) {
                    $.fn.colorbox({
                        iframe: true, inline: false, href: '/ideafolio/not-logged-in.html', width: 500, height: 300, open: true
                    });
                }
            }
        } else {
            $("#" + parentDivId).children(".tools-response").eq(0).html("An error has occurred.").fadeIn('slow');
        }
    },

    parentNeedsPositionStart: function(obj) {
        console.log(obj);
        if ($("#" + obj).hasClass('needs-position-adjusted')) {
            $("#" + obj).css({ 'position': 'relative' });
        };
    },

    parentNeedsPositionEnd: function(obj) {
        if ($("#" + obj).hasClass('needs-position-adjusted')) {
            $("#" + obj).css({ 'position': 'static' });
        };
    },

    skinCheckboxes: function() {
        $('label input.checkbox').wrap('<span class="checkbox-skin"></span>');
        $('label input.checkbox').css({
            'opacity': '0',
            'position': 'absolute',
            'left': '0',
            'top': '0'
        });
        $('label span.checkbox-skin').parent().addClass('checkbox-label');
        // $('label.checkbox-label').click(function() {
        // 			//alert('yep');
        // 			$(this).children('input.checkbox').checked = true;
        // 		});


        // $('label.checkbox-label').click(function() {
        // 			$(this).children('input.checkbox').click();
        // 			//console.log('yep');
        // 			//return false;
        // 		});
        // $('label.checkbox-label').click(function() {
        // 			$('span.checkbox-skin input.checkbox').each(function() {
        // 				if($(this).hasClass('checked')){
        // 					$(this).parent().css({
        // 						'background-position': '0 -14px'
        // 					});
        // 				}else if($(this).hasClass('disabled')){
        // 					$(this).parent().css({
        // 						'background-position': '0 -28px'
        // 					});
        // 				}else{
        // 					$(this).parent().css({
        // 						'background-position': '0 0'
        // 					});
        // 				}
        // 			});
        // 		});

    },

    setCurrentNavHighlight: function() {
        var myFolder = $curURL.split('/', 4);
        var bgOffset;

        if (myFolder[3] != "") {
            switch (myFolder[3]) {
                case 'inspiration-design': bgOffset = '0 -27px'; break;
                case 'door-styles-accessories': bgOffset = '-176px -27px'; break;
                case 'plan-your-space': bgOffset = '-352px -27px'; break;
                case 'where-to-buy': bgOffset = '-528px -27px'; break;
                case 'customer-support': bgOffset = '-704px -27px'; break;
            };
            $('ul#main-nav a#' + myFolder[3]).css({ 'background-position': bgOffset });
        }

    },

    setFilteringSwatchBehaviour: function() {
        $('label.large-swatch').prepend('<span class="large-swatch-hover-active"></span>');
        $('span.large-swatch-hover-active').css({ 'display': 'none' });
        $('label.large-swatch').hover(
			function() {
			    if (!$(this).hasClass('disabled')) {
			        $(this).find('span.large-swatch-hover-active').css({ 'display': 'block' });
			    };
			},
			function() {
			    if (!$(this).hasClass('checked')) {
			        $(this).find('span.large-swatch-hover-active').css({ 'display': 'none' });
			    };
			}
		);
    },

    setTrademarkStyles: function() {
        //var $searchedText = $('h1, h2, h3, h4, h5, h6, p, span, a, blockquote, div, ul, li, ol').text().replace('®', '<span>®</span>');
    },

	setDocumentLinks: function() {
		jQuery('a[href$=".pdf"]').addClass('pdf-document').removeClass('pdf');
		jQuery('a[href$=".txt"]').addClass('txt-document').removeClass('txt');
		jQuery('a[href$=".doc"]').addClass('word-document').removeClass('doc');
	}

};

$(document).ready(function() {
	
    merillat.setGlobals();
    lib.externalLinks();
    lib.addFormClasses();
    lib.inputDefault();
	lib.fileLinks();
	merillat.setTrademarkStyles();
    merillat.viewSelector();
    merillat.setButtonStyles();
    merillat.loginConfig();
    merillat.forgotPasswordConfig();
    merillat.styleSelectOptions();
    merillat.selectOptionTimeout();
    merillat.itemSaveRemoveConfig();
	//merillat.skinCheckboxes();
	merillat.setFilteringSwatchBehaviour();	
	merillat.activateCufon();
	merillat.fixFooterBackgroundIE6();
	merillat.setCurrentNavHighlight();
	merillat.kitchenPlannerLinks();
	merillat.setDocumentLinks();
});
