﻿$(document).ready(function () {

    $.tablesorter.defaults.widgets = ['zebra'];
    $("#MyWicounts").tablesorter({
        //sortList: [[2, 1]],
        headers: {
            0: { sorter: false },            
            3: { sorter: false }
        },
        dateFormat: 'uk'
    });

    $("#SupplierDeals").tablesorter({        
        headers: {
            2: { sorter: false },
            3: { sorter: false }
        }
    });

    $("#CityName").click(showCityDropDown);

    if ($(".SupplierRightContent").length) {

        supplierMap();
    }

    $("#DealDetailsButton").click(function () {
        if ($(".DealDetails").is(":hidden")) {
            $(".DealPreview").hide();
            $(".DealDetails").slideDown("fast", function () {
                $(".OtherDeals").slideUp("fast");
                $("#DealDetailsButton").text("Hide Deal Details");
                supplierMap();
            });
        }
        else {
            $(".DealDetails").slideUp("fast", function () {
                $("#DealDiscussionPreview").show();
                $(".DealPreview").show();
                $(".OtherDeals").slideDown("fast");
                $("#DealDetailsButton").text("View Deal Details");
            });
        }
    });
    $("#SideGiftCertificate").click(function () {
        location = "/BuyGiftCertificate";
    });
    $("#SideAccountControl #SideSignInShowButton").click(function () {
        if ($("#SideAccountControl #SignInFields").is(":hidden")) {
            $(this).fadeOut("fast");
            $("#SideAccountControl #SideSignInButton").fadeIn("fast");
            $("#SideAccountControl #SignInFields").slideDown("fast");
        }
    });
    $(".SideDeal").click(function () {
        var code = $(this).data("code");
        location = "/ViewDeal/" + code;
    });
    $("#tabs").tabs();
    $("#SubDealCloseButton").click(function () {
        $("#SubDealShadowBox").fadeOut('fast');
    });
    $("#BuyNowButton").click(buyNowClicked);
    $("#BuyApplyDiscountCode").click(function () {
        var code = $("#DiscountCode").val();
        $.post("/Payment/ApplyDiscountCode", { code: code }, applyDiscountCode, "json");
    });
    $("#BuyApplyGiftCertificate").click(function () {
        var code = $("#GiftCertificate").val();
        $.post("/Payment/ApplyGiftCertificate", { code: code }, applyGiftCertificate, "json");
    });

    $("#OrdersTable #SubDeal").change(updateSubDealPrice);
    $("#OrdersTable #Quantity").change(updatePurchaseTotals);
    $("#BuyDealDetailsTable #Payment_CreditsUsed").change(updatePurchaseTotals);
    $("#BuyDealDetailsTable #Payment_AdministrativePaymentAmount").change(updatePurchaseTotals);
    $("#UseDiscountCode").click(useDiscountCodeClicked);
    $("#UseGiftCertificate").click(useGiftCertificateClicked);
    $("#UseWibucks").click(useWibucksClicked);
    $("#UseAdmin").click(useAdminClicked);
    $("#PayFast").click(choosePaymentOptionClicked);
    $("#CreditCard").click(choosePaymentOptionClicked);
    $("#TopSubscribeButton").click(topSubscribeClicked);
    $("#TopSubscribeCloseButton").click(topSubscribeClose);
    $("#TopSubscribeSubscribeButton").click(topSubscribeSubscribe);
    $("#SubscribeCloseButton").click(landingSubscribeClose);
    $("#LandingSubscribeSubscribeButton").click(landingSubscribe);
    $("#LandingSubscribeAlreadySubscribedButton").click(landingSubscribeAlreadySubscribed);
    $("#LandingSubscribeBrowsingButton").click(landingSubscribeBrowsing);
    $("#FooterSubscribeButton").click(footerSubscribe);
    $("#FilterDeals").click(filterDeals);
    $("#FilterShowCaseDeals").click(filterShowCaseDeals);
    $("#FilterGiftCertificates").click(filterGiftCertificates);
    $("#FilterDiscountCodes").click(filterDiscountCodes); 
    $("#FilterUsers").click(filterUsers);
    $("#FilterSuppliers").click(filterSuppliers);
    $("#FilterWicounts").click(filterWicounts);
    $("#FilterOrders").click(filterOrders);
    $("#RAFButton").click(showReferAFriendBox);
    $("#SideRAFButton").click(showReferAFriendBox);
    $("#ORRAFButton").click(showReferAFriendBox);
    $("#PromoRAF").click(showReferAFriendBox);
    $("#RAFClose").click(hideReferAFriendBox);
    bindRemoveUsers();
    countBack();
    initialiseWLPAutoComplete();
    $("#AddUserTextBox").autocomplete({
        source: function (request, response) {
            $.ajax({
                url: "/Administration/GetFilteredUsers",
                dataType: "json",
                data: {
                    filter: request.term
                },
                success: function (data) {
                    response($.map(data, function (item) {
                        return {
                            label: item.UserName,
                            value: item.UserName,
                            id: item.Id
                        }
                    }));
                }
            });
        },
        minLength: 2
    });
    $("#OrderUsername").autocomplete({
        source: function (request, response) {
            $.ajax({
                url: "/Administration/GetFilteredUsers",
                dataType: "json",
                data: {
                    filter: request.term
                },
                success: function (data) {
                    response($.map(data, function (item) {
                        return {
                            label: item.UserName,
                            value: item.UserName,
                            id: item.Id
                        }
                    }));
                }
            });
        },
        select: function (event, ui) {
            $("#UserId").val(ui.item.id);
        },
        minLength: 2
    });
    $("#OrderDealTitle").autocomplete({
        source: function (request, response) {
            $.ajax({
                url: "/Administration/GetFilteredDeals",
                dataType: "json",
                data: {
                    filter: request.term
                },
                success: function (data) {
                    response($.map(data, function (item) {
                        return {
                            label: item.Title,
                            value: item.Title,
                            id: item.Id
                        }
                    }));
                }
            });
        },
        select: function (event, ui) {
            // Deal Title
            $("#OrderDealId").val(ui.item.id);
            updateLocationsForEditOrder();
            updateSubDealsForEditOrder();
        },
        minLength: 2
    });
    $("#DealCodeFilter").autocomplete(
    {
        source: function (request, response) {
            $.ajax({
                url: "/Administration/GetFilteredDeals",
                dataType: "json",
                data: {
                    filter: request.term
                },
                success: function (data) {
                    response($.map(data, function (item) {
                        return {
                            label: item.Title,
                            value: item.Title,
                            id: item.Code
                        }
                    }));
                }
            });
        },
        select: function (event, ui) {
            window.location = "/Administration/Wicounts/?searchTerm=" + ui.item.id;
        },
        minLength: 2
    });
    $(".RemoveSupplierButton").live("click", removeSupplierFromDeal);
    $(".SupplierSelector").blur(function () {
        var text = $(this).val();
        if (!text) {
            $(this).next("input[type='hidden']").val("");
        }
    });
    initialiseSupplierAutoComplete();
    $("#AddUserButton").click(function () {
        var userName = $("#AddUserTextBox").val();
        var supplierId = $("#Id").val();
        $.post("/Administration/AddUserToSupplier/", { userName: userName, supplierId: supplierId }, updateAddUser);
    });
    $("#AddOrderNoteButton").click(function () {
        var note = $("#NoteEntry").val();
        var orderId = $("#Id").val();
        $.post("/Administration/AddOrderNote/", { orderId: orderId, note: note }, updateOrderNote);
    });
    $(".CommentReplyLink").click(function () {
        var thisDiv = $(this).parent().parent();
        var comment = thisDiv.find(".Comment").val();
        var inreplyTo = $(this).data("id");
        $.post("/Administration/AddCommentReply", { inreplyTo: inreplyTo, comment: comment }, updateCommentReply);
    });
    $(".CommentPrivateReplyLink").click(function () {
        var thisDiv = $(this).parent().parent();
        var comment = thisDiv.find(".Comment").val();
        var inreplyTo = $(this).data("id");
        $.post("/Administration/AddCommentPrivateReply", { inreplyTo: inreplyTo, comment: comment }, updateCommentReply);
    });
    $(".ReplyLink").click(function () {
        var commentId = $(this).data("commentId");
        var selector = "#ReplyTo" + commentId;
        $(selector).show();
    });
    $(".CloseCommenterDetails").click(function () {
        $(this).parent().hide();
    });
    $(".ManagementCommenterName").click(function () {
        var id = $(this).data("id");
        var selector = "#CommenterDetails" + id;
        $(selector).show();
    });
    $(".CommentLink").click(function () {
        var id = $(this).data("id");
        var selector = "#CommentReplyFor" + id;
        $(selector).show();
    });
    $(".CommentCancelLink").click(function () {
        var id = $(this).data("id");
        var selector = "#CommentReplyFor" + id;
        $(selector).hide();
    });
    var startaddress = $("body").data("address");
    if (startaddress) {
        $(".Distance").each(function () {
            var endAddress = $(this).data("address");
            calcDistance(startaddress, endAddress, this);
        });
    }
    $("#CityFilter > div > input[type='checkbox']").click(applyDealFilter);
    $("#CityFilter > div > input[type='checkbox']").each(applyDealFilter);
    $("#CityFilter #SelectAll").click(function () {
        $("#CityFilter > div > input[type='checkbox']").each(function () {
            $(this).attr('checked', 'checked');
            $(this).each(applyDealFilter);
        });
    });
    $("#CityFilter #ClearAll").click(function () {
        $("#CityFilter > div > input[type='checkbox']").each(function () {
            $(this).removeAttr('checked');
            $(this).each(applyDealFilter);
        });
    });

    $("#HideExpired").click(applyWicountFilter);
    $("#HideRedeemed").click(applyWicountFilter);

    $("#PromoGift").click(promoGiftClicked);
    $("#GiveAsGiftCloseButton").click(giveAsGiftCloseButtonClicked);
    $("span.GiveAsGift").click(showGiveAsGift);
    $("#GiftAccept").click(giveAsGiftAccept);
    $("#GiftCancel").click(giveAsGiftCancel);
    $(".WicountRedeem").click(supplierRedeemWicount);
    $(".DeletePregenNumber").click(deletePregeneratedNumber);
    $("#AddPregenNumbers").click(addPregeneratedNumbers);

    $("#ChangePasswordCloseButton").click(changePasswordCloseButtonClicked);
    $("span.ChangePassword").click(showChangePassword);
    $("#ChangePasswordAccept").click(changePasswordAccept);
    $("#ChangePasswordCancel").click(changePasswordCancel);

    $("#InputCloseButton").click(inputCloseButtonClicked);
    $("span.Input").click(showInput);
    $("#InputAccept").click(inputAccept);
    $("#InputCancel").click(inputCancel);

    var subscriptions = $("#MySubscriptions");
    if (subscriptions && subscriptions.length > 0) {
        getSubscriptions($("#EmailAddress").val());
    }

    $("#DealCode").autocomplete({
        source: function (request, response) {
            $.ajax({
                url: "/Administration/GetFilteredDeals",
                dataType: "json",
                data: {
                    filter: request.term
                },
                success: function (data) {
                    response($.map(data, function (item) {
                        return {
                            label: item.Code,
                            value: item.Code,
                            id: item.Code
                        }
                    }));
                }
            });
        }
    });
});

