﻿/*
Description: Client-side scripting for the Sunbeam Quick Image site
Author: Paul Carroll
*/

/*****
* Site namespace
*/
var QuickImage = {};

/*****
* Products namespace
*/
QuickImage.Products = {};

QuickImage.Master = (function () {
    return {
        Initialise: function () {
            $("#adminButton").hover(function () {
                $("#adminMenu").toggle();
            });

            $.datepicker.setDefaults({
                dateFormat: "dd/mm/yy"
            });
        }
    };
})();

QuickImage.Products = (function () {
    return {
        Initialise: function () {
            $(".assets li .image").click(function (e) {
                var fullPath = $(e.currentTarget).attr("TheFarm:fullsrc");

                $("#previewHint").hide();

                $("#previewImage").attr("src", fullPath);
                $("#previewImage").show();
            });
        }
    };
})();


QuickImage.ValidateModelNo = (function () {
    if ($("#ModelNo").val() == "") {
        $('#formSubmit').attr('disabled', true);
    }
    else {
        $('#formSubmit').attr('disabled', false);
    }
    $('#ModelNo').blur(function () {
        var model = $("#ModelNo").val(); //Value entered in the text box
        var status = $("#lblstatus"); //DIV object to display the status message
        status.html("Checking....") //While our Thread works, we will show some message to indicate the progress

        if (model != "") {
            //jQuery AJAX Post request
            $.post("/Api/GetProductModel", { productModel: model },
            function (data) {
                if (data == 0) {
                    status.html(model + " is available!");
                    $("#ProductForm").css("display", "block");
                    $('#ModelNo').css("background", "lightgreen");
                    $('#btnAddAsset').css("display", "none");
                    $('#formSubmit').attr("disabled", false);
                }
                else {
                    status.html(model + " is not available!");
                    $("#ProductForm").css("display", "none");
                    $('#ModelNo').css("background", "pink");
                    $('#btnAddAsset').css("display", "block");
                    $('#btnAddAsset').attr("productid", data);
                    $('#formSubmit').attr('disabled', true);
                }
            });
        }
        else {
            status.html(" Invalid ModelNo");
            $("#ProductForm").css("display", "none");
            $('#ModelNo').css("background", "pink");
            $('#btnAddAsset').css("display", "none");
        }
    });
    $('#btnCheck').click(function () {
        var model = $("#ModelNo").val(); //Value entered in the text box
        var status = $("#lblstatus"); //DIV object to display the status message
        status.html("Checking....") //While our Thread works, we will show some message to indicate the progress

        if (model != "") {
            //jQuery AJAX Post request
            $.post("/Api/GetProductModel", { productModel: model },
            function (data) {
                if (data == 0) {
                    status.html(model + " is available!");
                    $("#ProductForm").css("display", "block");
                    $('#ModelNo').css("background", "lightgreen");
                    $('#btnAddAsset').css("display", "none");
                }
                else {
                    status.html(model + " is not available!");
                    $("#ProductForm").css("display", "none");
                    $('#ModelNo').css("background", "pink");
                    $('#btnAddAsset').css("display", "block");
                    $('#btnAddAsset').attr("productid", data);
                }
            });
        }
        else {
            status.html(" Invalid ModelNo");
            $("#ProductForm").css("display", "none");
            $('#ModelNo').css("background", "pink");
            $('#btnAddAsset').css("display", "none");
        }
    });
});

QuickImage.SearchResult = (function () {
    $(".btnDecline").click(function (e) {
        e.preventDefault();
        var $this = $(this);
        var horizontalPadding = 30;
        var verticalPadding = 30;
        $("#container")
            .html("")
            .append('<iframe id="externalSite" class="externalSite" src="' + "/Users/Decline?id=" + $(this).attr("userid") + '" />')
            .dialog({
                title: 'Decline',
                autoOpen: true,
                width: 500,
                height: 450,
                modal: true,
                resizable: true,
                autoResize: true,
                overlay: {
                    opacity: 0.8,
                    background: "black"
                }
            }).width(500 - horizontalPadding).height(450 - verticalPadding).z - index(99999);
    });
});


QuickImage.ProductSearchControl = (function () {
    return {
        Initialise: function () {
            var options = {
                dataType: 'json',
                width: 300,
                autoFill: false,
                parse: function (data) {
                    var rows = [];
                    for (var i = 0; i < data.length; i++) {
                        rows[i] = {
                            data: data[i],
                            value: data[i].id,
                            result: data[i].name
                        };
                    }
                    return rows;
                },
                formatItem: function (row, i, n) {
                    return '<strong>' + row.model + '</strong>' + ': ' + row.name;
                }
            };

            var autocomplete = $("#searchText").autocomplete("/Api/GetProducts", options);

            autocomplete.result(function (event, item) {
                window.location = "/Products/Details/" + item.id;
                return true;
            });
        }
    };
})();

