﻿var _isSubmittingOrder = false;
var _selectedTab = 'Account';
/***** COMMON **********/
function unPackErrors(payload, divName) {
    setDivContentByDiv(divName, '');
    var errorContent = '';
    if (payload.PayloadItems.length == 0) {
        errorContent += '<div class="errorContent" style="margin: 8px;">An uknown error occurred.</div>';
    } 
    else if (payload.PayloadItems.length == 1) {
         errorContent += '<div class="errorContent" style="margin: 8px;">' + payload.Payload.ErrorMessage + '</div>';
    }
    else
    {
        errorContent += '<div class="errorContent"><ul>';

        $.each(payload.PayloadItems, function (i, ve) {
            errorContent += '<li>' + ve.ErrorMessage + '</li>';
        });

        errorContent += '</ul></div>';
    }

    setDivContentByDiv(divName, errorContent);
}
function setDivContentByDiv(divId, content) {
    $(divId).attr("innerHTML", content);
    content = null;
}
function setDivColorToDefault(divName) {
    $(getJqueryId(divName)).css("color", "#686868");
}
function setDivColorToBlue(divName) {
    $(getJqueryId(divName)).css("color", "#00f");
}
function setDivColorToRed(divName) {
     $(getJqueryId(divName)).css("color", "#f00");
}
function getJqueryId(elementId) {
    if (elementId.indexOf('#') == 0)
        return elementId;
    else
        return '#' + elementId;
}
function addBigLoadingSpinnerToDiv(divName) {
    $(getJqueryId(divName)).attr('innerHTML', '<div class="bigSpinner"></div>');
}
function addSmallLoadingSpinnerToDiv(divName) {
    $(getJqueryId(divName)).attr('innerHTML', '<div class="smallSpinner"></div>');
}
function searchBoxFocus() {
    var searchText = $("#productSearchText").val();
    if (searchText == 'Search')
        $("#productSearchText").val('');
}
function searchBoxBlur() {
    if ( $("#productSearchText").val() == '')
        $("#productSearchText").val('Search')
}
/***** MY ACCOUNTS ****/
function switchMyAcountTab(tabId) {
    if (_selectedTab != '') {
        hideSelectedTab();
    }

    _selectedTab = tabId;

    showSelectedTab();
}
function hideSelectedTab() {
    $('#' + currentTabId()).toggleClass(currentTabId() + 'Selected', false).toggleClass(currentTabId(), true);
    $('#' + currentContainerId()).hide();
}
function showSelectedTab() {
    $('#' + currentTabId()).toggleClass(currentTabId(), false).toggleClass(currentTabId() + 'Selected', true);
    $('#' + currentContainerId()).show();
}
function currentTabId() {
    return 'my' + _selectedTab + 'Tab';
}
function currentContainerId() {
    return 'my' + _selectedTab + 'Container';
}
function updatePassword() {
    $("#passwordUpdateStatus").attr("innerHTML", "<img src='/Content/Images/Common/ajax_loader_24_trans.gif' alt='Updating, please wait...' style='vertical-align: middle; margin-right: 5px;' /> Updating, please wait...");
    setDivColorToDefault("passwordUpdateStatus");
    $("#passwordUpdateStatus:hidden").show();
    $.post("/MyAccount/UpdatePassword", {
        password1: $("#myAccountNewPassword").val(),
        password2: $("#myAccountNewPassword2").val()
    }, function(result) {
        if (result.SuccessFlag) {
            setDivColorToBlue("passwordUpdateStatus");
             $("#passwordUpdateStatus").attr("innerHTML", "Password updated!");
             setTimeout(function() { $("#passwordUpdateStatus").fadeOut("slow") }, 1200);
             $("#myAccountNewPassword").val('');
             $("#myAccountNewPassword2").val('');
        } else {
            setDivColorToRed("passwordUpdateStatus");
            $("#passwordUpdateStatus").attr("innerHTML", result.Message);
        }
    }, "json");
}
/***** ORDER CART *****/
function updateOrderItemCount() {
    $.post("/OrderCart/CartItemCount/", {},
            function(result) {
                $("#badgeCartItemCount").attr("innerHTML", result);
    }, "html");
}
function deleteProductFromCart(lineItemID) {
    addSmallLoadingSpinnerToDiv("removeDiv_" + lineItemID);
    $.post("/OrderCart/DeleteItemFromCart", {
        lineItemID: lineItemID
    },
        function(result) {
            $("#orderCartTableContainer").fadeOut("slow", function() {
                $("#orderCartTableContainer").attr("innerHTML", result);
                $("#orderCartTableContainer").fadeIn("fast");
                updateOrderItemCount();
            });
    }, "html");
}
function submitOrder() {
    if (!_isSubmittingOrder)
    {
      _isSubmittingOrder = true;
      hideAllSubmitDivs();
      $("#omcSubmitting:hidden").show();
      $.post("/OrderCart/SubmitOrder", {
            submitterName: $("#submitterName").val(),
            poNumber: $("#poNumber").val(),
            promoCode: $("#promoCode").val(),
            noteToFlappin: $("#noteToFlappin").val(),
            termAgreement: $("#termAgreement").is(":checked")
      }, function(result) {
            _isSubmittingOrder = false;
            hideAllSubmitDivs();
            if (result.SuccessFlag) {
                window.location = '/OrderCart/ThankYou/' + result.Payload;
            } else {
                $("#omcErrorMessage").attr("innerHTML", result.Message);
                $("#omcErrorDiv:hidden").fadeIn('slow');
            }
            result = null;
      }, "json");
    }
}
function hideAllSubmitDivs() {
     $("#omcSubmitting:visible").hide();
     $("#omcErrorDiv:visible").hide();
}
function updateCartBegin() {
    $("#orderUpdatingMessage:hidden").show();
}
function updateCartEnd(result) {
    $("#orderCartTableContainer").fadeOut("fast", function() {
        $("#orderCartTableContainer").attr("innerHTML", result.responseText);
        $("#orderCartTableContainer").fadeIn("fast");
        updateOrderItemCount();
    });
}
function blockNonNumbers(obj, e, allowDecimal, allowNegative)
{
	var key;
	var isCtrl = false;
	var keychar;
	var reg;
		
	if(window.event) {
		key = e.keyCode;
		isCtrl = window.event.ctrlKey
	}
	else if(e.which) {
		key = e.which;
		isCtrl = e.ctrlKey;
	}
	
	if (isNaN(key)) return true;
	
	keychar = String.fromCharCode(key);
	
	// check for backspace or delete, or if Ctrl was pressed
	if (key == 8 || isCtrl)
	{
		return true;
	}

	reg = /\d/;
	var isFirstN = allowNegative ? keychar == '-' && obj.value.indexOf('-') == -1 : false;
	var isFirstD = allowDecimal ? keychar == '.' && obj.value.indexOf('.') == -1 : false;
	
	return isFirstN || isFirstD || reg.test(keychar);
}
/***** SIGN UP ********/
function showSignupForm() {
    $("#signupContainerSmall:hidden").show('slide', { direction: 'up' }, 700, function() { $("#businessName").focus(); });
}
function closeSignupForm() {
    $("#signupContainerSmall:visible").hide('slide', { direction: 'up' }, 400);
}
function submitSignup() {
    checkForNoRetail();
    $("#contactStatus:hidden").show();
    resetSignupErrors();
    $.post("/Signup/SubmitSignup", {
        businessName: $("#businessName").val(),
        emailAddress: $("#emailAddress").val(),
        phoneNumber: $("#phoneNumber").val(),
        faxNumber: $("#faxNumber").val(),
        contactName: $("#contactName").val(),
        position: $("#position").val(),
        mailingAddress: $("#mailingAddress").val(),
        city: $("#city").val(),
        state: $("#state").val(),
        zip: $("#zip").val(),
        retailBusiness: $("#retailBusiness").val(),
        natureOfBusiness: $("#natureOfBusiness").val()
    }, function(result) {
        if (result.SuccessFlag) {
           $.get("/Signup/ThankYou", {},
            function(result) {
                $("#signupLeft").attr("innerHTML", result);
                result = null;
                setTimeout(function() { window.location = "/Signup/"; }, 4500); 
            }, "html");
        } else {        
            $("#contactStatus:visible").hide();
            setSignupErrors(result);
        }
        result = null;
    }, "json");
}
function resetSignupErrors() {
   $("#signupError:visible").hide();
   $("input[rel='signupForm']").toggleClass('signupError', false).attr('title', '');
}
function removeError(field) {
    if ($(field).val() != '') {
        $(field).toggleClass('signupError', false);
    }
}
function setSignupErrors(payload) {
    var errorContent = "";
    if (payload.PayloadItems.length == 0) {
        errorContent = "An uknown error occurred. Please try again.";
    } 
    else 
    {
        errorContent = payload.Message;       
        var focusSet = false;
        $.each(payload.PayloadItems, function (i, ve) {
            if (ve.OffendingControlID != '') {
                $("#" + ve.OffendingControlID).toggleClass('signupError', true).attr('title', ve.ErrorMessage);  
                if (!focusSet) {
                    $("#" + ve.OffendingControlID).focus();
                    focusSet = true;
                }          
            }
        });        
    }
    $("#signupError:hidden").show();
    setDivContentByDiv("#signupError", errorContent);
}
function checkForNoRetail()
{
    if ( $("#retailBusiness").val() == 'false')
    {
        if (confirm('As a wholesale supplier, Flappin\' Flags only sells to retailers that carry our products for the public. \n\nIf you are not planning to resell Flappin\' Flag\'s products, please click the \"OK\" button below to find a shop that carries them!\n\nThank you,\n\nFlappin\' Flags.'))
        {
            document.location = '/ContactUs/';
        }
    }
}
function hideErrors() {
    $('#wholesaleErrors:visible').hide();
}
function showErrors() {
    $('#wholesaleErrors:hidden').fadeIn('slow');
}
/***** PRODUCT DETAILS *****/
function showHideNameDropInfo() {
    var show = $("#pdNameDropRequested").is(":checked");
    if (show) {
        $("#pdNameDropInfo").show("slide", { direction: 'left', speed: 'fast' });
    } else {
        $("#pdNameDropInfo").hide("slide", { direction: 'left', speed: 'fast' });
    }
}
function addItemToCart(productID) {
    var quantityID = "#" + productID + "_quantity";
    var qty = $(quantityID).val();
    var nameDropRequested = false;
    if ($("#pdNameDropRequested").length) {
        nameDropRequested = $("#pdNameDropRequested").is(":checked");
    }
    setDivColorToDefault("pdSubmitInfo");
    $("#pdSubmitInfo").attr("innerHTML", "<img src='/Content/Images/Common/ajax_loader_24_trans.gif' alt='Adding to cart, please wait...' style='vertical-align: middle; margin-right: 5px;' /> Adding to cart, please wait..."); 
    $("#pdSubmitInfo:hidden").show();
    $.post('/OrderCart/AddItemToCart', {
        productID: productID,
        quantity: qty,
        nameDropRequested: nameDropRequested
    }, function(result) {
        if (result.SuccessFlag) {
            setDivColorToBlue("pdSubmitInfo");
            $("#pdSubmitInfo").attr("innerHTML", "Product added to cart.");
            updateOrderItemCount();
            setTimeout(function() { $("#pdSubmitInfo").fadeOut('fast'); }, 1500);
        } else {
            setDivColorToRed("pdSubmitInfo");
            $("#pdSubmitInfo").attr("innerHTML", result.Message);
        }
    }, "json");
}
/***** CONTACT US *****/
function showContactForm() {
    
}
function submitContactForm() {
    $("#contactError:visible").hide();
    $("#contactSuccess:visible").hide();
    $("#contactStatus:hidden").show();
    $.post("/ContactUs/SubmitContact", {
        name: $("#contactName").val(),
        emailAddress: $("#contactEmail").val(),
        message: $("#contactMessage").val()
    }, function(result) {
        $("#contactStatus:visible").hide();
        if (result.SuccessFlag) {
            $("#contactSuccess").attr("innerHTML", result.Message);
            $("#contactSuccess:hidden").fadeIn("slow");          
            setTimeout(finishContactSubmission, 2800);
        } else {
            $("#contactErrorMessage").attr("innerHTML", result.Message);
            $("#contactError:hidden").fadeIn("slow");
            result = null;
            $("#contactName").focus();
        }
    }, "json");
}
function finishContactSubmission() {
    $("#contactName").val("");
    $("#contactEmail").val("");
    $("#contactMessage").val("");
    $("#contactName").focus();
    $("#contactSuccess:visible").fadeOut('slow');
}
/****** MENUING ************/
var _openMenuID = null;
var _closeMenuTimer = null;
function showMenu(menuID) {    
    menuID = "#" + menuID;
    if (_openMenuID == menuID)
    {
        setMenuTimer();
        return;
    }
    else if (_openMenuID != null)
    {
        closeOpenMenu();
    }

    _openMenuID = menuID;
    $(_openMenuID + "Menu:hidden").show();
} 
function closeOpenMenu() {
    killMenuTimer();
    $(_openMenuID + "Menu:visible").hide();
    _openMenuID = null;
}
function setMenuTimer() {
    killMenuTimer();
    _closeMenuTimer = setTimeout(closeOpenMenu, 1500);
}
function killMenuTimer() {
    if (_closeMenuTimer != null) {
        clearTimeout(_closeMenuTimer);
        _closeMenuTimer = null; 
    }
}
/****** PRODUCT SEARCH *****/
function performProductSearch() {
    var searchUrl = "/Products/Search/" + $("#productSearchText").val();
    window.location = searchUrl;
}
function performSizeSearch() {
    var searchUrl = "/Products/SizeSearch/" + $("#productSizeSearch").val();
    window.location = searchUrl;
}
/***** SHIP EASTER EGG *****/
function sinkShip() {
    $("#footerShip").animate({
        top: '5px',
        opacity: '0'
    }, 2000, function() {
        $("#footerShip").hide();
        $("#footerShip").css("opacity", "100");
        $("#footerShip").css("top", "-124px");
        setTimeout( sailShip, 750);
    });
}
function sailShip() {
     $("#footerShip").show('slide', 2000);
}
/***** LOGIN *****/
function performLogin() {
    $("#loginStatus:hidden").show();
    $("#loginErrorContainer:visible").hide();
    $.post("/Login/LogUserIn", {
        emailAddress: $("#loginEmailAddress").val(),
        password: $("#loginPassword").val()
    }, function(result) { 
        if (result.SuccessFlag) {
            $("#loginStatus").css("color", "#345DB2");
            $("#loginStatus").attr("innerHTML", "Login successful, please wait...");
            setTimeout(function() { window.location = $("#redirectPath").val(); }, 1200);
            result = null;
        } else {
            $("#loginStatus:visible").hide();
            $("#loginErrorMessage").attr("innerHTML", result.Message);
            $("#loginErrorContainer:hidden").fadeIn("slow");
            result = null;
            $("#loginEmailAddress").focus();
        }
    }, "json");
}
function performReset() {
     $("#resetStatus").attr("innerHTML", "<img src='/Content/Images/Common/ajax_loader_24_trans.gif' alt='Submitting, please wait...' style='vertical-align: middle; margin-right: 5px;' /> Submitting, please wait...");
     setDivColorToDefault("resetStatus");
     $("#resetStatus:hidden").show();
     $.post("/Login/ResetPassword", {
        emailAddress: $("#resetEmailAddress").val()
     }, function(result) {
        if (result.SuccessFlag) {
            setDivColorToBlue("resetStatus");
            $("#resetStatus").attr("innerHTML", "Your new Password has been emailed to you.");
            setTimeout(resetDone, 2000);
        } else {
            setDivColorToRed("resetStatus");
            $("#resetStatus").attr("innerHTML", result.Message);
        }
     }, "json");
}
function resetDone() {
    $("#resetStatus").fadeOut();
    $("#resetEmailAddress").val("");
    $("#loginEmailAddress").focus();
}