function updateSubDealsForEditOrder() {
    // Clear out the locations
    $("#SubDealId").html("");
    var dealId = $("#OrderDealId").val();
    $.post("/Administration/GetSubDealsForDeal", { dealId: dealId }, updateSubDealsForEditOrderResult, "json");
}

function updateSubDealsForEditOrderResult(data) {
    var items = "";
    for (var sd in data) {
        items += "<option value='" + data[sd].Id + "'>" + data[sd].Title + "</option>";
    }
    $("#SubDealId").html(items);
}

function updateLocationsForEditOrder() {
    // Clear out the locations
    $("#DealLocationId").html("");
    var dealId = $("#OrderDealId").val();
    $.post("/Administration/GetLocationsForDeal", { dealId: dealId }, updateLocationsForEditOrderResult, "json");
}

function updateLocationsForEditOrderResult(data) {
    var items = "";
    for (var loc in data) {
        items += "<option value='" + data[loc].Id + "'>" + data[loc].LocationName + "</option>";
    }
    $("#DealLocationId").html(items);
}

function addPregeneratedNumbers() {
    var numbers = $("#WicountNumbers").val();
    var dealId = $(this).data("dealid");
    $.post("/Administration/AddPregeneratedWicountNumbers/", { dealId: dealId, numbers: numbers }, addPregeneratedNumbersResult, "json");
}

