var myDataSource = null;
var showDrag = false;
var defaultSortKey = null;
var myDataTable = null;
var texttosearch='';
var textinsearch='';
var textinsearchvalue='';
var search='';
var pag = null;
var History = null;
var fieldsArray = null;
var searchTemp = [];
var bid = null;
var hideID = null;
var columnsSet = false;
var globalsysName = null;
var globalSearchQuery = '';
var CONSTRAINTDIVIDER = '@@@';
var flag=false;
var specialChars = ['@','#',':', ' ', '$','%','^','&','*','(',')','=','-','_','}','{',']','[','>','<','\'','"','.',';','?','/','!','+','\\','|',',','`','~','\n','\r'];


function runReport(reportName,tbid,flag){


    

    var parameters = '';
    var reportNav;
    var bottomNav;
    var reportBody;
    var dynamicConstraints;
    var dynConstraints = '';

    History = YAHOO.util.History;
   

    try{
        window.external.PleaseWaitUp(this);
    }catch(err){
        document.body.style.cursor = 'wait';
    }

    if(Dom.get('constraintVals')){
        dynConstraints = Dom.get('constraintVals').value;

    }else if(Dom.get('constData')){
        dynConstraints = Dom.get('constData').value;
    }
    constraintVals= dynConstraints;

    if (globalsysName){
        if (globalsysName!=reportName){
            

            var searchid = Dom.get('searchtable');
            if (typeof searchid != "undefined") {
                Dom.setStyle(searchid,'display','none');
            }

            dynConstraints='';
            Dom.get('yui-history-field').value = null;
            
            columnsSet = false;
            globalSearchQuery = '';
            texttosearch='';
            textinsearch='';
            textinsearchvalue='';
            search='';

            var newState = "results="+20+"&startIndex="+0+"&sort="+'id'+"&dir="+'asc';


            // Pass the state along to the Browser History Manager
            if (!bid) {
                History.navigate("reportBody",newState);
            }else{

                History.navigate("report_block"+bid,newState);
            }
        }
    }


    globalsysName = reportName;

    var searchquery = '';
    if(search){
        searchquery = "&search="+search+"&query="+texttosearch+"&insearch="+textinsearch+"&insearchindex="+textinsearchvalue;
        globalSearchQuery = searchquery;

    }



    if (typeof tbid != "undefined") {
        bid = tbid;
    }

    if (typeof bid == "undefined" || !bid) {

        Dom.get('editreport').innerHTML = '';
        Dom.setStyle('dynamicConstraints','display','');
        Dom.setStyle('reportBody','display','');
        reportNav = Dom.get('reportNav');
        bottomNav = Dom.get('bottomNav');
        dynamicConstraints = Dom.get('dynamicConstraints');

        reportBody = Dom.get('reportBody');


        if (reportBody){
            reportBody.innerHTML = '';
        }
        if (reportNav){
            reportNav.innerHTML	='';
        }
        if (bottomNav){
            bottomNav.innerHTML ='';
        }

        if (dynamicConstraints){
            dynamicConstraints.innerHTML = '';
        }

    }
    else{
        globalbid = bid;
        reportNav = Dom.get('reportNav'+bid);
        bottomNav = Dom.get('bottomNav'+bid);
        Dom.get("report_block"+bid).innerHTML = '';
    }

    if(bid){
        myDataSource = new YAHOO.util.XHRDataSource('index.php?module=reports&dynamicConstraintsData='+ dynConstraints+ '&func=runreport_xml&pageName=module&bid='+bid+'&blockname=mainreport&reportName='+reportName+ searchquery + '&',{
            responseType:YAHOO.util.DataSource.TYPE_XML
        });
    }
    else{


        myDataSource = new YAHOO.util.XHRDataSource('index.php?module=reports&dynamicConstraintsData='+ dynConstraints+ '&func=runreport_xml&pageName=module&blockname=mainreport&reportName='+reportName+ searchquery + '&',{
            responseType:YAHOO.util.DataSource.TYPE_XML
        });

    }

    myDataSource.subscribe('responseParseEvent',function (args) {
        
        try{
            window.external.PleaseWaitDown(this);
        }catch(err){
            document.body.style.cursor = 'default';
        }
    });


    var formatDrag = function(elCell, oRecord, oColumn, sData) {
     
        if(sData){
            if(oRecord.getData("isDragable")){
                targetEntity = oRecord.getData('targetEntity');

                dateAddr = oRecord.getData("dateAddr");
                refAddr = oRecord.getData("refAddr");
                refInst = oRecord.getData("refInst");

                statusFieldAddr = oRecord.getData("statusFieldAddr")
                newStatus = oRecord.getData("newStatus");
                targetStatus = oRecord.getData("targetStatus");
                targetStatusAddr = oRecord.getData("targetStatusAddr");
                locationAddr = oRecord.getData("locationAddr");
                mode = oRecord.getData("mode");
                cloneFields = oRecord.getData("cloneFields");
                sourceEntity = oRecord.getData("sourceEntity");



                elCell.innerHTML = '<span id=\'dragSpan'+refInst+'\' onMouseDown=\'dragThisEntity(this,'+bid+',event,"'+targetEntity+'","'+dateAddr+'" ,"'+refAddr+'","'+refInst+'" ,"'+ statusFieldAddr+'","'+newStatus+'","'+targetStatus+'","'+targetStatusAddr+'","'+ locationAddr +'","'+mode+'","'+cloneFields+'","'+sourceEntity+'");\'>&diams;&diams;</span><span id=\'hdragSpan'+refInst+ '\' style="display:none">'+oRecord.getData("tooltipstr")+'</span>';


            }
        }
    };

    // Custom parser
    var stringToDate = function(sData) {
        if(sData){

            var returnDate = new Date(sData);

            return returnDate;
        }
    };

    // Custom parser
    var stringToDateTime = function(sData) {
        if(sData){
            var stripsDataArr = sData.split('@');
            var stripsData = stripsDataArr[0]+' '+stripsDataArr[1];
            var returnDate = new Date(stripsData);

            return returnDate;
        }
    };

    var formatDate = function(elCell, oRecord, oColumn, sData) {
        if(sData){
            if (sData instanceof Date) {
                elCell.innerHTML = "<a href='" + oRecord.getData("editurl") + "'>" + (parseInt(sData.getMonth())+1)+"/"+sData.getDate()+"/"+sData.getFullYear() + "</a>";
            }
            else{
                elCell.innerHTML = '';
            }
        }
    };

    var formatDateTime = function(elCell, oRecord, oColumn, sData) {
        if(sData){

            if (sData instanceof Date) {
                var sMonth = parseInt(sData.getMonth())+1;

                var sDay = sData.getDate();

                var sYear = sData.getFullYear();
                var sDateText  = sMonth+'/'+sDay+'/'+sYear;

                var sHour = sData.getHours();

                var sMinute = sData.getMinutes();
                var ampm = 'AM';


                if (sMinute < 10){
                    sMinute = '0'+sMinute;
                }

                if (sHour>12){
                    sHour = sHour - 12;
                    ampm = 'PM';

                }

                if (sHour==0){
                    sHour = 12;
                    ampm = 'AM';
                }

                var sTimeText = sHour+':'+sMinute+' '+ampm;
                if(sTimeText != '12:00 AM'){
                    elCell.innerHTML = "<a href='" + oRecord.getData("editurl") + "'>" + sDateText + ' ' + sTimeText+"</a>";
                }
                else{
                    elCell.innerHTML = "<a href='" + oRecord.getData("editurl") + "'>" + sDateText + "</a>";
                }


            }
        }
    };

    var formatUrl = function(elCell, oRecord, oColumn, sData) {
        var urlString = '';
        var jumpTo = '';

        if(sData){
           
            if((typeof sData == 'string') && (sData.indexOf('class="openLocal"')) != -1){
                // We only want to show the openLocal link if the cpuid matches.
                try{
                    var CPUID = window.external.getClientCPUID();
                    if(CPUID){
                        var cpuindex = sData.indexOf('cpuid="');
                        if(cpuindex){
                            var cpustring = sData.substring(cpuindex+7);
                            var quoteIndex = cpustring.indexOf('"');
                            var cpuid = cpustring.substring(0,quoteIndex);
                            if(cpuid != CPUID){
                                sData = '';
                                return;
                            }
                        }
                    }
                }
                catch(err){
                   SData = '';
                   return;
                }
            }
            if(oRecord.getData('editurl')){
                urlString = oRecord.getData('editurl');
                elCell.innerHTML = "<a href='" + urlString + "'>" + sData + "</a>";
            }
            else{
                elCell.innerHTML = sData;
            }
        }
        else{
            if(oRecord.getData('na') == 'NA'){
                urlString = oRecord.getData('editurl');
                elCell.innerHTML = "<a href='" + urlString + "'>" + 'NA' + "</a>";
                oRecord.setData('na','');
            }
        }
    };

    myDataSource.doBeforeParseData = function  (oRequest, oFullResponse) {
       
        if (myDataTable.getColumn(0).key == 'Select' && columnsSet==true){
            columnsSet = false;
        }
        if(!columnsSet){
            
            fieldsArray = [];
            fieldsArray[0] = {
                key:'isDragable'
            };

            var headers = oFullResponse.getElementsByTagName('DBHeader');
           
            

            var footer = oFullResponse.getElementsByTagName('DBFooter');
            if(footer){
                var tfoot = myDataTable.getTbodyEl().parentNode.createTFoot();
                var tr = tfoot.insertRow(-1);

                tr.className = "yui-dt-first yui-dt-last";

                for(k=0;k<footer.length;k++){
                    var th = tr.appendChild(document.createElement('th'));
                    th.className= "yui-dt-first yui-dt-last";
                    if (footer[k].firstChild.nodeValue == 'Totals')
                        th.colSpan = 2;

                    th.id = 'total_'+footer[k].firstChild.nodeValue;
                    th.innerHTML = '<div class="yui-dt-liner">'+footer[k].firstChild.nodeValue+'</div>';
                }
            }
            

            var headerstype = oFullResponse.getElementsByTagName('DBType');
            

            var caption = '';
            if (oFullResponse.getElementsByTagName("Title")[0].childNodes[0])
            {
			
                caption = oFullResponse.getElementsByTagName("Title")[0].childNodes[0].nodeValue;
            }

            if(!bid){
                myDataTable.set('caption',caption);
            }
            
            var entityID = oFullResponse.getElementsByTagName("entityID")[0].childNodes[0].nodeValue;
           

            username = oFullResponse.getElementsByTagName("UserName")[0].childNodes[0].nodeValue;
            showDrag = oFullResponse.getElementsByTagName('isDragable');
            

            if (!bid) {
                reportNav.innerHTML = " <a href='javascript:editReport(\""+reportName+"\");'><img src='/images/report_edit.png' border='0' /> Edit Report</a>| <a href='javascript:deleteReport(\""+reportName+"\");'><img src='/images/report_delete.png' border='0' /> Delete Report</a> |<a href='javascript:addRecord(\""+entityID+"\");'><img src='/images/add.png' border='0' />Add Record</a> |<a href='javascript:deleteSelectedInstances(\""+entityID+"\",\""+reportName+"\");'> <img src='/images/delete.png' border='0' /> Delete Record(s)</a> | <a href='javascript:expandSearch(\""+reportName+"\");'> <img src='/images/search.png' border='0' /> Search</a> | <a href='javascript:printReport(\""+reportName+"\");'> <img src='/images/printer.png' border='0' /> Print</a> | <a href='javascript:exportReportCSV(\""+reportName+"\");'> <img src='/images/report_go.png' border='0' /> Export to CSV</a><br /><span id='recordCount'></span>";
            }
            else{
                reportNav.innerHTML = "<span id='recordCount'></span>  <a href='javascript:addRecord(\""+entityID+"\");'><img src='/images/add.png' border='0' /> Add Record</a> |<a href='javascript:deleteSelectedInstances(\""+entityID+"\",\""+reportName+"\",\""+bid+"\");'><img src='/images/delete.png' border='0' /> Delete Record(s)</a> | <a href='javascript:expandSearch(\""+reportName+"\");'> <img src='/images/search.png' border='0' /> Search</a> | <a href='javascript:printReport(\""+reportName+"\",\""+bid+"\");'> <img src='/images/printer.png' border='0' /> Print</a> | <a href='javascript:exportReportCSV(\""+reportName+"\");'> <img src='/images/report_go.png' border='0' /> Export to CSV</a><div id='searchtable' style='display:none;'><table width='80%' cellspacing='0 cellpadding='5' border='0' align='center' class='search'><tbody><tr><td nowrap='' align='right'><b>Search for</b></td><td><input type='text' name='search_text' id='queryInput' style='width: 120px;' class='txtBox'/></td><td><b>In</b></td><td nowrap=''><div id='basicsearchcolumns_real'><select   id='search_columns' name='search_columns'></select></div></td><td  nowrap=''><a class='button'	onclick='testSearch()'><span id='searchnow'>Search Now</span></a></td><td  nowrap=''><a class='button' onclick='clearFilter()'><span>Clear Filters</span></a></td><td><a style='text_decoration:none;' href='javascript:contractSearch();'>[x]</a></td></tbody></tr></table></div><div class='dynamicConstraints' id='dynamicConstraints"+bid+"'></div>";
            }

           

            try{

                var constraintsNode = oFullResponse.getElementsByTagName('Constraints');
                
                if(typeof constraintsNode != "undefined"){
                    var constraints = constraintsNode[0].childNodes[0].nodeValue;
                  
                    try{
                        if (!bid) {
                            Dom.get('dynamicConstraints').innerHTML = constraints;
                            Dom.setStyle('dynamicConstraints','display','');
                        }
                        else{
                            Dom.get('dynamicConstraints'+bid).innerHTML = constraints;
                            Dom.setStyle('dynamicConstraints'+bid,'display','');
                        }
                    }
                    catch(err){}

                }
            }
            catch(err){
                try{
                    if (!bid) {
                        Dom.get('dynamicConstraints').innerHTML = '';
                        Dom.setStyle('dynamicConstraints','display','none');
                    }
                    else{
                        Dom.get('dynamicConstraints'+bid).innerHTML = '';
                        Dom.setStyle('dynamicConstraints'+bid,'display','none');
                    }
                }
                catch(err){}

            }

            if (!bid) {
                bottomNav.innerHTML = "<input type='hidden' id='constraintVals' value='"+constraintVals+"'/><a href='javascript:onClick=editReport(\""+reportName+"\");'><img src='/images/report_edit.png' border='0' /> Edit Report</a>| <a href='javascript:deleteReport(\""+reportName+"\");'><img src='/images/report_delete.png' border='0' /> Delete Report</a> |<a href='javascript:addRecord(\""+entityID+"\");'> <img src='/images/add.png' border='0' />Add Record</a> |<a href='javascript:deleteSelectedInstances(\""+entityID+"\",\""+reportName+"\");'> <img src='/images/delete.png' border='0' /> Delete Record(s)</a> | <a href='javascript:printReport(\""+reportName+"\");'> <img src='/images/printer.png' border='0' /> Print</a> | <a href='javascript:exportReportCSV(\""+reportName+"\");'> <img src='/images/report_go.png' border='0' /> Export to CSV</a>";

            }
            else{
                bottomNav.innerHTML = "<input type='hidden' id='constraintVals' value='"+constraintVals+"'/><a href='javascript:addRecord(\""+entityID+"\");'> <img src='/images/add.png' border='0' /> Add Record</a> |<a href='javascript:deleteSelectedInstances(\""+entityID+"\",\""+reportName+"\",\""+bid+"\");'> <img src='/images/delete.png' border='0' /> Delete Record(s)</a> | <a href='javascript:expandSearch(\""+reportName+"\");'> <img src='/images/search.png' border='0' /> Search</a> | <a href='javascript:printReport(\""+reportName+"\",\""+bid+"\");'> <img src='/images/printer.png' border='0' /> Print</a> | <a href='javascript:exportReportCSV(\""+reportName+"\");'> <img src='/images/report_go.png' border='0' /> Export to CSV</a>";


            }



            var d ={
                key:'isDragable',
                label:'♦♦',
                formatter:formatDrag,
                sortable:false
            };

            myDataTable.insertColumn(d,0);

            for(i=0;i<headers.length;i++){

                try{
                    var label = ' ';

                    if(!headers[i].firstChild){
                        clean_header = 'Empty';
                        label = 'Empty Column Header';
                    }else{
                        label = headers[i].firstChild.nodeValue;
                        clean_header =  headers[i].firstChild.nodeValue.replace(/ /g,'');
                    }
                    clean_header =  clean_header.replace(/:/g,'');
                    

                    var temp = [];
                    for (sp=0;sp<specialChars.length;sp++){
                        temp=clean_header.split(specialChars[sp]);
                        splen = temp.length;

                        for (spl=1;spl<=splen;spl++){
                            clean_header =  clean_header.replace(specialChars[sp],'');
                        }

                    }

                    if (headerstype[i].firstChild.nodeValue=='date'){
                        fieldsArray[i+1] = {
                            key:clean_header,
                            sortable:true,
                            parser:stringToDate
                        };
                        var d = {
                            key:clean_header,
                            label:label,
                            sortable:true,
                            formatter:formatDate
                        };
                        myDataTable.insertColumn(d,i+1);
                    }else if (headerstype[i].firstChild.nodeValue=='datetime'){
                        fieldsArray[i+1] = {
                            key:clean_header,
                            sortable:true,
                            parser:stringToDateTime
                        };
                        var d = {
                            key:clean_header,
                            label:label,
                            sortable:true,
                            formatter:formatDateTime
                        };
                        myDataTable.insertColumn(d,i+1);
                    }else if (headerstype[i].firstChild.nodeValue=='numeric'){
                        fieldsArray[i+1] = {
                            key:clean_header,
                            sortable:true,
                            parser:"number"
                        };
                        var d = {
                            key:clean_header,
                            label:label,
                            sortable:true,
                            formatter:formatUrl
                        };
                        myDataTable.insertColumn(d,i+1);
                    }else{
                        fieldsArray[i+1] = {
                            key:clean_header
                        };

                        var d = {
                            key:clean_header,
                            locator:clean_header,
                            label:label,
                            sortable:true,
                            formatter:formatUrl
                        };
                        myDataTable.insertColumn(d,i+1);
                    }
                    searchTemp[i]=headers[i].firstChild.nodeValue;
                } catch(err){


                }
            }


            fieldsArray[i+13] = {
                key:'editurl'
            };
            fieldsArray[i+1] = {
                key:'targetEntity'
            };
            fieldsArray[i+2] = {
                key:'sourceEntity'
            };
            fieldsArray[i+3] = {
                key:'dateAddr'
            };
            fieldsArray[i+4] = {
                key:'refAddr'
            };
            fieldsArray[i+5] = {
                key:'refInst'
            };
            fieldsArray[i+6] = {
                key:'statusFieldAddr'
            };
            fieldsArray[i+7] = {
                key:'newStatus'
            };
            fieldsArray[i+8] = {
                key:'targetStatus'
            };
            fieldsArray[i+9] = {
                key:'targetStatusAddr'
            };
            fieldsArray[i+10] = {
                key:'locationAddr'
            };
            fieldsArray[i+11] = {
                key:'mode'
            };
            fieldsArray[i+12] = {
                key:'cloneFields'
            };
            fieldsArray[i+14] = {
                key:'na'
            };
            fieldsArray[i+15] = {
                key:'tooltipstr'
            };

            this.responseSchema = {
                resultNode: "DBData",
                fields: fieldsArray

            };
            // Delete the extra column
            myDataTable.removeColumn(myDataTable.getColumn(headers.length + 1));
            columnsSet = true;
        }

        defaultSortKey = fieldsArray[1];
        try{
            if(showDrag.length==0){
                myDataTable.hideColumn('isDragable');

            }
            else{
                myDataTable.setColumnWidth('isDragable',35);
            }
        }catch(err){
            alert(err);
        }

        
        return oFullResponse;
    }

    myDataSource.onRequestEvent = function(oArgs){
        
        try{
            window.external.PleaseWaitUp(this);
        }catch(err){
            document.body.style.cursor = 'wait';
        }
    };

    myDataSource.subscribe("requestEvent",myDataSource.onRequestEvent);

    myDataSource.doBeforeCallback = function(oRequest, oFullResponse, oParsedResponse) {


        var rlist = oFullResponse.getElementsByTagName('RecordList');
        


        var sortDir = rlist[0].attributes.getNamedItem('dir').value;


        var sortKey = rlist[0].attributes.getNamedItem('sort').value;
        var recordsReturned = rlist[0].attributes.getNamedItem('recordsReturned').value;
        var pageSize =  rlist[0].attributes.getNamedItem('pageSize').value;
        var startIndex =  rlist[0].attributes.getNamedItem('startIndex').value;
        var totalRecords = 0;

        if(rlist[0].getElementsByTagName('TotalRecordsReturned')[0].firstChild){
            totalRecords = rlist[0].getElementsByTagName('TotalRecordsReturned')[0].firstChild.nodeValue;
            if(Dom.get('recordCount')){
                Dom.get('recordCount').innerHTML = 'Total Records: ' + totalRecords + ' ';
            }

        }

        var searchColumn = '';
        var searchTerm = '';

        if(rlist[0].attributes.getNamedItem('searchColumn')){
            searchColumn = rlist[0].attributes.getNamedItem('searchColumn').value;
        }

        if(rlist[0].attributes.getNamedItem('searchTerm')){
            searchTerm = rlist[0].attributes.getNamedItem('searchTerm').value;
        }

        oParsedResponse.meta.totalRecords = parseInt(totalRecords,10);
        oParsedResponse.meta.recordsReturned = parseInt(recordsReturned,10);
        oParsedResponse.meta.sortKey = sortKey;
        oParsedResponse.meta.sortDir = sortDir;
        oParsedResponse.meta.pageSize = pageSize;
        oParsedResponse.meta.startIndex = startIndex;
        oParsedResponse.meta.searchColumn = searchColumn;
        oParsedResponse.meta.searchTerm = searchTerm;


        return oParsedResponse;
    };



    pag = new YAHOO.widget.Paginator({
        rowsPerPage : 20,
        alwaysVisible : false,
        template: YAHOO.widget.Paginator.TEMPLATE_ROWS_PER_PAGE,
        rowsPerPageOptions: [20,50,100]
    });

    // DataTable configurations
    var myConfig = {
        paginator : pag,
        paginated: true,
        initialRequest: 'startIndex=0&results=20&',
        dynamicData : true,
        initialLoad : false
    };

    // Instantiate DataTable

    if (!bid) {

        myDataTable = new YAHOO.widget.DataTable("reportBody",
            [{
                key:"Select",
                label:"Select",
                resizeable:true,
                formatter:"checkbox"
            }
            ],
            myDataSource,
            myConfig);

    }
    else{
        myDataTable = new YAHOO.widget.DataTable("report_block"+bid,
            [{
                key:"Select",
                label:"Select",
                resizeable:true,
                formatter:"checkbox"
            }
            ],
            myDataSource,
            myConfig );

    }


  

    // Show loading message while page is being rendered
    myDataTable.showTableMessage(myDataTable.get("MSG_LOADING"), YAHOO.widget.DataTable.CLASS_LOADING);

    myDataTable.dataRendered = function(oArgs) {
	
        var newdiv = document.createElement('div');
        var divIdName = 'DataTableRendered';
        newdiv.setAttribute('id',divIdName);
		
        document.body.appendChild(newdiv);
       


        return true;
    };

    myDataTable.doBeforeLoadData = function(oRequest, oResponse, oPayload) {

        var meta = oResponse.meta;
        oPayload.totalRecords = meta.totalRecords || 0;



        oPayload.pagination = {
            rowsPerPage: parseInt(meta.pageSize,10),
            recordOffset: parseInt(meta.startIndex,10)
        };


        if(meta.sortKey=='id'){
            var column = myDataTable.getColumn(1);
            meta.sortKey=column.key;
            meta.sortDir = "asc";
        }else{
            var column = myDataTable.getColumn(meta.sortKey);
        }

        oPayload.sortedBy = {
            column: column,
            key: meta.sortKey || 'id',
            dir: (meta.sortDir) ? "yui-dt-" + meta.sortDir : "yui-dt-asc" // Convert from server value to DataTable format

        };

        if(meta.searchTerm && meta.searchColumn){
            if(Dom.getAttribute('search_columns','hidden') == true){
                expandSearch();
            }
            Dom.get('queryInput').value = meta.searchTerm;
            Dom.get('search_columns').selectedIndex = meta.searchColumn;
            search = 'yes';

            var searchquery = "&search="+search+"&query="+texttosearch+"&insearch="+textinsearch+"&insearchindex="+textinsearchvalue;
            globalSearchQuery = searchquery;
        }

        return true;


    }

    
    myDataTable.subscribe("rowMouseoverEvent", myDataTable.onEventHighlightRow);
    myDataTable.subscribe("rowMouseoutEvent", myDataTable.onEventUnhighlightRow);
    myDataTable.subscribe("rowClickEvent", myDataTable.onEventSelectRow);
    myDataTable.subscribe("postRenderEvent",myDataTable.dataRendered);

    // Define a custom function to route sorting through the Browser History Manager
    var handleSorting = function (oColumn) {
        
        try{
            window.external.PleaseWaitUp(this);
        }catch(err){
            document.body.style.cursor = 'wait';
        }

        // Calculate next sort direction for given Column
        var sDir = this.getColumnSortDir(oColumn);



        // The next state will reflect the new sort values
        // while preserving existing pagination rows-per-page
        // As a best practice, a new sort will reset to page 0
        var newState = generateRequest(0, oColumn.key, sDir, this.get("paginator").getRowsPerPage(),globalSearchQuery);


        // Pass the state along to the Browser History Manager
        if (!bid) {
            History.navigate("reportBody", newState);
        }else{

            History.navigate("report_block"+bid, newState);
        }


    };
    myDataTable.sortColumn = handleSorting;


    // Define a custom function to route pagination through the Browser History Manager
    var handlePagination = function(state) {
        // The next state will reflect the new pagination values
        // while preserving existing sort values
        // Note that the sort direction needs to be converted from DataTable format to server value
        try{
            window.external.PleaseWaitUp(this);
        }catch(err){
            document.body.style.cursor = 'wait';
        }
        var sortedBy  = this.get("sortedBy"),
        newState = generateRequest(
            state.recordOffset, sortedBy.key, sortedBy.dir, state.rowsPerPage,globalSearchQuery
            );
        

        // Pass the state along to the Browser History Manager
        if (!bid) {
            History.navigate("reportBody", newState);
        }else{
            History.navigate("report_block"+bid, newState);
        }
    };
    // First we must unhook the built-in mechanism...
    pag.unsubscribe("changeRequest", myDataTable.onPaginatorChangeRequest);
    // ...then we hook up our custom function
    pag.subscribe("changeRequest", handlePagination, myDataTable, true);

    try{
        window.external.PleaseWaitUp(this);
    }catch(err){
        document.body.style.cursor = 'wait';
    }

    // Returns a request string for consumption by the DataSource
    var generateRequest = function(startIndex,sortKey,dir,results,searchquery) {
        
        
        startIndex = startIndex || 0;
        searchquery = searchquery || globalSearchQuery;
        sortKey   = sortKey || "id";
        dir   = (dir) ? dir.substring(7) : "asc"; // Converts from DataTable format "yui-dt-[dir]" to server value "[dir]"
        results   = results || 20;
        return "results="+results+"&startIndex="+startIndex+"&sort="+sortKey+"&dir="+dir + searchquery;
    };


    // Called by Browser History Manager to trigger a new state
    var handleHistoryNavigation = function (request) {

       

 
       
        if(bid){
            var dData = '#report_block'+ bid + '=' + escape(request);
        }
        else{
            var dData = '#reportBody' + '=' + escape(request);
        }
        // Let's put the request in the session so the save and exit buttons will work
        var  parameters = {
            pageName: 'module',
            asynchronous: true,
            func:'save_list_state',
            module:'lms',
            request:dData
        };

        new Ajax.Request('index.php',
        {
            method:'post',
            parameters: parameters,
            onSuccess: function(transport){

            }
        });
        // Sends a new request to the DataSource
        myDataSource.sendRequest(request,{
            success : myDataTable.onDataReturnSetRows,
            failure : myDataTable.onDataReturnSetRows,
            scope : myDataTable,
            argument : {} // Pass in container for population at runtime via doBeforeLoadData
        });
    };

    // Calculate the first request
    if (!bid) {
        var initialRequest = History.getBookmarkedState("reportBody") || // Passed in via URL
        generateRequest(); // Get default values
    }else{
        var initialRequest = History.getBookmarkedState("report_block"+bid) || // Passed in via URL
        generateRequest(); // Get default values
    }

  


    if (!bid) {
        // Register the module
        History.register("reportBody", initialRequest, handleHistoryNavigation);

    }else{
     
        History.register("report_block"+bid, initialRequest, handleHistoryNavigation);
    }


    // Render the first view
    History.onReady(function() {
        // Current state after BHM is initialized is the source of truth for what state to render
        if (!bid) {
            var currentState = History.getCurrentState("reportBody");
        }else{
            var currentState = History.getCurrentState("report_block"+bid);
        }
        handleHistoryNavigation(currentState);
    });

    // Initialize the Browser History Manager.
    YAHOO.util.History.initialize("yui-history-field", "yui-history-iframe");







}