QuickImage.EditAssetDialog = (function () {

    $("#Asset_PublishDate").datepicker({ dateFormat: "dd/mm/yy" });
    $("#Asset_UnpublishDate").datepicker({ dateFormat: "dd/mm/yy" });
    $('#Asset_AssetType').change(function () {
        var type = $('#Asset_AssetType').val();
        var validTypes = "";
        var strallow = "";
        switch (type) {
            case "1":
                validTypes = "Please upload one of the following file types: .jpeg, .jpg, .png, .tiff, .gif";
                break;

            case "2":
                validTypes = "Please upload one of the following file types: .eps, .ai, .jpeg, .tiff";
                break;

            case "3":
                validTypes = "Please upload one of the following file types: .doc, .docx, .pdf";
                break;

        }
        $('#filetypes').html(validTypes);

        var ext = $('#File').val().split('.').pop().toLowerCase();
    });
});

QuickImage.AssetEdit = (function () {
    $(".editbutton").click(function (e) {
        e.preventDefault();
        var $this = $(this);
        var horizontalPadding = 30;
        var verticalPadding = 30;
        $("#container")
            .html("")
            .append('<iframe id="externalSite" class="externalSite" src="' + "/Asset/EditAsset?productId=" + $(this).attr("productid") + "&assetId=" + $(this).attr("assetid") + '" />')
            .dialog({
                title: 'Edit an asset',
                autoOpen: true,
                width: 500,
                height: 450,
                modal: true,
                resizable: true,
                autoResize: true,
                overlay: {
                    opacity: 0.8,
                    background: "black"
                }
            }).width(500 - horizontalPadding).height(450 - verticalPadding).z - index(99999);
    });
});
QuickImage.AssetPreview = (function () {
    $(".assetimage").click(function (e) {
        e.preventDefault();
        var $this = $(this);
        var horizontalPadding = 30;
        var verticalPadding = 30;
        $("#container")
            .html("")
            .append('<iframe id="externalSite" class="externalSite" src="' + "/Asset/Preview?productId=" + $(this).attr("productid") + "&assetId=" + $(this).attr("assetid") + '" />')
            .dialog({
                title:  'Preview an asset',
                autoOpen: true,
                width: 500,
                height: 450,
                modal: true,
                resizable: true,
                autoResize: true,
                overlay: {
                    opacity: 0.8,
                    background: "black"
                }
            }).width(500 - horizontalPadding).height(450 - verticalPadding).z - index(99999);
    });
});
QuickImage.AssetEmails = (function () {
    $(".emailbutton").click(function (e) {
        e.preventDefault();
        var $this = $(this);
        var horizontalPadding = 30;
        var verticalPadding = 30;
        $("#container")
            .html("")
            .append('<iframe id="externalSite" class="externalSite" src="' + "/Asset/EmailAsset?productId=" + $(this).attr("productid") + "&assetId=" + $(this).attr("assetid") + '" />')
            .dialog({
                title:  'Email an asset' ,
                autoOpen: true,
                width: 500,
                height: 450,
                modal: true,
                resizable: true,
                autoResize: true,
                overlay: {
                    opacity: 0.8,
                    background: "black"
                }
            }).width(500 - horizontalPadding).height(450 - verticalPadding).z - index(99999);
    });
});

QuickImage.LightboxEmails = (function () {
    $(".LightboxEmailButton").click(function (e) {
        e.preventDefault();
        var $this = $(this);
        var horizontalPadding = 30;
        var verticalPadding = 30;
        $("#container")
        .html("")
        .append('<iframe id="externalSite" class="externalSite" src="' + "/Lightboxes/Email?id=" + $(this).attr("LightboxId") + '" />')
        .dialog({
            title: 'Email a lightbox' ,
            autoOpen: true,
            width: 500,
            height: 450,
            modal: true,
            resizable: true,
            autoResize: true,
            overlay: {
                opacity: 0.8,
                background: "black"
            }
        }).width(500 - horizontalPadding).height(450 - verticalPadding).z - index(99999);
    });
});