function addPregeneratedNumbersResult(data) {
    for (i = 0; i < data.length; i++) {
        var rowId = "Wicount_" + data[i].Id;
        var row = "<tr id='" + rowId + "' class=\"datarow\"><td>" + data[i].WicountCode + "</td><td>" + data[i].Used + "</td><td>";
        if (!data[i].Used) {
            row += "<input class=\"BlueButtonShort DeletePregenNumber\" type=\"button\" value=\"Delete\" data-id=\"" + data[i].Id + "\" />";
        }
        row += "</td></tr>";
        $(".WicountTable").append(row);
    }
    colorTables();
}

function deletePregeneratedNumber() {
    var id = $(this).data("id");
    $.post("/Administration/DeletePregeneratedWicountNumber/", { id: id }, deletePregeneratedNumberResult, "json");
}

function deletePregeneratedNumberResult(data) {
    if (data.Success) {
        var id = data.WicountNumberId;
        $("#Wicount_" + id).remove();
    }
}

function supplierRedeemWicount() {
    var wicountId = $(this).data("wicountid");
    $.post("/Supplier/MarkAsRedeemed/", { wicountId: wicountId }, supplierRedeemWicountResult, "json");
}

function supplierRedeemWicountResult(data) {
    if (data.Success) {
        var wicountId = data.WicountId;
        $("#Wicount" + wicountId).text("Redeemed");
    }
}

function giveAsGiftCancel() {
    $("#GiftToName").val("");
    $("#GiftToEmail").val("");
    $("#GiveAsGiftShadowBox").fadeOut("fast");
    $("#GiftDetails").fadeOut("fast");
}

function giveAsGiftAccept() {
    var giftToName = $("#GiftName").val();
    $("#GiftToName").val(giftToName);
    var giftToEmail = $("#GiftEmail").val();
    $("#GiftToEmail").val(giftToEmail);
    $("#GiveAsGiftShadowBox").fadeOut("fast");
    $("#GiftDetails").text("Currently gifted to " + giftToName);
    $("#GiftDetails").fadeIn("fast");
}

function giveAsGiftCloseButtonClicked() {
    $("#GiveAsGiftShadowBox").fadeOut("fast");
}

function changePasswordCancel() {
    $("#NewPassword").val("");
    $("#ConfirmPassword").val("");
    $("#ChangePasswordShadowBox").fadeOut("fast");    
}

function changePasswordAccept() {
    var username = $("#UserName").val();
    var newPassword = $("#NewPassword").val();
    var confirmPassword = $("#ConfirmPassword").val();
    if (newPassword == confirmPassword) {
        changePasswordCloseButtonClicked();
        $.blockUI();
        $.ajax({
            type: "POST",
            url: "/ChangePassword/" + username + "/" + newPassword,
            cache: false,
            success: function (result) {
                $.unblockUI();
                if (result.success) {                                        
                    $.growlUI(null, "Password change successful.");
                } else {                    
                    $.growlUI(null, "Password change failed.");
                }
            }
        });
    } else {
        alert("Passwords do not match. Please re-confirm your new password.");
        $("#ConfirmPassword").val("");
    }
}

function showChangePassword() {
    $("#NewPassword").val("");
    $("#ConfirmPassword").val("");
    $("#ChangePasswordShadowBox").fadeIn("slow");
}

function changePasswordCloseButtonClicked() {    
    $("#ChangePasswordShadowBox").fadeOut("fast");
}

function promoGiftClicked() {
    var dealid = $("#BuyNowButton").attr("data-dealid");
    if ($("#BuyNowButton").data("haschoices") == "True") {
        $("#SubDealShadowBox").fadeIn();
        return false;
    }
    window.location = "/BuyDeal/" + dealid + "/?GiveAsGift=true";
}

function myAccountUnsubscribe() {
    var city = $(this).data("city");
    var email = $(this).data("email");
    var source = "MyAccount";
    $.blockUI();
    $.post("/UnsubscribeFromMailingList", { email: email, cityNames: city, source: source }, myAccountUnsubscribeResult, "json");
}

function myAccountUnsubscribeResult(data) {
    $.unblockUI();
    if (data.Error) {
        $.growlUI(null, data.Error);
    }
    else {
        $.growlUI(null, data.Result);
        for (var i = 0; i < data.CityNames.length; i++) {
            var elem = $(".Unsubscribe[data-city='" + data.CityNames[i] + "']");
            elem.removeClass("Unsubscribe");
            elem.addClass("BlueButtonShort");
            elem.addClass("Subscribe");
            elem.text("Subscribe");
            elem.data("action", "Subscribe");
        }
    }
}

function myAccountSubscribe() {    
    var city = $(this).data("city");
    var email = $(this).data("email");
    var source = "MyAccount";
    $.blockUI();
    $.post("/SubscribeToMailingList", { email: email, cityNames: city, source: source }, myAccountSubscribeResult, "json");
}

function myAccountSubscribeResult(data) {
    $.unblockUI();
    if (data.Error) {
        $.growlUI(null, data.Error);
    }
    else {
        $.growlUI(null, data.Result);
        for (var i = 0; i < data.CityNames.length; i++)
        {
            var elem = $(".Subscribe[data-city='" + data.CityNames[i] + "']");
            elem.removeClass("Subscribe");
            elem.removeClass("BlueButtonShort");
            elem.addClass("Unsubscribe");
            elem.text("Unsubscribe");
            elem.data("action","Unsubscribe");
        }
    }
}

function applyDealFilter() 
{
    var val = $(this).val();
    var checked = $(this).attr("checked");
    var relatedItemSelector = ".ActiveDeals[data-city=\"" + val + "\"]";
    if (checked) {
        $(relatedItemSelector).fadeIn("fast");
    }
    else {
        $(relatedItemSelector).fadeOut("fast");
    }
}

function applyWicountExpiredFilter() {
    var val = $(this).val();
    var checked = $(this).attr("checked");
    var relatedItemSelector = ".AccountTable > tr[data-expired=\"" + val + "\"]";
    if (checked) {
        $(relatedItemSelector).fadeOut("fast");
    }
    else {
        $(relatedItemSelector).fadeIn("fast");
    }
}

