﻿function GridView()
{
    this.Filter = new Array(); 
    this.Sort = "";
    this.SortDirection = "ASC";
    this.PageIndex = 1;
    this.PageSize = 25;
    this.Grid = "";
    this.Height = 0;

    this.doSort = GridView_doSort
    this.doPaging = GridView_doPaging
    this.goPage = GridView_goPage
    this.doClear = GridView_doClear
    this.Begin_Search = GridView_Begin_Search
    this.End_Search = GridView_End_Search
    this.Begin_Export = GridView_Begin_Export
    this.createSearchArguments = GridView_CreateSearchArguments
}

//**************************************************
function GridView_doSort(sortExpression){
    if (this.Sort == sortExpression){            
        this.SortDirection = this.SortDirection == "DESC" ? "ASC" : "DESC"
    }else{
        this.SortDirection = "ASC"
    }        
    
    this.Sort = sortExpression        
    this.PageIndex = 1
    
    this.Begin_Search();

}    
//**************************************************
function GridView_doPaging(pageIndex){
    this.PageIndex = pageIndex
    this.Begin_Search()
}
//**************************************************
function GridView_goPage(){
    var mPageControl = document.getElementById(this.Grid + "_GotoPage")
    
    this.PageIndex = new Number(mPageControl.value)
    
    if (!isNaN(this.PageIndex)){        
        this.doPaging(this.PageIndex)
    }
}

//**************************************************
function GridView_Begin_Search(event){
    buildFilters()
    var mValue = new String(this.createSearchArguments())
    DoCallBack(this.Grid + "_LoadData", mValue.toString(), this.End_Search, this)        
    
    var elementResult = document.getElementById(this.Grid + "_result")
    var elementFooter = document.getElementById(this.Grid + "_footer")
    
    var mFooterHeight = 0
    var mResultHeight = new Number(elementResult.style.height.replace("px", ""))
    
    if (elementFooter !== null){
        mFooterHeight = new Number(elementFooter.style.height.replace("px", ""))
    }
    
    this.Height = mResultHeight + mFooterHeight 
    
    elementResult.vAlign = "middle"
    elementResult.align = "center"
    elementResult.display = "none"
    elementResult.innerHTML = "<TABLE height=100% align=center ><TR><TD align=center><IMG src='/library/images/icons/loading.gif'></TD><TD><LABEL><B>Loading, Please Wait...</B></LABEL></TD></TR></TABLE>"
    elementResult.display = ""
    
    
    try{calculateWithGrid()}catch(ex){}
    stopEvent(event)
}
//**************************************************
function GridView_doClear(){
    
    var mValue = new String(this.createSearchArguments())
            
    var elementResult = document.getElementById(this.Grid + "_result")
    var elementFooter = document.getElementById(this.Grid + "_footer")
    
    elementResult.vAlign = "middle"
    elementResult.align = "center"
    elementResult.display = "none"
    elementResult.innerHTML = "<TABLE height=100% align=center ><TR><TD align=center></TD></TR></TABLE>"
    elementResult.display = ""
    
    elementFooter.style.display = "none"
    //elementFooter.innerHTML = "<TABLE height=100% align=center ><TR><TD align=center></TD></TR></TABLE>"
    //GridFooter
    //elementFooter.display = "none"
    
}
//**************************************************
function GridView_End_Search(arg){    

    var context = this.context
    var mData = arg.split(":::")
    setupHtmlGrid(context.Grid, mData[0])
        
    if(mData.length > 1){
        if(mData[1] > 0)
        document.getElementById("divMsgNoRecords").style.display = "none"
        else
        document.getElementById("divMsgNoRecords").style.display = ""
    }    
    var elementResult = document.getElementById(context.Grid + "_result")
    var elementFooter = document.getElementById(context.Grid + "_footer")
    
    var mFooterHeight = 0
    if (elementFooter !== null){
        mFooterHeight = new Number(elementFooter.style.height.replace("px", ""))
    }
    
    var mNewHeight = context.Height - mFooterHeight
    if (mNewHeight > 0){
        
        elementResult.style.height = mNewHeight
    }
    
    rePaintGrid(context.Grid, true)
}
//**************************************************
function GridView_CreateSearchArguments(){
    var mArguments = new String()
    
    mArguments = this.Sort
    mArguments += ":" + this.SortDirection 
    mArguments += ":" + this.Filter.join(";")
    mArguments += ":" + this.PageIndex
    mArguments += ":" + this.PageSize
        
    
    return mArguments
}    

//**************************************************
function GridView_Begin_Export(event){
    buildFilters()
    document.all("export").contentWindow.navigate("search.aspx?export=1&sort=" + mSort + "&sortDirection=" + mSortDirection + "&filters=" + mFilters.join(";"))
    
    stopEvent(event)
}