function drawRenderedDiv(){

    
    try{
        window.external.PleaseWaitDown(this);
    }catch(err){
        document.body.style.cursor = 'default';
    }
    YAHOO.util.Event.onContentReady('content', function() {


        var newdiv = document.createElement('div');
        var divIdName = 'DataTableRendered';
        newdiv.setAttribute('id',divIdName);
        document.body.appendChild(newdiv);

        var totalRecords = totalRecordsReturned;
        var totalDiv = Dom.get('recordCount');
        if (totalDiv){
            totalDiv.innerHTML = 'Total Records:' + totalRecords;
        }


    });
}


function formatSearchQuery(bid){
    queryString = '';
    texttosearch  = Dom.get('queryInput').value;
    if(texttosearch){



        textinsearchvalue = Dom.get('search_columns').value;
        arr = Dom.get('search_columns').options;
        textinsearch = arr[textinsearchvalue].text;

        search='yes';

        for (sp=0;sp<specialChars.length;sp++){
            temp=textinsearch.split(specialChars[sp]);
            splen = temp.length;

            for (spl=1;spl<=splen;spl++){
                textinsearch =  textinsearch.replace(specialChars[sp],'');
            }

        }

        queryString =  "&sort="+fieldsArray[0].key+"&search="+search+"&query="+texttosearch+"&insearch="+textinsearch+"&insearchindex="+textinsearchvalue;


    }
    return queryString;

}

