﻿//-----------------------------------------------------------------------
// Copyright (C) Motorwebs Corporation. All rights reserved.
//-----------------------------------------------------------------------

var _sortBy = "";
var _rowStart = 0;
var _pageCount = null;
var _pageCurrent = null;
var _pageSize = 10;
var _elements = "";
var _headerPrevious = null;
var _headerPreviousImage = null;
var _headerPreviousImage1 = null;
var _headerNext = null;
var _headerNextImage = null;
var _headerNextImage1 = null;
var _footerPrevious = null;
var _footerPreviousImage = null;
var _footerPreviousImage1 = null;
var _footerNext = null;
var _footerNextImage = null;
var _footerNextImage1 = null;

function pageLoad() {
    if (location.hash != "") backToBrowse(location.hash);
    Sys.Application.add_navigate(onStateChanged);
    setPaging();    
}

function pageUnload() {
    Sys.Application.remove_navigate(onStateChanged);
}

function onPagingMouseOver() {
    this.className = "BrowsePage-select"
}

function onPagingMouseOut() {
    this.className = "BrowsePage-active"
}

function pagingPrevious() {
    showLoader();
    getCurrentBrowseVars();
    Sys.Application.addHistoryPoint({ s: "pp", dir: "back", sb: _sortBy, rs: _rowStart, pc: _pageCount, pcurr: _pageCurrent, ps: _pageSize, els: _elements });
}

function pagingNext() {
    showLoader();
    getCurrentBrowseVars();
    Sys.Application.addHistoryPoint({ s: "pp", dir: "next", sb: _sortBy, rs: _rowStart, pc: _pageCount, pcurr: _pageCurrent, ps: _pageSize, els: _elements });
}

function onStateChanged(sender, state) {

    var so = state.get_state();

    var s = so.s;
    if (s == undefined) {

        var qs = "";
        var pn = $get('PageName');
        var st = $get('State').value;
        var name = $get('BrowseName').value;

        if (st != "" && name == "") qs = "?s=" + st;
        if (st == "" && name != "") qs = "?brw=" + name;
        if (st != "" && name != "") qs = "?s=" + st + "&brw=" + name;

        if (pn)
            window.location.href = pn.value + qs;
        else
            window.location.href = qs;

        return;
    }

    var request = new Motorwebs.NET35.InventoryDisplay.BrowsePostRequest();
    request.BrowseState = $get('BrowseState').value;
    request.ControlState = $get('ControlState').value;
    request.SortBy = so.sb;
    request.RowStart = so.rs;
    request.PageCount = so.pc;
    request.PageCurrent = so.pcurr;
    request.PageSize = so.ps;
    request.Elements = so.els;

    switch (s) {
        case "fp":
            request.PostingElementName = so.eln;
            request.PostingElementValue = so.elv;
            InventoryDisplay.BrowseEvents(request, onSuccess, onFailure, "FilterPost");
            break;
        case "pp":
            request.PageDirection = so.dir;
            InventoryDisplay.BrowseEvents(request, onSuccess, onFailure, "PagingPost");
            window.scrollTo(0, 0);
            break;
        case "psp":
            request.IsPageSizePost = "true";
            InventoryDisplay.BrowseEvents(request, onSuccess, onFailure, "PageSizePost");
            window.scrollTo(0, 0);
            break;
        case "sbp":
            InventoryDisplay.BrowseEvents(request, onSuccess, onFailure, "SortByPost");
            break;
    }
}

function backToBrowse(hash) {
    hash = hash.substring(1, hash.length)
    var urlArr = hash.split('&');

    var s = "{";
    for (var i = 0; i < urlArr.length; i++) {
        prmArr = urlArr[i].split('=');
        if (i > 0) s += ", ";
        s += prmArr[0] + ":\"" + unescape(prmArr[1]) + "\""
    }
    s += "}";

    var so = eval('(' + s + ')');

    var s = so.s;
    if (s == undefined) {
        var qs = "";
        var st = $get('State').value;
        var name = $get('BrowseName').value;

        if (st != "" && name == "") qs = "?s=" + st;
        if (st == "" && name != "") qs = "?brw=" + name;
        if (st != "" && name != "") qs = "?s=" + st + "&brw=" + name;

        window.location.href = qs;
        return;
    }

    var request = new Motorwebs.NET35.InventoryDisplay.BrowsePostRequest();
    request.BrowseState = $get('BrowseState').value;
    request.ControlState = $get('ControlState').value;
    request.SortBy = so.sb;
    request.RowStart = so.rs;
    request.PageCount = so.pc;
    request.PageCurrent = so.pcurr;
    request.PageSize = so.ps;
    request.Elements = so.els;

    switch (s) {
        case "fp":
            request.PostingElementName = so.eln;
            request.PostingElementValue = so.elv;
            InventoryDisplay.BrowseEvents(request, onSuccess, onFailure, "FilterPost");
            break;
        case "pp":
            request.PageDirection = so.dir;
            InventoryDisplay.BrowseEvents(request, onSuccess, onFailure, "PagingPost");
            window.scrollTo(0, 0);
            break;
        case "psp":
            request.IsPageSizePost = "true";
            InventoryDisplay.BrowseEvents(request, onSuccess, onFailure, "PageSizePost");
            window.scrollTo(0, 0);
            break;
        case "sbp":
            InventoryDisplay.BrowseEvents(request, onSuccess, onFailure, "SortByPost");
            break;
    }
}