function applyWicountFilter() {    
    var expiredchecked = $("#HideExpired").attr("checked");
    var redeemedchecked = $("#HideRedeemed").attr("checked");
    location = "/MyWicounts/?hideRedeemed=" + escape(redeemedchecked) + "&hideExpired=" + escape(expiredchecked);        
}

function initialiseWLPAutoComplete() {
    if ($(".WhiteLabelPartner")) {
        $(".WhiteLabelPartner").change(function () {
            var val = $(this).val();
            if (!val) {
                $(this).next("input").val("");
            }
        });
        $(".WhiteLabelPartner").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: "/Administration/GetFilteredWhiteLabelPartners",
                    dataType: "json",
                    data: {
                        filter: request.term
                    },
                    success: function (data) {
                        response($.map(data, function (item) {
                            return {
                                label: item.Name,
                                value: item.Name,
                                id: item.Id
                            }
                        }));
                    }
                });
            },
            select: function (event, ui) {
                $(this).next("input").val(ui.item.id);
            },
            minLength: 2
        });
    }
}

function initialiseSupplierAutoComplete() {
    if ($(".SupplierSelector")[0]) {
        $(".SupplierSelector").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: "/Administration/GetFilteredSuppliers",
                    dataType: "json",
                    data: {
                        filter: request.term
                    },
                    success: function (data) {
                        response($.map(data, function (item) {
                            return {
                                label: item.Name,
                                value: item.Name,
                                id: item.Id
                            }
                        }));
                    }
                });
            },
            select: function (event, ui) {
                $(this).next("input[type='hidden']").val(ui.item.id);
            },
            minLength: 2
        });
    }
}

function getSubscriptions(emailAddress) {
    $.get('/MySubscriptions/', { emailAddress: emailAddress },
    function (data) {
        $("#MySubscriptions").html(data);
    });
}

function colorTables() {
    $('tr:even').css({ backgroundColor: '#ccc' });
    $('tr:first').css({ backgroundColor: '#000', color: '#fff' });
}

function updateCommentReply(data) {
    window.location = window.location;
}

function updateOrderNote(data) {
    var d = new Date();
    var row = '<tr><td>' + d.toString() + '</td><td>' + data.AddedBy + '</td><td>' + data.Note + '</td></tr>';
    $("#OrderNotes").append(row);
}

function bindRemoveUsers() {
    $(".RemoveUserButton").click(function () {
        var userName = $(this).data("userid");
        var supplierId = $("#Id").val();
        $.post("/Administration/RemoveUserFromSupplier/", { userName: userName, supplierId: supplierId }, updateRemoveUser);
    });
}

function updateAddUser(data) {
    if (data.Response) {
        var userName = $("#AddUserTextBox").val();
        var newCell = $("<tr><td>" + userName + "</td><td><input type='button' value='-' class='RemoveUserButton' data-userid='" + userName + "'></td><tr>");
        $("#SupplierUsersTable").append(newCell);
        bindRemoveUsers();
        $("#AddUserTextBox").val("");
    }
}

function updateRemoveUser(data) {
    if (data.Response) {
        var cell = $("td:contains('" + data.User + "')");
        var cellParent = cell.parent()[0];
        $(cellParent).remove();
    }
}

var countStepper = -1;
var setTimeOutPeriod = (Math.abs(countStepper) - 1) * 1000 + 990;

function startDealTimer() {
    var endDate = Date.parse($("#EndDate").val());
    var now = new Date();
    var ddiff = new Date(endDate - now);
    var secs = Math.floor(ddiff.valueOf() / 1000);
    if (secs < 0) {
        $("#DealTimeText").text("This deal is closed");
        $("#TimeLeftDays").html(0);
        $("#TimeLeftHours").html(0);
        $("#TimeLeftMinutes").html(0);
        $("#TimeLeftSeconds").html(0);
    }
    else {
        countBack(secs);
    }
}

function calcage(secs, num1, num2) {
    var value = Math.floor(secs / num1) % num2;
    return value;
}

function pluraliseString(value, string, include) {
    if (value == 0) {
        if (include) {
            return "0 " + string + "s ";
        }
        return "";
    }
    if (value == 1) {
        return value + " " + string + " ";
    }
    if (value > 1) {
        return value + " " + string + "s ";
    }
    return "";
}

function calcSecsDateForMainDeal() {
    var endDate = Date.parse($("#EndDate").val());
    var now = new Date();
    var ddiff = new Date(endDate - now);
    var secs = Math.floor(ddiff.valueOf() / 1000);
    var days = calcage(secs, 86400, 100000);
    var hours = calcage(secs, 3600, 24);
    var minutes = calcage(secs, 60, 60);
    var seconds = calcage(secs, 1, 60);
    if (secs <= 0) {
        $("#DealTimeText").text("This deal is closed");
        $("#TimeLeftDays").html(0);
        $("#TimeLeftHours").html(0);
        $("#TimeLeftMinutes").html(0);
        $("#TimeLeftSeconds").html(0);
    }
    else {
        $("#TimeLeftDays").html(days);
        $("#TimeLeftHours").html(hours);
        $("#TimeLeftMinutes").html(minutes);
        $("#TimeLeftSeconds").html(seconds);
    }
    return secs;
}

String.prototype.lpad = function (padString, length) {
    var str = this;
    while (str.length < length)
        str = padString + str;
    return str;
}


function calcTimeForForDeals() {
    $(".TimeLeftToBuy").each(function () {
        var endDate = Date.parse($(this).data("enddate"));
        var now = new Date();
        var ddiff = new Date(endDate - now);
        var secs = Math.floor(ddiff.valueOf() / 1000);
        var days = calcage(secs, 86400, 100000);
        var hours = calcage(secs, 3600, 24);
        var minutes = calcage(secs, 60, 60);
        var seconds = calcage(secs, 1, 60);
        var displayStr = "";
        if (secs <= 0) {
            displayStr = "Deal Closed";
        }
        else {
            displayStr = displayStr + pluraliseString(days, "Day", secs > 86400);
            displayStr = displayStr + " " + hours.toString().lpad("0", 2);
            displayStr = displayStr + ":" + minutes.toString().lpad("0", 2);
            displayStr = displayStr + ":" + seconds.toString().lpad("0", 2);
        }
        $(this).text(displayStr);
    });
}

function countBack() {
    var secs = calcSecsDateForMainDeal();
    
    
    calcTimeForForDeals();
    setTimeout("countBack()", setTimeOutPeriod);
}