function harvestDateRange() {
    element = document.getElementById("drToggle");
    if (!element) return 'N,0,30,T';
    drParamStr = "N";
    if (element.checked) drParamStr = "Y";

    element = document.getElementById("drDateField");
    index = element.selectedIndex;
    drParamStr += ',' + element.options[index].id;
    element = document.getElementById("drInterval");
    drParamStr += ',' + element.value;
    element = document.getElementById("drPeriodP");
    if (element.checked) {
        drParamStr += ',' + element.value;
    } else {
        element = document.getElementById("drPeriodPI");
        if (element.checked) {
            drParamStr += ',' + element.value;
        } else {
            element = document.getElementById("drPeriodF");
            if (element.checked) {
                drParamStr += ',' + element.value;
            }else{
                element = document.getElementById("drPeriodFI");
                if (element.checked) {
                    drParamStr += ',' + element.value;
                }else{
                    element = document.getElementById("drPeriodT");
                    if (element.checked) {
                        drParamStr += ',' + element.value;
                    } else {
                        element = document.getElementById("drPeriodR");
                        if (element.checked) {
                            drParamStr += ',' + element.value;
                        } else {
                            element = document.getElementById("drPeriodM");
                            if (element.checked) {
                                drParamStr += ',' + element.value;
                            } else {
                                drParamStr += ',' + 'X';
                            }
                        }
                    }
                }
            }
        }
    }

    element = document.getElementById('drParams');
    element.value = drParamStr;

    return drParamStr;
}