function filterPost(elName, elValue) {
    showLoader();
    getCurrentBrowseVars();
    Sys.Application.addHistoryPoint({ s: "fp", eln: elName, elv: elValue, sb: _sortBy, rs: _rowStart, pc: _pageCount, pcurr: _pageCurrent, ps: _pageSize, els: _elements });
}

function pagingPost(direction) {
    showLoader();
    getCurrentBrowseVars();
    Sys.Application.addHistoryPoint({ s: "pp", dir: direction, sb: _sortBy, rs: _rowStart, pc: _pageCount, pcurr: _pageCurrent, ps: _pageSize, els: _elements });
}

function pageSizePost(pageSize) {
    showLoader();
    getCurrentBrowseVars();
    Sys.Application.addHistoryPoint({ s: "psp", ps: pageSize, sb: _sortBy, els: _elements });
}

function sortPost(sortBy) {
    _sortBy = sortBy;
    showLoader();
    getCurrentBrowseVars();
    Sys.Application.addHistoryPoint({ s: "sbp", sb: sortBy, rs: _rowStart, pc: _pageCount, pcurr: _pageCurrent, ps: _pageSize, els: _elements });
}

function varColPost(fieldName) {
    showLoader();
    var request = new Motorwebs.NET35.InventoryDisplay.BrowsePostRequest();
    request.BrowseState = $get('BrowseState').value;
    request.VarCol = fieldName;
    InventoryDisplay.BrowseEvents(request, onSuccess, onFailure, "VarColPost");
}

function onSuccess(response, context, methodName) {
    $get("ContentAJAX").innerHTML = response;
    setPaging();
    hideLoader();
}

function onFailure(error, context, methodName) {
    var msg = "The " + methodName + " method called by " + context + " Failed! - " + error.get_message();
    alert(msg);
    hideLoader();
}

function getCurrentBrowseVars() {
    _rowStart = $get("RowStart").value;
    _pageCount = $get("PageCount").value;
    _pageCurrent = $get("PageCurrent").value;
    _pageSize = $get("PageSize").value;
    _elements = $get("Elements").value;
}

function showLoader() {
    var loader = $get("AjaxLoader");
    if (loader != null) {

        var b = Sys.UI.DomElement.getBounds(loader);

        var cb = getClientBounds();
        var w = cb.width;
        var h = cb.height;

        var x = Math.round(w / 2 - b.width / 2);
        var y = Math.round(h / 2 - b.height / 2);

        Sys.UI.DomElement.setLocation(loader, x, y);
        loader.style.visibility = "visible";
        //Sys.UI.DomElement.setVisible(loader, true);

        //alert("width: " + w + ", height: " + h + ", x: " + x + ", y: " + y);
    }
}

function hideLoader() {
    var loader = $get("AjaxLoader");
    if (loader != null) {
        //Sys.UI.DomElement.setVisible(loader, false)
        loader.style.visibility = "hidden";
    }
}