function showReferAFriendBox() {
    var showthis = $(this).data('show');
    if (showthis === "true" || showthis === "True") {
        $("#RAFShadowBox").load('/ReferAFriend', function () {            
            $("#RAFShadowBoxBackground").fadeIn(100);
        });
    }
    else {
        $.growlUI(null, "Please sign in to refer friends");
    }
}

function hideReferAFriendBox() {
    $("#RAFShadowBoxBackground").fadeOut(100);
}

function referAFriend(event) {
    // stop form from submitting normally
    event.preventDefault();

    // get some values from elements on the page:
    var $form = $(this);
    var emailAddresses = $("#FriendEmailAddresses").val();
    var invitationText = $("#InvitationText").val();
    var sharelink = $("#ShareLink").val();
    var url = $form.attr('action');

    // Send the data using post and put the results in a div
    $.post(url, { InvitationText: invitationText, FriendEmailAddresses: emailAddresses, ShareLink: sharelink },
    function (data) {
        $("#RAFShadowBoxFooter > td").removeClass("RAFPageFold");        
        $("#RAFShadowBox").html(data);
    });
}

function updateSubDealPrice() {
    var subDealId = $("#SubDeal").val();
    var selector = "#SubDeal_" + subDealId + "_ActualPrice";
    var price = $(selector).val();
    $("#DealPrice").val(price);
    $("#Price").text(CommaFormatted(CurrencyFormatted(price)));
    updatePurchaseTotals();
}

function buyNowClicked() {
    var dealid = $("#BuyNowButton").attr("data-dealid");
    if ($("#BuyNowButton").data("haschoices") == "True") {
        $("#SubDealShadowBox").fadeIn('slow');
        return false;
    }
    window.location = "/BuyDeal/" + dealid;
}

function filterDeals()
{
    var filter=  $("#Filter").val();
    location = "/Administration/Deals/Page/1/?filter=" + escape(filter);
}

function filterShowCaseDeals() {
    var filter = $("#DealShowCaseFilter").val();
    location = "/Administration/ViewShowCaseDeals/?filter=" + escape(filter);
}

function filterGiftCertificates() {
    var filter = $("#Filter").val();
    location = "/Administration/GiftCertificates/Page/1/?filter=" + escape(filter);
}

function filterDiscountCodes() {
    var filter = $("#Filter").val();
    location = "/Administration/DiscountCodes/Page/1/?filter=" + escape(filter);
}

function filterUsers() {
    var filter = $("#Filter").val();
    location = "/Administration/Users/Page/1/?filter=" + escape(filter);
}

function filterSuppliers() {
    var filter = $("#Filter").val();
    location = "/Administration/Suppliers/Page/1/?filter=" + escape(filter);
}

function filterWicounts() {
    var filter = $("#DealCodeFilter").val();
    location = "/Administration/Wicounts/?searchTerm=" + escape(filter);
}

function filterOrders() {
    var filter = $("#Filter").val();
    location = "/Administration/Orders/Page/1/?filter=" + escape(filter);
}

function topSubscribeClicked() {
    if ($("#TopSubscribeDropDown").is(":hidden")) {
        $("#TopSubscribeDropDown").slideDown("fast");
    }
    else {
        $("#TopSubscribeDropDown").slideUp("fast");
    }
    return false;   
}

function footerSubscribe() {
    var city = $("#FooterSubscribeCity").val();
    var email = $("#FooterSubscribeEmail").val();
    var source = "FooterSubscribe";
    $.post("/SubscribeToMailingList", { email: email, cityNames: city, source: source }, topSubscribeResult, "json");
}

function landingSubscribe() {
    var city = $("#LandingSubscribeCity").val();
    var email = $("#LandingSubscribeEmail").val();
    var source = "LandingSubscribe";
    $.post("/SubscribeToMailingList", { email: email, cityNames: city, source: source }, topSubscribeResult, "json");
    $("#SubscribeShadowBox").fadeOut('fast');
}

function topSubscribeSubscribe() {
    var cities = $("#TopSubscribeDropDown input[type='checkbox']");
    var cityCodes = new Array();
    for (i = 0; i < cities.length;i++) {
        if ($(cities[i]).attr("checked")) {
            cityCodes.push($(cities[i]).val());
        }
    }
    var firstName = $("#TopSubscribeName").val();
    var email = $("#TopSubscribeEmail").val();
    var source = "TopSubscribe";
    $.post("/SubscribeToMailingList", { firstName: firstName, email: email, cityNames: cityCodes.toString(), source: source }, topSubscribeResult, "json");
    $("#TopSubscribeDropDown").slideUp("fast");
}

function topSubscribeClose() {
    $("#TopSubscribeDropDown").slideUp("fast");
}

function landingSubscribeClose() {
    $.post("/CreateSubscribedCookie", { days: 1, hours: 0 }, null, "json");
    $("#SubscribeShadowBox").fadeOut("fast");
}

function landingSubscribeAlreadySubscribed() {
    $.post("/CreateSubscribedCookie", { days: 0, hours: 0 }, null, "json");
    $("#SubscribeShadowBox").fadeOut("fast");
}

function landingSubscribeBrowsing() {
    $.post("/CreateSubscribedCookie", { days: 30, hours: 0 }, null, "json");
    $("#SubscribeShadowBox").fadeOut("fast");
}

function topSubscribeResult(data)
{
    if (data.Error)
    {
        $.growlUI(null, data.Error);
    }
    else
    {
        $.growlUI(null, data.Result);        
    }
}

function useDiscountCodeClicked()
{
    var checked = $("#UseDiscountCode").attr("checked");
    if (checked)
    {
        $(".DiscountCodeRow").fadeIn(100);
    }
    else
    {
        $(".DiscountCodeRow").fadeOut(100);
        $(".DiscountCodeCell").remove();
        updatePurchaseTotals();
    }
}

function useGiftCertificateClicked()
{
    var checked = $("#UseGiftCertificate").attr("checked");
    if (checked)
    {
        $(".GiftCertificateRow").fadeIn(100);
    }
    else
    {
        $(".GiftCertificateRow").fadeOut(100);
        $(".GiftCertificateCell").remove();
        updatePurchaseTotals();
    }
}