QuickImage.AddAsset = (function () {
    $("#btnAddAsset").click(function (e) {
        e.preventDefault();
        var $this = $(this);
        var horizontalPadding = 30;
        var verticalPadding = 30;
        $("#container")
            .html("")
            .append('<iframe id="externalSite" class="externalSite" src="' + "/Products/AddAsset?id=" + $(this).attr("productid") + '" />')
            .dialog({
                title: 'Add Asset',
                autoOpen: true,
                width: 500,
                height: 450,
                modal: true,
                resizable: true,
                autoResize: true,
                overlay: {
                    opacity: 0.8,
                    background: "black"
                }
            }).width(500 - horizontalPadding).height(450 - verticalPadding).float(left).z - index(99999);
    });
});

QuickImage.Mask = (function () {
    //if close button is clicked
    $('#btncancel').click(function (e) {
        e.preventDefault();
        var container = window.top.$("#container");
        //get overlay api
        var api = container.data("dialog");
        api.close();
    });
    $('#btnclose_refresh').click(function (e) {
        e.preventDefault();
        var container = window.top.$("#container");
        //get overlay api
        var api = container.data("dialog");
        api.close();
        if ($(this).attr("url") == "") {
            window.top.location.reload();
        }
        else {
            window.top.location.href = $(this).attr("url");
        }
    });
});

QuickImage.TagsSearchControl = (function () {
    return {
        Initialise: function () {

            var options = {
                dataType: 'json',
                width: 500,
                autoFill: false,
                multiple: true,
                max : 30,
                multipleSeparator: ",",

                parse: function (data) {
                    var rows = [];
                    for (var i = 0; i < data.length; i++) {
                        rows[i] = {
                            data: data[i],
                            value: data[i].id,
                            result: data[i].name
                        };
                    }
                    return rows;
                },
                formatItem: function (row, i, n) {
                    return row.name;
                }

            };
            var autocomplete = $("#Tags").autocomplete("/Api/GetTags", options);
        }
    };
})();


QuickImage.CompanySearch = (function () {
    return {
        Initialise: function () {
            var options =
            {
                dataType: 'json',
                width: 150,
                autoFill: false,
                parse: function (data) {
                    var rows = [];
                    for (var i = 0; i < data.length; i++) {
                        rows[i] = {
                            data: data[i],
                            value: data[i].id,
                            result: data[i].name
                        };
                    }
                    return rows;
                },
                formatItem: function (row, i, n) {
                    return row.name;
                }
            };

            var autocomplete = $("#Company").autocomplete("/Api/SearchCompanies", options);

        }
    };
})();


/*****
* Description: 
*/
QuickImage.AssetList = (function () {
    return {
        Initialise: function () {
            $(".btnAddToLightbox").click(function (e) {
                var assetId = $(this).attr("assetId");
                var dropdown = $("#lightboxDrop" + assetId);
                var row = dropdown.parents(".row");
                var productId = $(this).attr("productId");
                var lightboxId = dropdown.val();
                var options = {
                    url: "/products/addAssetToLightbox/?assetId=" + assetId + "&lightboxId=" + lightboxId + "&productId=" + productId,
                    dataType: "html",
                    cache: false,
                    success: function (data) {
                        $(".addResult", row).html(data);
                    }
                };
                $.ajax(options);
            });
        }
    };
})();

QuickImage.AssetEditor = (function () {
    return {
        Initialise: function () {

            $("#Asset_PublishDate").datepicker({ dateFormat: "dd/mm/yy" });
            $("#Asset_UnpublishDate").datepicker({ dateFormat: "dd/mm/yy" });
        }
    };
});

/*****
* Description: Holds all functionality for the Products Index page 
*/
QuickImage.Products.IndexPage = (function () {
    return {
        //----
        // Call this function once when the page has loaded to 
        // initalise the page
        Initialise: function () {

            $(".deleteLink").click(function () {
                return confirm("Are you sure you wish to delete this product?");
            });

            $(".toggle .openDetails").click(function (e) {
                var link = $(e.currentTarget);
                var id = link.attr("rel");
                var item = link.parents(".item");
                var descriptive = $(".descriptive", item);

                if (descriptive.length == 0) {
                    var options = {
                        url: "/products/searchDetails/" + id,
                        dataType: "html",
                        cache: false,
                        success: function (data) {
                            item.append(data);
                        }
                    };

                    $.ajax(options);
                }
                else {
                    descriptive.show();
                }

                $(".toggle .openDetails", item).hide();
                $(".toggle .closeDetails", item).show();

                return false;
            });

            $(".toggle .closeDetails").click(function (e) {
                var link = $(e.currentTarget);
                var item = link.parents(".item");
                var descriptive = $(".descriptive", item);

                descriptive.hide();

                $(".toggle .openDetails", item).show();
                $(".toggle .closeDetails", item).hide();

                return false;
            });
        }
    };
})();