function getClientBounds() {
    var clientWidth;
    var clientHeight;
    switch (Sys.Browser.agent) {
        case Sys.Browser.InternetExplorer:
            clientWidth = document.body.parentElement.clientWidth;
            clientHeight = document.body.parentElement.clientHeight;
            break;
        case Sys.Browser.Safari:
            clientWidth = window.innerWidth;
            clientHeight = window.innerHeight;
            break;
        case Sys.Browser.Opera:
            clientWidth = Math.min(window.innerWidth, document.body.clientWidth);
            clientHeight = Math.min(window.innerHeight, document.body.clientHeight);
            break;
        default:  // Sys.Browser.Firefox, etc.
            clientWidth = Math.min(window.innerWidth, document.documentElement.clientWidth);
            clientHeight = Math.min(window.innerHeight, document.documentElement.clientHeight);
            break;
    }
    var scrollLeft = (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
    var scrollTop = (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
    return new Sys.UI.Bounds(scrollLeft, scrollTop, clientWidth, clientHeight);
}

function setPaging() {
    hookupPaging();
    
    if (_footerNext) {
        if (_pageCount == 1) {
            DeactivateNextPage();
            return;
        }

        if (_pageCurrent == 1) {
            ActivateNextPage();
            return;
        }

        if (_pageCurrent == _pageCount) {
            ActivatePreviousPage();
            DeactivateNextPage();
        }
        else {
            ActivatePreviousPage();
            ActivateNextPage();
        }
    }
}

function hookupPaging() {
    // footer paging elements
    _footerPrevious = $get("browsePreviousPage-footer");
    if (_footerPrevious) {

        _pageCount = $get("PageCount").value;
        _pageCurrent = $get("PageCurrent").value;
        
        _footerPreviousImage = $get("browsePreviousPageImage-footer");
        _footerPreviousImage1 = $get("browsePreviousPageImage-footer1");
        _footerNext = $get("browseNextPage-footer");
        _footerNextImage = $get("browseNextPageImage-footer");
        _footerNextImage1 = $get("browseNextPageImage-footer1");

        // header paging elements
        _headerPrevious = $get("browsePreviousPage-header");
        if (_headerPrevious) {
            _headerPreviousImage = $get("browsePreviousPageImage-header");
            _headerPreviousImage1 = $get("browsePreviousPageImage-header1");
            _headerNext = $get("browseNextPage-header");
            _headerNextImage = $get("browseNextPageImage-header");
            _headerNextImage1 = $get("browseNextPageImage-header1");
        }
    }
}

function ActivatePreviousPage() {
    // footer text
    $addHandlers(_footerPrevious, { click: this.pagingPrevious }, this);
    $addHandlers(_footerPrevious, { mouseover: this.onPagingMouseOver, mouseout: this.onPagingMouseOut }, _footerPrevious);
    _footerPrevious.className = "BrowsePage-active";

    //footer image
    if (_footerPreviousImage) {
        $addHandlers(_footerPreviousImage, { click: this.pagingPrevious }, this);
        _footerPreviousImage.className = "BrowsePageImage-active";
        _footerPreviousImage1.src = "images/detail/scrollbarArrowLeft.gif";
    }
    
     if (_headerPrevious) {
        // header text
         $addHandlers(_headerPrevious, { click: this.pagingPrevious }, this);
         $addHandlers(_headerPrevious, { mouseover: this.onPagingMouseOver, mouseout: this.onPagingMouseOut }, _headerPrevious);
         _headerPrevious.className = "BrowsePage-active";

         // header image
         if (_headerPreviousImage) {
             $addHandlers(_headerPreviousImage, { click: this.pagingPrevious }, this);
             _headerPreviousImage.className = "BrowsePageImage-active";
             _headerPreviousImage1.src = "images/detail/scrollbarArrowLeft.gif";
         }
     }
}

function ActivateNextPage() {
    // footer text
    $addHandlers(_footerNext, { click: this.pagingNext }, this);
    $addHandlers(_footerNext, { mouseover: this.onPagingMouseOver, mouseout: this.onPagingMouseOut }, _footerNext);
    
    //footer image
    if (_footerNextImage) $addHandlers(_footerNextImage, { click: this.pagingNext }, this);

     if (_headerNext) {
        // header text
         $addHandlers(_headerNext, { click: this.pagingNext }, this);
         $addHandlers(_headerNext, { mouseover: this.onPagingMouseOver, mouseout: this.onPagingMouseOut }, _headerNext);

          // header image
         if (_headerNextImage) $addHandlers(_headerNextImage, { click: this.pagingNext }, this);
     }
 }

function DeactivateNextPage() {
    _footerNext.className = "BrowsePage-inactive";
    if (_footerNextImage) {
        _footerNextImage.className = "BrowsePageImage-inactive";
        _footerNextImage1.src = "images/detail/scrollbarArrowRight_off.gif";
    }
    if (_headerNext) {
        _headerNext.className = "BrowsePage-inactive";
        if (_headerNextImage) {
            _headerNextImage.className = "BrowsePageImage-inactive";
            _headerNextImage1.src = "images/detail/scrollbarArrowRight_off.gif";
        }
    }
}