function useWibucksClicked()
{
    var checked = $("#UseWibucks").attr("checked");
    if (checked)
    {
        var availableCredits = parseFloat($("#Payment_CreditsAvailable").val());

        $("#Payment_CreditsUsed").val(availableCredits);
        $(".WibucksRow").fadeIn(100);
        updatePurchaseTotals();
    }
    else
    {
        $(".WibucksRow").fadeOut(100);
        $("#Payment_CreditsUsed").val(0);
        updatePurchaseTotals();
    }
}

function useAdminClicked() {
    var checked = $("#UseAdmin").attr("checked");
    if (checked) {
        var adminAvailable = parseFloat($("#Payment_Remainder").val());

        $("#Payment_AdministrativePaymentAmount").val(adminAvailable);
        $(".AdminRow").fadeIn(100);
        updatePurchaseTotals();
    }
    else {
        $(".AdminRow").fadeOut(100);
        $("#Payment_AdministrativePaymentAmount").val(0);
        updatePurchaseTotals();
    }
}

function choosePaymentOptionClicked() 
{
    var checked = $("#PayFast").attr("checked");    
    if (checked) 
    {        
        $(".CreditCardDetails").fadeOut(100);
        $("#Payment_PayWithPayFast").val(true);
    }
    var checked = $("#CreditCard").attr("checked");
    if (checked)
    {
        $(".CreditCardDetails").fadeIn(100);
        $("#Payment_PayWithPayFast").val(false);        
    }
}

function HidePaymentDetails(value) 
{
    if (value == 0) 
    {
        $(".PaymentOptions").fadeOut(100);        
    }
    else 
    {
        $(".PaymentOptions").fadeIn(100);        
    }
}

function updatePurchaseTotals()
{
    var dealPrice = parseFloat($("#DealPrice").val());
    var quantity = parseInt($("#Quantity").val());
    var dealTotal = dealPrice * quantity;    
    $("#TotalPrice").text(CommaFormatted(CurrencyFormatted(dealTotal)));
    var remainingAmount = dealTotal;    
    var discountCodes = $(".DiscountCodeCell");
    var discountAmount = 0.0;
    for (var i in discountCodes.toArray()) {
        var code = $(discountCodes[i]).data("code");
        var amountType= $("input[name=\"Payment.DiscountCodes\\[" + code + "\\].AmountType\"]").val();
        var amount = parseFloat($("input[name=\"Payment.DiscountCodes\\[" + code + "\\].Amount\"]").val());
        var maxAmount = parseFloat($("input[name=\"Payment.DiscountCodes\\[" + code + "\\].MaxAmount\"]").val());
        if (amountType == "Percent")
        {
            var discount = Math.min(dealTotal * (amount / 100.0), maxAmount);
            discount = Math.min(remainingAmount, discount);
            discountAmount += discount;
            $("[name=\"Payment_DiscountCodes_" + code + "_CalculatedTotal\"]").text(CommaFormatted(CurrencyFormatted(discount)));
            remainingAmount -= discount;
        }
        else
        {
            var discount = amount;
            discount = Math.min(remainingAmount, discount);
            discountAmount += amount;
            $("[name=\"Payment_DiscountCodes_" + code + "_CalculatedTotal\"]").text(CommaFormatted(CurrencyFormatted(discount)));
            remainingAmount -= discount;
        }
    }
    var giftCertificates = $(".GiftCertificateCell");
    var giftCertificateAmount = 0.0;
    for (var i in giftCertificates.toArray()) {
        var code = $(giftCertificates[i]).data("code");
        var amount= parseFloat($("input[name=\"Payment.GiftCertificates\\[" + code + "\\].Amount\"]").val());
        var usedAmountForThisOrder =Math.min(amount,remainingAmount);
        remainingAmount -= usedAmountForThisOrder;
        $("[name=\"Payment_GiftCertificates_" + code + "_CalculatedTotal\"]").text(CommaFormatted(CurrencyFormatted(usedAmountForThisOrder)));
        giftCertificateAmount  += usedAmountForThisOrder;
    }
    var creditsAssigned = $("#Payment_CreditsUsed").val();    
    var availableCredits = parseFloat($("#Payment_CreditsAvailable").val());    
    var creditsUsed = Math.min(creditsAssigned, remainingAmount, availableCredits);    
    var useCredits = $("#UseWibucks").attr("checked");
    if (useCredits)
    {
        $("#Payment_CreditsUsed").val(creditsUsed.toFixed(2));        
        remainingAmount -= creditsUsed;
    }

    var adminAmount = $("#Payment_AdministrativePaymentAmount").val();
    var adminAvailable = Math.min(adminAmount, remainingAmount);    
    var useAdmin = $("#UseAdmin").attr("checked");
    if (useAdmin) {
        $("#Payment_AdministrativePaymentAmount").val(adminAvailable.toFixed(2));
        remainingAmount -= adminAvailable;
    }

    $("#RemainderTotal").text(CommaFormatted(CurrencyFormatted(remainingAmount)));
    $("#WibucksTotal").text(CommaFormatted(CurrencyFormatted(creditsUsed)));
    $("#AdminTotal").text(CommaFormatted(CurrencyFormatted(adminAvailable)));
    $("#GiftCertificateTotal").text(CommaFormatted(CurrencyFormatted(giftCertificateAmount)));
    $("#DiscountCodeTotal").text(CommaFormatted(CurrencyFormatted(discountAmount)));
    $("#OrderTotal").text(CommaFormatted(CurrencyFormatted(dealTotal)));
    $("#Payment_Remainder").attr("value", remainingAmount);
    HidePaymentDetails(remainingAmount);
}

