﻿var ObjIndex = 0;

function DGJSPager(PageNumber, PageSize, FeedURL, FormatVarName, FormatValue, PageNumberVarName, PageSizeVarName, ContainerID, ReadyStateHandler, NumberofLinks, PagingContainerID) {
    this.CurrentPageNumber = PageNumber;
    this.CurrentPageSize = PageSize;
    this.CurrentFeedURL = FeedURL;
    this.CurrentFormatVarName = FormatVarName;
    this.CurrentFormatValue = FormatValue;
    this.CurrentPageNumberVarName = PageNumberVarName;
    this.CurrentPageSizeVarName = PageSizeVarName;
    this.ContainerID = ContainerID;
    this.PagingContainerID = (PagingContainerID == null) ? "" : PagingContainerID;
    this.ReadyStateCall = ReadyStateHandler;
    this.RecordCount = 0;
    this.NumberOfPages = 0;
    this.NumberOfPageLinkToDisplayed = (NumberofLinks == null) ? 3 : NumberofLinks;
    DGJSPager.prototype.ObjArray.push(this);

    this.ObjIndex = DGJSPager.prototype.ObjArray.length - 1;
}


DGJSPager.prototype.ObjArray = new Array();
DGJSPager.prototype.GetResponse = function(xUrl, ResponseHandler) {
    var xmlhttp = false;
    /*@cc_on@*/
    /*@if (@_jscript_version >= 5)
    // JScript gives us Conditional compilation, we can cope with old IE versions.
    // and security blocked creation of the objects.
    try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e) {
        try {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (E) {
            xmlhttp = false;
        }
    }
    /*@end@*/

    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
        xmlhttp = new XMLHttpRequest();
    }
    xmlhttp.open("GET", xUrl, true);
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
            ResponseHandler(xmlhttp.responseXML.documentElement, this);
        }
    }
    xmlhttp.send(null)
}