function RunReportFromMemory(reportSystemName) {

    // Close the edit screen
    CloseEditScreen();

    // Run the report
    runReport(reportSystemName);

}

function SaveReport(reportSystemName){

    var drParams = harvestDateRange();

    var staticConstraints = harvestStaticConstraints();

    var dynamicConstraints = harvestDynamicConstraints();

    try{
        var reportid = Dom.get('reportid').value;
    }catch(err){
        var reportid = 0;
    }

    var setIDRpt = Dom.get('setIDRpt').value;

    var reportDescr = Dom.get('report_descr').value;

    var reportName = Dom.get('report_title').value;

    var reportSystemName = Dom.get('report_system').value;


    var parameters = {
        reportid:reportid,
        setIDRpt: setIDRpt,
        drParams:drParams,
        staticConstraints: staticConstraints,
        dynamicConstraints: dynamicConstraints,
        reportSystemName: reportSystemName,
        reportName:reportName,
        reportDescr:reportDescr,
        pageName: 'module',
        asynchronous: true,
        func:'save',
        module:'reports'
    };

    new Ajax.Request('index.php',
    {
        method:'get',
        parameters: parameters,
        onSuccess: function(transport){
            var response  = transport.responseText || "Error";
            alert('Report Saved');
            window.location.reload(true);
        }
    });



}