function applyDiscountCode(data)
{
    if (data.Error)
    {
        $.growlUI(null, data.Error);
    }
    else
    {
        var discountCodes = $(".DiscountCodeCell");
        for (var i in discountCodes.toArray()) {
            var code = $(discountCodes[i]).data("code");
            if (code == data.Code)
            {
                $.growlUI(null, "This discount code is already used on this order");
                updatePurchaseTotals();
                return;
            }
        }
        var codeHtml = "<tr class=\"DiscountCodeCell DiscountCodeRow\" data-code=\"" + data.Code + "\">\n<td>\n";
        codeHtml += "<input type=\"hidden\" name=\"Payment.DiscountCodes.Index\" value=\"" + data.Code +"\" />\n";
        codeHtml += "<input type=\"hidden\" name=\"Payment.DiscountCodes[" + data.Code + "].Code\" value=\"" + data.Code + "\" />\n";
        codeHtml += "<input type=\"hidden\" name=\"Payment.DiscountCodes[" + data.Code + "].AmountType\" value=\"" + data.AmountType +"\" />\n";
        codeHtml += "<input type=\"hidden\" name=\"Payment.DiscountCodes[" + data.Code + "].Amount\" value=\"" + data.Amount + "\" />";
        codeHtml += "<input type=\"hidden\" name=\"Payment.DiscountCodes[" + data.Code + "].MaxAmount\" value=\"" + data.MaxAmount + "\" />";
        codeHtml += "Discount Code " + data.Code;
        codeHtml += "</td>\n";
        codeHtml += "<td class=\"Total\">";
        if (data.AmountType == "Amount")
        {
            codeHtml+= "<p>" + data.Amount + "</p>";
        }
        else
        {
            codeHtml+= "<p>" + data.Amount + "%</p>";
        }
        codeHtml += "</td>\n";
        codeHtml += "<td class=\"Total\" name=\"Payment_DiscountCodes_" + data.Code + "_CalculatedTotal\"></td>\n";
        codeHtml += "</tr>";
        $("#DiscountCodeEditor").before(codeHtml);
        $(".DiscountCodeRow").fadeIn(500);
    }
    updatePurchaseTotals();
}

function applyGiftCertificate(data)
{
    if (data.Error)
    {
        $.growlUI(null, data.Error);
    }
    else
    {
        var giftCertificates = $(".GiftCertificateCell");
        for (var i in giftCertificates.toArray()) {
            var code = $(giftCertificates[i]).data("code");
            if (code == data.Code)
            {
                $.growlUI(null, "This gift card is already used on this order");
                updatePurchaseTotals();
                return;
            }
        }
        var codeHtml = "<tr class=\"GiftCertificateCell GiftCertificateRow\" data-code=\"" + data.Code + "\">\n<td>\n";
        codeHtml += "<input type=\"hidden\" name=\"Payment.GiftCertificates.Index\" value=\"" + data.Code +"\" />\n";
        codeHtml += "<input type=\"hidden\" name=\"Payment.GiftCertificates[" + data.Code + "].Code\" value=\"" + data.Code + "\" />\n";
        codeHtml += "<input type=\"hidden\" name=\"Payment.GiftCertificates[" + data.Code + "].Amount\" value=\"" + data.AmountRemaining + "\" />";
        codeHtml += "Gift Card " + data.Code;
        codeHtml += "</td>\n";
        codeHtml += "<td class=\"Total\">";
        codeHtml+= "<p>" + data.AmountRemaining + "</p>";
        codeHtml += "</td>\n";
        codeHtml += "<td class=\"Total\" name=\"Payment_GiftCertificates_" + data.Code + "_CalculatedTotal\"></td>\n";
        codeHtml += "</tr>";
        $("#GiftCertificateEditor").before(codeHtml);
        $(".GiftCertificateCell").fadeIn(500);
    }
    updatePurchaseTotals();
}

function CurrencyFormatted(amount) {
    var i = parseFloat(amount);
    if (isNaN(i)) { i = 0.00; }
    var minus = '';
    if (i < 0) { minus = '-'; }
    i = Math.abs(i);
    i = parseInt((i + .005) * 100);
    i = i / 100;    
    s = new String(i);
    if (s.indexOf(',') < 0) { s += '.00'; }
    if (s.indexOf(',') == (s.length - 2)) { s += '0'; }
    s = minus + s;    
    return s;
}

function CommaFormatted(amount) {
    var delimiter = ","; // replace comma if desired
    var a = amount.split('.', 2)
    var d = a[1];
    var i = parseInt(a[0]);
    if (isNaN(i)) { return ''; }
    var minus = '';
    if (i < 0) { minus = '-'; }
    i = Math.abs(i);
    var n = new String(i);
    var a = [];
    while (n.length > 3) {
        var nn = n.substr(n.length - 3);
        a.unshift(nn);
        n = n.substr(0, n.length - 3);
    }
    if (n.length > 0) { a.unshift(n); }
    n = a.join(delimiter);
    if (d.length < 1) { amount = n; }
    else { amount = n + '.' + d; }
    amount = minus + "R " + amount;
    return amount;
}

function addNote() {
    $.ajax({
        url: "/Administration/GetEmptyNote",
        cache: false,
        success: function (html) {
            $("#Notes").append(html);
            $.validator.unobtrusive.parseDynamicContent('form input');
        }
    });
    return false;
}

function addLocation() {
    $.ajax({
        url: "/Administration/GetEmptyLocation",
        cache: false,
        success: function (html) {
            $("#Locations").append(html);
            $.validator.unobtrusive.parseDynamicContent('form input');
        }
    });
    return false;
}

function addSubDeal()
{
    $.ajax({
        url: "/Administration/GetEmptySubDeal",
        cache: false,
        success: function(html) { 
            $("#SubDeals").append(html);
            $.validator.unobtrusive.parseDynamicContent('form input');
            initialiseSupplierAutoComplete();
            }
    });
    return false;
}

function addDealSchedule() {
    $.ajax({
        url: "/Administration/GetEmptyDealSchedule",
        cache: false,
        success: function (html) {
            $("#DealSchedules").append(html);
            $.validator.unobtrusive.parseDynamicContent('form input');
            initialiseWLPAutoComplete();
        }
    });
    return false;
}

function parseName(name) {
    name = name.replace("]", "\\]");
    name = name.replace("[", "\\[");
    return name;
}

(function ($) {
  $.fn.MVCFileManager = function (target,options) {
            var settings = {
                'url': '/FileManager/Browse/'
            };

            if (options) {
                    $.extend(settings, options);
                }

            return this.each(function () {
                $(this).click(function() {
                    var url = settings['url'];
                    url = window.location.protocol + "//" + window.location.host + url + "?Editor=StandAlone&Target=" + target;
                    window.open(url, 'File_Browser', 'width=1050,height=650');
                });
            });
        };  

  $.validator.unobtrusive.parseDynamicContent = function (selector) {
    //use the normal unobstrusive.parse method
    $.validator.unobtrusive.parse('form');

    //get the relevant form
    var form = $(selector).first().closest('form');
    
    //get the collections of unobstrusive validators, and jquery validators
    //and compare the two
    var unobtrusiveValidation = form.data('unobtrusiveValidation');
    var validator = form.validate();
    $.each(unobtrusiveValidation.options.rules, function (elname, elrules) {
      if (validator.settings.rules[elname] == undefined) {
        var args = {};
        $.extend(args, elrules);
        args.messages = unobtrusiveValidation.options.messages[elname];
        $('[name=\"' + parseName(elname) + '\"]').rules("add", args);
      } else {
        $.each(elrules, function (rulename, data) {
          if (validator.settings.rules[elname][rulename] == undefined) {
            var args = {};
            args[rulename] = data;
            args.messages = unobtrusiveValidation.options.messages[elname][rulename];
            $('[name=\"' + parseName(elname) + '\"]').rules("add", args);
          }
        });
      }
    });
  }
})(jQuery);

