﻿var ObjIndex = 0;

function DGJSPager(PageNumber, PageSize, FeedURL, FormatVarName, FormatValue, PageNumberVarName, PageSizeVarName, ContainerID, ReadyStateHandler, NumberofLinks) {
    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.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 = "<DIV STYLE=\"PADDING-TOP:10px;\" CLASS=\"ThumbnailPager\">";

    DGJSPager.prototype.ObjArray[ObjIndex].RecordCount = TotalRecords;
    DGJSPager.prototype.ObjArray[ObjIndex].NumberOfPages = Math.ceil(TotalRecords / PageSize);

    if (PageNumber == 1) {
        PagerHTML += "<SPAN>&nbsp;&nbsp;";
    }
    else if (PageNumber > 1) {
        PagerHTML += "<A HREF=\"Javascript:void(0);\" CLASS=\"Previous\" OnClick=\"DGJSPager.prototype.ObjArray[" + ObjIndex + "].GetPage(" + (PageNumber - 1).toString() + ")\"><IMG SRC=\"Images/backarrow.gif\" ALIGN=\"absmiddle\" /></A>&nbsp;&nbsp;";
    }

    for (var i = StartPageIndex; i <= EndPageIndex; i++) {

        if (i == PageNumber) {
            PagerHTML += "<A CLASS=\"Selected\">" + i.toString() + "</A>&nbsp;&nbsp;";
        }
        else {
            PagerHTML += "<A HREF=\"Javascript:void(0)\" OnClick=\"DGJSPager.prototype.ObjArray[" + ObjIndex + "].GetPage(" + i.toString() + ");\">" + i.toString() + "</A>&nbsp;&nbsp;";
        }
    }

    if (Math.ceil((TotalRecords / PageSize)) > EndPageIndex) {
        PagerHTML += "<A CLASS=\"Next\" HREF=\"Javascript:void(0);\" OnClick=\"DGJSPager.prototype.ObjArray[" + ObjIndex + "].GetPage(" + (EndPageIndex + 1).toString() + ")\"><IMG SRC=\"Images/nextarrow.gif\" ALIGN=\"absmiddle\" /></A></SPAN>";
    }
    else {
        PagerHTML += "</SPAN>";
    }

    PagerHTML += "</DIV>";

    //HTMLData =  HTMLData + PagerHTML ;

    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>";

    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:250px;\"><TABLE><TR><TD><img style=\"Border:none!important;\" 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();
}