function SaveNewReport(){

    var drParams = harvestDateRange();

    try{
        var reportid = Dom.get('reportid').value;
    }
    catch(err){
        var reportid = 0;
    }

    var staticConstraints = harvestStaticConstraints();
    var reportSystemName = Dom.get('report_system').value;
    if(reportSystemName == ''){
        alert('You must give the report a unique system name');
        return;
    }

    var dynamicConstraints = harvestDynamicConstraints();


    var setIDRpt = Dom.get('setIDRpt').value;

    if (setIDRpt == -1) {
        alert('You must pick a summary set');
        return;
    }


    var reportDescr = Dom.get('report_descr').value;


    var reportName = Dom.get('report_title').value;
    if(reportName == ''){
        alert('You must name the report');
        return;
    }


    var parameters = {
        setIDRpt: setIDRpt,
        drParams:drParams,
        staticConstraints: staticConstraints,
        dynamicConstraints: dynamicConstraints,
        reportSystemName: reportSystemName,
        reportName:reportName,
        reportDescr:reportDescr,
        pageName: 'module',
        asynchronous: true,
        func:'save',
        module:'reports'
    };

    new Ajax.Request('index.php',
    {
        method:'get',
        parameters: parameters,
        onSuccess: function(transport){
            var response  = transport.responseText || "Error";
            alert('Report Saved');
            window.location.reload(true);

        }
    });



}