function deleteSubDeal(index)
{
    var divToDelete = $("[data-index='" + index + "']");
    divToDelete.remove();
}

function deleteNote(index) {
    var divToDelete = $("[data-index='" + index + "']");
    divToDelete.remove();
}

function deleteLocation(index) {
    var divToDelete = $("[data-index='" + index + "']");
    divToDelete.remove();
}

function deleteDealSchedule(index) {
    var divToDelete = $("[data-index='" + index + "']");
    divToDelete.remove();
}

function removeSupplierFromDeal(index) {
    var divToDelete = $("[data-index='" + index + "']");
    divToDelete.remove();
}

var directionsService = new google.maps.DirectionsService();
var directionsDisplay;

function calcDistance(startAddress, endAddress,target) {
    var request = {
        origin: startAddress,
        destination: endAddress,
        travelMode: google.maps.DirectionsTravelMode.DRIVING
    };
    directionsService.route(request, function (result, status) {
        if (status == google.maps.DirectionsStatus.OK) {
            var distance = result.routes[0].legs[0].distance.text;
            $(target).text(distance + " away");
        }
    });
}

function codeAddress(address) {
    geocoder.geocode({ 'address': address }, function (results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            map.setCenter(results[0].geometry.location);
            var marker = new google.maps.Marker({
                map: map,
                position: results[0].geometry.location
            });
        } else {
            //alert("Geocode was not successful for the following reason: " + status);
        }
    });
}

var geocoder;
var map;
geocoder = new google.maps.Geocoder();

function contactUsMap() {
    var options = { zoom: 14,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var address = "33 Scott Street, Waverley, Johannesburg, Gauteng";
    map = new google.maps.Map(document.getElementById
			("Map"), options);
    codeAddress(address);
}

function supplierMap() {
    if (!map) {
        var options = { zoom: 14,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        var address = $("#SupplierAddress").data('address');
        map = new google.maps.Map($(".SupplierRightContent")[0], options);
        codeAddress(address);
    }
}

function previewMap(index) {
    var line1, line2, line3, province, long, lat;    
    if (index.length != 0) {        
        line1 = $("#Locations_" + index + "__Address_Line1").val();
        line2 = $("#Locations_" + index + "__Address_Line2").val();
        line3 = $("#Locations_" + index + "__Address_Line3").val();
        province = $("#Locations_" + index + "__Address_ProvinceId option:selected").text();
        long = $("#Locations_" + index + "__Address_Longitude").val();
        lat = $("#Locations_" + index + "__Address_Latitude").val();
    } else {
        line1 = $("#Address_Line1").val();
        line2 = $("#Address_Line2").val();
        line3 = $("#Address_Line3").val();
        province = $("#Address_ProvinceId option:selected").text();
        long = $("#Address_Longitude").val();
        lat = $("#Address_Latitude").val();
    }
    var address = "";
    if (long == null && lat == null) {
        if (line1) {
            address = address + line1 + ", ";
        }
        if (line2) {
            address = address + line2 + ", ";
        }
        if (line3) {
            address = address + line3 + ", ";
        }
        address = address + province;
    } else {
        address = lat + "," + long;
    }        
    
    var options = { zoom: 14,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById
			("MapPreview " + index), options);
    codeAddress(address);    
}

function showGiveAsGift() {
    $("#GiveAsGiftShadowBox").fadeIn("slow");

}

function hideResponseBanner() {
    $("#responseBanner").fadeOut(500);
}

function sendWicountEmail(emailAddress, wicountId) {
    if (emailAddress != null) {        
        $.blockUI();
        $.ajax({
            type: "POST",
            url: "/SendWicountEmail/" + emailAddress + "/" + wicountId,
            cache: false,
            success: function (result) {
                $.unblockUI();
                if (result.success) {
                    $.growlUI(null, "Email sent successfully.");
                } else {
                    $.growlUI(null, "Sending email failed.");
                }
            }
        });
    } else {
        $.growlUI(null, "Invalid email.");        
    }
}

function inputCancel() {
    hideInput();
}

function inputAccept() {
    var action = $(this).data("dothis");
    var param0 = $("#Value").val();    
    var param1 = $("#param1").val();    
    hideInput();
    if (param0.length != 0) {
        if (param1.length == 0) {
            window[action](param0);
        } else {
            window[action](param0, param1);
        }
    }    
}

function showInput() {
    $("#InputHeader").html($(this).data("inputheader"));
    $("#Prompt").html($(this).data("prompt"));
    $("#InputLabelText").html($(this).data("labeltext"));
    $("#InputAccept").attr("data-dothis", $(this).data("dothis"));
    $("#InputAccept").attr("data-param1", $(this).data("param1"));
    $("#param1").attr("value", $(this).data("param1"));
    $("#Value").val("");    
    $("#InputShadowBox").fadeIn("slow");
}

function hideInput() {
    $("#InputAccept").attr("data-dothis", "");
    $("#InputAccept").attr("data-param1", "");
    $("#InputShadowBox").fadeOut("fast");
}

function inputCloseButtonClicked() {
    hideInput();
}

function showCityDropDown(event) {
    if ($("#CityList").is(":hidden")) {
        $("#CityList").slideDown("fast");
        $("#CityDropDownArrow").removeClass("DownArrow");
        $("#CityDropDownArrow").addClass("UpArrow");        
    } else {
        hideCityDropDown();
    }    
}

function hideCityDropDown() {        
        $("#CityList").slideUp("fast");
        $("#CityDropDownArrow").removeClass("UpArrow");
        $("#CityDropDownArrow").addClass("DownArrow");
    };    
