﻿
var fixtures;
var pageNumber = 0;
var Advent = 102;
var SPI = 100;
var cookieName = "spiState";

function saveState(value) {
    document.cookie = cookieName + "=" + escape(value) + ";";
    return;
}
function retrieveState() {
    var result = document.cookie.match('(^|;) ?' + cookieName + '=([^;]*)(;|$)');
    if (result)
        return (unescape(result[2]));
    else
        return null;
}
function pageSize() {
    switch (BrandId) {
        case Advent:
            return 12;
        case SPI:
            return 4;
    }
}
function leadingZeroes(number) {
    var temp = "0" + number.toString();
    return temp.substr(temp.length - 2);
}
function resizeElements() {
    var marginTopAndBottom = 5;
    var marginLeftAndRight = 15;
    $("#searchAttributes")[0].style.height = ($(window).height() - $("#pageTop").height() - $("#searchControl").height() - marginTopAndBottom).toString() + "px";
    $("#pageContent")[0].style.width = ($(window).width() - $("#pageLeft").width() - marginLeftAndRight).toString() + "px";
    $("#pageRight")[0].style.width = ($(window).width() - $("#pageLeft").width() - marginLeftAndRight).toString() + "px";
    $("#pageRight")[0].style.height = ($(window).height() - $("#pageTop").height() - marginTopAndBottom).toString() + "px";
    $("#pageNavigation")[0].style.width = ($(window).width() - $("#pageLeft").width() - marginLeftAndRight).toString() + "px";
}
function magnify(catalogId, catalogNumber) {
    Boxy.load("ProductPhoto.aspx?catalogId=" + catalogId.toString() + "&size=l", { title: catalogNumber, unloadOnHide: true, x: 120, modal: true });
    return false;
}
function lineDrawing(catalogId, catalogNumber) {
    Boxy.load("LineDrawing.aspx?catalogId=" + catalogId.toString(), { title: catalogNumber, unloadOnHide: true, x: 120, modal: true });
    return false;
}
function ies(catalogId, catalogNumber) {
    Boxy.load("iesData.aspx?catalogId=" + catalogId.toString(), { title: catalogNumber, unloadOnHide: true, x: 120, y: 20, modal: true });
    return false;
}
function displayFixture(catalogId, catalogNumber) {
    window.location = "Fixture.aspx?catalogId=" + catalogId.toString();
    return false;
}
function displayPage(pageNumber) {
    switch (BrandId) {
        case Advent:
            var row;
            var pageLength = pageSize();

            var prefix = "s" + BrandId;
            var resultsContainer = document.getElementById(prefix);
            for (row = 0; row < pageLength; row++) {
                rowNumber = leadingZeroes(row);
                var recordNumber = pageNumber * pageLength + row;
                if (recordNumber < fixtures.FixturesByAttributes.length) {
                    var catalogId = fixtures.FixturesByAttributes[recordNumber].id;
                    var catalogNumber = fixtures.FixturesByAttributes[recordNumber].prefix + fixtures.FixturesByAttributes[recordNumber].catalog;
                    document.getElementById(prefix + "i" + rowNumber).src = "";
                    document.getElementById(prefix + "i" + rowNumber).src = "Photo.aspx?catalogId=" + catalogId + "&size=xs";
                    document.getElementById(prefix + "_" + rowNumber + "m00").innerHTML = catalogNumber;
                    document.getElementById(prefix + "_" + rowNumber + "m00").onclick = (function(id, number) { return function() { return displayFixture(id, number); } })(catalogId, catalogNumber);
                    document.getElementById(prefix + "_" + rowNumber + "m01").onclick = (function(number) { return function() { window.open("http://www.spilighting.com/Apps/Submittals/Submittal.aspx?model=" + number); return false; } })(catalogNumber);
                    document.getElementById(prefix + "_" + rowNumber + "m02").onclick = (function(id, number) { return function() { return lineDrawing(id, number); } })(catalogId, catalogNumber);
                    document.getElementById(prefix + "_" + rowNumber + "m03").onclick = (function(id, number) { return function() { return ies(id, number); } })(catalogId, catalogNumber);
                    document.getElementById(prefix + "_" + rowNumber + "m04").onclick = (function(id, number) { return function() { return magnify(id, number); } })(catalogId, catalogNumber);
                    document.getElementById(prefix + "_" + rowNumber).style.visibility = "visible";
                }
                else {
                    document.getElementById(prefix + "_" + rowNumber).style.visibility = "hidden";
                }
            }
            resultsContainer.style.display = "block";
            break;
        case SPI:
            var row;
            var pageLength = pageSize();

            var prefix = "s" + BrandId;
            var resultsContainer = document.getElementById(prefix);
            for (row = 0; row < pageLength; row++) {
                rowNumber = leadingZeroes(row);
                var recordNumber = pageNumber * pageLength + row;
                if (recordNumber < fixtures.FixturesByAttributes.length) {
                    var catalogId = fixtures.FixturesByAttributes[recordNumber].id;
                    var catalogNumber = fixtures.FixturesByAttributes[recordNumber].prefix + fixtures.FixturesByAttributes[recordNumber].catalog;
                    document.getElementById(prefix + "i" + rowNumber).src = "";
                    document.getElementById(prefix + "i" + rowNumber).src = "Photo.aspx?catalogId=" + catalogId + "&size=xs";
                    document.getElementById(prefix + "f" + rowNumber).src = "Results.aspx?catalogId=" + catalogId;
                    document.getElementById(prefix + "_" + rowNumber + "m00").innerHTML = catalogNumber;
                    document.getElementById(prefix + "_" + rowNumber + "m00").onclick = (function(id, number) { return function() { return displayFixture(id, number); } })(catalogId, catalogNumber);
                    document.getElementById(prefix + "_" + rowNumber + "m01").onclick = (function(number) { return function() { window.open("http://www.spilighting.com/Apps/Submittals/Submittal.aspx?model=" + number); return false; } })(catalogNumber);
                    document.getElementById(prefix + "_" + rowNumber + "m02").onclick = (function(id, number) { return function() { return lineDrawing(id, number); } })(catalogId, catalogNumber);
                    document.getElementById(prefix + "_" + rowNumber + "m03").onclick = (function(id, number) { return function() { return ies(id, number); } })(catalogId, catalogNumber);
                    document.getElementById(prefix + "_" + rowNumber + "m04").onclick = (function(id, number) { return function() { return magnify(id, number); } })(catalogId, catalogNumber);
                    document.getElementById(prefix + "_" + rowNumber).style.visibility = "visible";
                }
                else {
                    document.getElementById(prefix + "_" + rowNumber).style.visibility = "hidden";
                }
            }
            resultsContainer.style.display = "block";
            break;
    }
}
function searchDisplayResults(msg) {
    fixtures = eval(msg);
    pageNumber = 0;
    if (fixtures.FixturesByAttributes.length > 0)
        displayPage(pageNumber)
    else
        new Boxy("#nothingReturned", { title: "Oops", modal: true });
}
function firstPage() {
    pageNumber = 0;
    displayPage(pageNumber);
}
function nextPage() {
    if (fixtures) {
        if (((pageNumber + 1) * pageSize()) < fixtures.FixturesByAttributes.length) {
            pageNumber++;
            displayPage(pageNumber);
        }
    }
    return false;
}
function prevPage() {
    if (pageNumber > 0) {
        pageNumber--;
        displayPage(pageNumber);
    }
    return false;
}
function lastPage() {
    var pageLength = pageSize();
    pageNumber = Math.floor(fixtures.FixturesByAttributes.length / pageLength);
    if ((pageNumber * pageLength) >= fixtures.FixturesByAttributes.length)
        pageNumber--;
    displayPage(pageNumber);
}
function searchDatabase() {
    var pageContent = document.getElementById("pageContent");
    var attributeIds = "";
    $("input[type=checkbox]").each(function() {
        if (this.checked) {
            attributeIds += this.id.substr(1) + ",";
        }
    });
    if (attributeIds.length > 0) {
        $("#ajaxBusy").show();
        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "Database.asmx/GetFixturesByBrandByAttributeIds",
            data: "{'brandId':'" + BrandId.toString() + "','attributeIds':'" + attributeIds.substr(0, attributeIds.length - 1) + "'}",
            dataType: "json",
            success: function(msg) {
                $("#ajaxBusy").hide();
                searchDisplayResults(msg);
            },
            error: function(e) {
                $("#ajaxBusy").hide();
                alert("failed: " + e.statusText);
            }
        });
    }
    else {
        new Boxy("#nothingSelected", { title: "before you search ...", modal:true });
    }
    return false;
}
function searchReset() {
    $("input[type=checkbox]").each(function() {
        this.checked = false;
    });
}
$(document).ready(function() {
    resizeElements();
    var stateData = retrieveState();
    if (stateData != null) {
        var ids = stateData.split(",");
        for (i = 0; i <= ids.length - 2; i++) {
            var checkBox = document.getElementById(ids[i]);
            if (checkBox != null)
                checkBox.checked = true;
        }
        pageNumber = parseInt(ids[ids.length - 1]);
        var attributeIds = "";
        $("input[type=checkbox]").each(function() {
            if (this.checked) {
                attributeIds += this.id.substr(1) + ",";
            }
        });
        if (attributeIds.length > 0) {
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "Database.asmx/GetFixturesByBrandByAttributeIds",
                data: "{'brandId':'" + BrandId.toString() + "','attributeIds':'" + attributeIds.substr(0, attributeIds.length - 1) + "'}",
                dataType: "json",
                success: function(msg) {
                    fixtures = eval(msg);
                    if (fixtures.FixturesByAttributes.length > 0)
                        displayPage(pageNumber);
                },
                error: function(e) {
                    alert("failed: " + e.statusText);
                }
            });
        }
    }
    // searchDatabase();
});
$(window).unload(function() {
    var stateData = "";
    $("input[type=checkbox]").each(function() {
        if (this.checked) {
            stateData += this.id + ",";
        }
    });
    stateData += pageNumber.toString();
    saveState(stateData);
});
$(window).bind('resize', function() {
    resizeElements();
});