function validateDateRange(vstartDate,vendDate){
    startDate = vstartDate;
    endDate = vendDate;


    if (startDate=='' && endDate=='')
        return true;
    else if(startDate=='' && endDate!=''){
        var currentTime = new Date();
        var month = currentTime.getMonth() + 1;
        month=month+'';
        if (month.length==1){
            month = '0'+month;
        }
        var day = currentTime.getDate();
        day=day+'';
        if (day.length==1){
            day = '0'+day;
        }
        var year = currentTime.getFullYear();
        startDate = month+'/'+day+'/'+year;//currentdate
        document.getElementById('dateStartseed').value=startDate;
        return true;
    }else if(startDate!='' && endDate==''){
        var currentTime = new Date();
        var month = currentTime.getMonth() + 1;
        month=month+'';
        if (month.length==1){
            month = '0'+month;
        }
        var day = currentTime.getDate();
        day=day+'';
        if (day.length==1){
            day = '0'+day;
        }
        var year = currentTime.getFullYear();
        endDate = month+'/'+day+'/'+year;//currentdate
        document.getElementById('dateEndseed').value=endDate;
        return true;
    }

    else{
        var startDateNew = new Date(startDate);
        var endDateNew =  new Date(endDate);
		
        var dayPartStartDate = startDateNew.getDate();
        var monPartStartDate = startDateNew.getMonth() + 1;
        var yearPartStartDate = startDateNew.getFullYear();

        var dayPartEndDate = endDateNew.getDate();
        var monPartEndDate = endDateNew.getMonth() + 1;
        var yearPartEndDate = endDateNew.getFullYear();
		
        if (yearPartEndDate > yearPartStartDate){ //if endYear > startYear
            return true;
        }else if (yearPartEndDate < yearPartStartDate){ //if endYear < startYear
            alert('End date should be greater than Start Date');
            return false;
        }else{ //if endYear == startYear
            if (monPartEndDate > monPartStartDate){ //if endMonth > startMonth
                return true;
            }else if (monPartEndDate < monPartStartDate){ //if endMonth < startMonth
                alert('End date should be greater than Start Date');
                return false;
            }else{ //if endMonth == startMonth
				
                if (dayPartEndDate >= dayPartStartDate){ //if endDay > startDay
                    return true;
                }else if (dayPartEndDate < dayPartStartDate){ //if endDay < startDay
                    alert('End date should be greater than Start Date');
                    return false;
                }
            }
        }

    }
}

function SaveReportFromMemory() {
    harvestDateRange();
    harvestStaticConstraints();
    harvestDynamicConstraints();
    document.reporteditform.submit();
}

function runConstrainedReport(tbid,numConstraints) {

    columnsSet = false;
    search = 'yes';
    

    var runStatus;
    if (document.getElementById('dateStart') && document.getElementById('dateEnd')){
        runStatus = validateDateRange(document.getElementById('dateStart').value,document.getElementById('dateEnd').value);
    }else{
        runStatus = true;
    }

    

   

    if (runStatus){
        var valStr = '';
        constraintVals = harvestDynamicConstraintsValues(tbid);

       
       


        var element = document.getElementById('constraintVals');

        element.value = constraintVals;
        if (typeof tbid == "undefined") {
            bid = null;
        }

        if(bid){
            runReport(globalsysName,bid);
        }
        else{
            runReport(globalsysName);
        }

    }
}