DGJSPager.prototype.HandleResponse = function(DocumentElement, CurObj) {
    var HTMLData = DocumentElement.childNodes[1].childNodes[0].nodeValue;
    var TotalRecords = new Number(DocumentElement.childNodes[2].childNodes[0].nodeValue);
    var PageNumber = new Number(DocumentElement.childNodes[3].childNodes[0].nodeValue);
    var PageSize = new Number(DocumentElement.childNodes[4].childNodes[0].nodeValue);
    var PageVariation = Math.ceil((DGJSPager.prototype.ObjArray[ObjIndex].NumberOfPageLinkToDisplayed - 1) / 2);
    var StartPageIndex = ((PageNumber - PageVariation) > 0) ? PageNumber - PageVariation : 1;
    var EndPageIndex = Math.ceil(((PageNumber + PageVariation) > (TotalRecords / PageSize)) ? (TotalRecords / PageSize) : (PageNumber + PageVariation));

    var PagerHTML = "";

    DGJSPager.prototype.ObjArray[ObjIndex].RecordCount = TotalRecords;
    DGJSPager.prototype.ObjArray[ObjIndex].NumberOfPages = Math.ceil(TotalRecords / PageSize);

    if (DGJSPager.prototype.ObjArray[ObjIndex].RecordCount > DGJSPager.prototype.ObjArray[ObjIndex].CurrentPageSize) {
        PagerHTML = "<DIV STYLE=\"PADDING-TOP:10px;\">";
        if (PageNumber == 1) {
            PagerHTML += "<SPAN>&nbsp;&nbsp;";
        }
        else if (PageNumber > 1) {
            PagerHTML += "<FONT CLASS=\"paging\"><A HREF=\"Javascript:void(0);\" OnClick=\"DGJSPager.prototype.ObjArray[" + ObjIndex + "].GetPage(" + (PageNumber - 1).toString() + ")\">&lt; Prev</A></FONT>&nbsp;&nbsp;";
        }

        for (var i = StartPageIndex; i <= EndPageIndex; i++) {

            if (i == PageNumber) {
                PagerHTML += "<A CLASS=\"paging_active\"><STRONG>" + i.toString() + "</STRONG></A>&nbsp;&nbsp;";
            }
            else {
                PagerHTML += "<A CLASS=\"paging\" HREF=\"Javascript:void(0)\" OnClick=\"DGJSPager.prototype.ObjArray[" + ObjIndex + "].GetPage(" + i.toString() + ");\">" + i.toString() + "</A>&nbsp;&nbsp;";
            }
        }

        if (Math.ceil((TotalRecords / PageSize)) >= (PageNumber + 1)) {
            PagerHTML += "<FONT CLASS=\"paging\"><A HREF=\"Javascript:void(0);\" OnClick=\"DGJSPager.prototype.ObjArray[" + ObjIndex + "].GetPage(" + (PageNumber + 1).toString() + ")\">Next &gt;</A></FONT></SPAN>";
        }
        else {
            PagerHTML += "</SPAN>";
        }

        PagerHTML += "</DIV>";
    }

    if (DGJSPager.prototype.ObjArray[ObjIndex].PagingContainerID == "") {
        document.getElementById(DGJSPager.prototype.ObjArray[ObjIndex].ContainerID).innerHTML = "<DIV id=\"DivContainer\"><TABLE ALIGN=\"CENTER\" BORDER=\"0\" BORDERCOLOR=\"#e0e0e0\" CELLPADDING=\"2\" CELLSPACING=\"2\" WIDTH=\"100%\">" + HTMLData + "</TABLE>" + PagerHTML + "</DIV>";
    }
    else {
//        document.getElementById(DGJSPager.prototype.ObjArray[ObjIndex].ContainerID).innerHTML = "<DIV id=\"DivContainer\"><TABLE ALIGN=\"CENTER\" BORDER=\"0\" BORDERCOLOR=\"#e0e0e0\" CELLPADDING=\"2\" CELLSPACING=\"2\" WIDTH=\"100%\">" + HTMLData + "</TABLE></DIV>";
        document.getElementById(DGJSPager.prototype.ObjArray[ObjIndex].ContainerID).innerHTML = HTMLData;
        
        document.getElementById(DGJSPager.prototype.ObjArray[ObjIndex].PagingContainerID).innerHTML = PagerHTML;
    }

    /*@cc_on@*/
    /*@if (@_jscript_version <= 5.6)
    FixImagesForIe6(document.getElementById(DGJSPager.prototype.ObjArray[ObjIndex].ContainerID));
    /*@end@*/

    if (typeof DGJSPager.prototype.ObjArray[ObjIndex].ReadyStateCall == "function") {
        DGJSPager.prototype.ObjArray[ObjIndex].ReadyStateCall();
    }
}

DGJSPager.prototype.FillGridUsingFeed = function(ReadyStateHandler) {
    if (typeof (ReadyStateHandler) == "function")
        this.ReadyStateCall = ReadyStateHandler;

    ObjIndex = this.ObjIndex;
    if (!this.CurrentPageNumber) {
        this.CurrentPageNumber = 1;
    }

    if (!this.CurrentPageSize) {
        this.CurrentPageSize = 5;
    }

    this.GetResponse((((this.CurrentFeedURL).toString().indexOf("?") == -1) ? (this.CurrentFeedURL) + "?" : (this.CurrentFeedURL + "&")) + this.CurrentFormatVarName + "=" + this.CurrentFormatValue + "&" + this.CurrentPageNumberVarName + "=" + this.CurrentPageNumber + "&" + this.CurrentPageSizeVarName + "=" + this.CurrentPageSize, this.HandleResponse);
}

DGJSPager.prototype.GetPage = function(PageNumber) {
    var Div = document.getElementById(this.ContainerID);
    var ProgessDiv = document.createElement("DIV");
    ProgessDiv.id = "DivLoading";
    ProgessDiv.innerHTML = "<DIV STYLE=\"border:Solid 2px #454545; padding:10px; Background-color:White; POSITION:ABSOLUTE; margin-top:-200px; MARGIN-LEFT:400px;\"><TABLE><TR><TD><img src=\"images/loading.gif\" alt=\"Please wait while loading...\" /></TD><TD><b>Loading.....</b></TD></TR></TABLE></DIV>";

    Div.appendChild(ProgessDiv);
    this.CurrentPageNumber = PageNumber;

    this.FillGridUsingFeed();
}