function checkStartDate(){

    if (document.getElementById('dateStart').value=='' || document.getElementById('dateStart').value=='undefined'){
        document.getElementById('dateStartseed').value='';
    }else{
        document.getElementById('dateStartseed').value=document.getElementById('dateStart').value;
    }
}
function checkEndDate(){
    if (document.getElementById('dateEnd').value=='' || document.getElementById('dateEnd').value=='undefined'){
        document.getElementById('dateEndseed').value='';
    }else{
        document.getElementById('dateEndseed').value=document.getElementById('dateEnd').value;
    }
}

function harvestDynamicConstraints() {
    var tbl = document.getElementById('tblGrid3');
    var lastRow = tbl.rows.length;

    constraintStr = '';

    for (i=1;i<lastRow;i++) {
        selFieldsid = 'selcFields_' + i;
        selfilterField = document.getElementById(selFieldsid);
        index = selfilterField.selectedIndex;
        fieldAddr = selfilterField.options[index].id;

        filterOpID = 'selcOpField_' + i;
        filterOpField = document.getElementById(filterOpID);
        filterOpindex = filterOpField.selectedIndex;

        constraintValID = 'constraintCon_' + i;
        constraintValField = document.getElementById(constraintValID);
        constraintValue = constraintValField.checked;
        checkedStr = '';
        if (constraintValue == true) checkedStr = 'checked';

        if (i > 1) constraintStr += CONSTRAINTDIVIDER;

        constraintStr += fieldAddr + ',' + filterOpindex + ',' + checkedStr;

    }

    element = document.getElementById('dynamicConstraints');
    element.value = constraintStr;

    return constraintStr;
}

function harvestDynamicConstraintsValues(bid) {

    var tbl = document.getElementById(bid+'DynConstVals');

    constraintStr = '';
    if (tbl != undefined) {
        var lastRow = tbl.getElementsByTagName('tr')[0].getElementsByTagName('td').length;
        for (i=1;i<lastRow+1;i++) {	// for each Dynamic Constraint
            selFieldsid = bid+'constraint_' + i;
            selfilterField = document.getElementById(selFieldsid);
            if (selfilterField != undefined) {
                CVal = selfilterField.value;
                if (i > 1) constraintStr += CONSTRAINTDIVIDER;
                constraintStr += CVal;
            }
        }

        var element = document.getElementById('dateStartseed');
        if ((element != "undefined") && (element)) {

            if (constraintStr.length > 0) {
                constraintStr += CONSTRAINTDIVIDER;
            }
            constraintStr += element.value;
            element = document.getElementById('dateEndseed');

            constraintStr += CONSTRAINTDIVIDER;
            constraintStr += element.value;
        }
    }

    return constraintStr;
}

function harvestStaticConstraints() {
    var tbl = document.getElementById('tblGrid2');
    var lastRow = tbl.rows.length;

    constraintStr = '';

    for (i=1;i<lastRow;i++) {
        selFieldsid = 'selfFields_' + i;
        selfilterField = document.getElementById(selFieldsid);
        index = selfilterField.selectedIndex;
        fieldAddr = selfilterField.options[index].id;

        filterOpID = 'selfOpField_' + i;
        filterOpField = document.getElementById(filterOpID);
        filterOpindex = filterOpField.selectedIndex;

        constraintValID = 'filCon_' + i;
        constraintValField = document.getElementById(constraintValID);
        constraintValue = constraintValField.value;

        if (i > 1) constraintStr += CONSTRAINTDIVIDER;
        constraintStr += fieldAddr + ',' + filterOpindex + ',' + constraintValue;

    }

    element = document.getElementById('staticConstraints');
    element.value = constraintStr;

    return constraintStr;
}


function expandSearch(reportName){
    var selectbox = Dom.get('search_columns');
    var i;
    for (i=0;i<searchTemp.length;i++){
        var optn = document.createElement("OPTION");

        if (searchTemp[i]!='' && typeof searchTemp[i]!='undefined'){
            optn.text = searchTemp[i];
            optn.value = i;
            optn.label = searchTemp[i];
            selectbox.options.add(optn);
        }
    }

    var searchbox = Dom.get('searchtable');
    Dom.setStyle(searchbox,'display','');
    var queryBox = Dom.get('queryInput');
    queryBox.focus();
}

function contractSearch(){
    var searchid = Dom.get('searchtable');
    globalSearchQuery = '';
    globalReportName = '';

    search='';

    Dom.get('queryInput').value = '';

    Dom.get('search_columns').value = 0;

    if (typeof searchid != "undefined") {
        Dom.setStyle(searchid,'display','none');
    }
    var sortKey  = myDataTable.get("sortedBy").key;
    var sortDir  = myDataTable.get("sortedBy").dir;
    sortDir   = sortDir.substring(7); // Converts from DataTable format "yui-dt-[dir]" to server value "[dir]"
    var rowsPerPage = myDataTable.get("paginator").getRowsPerPage();


    var newState = "results="+rowsPerPage+"&startIndex="+0+"&sort="+sortKey+"&dir="+sortDir;
    

    // Pass the state along to the Browser History Manager
    if (!bid) {
        History.navigate("reportBody",newState);
    }else{
       
        History.navigate("report_block"+bid,newState);
    }


}
function runSearchReportOnEnter(e){
    var key;

    if(window.event)
        key = window.event.keyCode;     //IE
    else
        key = e.which;
		  
    if (key == 13)
    {
        testSearch();
        if(window.event){
            window.event.keyCode = null;     //IE
        }else{
            e = null;
        }
		  
        return false;
    }
}
function testSearch(temp){
   
    texttosearch  = Dom.get('queryInput').value;
    
    textinsearchvalue = Dom.get('search_columns').value;
  
    arr = Dom.get('search_columns').options;
    textinsearch = arr[textinsearchvalue].text;
    search = 'yes';

    searchquery = "&search="+search+"&query="+texttosearch+"&insearch="+textinsearch+"&insearchindex="+textinsearchvalue;
    globalSearchQuery = searchquery;
   

    search='yes';
    var sortKey  = myDataTable.get("sortedBy").key;
    var sortDir  = myDataTable.get("sortedBy").dir;
    sortDir   = sortDir.substring(7); // Converts from DataTable format "yui-dt-[dir]" to server value "[dir]"
    var rowsPerPage = myDataTable.get("paginator").getRowsPerPage();
    
    
    var newState = "results="+rowsPerPage+"&startIndex="+0+"&sort="+sortKey+"&dir="+sortDir + searchquery;
    
    // Pass the state along to the Browser History Manager
    if (!bid) {
        History.navigate("reportBody",newState);
    }else{

        History.navigate("report_block"+bid,newState);
    }

}

function clearFilter(){
    search='no';
    texttosearch='';
    textinsearch='';
    textinsearchvalue='';

    Dom.get('queryInput').value ="";
    Dom.get('search_columns').value="0";

    var sortKey  = myDataTable.get("sortedBy").key;
    var sortDir  = myDataTable.get("sortedBy").dir;
    sortDir   = sortDir.substring(7); // Converts from DataTable format "yui-dt-[dir]" to server value "[dir]"
    var rowsPerPage = myDataTable.get("paginator").getRowsPerPage();


    var newState = "results="+rowsPerPage+"&startIndex="+0+"&sort="+sortKey+"&dir="+sortDir;


    // Pass the state along to the Browser History Manager
    if (!bid) {
        History.navigate("reportBody",newState);
    }else{

        History.navigate("report_block"+bid,newState);
    }
    var queryBox = Dom.get('queryInput');
    queryBox.focus();


}

function deleteReport(reportName){

    var parameters = {
        reportName: reportName,
        pageName: 'module',
        asynchronous: true,
        func:'delete',
        module:'reports'
    };

    var answer = confirm("Are you sure you want to DELETE "+reportName+ "?")

    if(answer){
        new Ajax.Request('index.php',
        {
            method:'get',
            parameters: parameters,
            onSuccess: function(transport){
                var response  = transport.responseText || "Error";
                alert(response);
                window.location.reload(true);
            }
        });

    }
}

function CloseEditScreen(){
    window.location.reload(true);
}

function editReport(reportName){


    var parameters = {
        reportName: reportName,
        pageName: 'module',
        asynchronous: true,
        func:'edit',
        module:'reports'
    };

    new Ajax.Request('index.php',
    {
        method:'get',
        parameters: parameters,
        onSuccess: function(transport){
            var response  = transport.responseText || "Error";

            new Ajax.Updater('editreport', 'index.php',  {
                method: 'get' ,
                parameters:{
                    reportID: response,
                    pageName: 'module',
                    asynchronous: true,
                    func:'loadreport',
                    module:'reportcreator'
                }
            });

            Dom.setStyle('dynamicConstraints','display','none');
            Dom.setStyle('reportBody','display','none');
            Dom.setStyle('editreport','display','');

        }

    });



}

function sortFunc(bid){
  

  
    var sortKey = myDataTable.getState().sortedBy.key;
  
    var sortDir = (myDataTable.getState().sortedBy.dir === YAHOO.widget.DataTable.CLASS_ASC) ?
    "asc" : "desc";
					
    var sortString = "&sort=" + sortKey + "&dir=" + sortDir;
 
    return sortString;
}

function exportReportCSV(reportName){

    tbid = 0;

    if(Dom.get('constraintVals')){
        dynConstraints = Dom.get('constraintVals').value;

    }else if(Dom.get('constData')){
        dynConstraints = Dom.get('constData').value;
    }

    constraintVals= dynConstraints;

    var searchQuery = formatSearchQuery(tbid);
    var sortQuery = sortFunc(tbid);

    var locationURL = 'index.php?module=reports&func=runreport_csv&reportName='+reportName+"&userName="+username+'&dynamicConstraintsData='+dynConstraints+searchQuery+sortQuery,reportName;
   
    window.open(locationURL);
    
    try{
        window.external.PleaseWaitDown(this);
    }catch(err){
        document.body.style.cursor = 'default';
    }



// history.go(-1);

}

function printReport(reportName,bid){
    dynConstraints = '';
    if(Dom.get('constraintVals')){
        dynConstraints = Dom.get('constraintVals').value;

    }else if(Dom.get('constData')){
        dynConstraints = Dom.get('constData').value;
    }
    constraintVals= dynConstraints;



    var searchQuery = formatSearchQuery(bid);

    var sortQuery = sortFunc(bid);


    window.open ("/index.php?module=reports&func=print&reportName="+reportName+"&userName="+username+"&dynamicConstraintsData="+dynConstraints+searchQuery+sortQuery,reportName);

}

function addRecord(entityID){

    var locationURL = '/index.php?module=lms&func=edit&entityID='+entityID;
    window.location = locationURL;

}

function deleteSelectedInstances(entityIDVal,reportName,bid){

    var column = myDataTable.getColumn(1);
    var columnKey = column.key;
    recs = myDataTable.getRecordSet();
    var selectedRecords = myDataTable.getSelectedRows();
    var num_selected = selectedRecords.length;
    var instances = [];
    if(num_selected == 0){
        alert('No Instances Selected');
        return;
    }
    var confirmed = confirm('Are you sure you want to delete ?');
    if(!confirmed) return;
    try{
        window.external.PleaseWaitUp(this);
    }catch(err){
        document.body.style.cursor = 'wait';
    }

    for(var i=0;i<num_selected;i++)
    {
        var instanceidurl = recs.getRecord(selectedRecords[i]).getData('editurl');
        var pos = instanceidurl.search('instance=');
        var posinstanceurl = instanceidurl.substring(pos);

        var pos2 = posinstanceurl.search('=');
        pos2=pos2+1;
        var instanceid = posinstanceurl.substring(pos2);

        instances.push(instanceid);


    }
    var instanceString = Object.toJSON(instances);
    var  parameters = {
        pageName: 'module',
        asynchronous: true,
        func:'delete',
        module:'lms',
        instances:instanceString,
        entityID:entityIDVal
    };
    // Now, send it to the server to delete
    new Ajax.Request('index.php',
    {
        method:'get',
        parameters: parameters,
        onSuccess: function(transport){

            var response = transport.responseText;
            if(response.indexOf('#reportBody') != -1){
                response = response.replace(/&amp;/g,'&');
                location.reload(true);
            }
            if(response.indexOf('#report_block') != -1){
                response = response.replace(/&amp;/g,'&');
                location.reload(true);
            }
        }
    });
}





