// JScript File
// Author   : David Goddard, WinWin Solutions Australia Pty Ltd
// Written  : 15 May 2006
// Purpose  : This file contains javascript functions specific to the
//            DMS OnLine system

// Global variables
//var xmlReportTypes = ""         // Holds the list of report types
var xmlReportTypes = createXMLDoc(xmlReportTypes)
var defaultButton = null

//window.onerror = SymError;

function SymError(msg,url,l) {
		txt="arrrh - There was an error on this page.\n\n"
		txt+="Error: " + msg + "\n"
		txt+="URL: " + url + "\n"
		txt+="Line: " + l + "\n\n"

		txt+="Click OK to continue.\n\n"
		alert(txt)
		return true
}

// Generic Event Handlers
document.onkeydown = function(){
// Generic event handler. Captures
// when a user presses a key.
    if(window.event && window.event.keyCode == 13) {
	    // Capture and remap Enter Key
	    if (document.activeElement.type!="textarea") {
	        //alert("default button = " + defaultButton)
	        if (defaultButton!=null) {
	            document.getElementById(defaultButton).onclick()
	        }
	    }
    }
}

function copyrightNotice() {
    // This function is used to update
    // the copyright notice at the bottom of each page
    // so that the current year is displayed.
    // it updates an element named copyright year.
    // Call this on load of the page

    var now = new Date()
	var Year = now.getYear()
	copyrightYear.innerHTML = Year
}

function loadReportTypes() {
    //loads the ReportTypes table into an XML document
    // for use throughout the system.
    oiProcedure = "inet_oi_xml"
    oiParms = "filename=REPORT_TYPES"
    oiParms += "&by_clauses=BY NAME"
    var url = oiBuildURL(oiProcedure,oiParms)
    //alert("url = " + url)
    //oiGetXMLData(url,state_Change_loadReportTypes)
	xmlReportTypes.load(url)
}

function state_Change_loadReportTypes(data,response) {
    // XML data returned from OI
    xmlReportTypes.loadXML(data)
    //alert("report types = " + data)
    // now display the news page
    //lk_home.click()
}

function sidebar_onclick(option) {
        // get all the anchors on the sidebar page
        var cnt = document.anchors.length
        //alert("anchors = " + cnt)
        for (i=0;i<cnt;i++) {
            curranchor = document.anchors[i]
            curranchor.style.backgroundColor = "transparent"
            curranchor.style.color = "blue"
            curranchor.style.fontWeight = "normal"
        }

        option.style.backgroundColor = "#b7e3e6"
        option.style.color = "red"
        option.style.fontWeight = "bold"

        // now process the action
        action = option.id
        switch (action) {
            case "lk_home":
                oiFileName = "NEWS"
                oiPageTitle = ""
                oiListName = "NEWS_HOME_PAGE"
                oiFormName = ""
                oiListFields = "HEADLINE,DATE,STORYBODY_HTML,STORYBODY_LINES"
                oiListTotal = ""
                oiFormFields = ""
                oiByClauses = "BY-DSND DATE"
                oiWithClauses = "WITH ACTIVE = \"Y\" AND WITH DMS = \"Y\""
                oiProcedure = "inet_oi_xml_allcolumns"
                defaultButton = null
                oiPrepareXSLT()
                url = oiBuildURL(oiProcedure,oiParms)
                oiGetXMLData(url,state_Change_body_onload_new)
                break
            case "lk_debt_type":
                oiFileName = "DEBT_TYPE"
                oiPageTitle = ""
                oiListName = ""
                oiFormName = ""
                oiListFields = "TYPE,DESCRIPTION"
                oiListTotal = ""
                oiFormFields = ""
                oiByClauses = "BY DESCRIPTION"
                oiWithClauses = ""
                oiProcedure = "inet_oi_xml_allcolumns"
                defaultButton = null
                oiPrepareXSLT()
                url = oiBuildURL(oiProcedure,oiParms)
                oiGetXMLData(url,state_Change_body_onload_new)
                break
            case "lk_referrers":
                oiFileName = "REFERRERS"
                oiPageTitle = ""
                oiListName = ""
                oiFormName = ""
                oiListFields = "CODE,DESCRIPTION"
                oiListTotal = ""
                oiFormFields = ""
                oiByClauses = "BY DESCRIPTION"
                oiWithClauses = ""
                oiProcedure = "inet_oi_xml_allcolumns"
                defaultButton = null
                oiPrepareXSLT()
                url = oiBuildURL(oiProcedure,oiParms)
                oiGetXMLData(url,state_Change_body_onload_new)
                break
            case "lk_discount_level":
                oiFileName = "DISCOUNT_LEVELS"
                oiPageTitle = ""
                oiListName = ""
                oiFormName = ""
                oiListFields = "CODE,DESCRIPTION,MARGIN_NORMAL,MARGIN_PRIORITY,MARGIN_FLASH"
                oiListTotal = ""
                oiFormFields = ""
                oiByClauses = "BY-DSND MARGIN_NORMAL"
                oiWithClauses = ""
                oiProcedure = "inet_oi_xml_allcolumns"
                defaultButton = null
                oiPrepareXSLT()
                url = oiBuildURL(oiProcedure,oiParms)
                oiGetXMLData(url,state_Change_body_onload_new)
                break
            case "lk_debt_action":
                oiFileName = "DEBT_ACTION"
                oiPageTitle = ""
                oiListName = ""
                oiFormName = ""
                oiListFields = "CODE,DESCRIPTION"
                oiListTotal = ""
                oiFormFields = ""
                oiByClauses = "BY DESCRIPTION"
                oiWithClauses = ""
                oiProcedure = "inet_oi_xml_allcolumns"
                defaultButton = null
                oiPrepareXSLT()
                url = oiBuildURL(oiProcedure,oiParms)
                oiGetXMLData(url,state_Change_body_onload_new)
                break
            case "lk_pricelist":
                oiFileName = "REPORT_TYPES"
                oiPageTitle = ""
                oiListName = "REPORTS_PRICE_LIST"
                oiFormName = ""
                oiListFields = ""
                oiListTotal = ""
                oiFormFields = ""
                oiByClauses = "BY NAME"
                oiWithClauses = "ACTIVE = \"Y\""
                oiProcedure = "inet_oi_xml"
                defaultButton = null
                oiPrepareXSLT()
                url = oiBuildURL(oiProcedure,oiParms)
                oiGetXMLData(url,state_Change_body_onload_new)
                break
            case "lk_sysnews":
                oiFileName = "NEWS"
                oiPageTitle = ""
                oiListName = ""
                oiFormName = ""
                oiListFields = "ID,HEADLINE,DATE,DMS,WWRN,ACTIVE"
                oiListTotal = ""
                oiFormFields = ""
                oiByClauses = "BY-DSND ID"
                oiWithClauses = ""
                oiProcedure = "inet_oi_xml"
                defaultButton = null
                oiPrepareXSLT()
                url = oiBuildURL(oiProcedure,oiParms)
                oiGetXMLData(url,state_Change_body_onload_new)
                break
            case "lk_quotemaint":
                formSelectTag = "/xsl:stylesheet/xsl:param[@name='myId']"
                oiFileName = "ORDERS"
                oiPageTitle = "Quotes Maintenance"
                oiListName = "QUOTES_MAINT_LIST"
                oiFormName = "QUOTES_TEMPLATE"
                oiListFields = "ORDERNO,DATE,REPORT_TYPE,QUOTE_CONTACTNAME,QUOTE_COMPANYNAME,QUOTE_PHONE,QUOTE_EMAIL"
                oiListTotal = ""
                oiFormFields = ""
                oiByClauses = "BY ORDERNO"
                oiWithClauses = "WITH STATUS = '0'"
                oiProcedure = "inet_oi_xml"
                defaultButton = null
                oiPrepareXSLT()
                url = oiBuildURL(oiProcedure,oiParms)
                oiGetXMLData(url,state_Change_body_onload_new)
                break
            case "lk_usermaint":
                oiFileName = "USERS"
                oiPageTitle = ""
                oiListName = ""
                oiFormName = "USER_MAINT"
                //oiListFields = "FIRSTNAME,LASTNAME,PASSWORD,DMS_DISCOUNT,COMPANY,ACTIVE,DMS_USER,WWRN_USER,PHONE,EMAIL"
				oiListFields = "COMPANY,DMS_DISCOUNT,DISCOUNT_LEVEL,ACTIVE,TAX_CODE,FIRSTNAME,LASTNAME,PASSWORD,EMAIL,PHONE,DMS_USER,WWRN_USER,"
                oiListTotal = ""
                oiFormFields = "USERNAME,ACTIVE,FIRSTNAME,LASTNAME,PASSWORD,PHONE,FAX,EMAIL,COMPANY,TYPE,AUTHORCODE,MEMBER,ADDRESS,COMPANY_CODE,SOURCE,SOURCE_CLIENT,DMS_DISCOUNT,DISCOUNT_LEVEL,TERMS,DMS_CREDITINSURED,DMS_CREDITINSUREDATE,DMS_USER,WWRN_USER,NOTES,TAX_CODE,ABN"
                oiByClauses = "BY COMPANYUC"
                oiWithClauses = ""
                oiProcedure = "inet_oi_xml"
                defaultButton = "pb_search"
                oiPrepareXSLT()
                url = oiBuildURL(oiProcedure,oiParms)
                oiGetXMLData(url,state_Change_body_onload_new)
                break
            case "lk_usertypes":
                oiFileName = "USER_TYPES"
                oiPageTitle = ""
                oiListName = ""
                oiFormName = ""
                oiListFields = "CODE,DESCRIPTION"
                oiListTotal = ""
                oiFormFields = ""
                oiByClauses = "BY DESCRIPTION"
                oiWithClauses = ""
                oiProcedure = "inet_oi_xml"
                defaultButton = null
                oiPrepareXSLT()
                url = oiBuildURL(oiProcedure,oiParms)
                oiGetXMLData(url,state_Change_body_onload_new)
                break
            case "lk_order_status":
                oiFileName = "ORDER_STATUS"
                oiPageTitle = ""
                oiListName = ""
                oiFormName = ""
                oiListFields = "CODE,DESCRIPTION"
                oiListTotal = ""
                oiFormFields = ""
                oiByClauses = "BY CODE"
                oiWithClauses = ""
                oiProcedure = "inet_oi_xml"
                defaultButton = null
                oiPrepareXSLT()
                url = oiBuildURL(oiProcedure,oiParms)
                oiGetXMLData(url,state_Change_body_onload_new)
                break
            case "lk_cnibatches":
                oiFileName = "BATCH"
                oiPageTitle = "CNI Batch Upload Data"
                oiListName = ""
                oiFormName = "NONE"
                oiListFields = "NUM,DATE,TIME,AUTHOR_NAME,USER,TOTAL_ROWS,TOTAL_ERRORS"
                oiListTotal = "TOTAL_ROWS,TOTAL_ERRORS"
                oiFormFields = ""
                oiByClauses = "BY-DSND NUM"
                oiWithClauses = ""
                oiProcedure = "inet_oi_xml_allcolumns"
                defaultButton = "pb_search"
                oiPrepareXSLT()
                url = oiBuildURL(oiProcedure,oiParms)
                oiGetXMLData(url,state_Change_body_onload_new)
                break
            case "lk_reporttypes":
                oiFileName = "REPORT_TYPES"
                oiPageTitle = ""
                oiListName = ""
                oiFormName = ""
                oiListFields = "NAME,CODE,PRICE,DISCOUNT,QUICKLIST,AUSTLIST,INTLIST,CREDITLIST,COLLECTIONLIST,ACTIVE"
                oiListTotal = ""
                oiFormFields = "CODE,NAME,ACTIVE,PRICE,DISCOUNT,QUICKLIST,AUSTLIST,INTLIST,CREDITLIST,COLLECTIONLIST,INDIVIDUALLIST,SPEED_ORDINARY,SPEED_PRIORITY,SPEED_FLASH,DESCRIPTION,ORDER_WIZARD_MSG,FREEWRITE_MSG,TRADEREFERENCE_MSG"
                oiByClauses = "BY NAME"
                oiWithClauses = ""
                oiProcedure = "inet_oi_xml"
                defaultButton = "pb_search"
                oiPrepareXSLT()
                url = oiBuildURL(oiProcedure,oiParms)
                oiGetXMLData(url,state_Change_body_onload_new)
                break
            case "lk_reportsmaint":
                oiFileName = "REPORTS"
                oiPageTitle = "CNI Manual Reports Maintenance"
                oiListName = "INET_TABLE_XSL_LIST_DEFAULT"
                oiFormName = ""
                oiListFields = "SUBJECT,COUNTRY,TYPE,REPORT_DATE,AUTHOR_NAME"
                oiListTotal = ""
                oiFormFields = ""
                oiByClauses = "BY SUBJECTUC BY TYPE BY REPORT_DATE BY-DSND AUTHOR_CODE"
                oiWithClauses = ""
                oiProcedure = "inet_oi_xml_allcolumns"
                defaultButton = "pb_search"
                oiPrepareXSLT()
                url = oiBuildURL(oiProcedure,oiParms)
                //oiGetXMLData(url,state_Change_body_onload_new)

                //var xmlNew = createXMLDoc(xmlNew)
                var text = '<?xml version="1.0" encoding="windows-1252" ?>'
                text += '<rows xmlns:rti="http://www.revelation.com/XMLSchema" rti:noNamespaceSchemaLocation="">'
                text += "\n</rows>"
                //location.hash = ""
                //state_Change_body_onload_new(text,"")
                xmldoc.loadXML(text)
                //alert("here")
                var html = oiXSLTTransform(oiListXSLT,xmldoc)
                //alert("html = " + html.xml)
                datafromoi.innerHTML = html.xml
                //document.getElementById("subject_startwith").focus()
                //subject_startwith.focus()
				var t=setTimeout("document.getElementById('searchtext').focus()",500)
                break
            case "lk_usercnireports":
                oiFileName = "REPORTS"
                oiPageTitle = "CNI Report Search"
                oiListName = "REPORTS_CNI_ORDER_DMSUSER_SEARCH"
                oiFormName = "REPORTS_CNI_ORDER_DMSUSER_FORM"
                oiListFields = "SUBJECT,COUNTRY,TYPE,REPORT_DATE"
                oiListTotal = ""
                oiFormFields = ""
                oiByClauses = "BY SUBJECTUC BY TYPE BY-DSND REPORT_DATE BY-DSND AUTHOR_CODE"
                oiWithClauses = ""
                oiProcedure = "inet_oi_xml"
                defaultButton = "pb_search"
                oiPrepareXSLT()
                url = oiBuildURL(oiProcedure,oiParms)
                //oiGetXMLData(url,state_Change_body_onload_new)

                //var xmlNew = createXMLDoc(xmlNew)
                var text = '<?xml version="1.0" encoding="windows-1252" ?>'
                text += '\n<rows>'
                text += "\n</rows>"

                xmldoc.loadXML(text)
                //alert("here")
                var html = oiXSLTTransform(oiListXSLT,xmldoc,"activeQuery","0")
                //alert("html = " + html.xml)

                datafromoi.innerHTML = html.xml

                document.getElementById("subject_startwith").focus()

		var t=setTimeout("document.getElementById('subject_startwith').focus()",500)

                break
            case "lk_reports":
                oiFileName = "REPORTS"
                oiPageTitle = ""
                oiListName = "REPORTS_CNI_ORDER_ADMIN_SEARCH"
                oiFormName = "REPORTS_CNI_ORDER_ADMIN_FORM"
                oiListFields = "SUBJECT,COUNTRY,TYPE,REPORT_DATE,AUTHOR_NAME"
                oiListTotal = ""
                oiFormFields = "USERNAME,USER_FULLNAME,USER_EMAIL,DATE,REPORT_TYPE,SUBJECT,NEWREPORT,PRICE,AUTHOR_NAME"
                oiByClauses = "BY SUBJECTUC BY TYPE BY-DSND REPORT_DATE BY-DSND AUTHOR_CODE"
                oiWithClauses = ""
                oiProcedure = "inet_oi_xml_allcolumns"
                defaultButton = "pb_search"
                oiPrepareXSLT()
                url = oiBuildURL(oiProcedure,oiParms)
                //oiGetXMLData(url,state_Change_body_onload_new)

                //var xmlNew = createXMLDoc(xmlNew)
                var text = '<?xml version="1.0" encoding="windows-1252" ?>'
                text += '<rows xmlns:rti="http://www.revelation.com/XMLSchema" rti:noNamespaceSchemaLocation="">'
                text += "\n</rows>"
                //location.hash = ""
                //state_Change_body_onload_new(text,"")
                xmldoc.loadXML(text)
                //alert("here")
                var html = oiXSLTTransform(oiListXSLT,xmldoc)
                //alert("html = " + html.xml)
                datafromoi.innerHTML = html.xml
                document.getElementById("subject_startwith").focus()
                subject_startwith.focus()
				var t=setTimeout("document.getElementById('subject_startwith').focus()",500)
                break
            case "lk_correspondents":
                oiFileName = "CORRESPONDENTS"
                oiPageTitle = ""
                oiListName = ""
                oiFormName = ""
                oiListFields = "ID,NAME,COUNTRY_NAME,EMAIL"
                oiListTotal = ""
                oiFormFields = ""
                oiByClauses = "BY NAME"
                oiWithClauses = ""
                oiProcedure = "inet_oi_xml_allcolumns"
                defaultButton = "pb_search"
                oiPrepareXSLT()
                url = oiBuildURL(oiProcedure,oiParms)
                oiGetXMLData(url,state_Change_body_onload_new)
                break
            case "lk_authors":
                oiFileName = "AUTHORS"
                oiPageTitle = ""
                oiListName = ""
                oiFormName = ""
                oiListFields = "CODE,COMPANY,EMAIL"
                oiListTotal = ""
                oiFormFields = "CODE,COMPANY,EMAIL"
                oiByClauses = "BY CODE"
                oiWithClauses = ""
                oiProcedure = "inet_oi_xml"
                defaultButton = null
                oiPrepareXSLT()
                url = oiBuildURL(oiProcedure,oiParms)
                oiGetXMLData(url,state_Change_body_onload_new)
                break
            case "lk_comms":
                oiFileName = "COMMS"
                oiPageTitle = "Comns Maintenance - 'Order' emails sent"
                oiListName = ""
                oiFormName = "COMMS_EMAIL"
                oiListFields = "ID,ERRFLAG,SENT_DATE,SENT_TIME,FROM,TO,ORDER_COUNTRY,ORDERNO,SUBJECT"
                oiListTotal = ""
                oiFormFields = "ID,SENT_DATE,FROM,TO,SUBJECT,MESSAGE"
                oiByClauses = "BY-DSND ID"
                oiWithClauses = "WITH LAST_14_DAYS = 1"
                oiProcedure = "inet_oi_xml_allcolumns"
                defaultButton = "pb_search"
                oiPrepareXSLT()
                url = oiBuildURL(oiProcedure,oiParms)
                oiGetXMLData(url,state_Change_body_onload_new)
                break
            case "lk_countries":
                oiFileName = "COUNTRIES"
                oiPageTitle = ""
                oiListName = ""
                oiFormName = ""
                oiListFields = "CODE,NAME,WWRN,WWCN"
                oiListTotal = ""
                oiFormFields = ""
                oiByClauses = "BY NAME"
                oiWithClauses = ""
                oiProcedure = "inet_oi_xml"
                defaultButton = "pb_search"
                oiPrepareXSLT()
                url = oiBuildURL(oiProcedure,oiParms)
                oiGetXMLData(url,state_Change_body_onload_new)
                break
            case "lk_deliveryspeeds":
                oiFileName = "DELIVERYSPEED"
                oiPageTitle = ""
                oiListName = ""
                oiFormName = ""
                oiListFields = "ID,DESC,RATE"
                oiListTotal = ""
                oiFormFields = ""
                oiByClauses = "BY RATE"
                oiWithClauses = ""
                oiProcedure = "inet_oi_xml"
                defaultButton = null
                oiPrepareXSLT()
                url = oiBuildURL(oiProcedure,oiParms)
                oiGetXMLData(url,state_Change_body_onload_new)
                break
            case "lk_order":
                //listDoc = "xsl/orders_wizard_step1.xsl"
                //listSortTag = "/xsl:stylesheet/xsl:template/html/body/table/tr/td/select/xsl:for-each/xsl:sort"
                // first check that the xmlReportsTypes object is set
                if (xmlReportTypes.selectNodes("//row").length) {
                    // no need to do anything
                } else {
                   //alert("reports not set")
                   oiProcedure = "inet_oi_xml"
                   oiParms = "filename=REPORT_TYPES"
                   oiParms += "&by_clauses=BY NAME"
                   var url = oiBuildURL(oiProcedure,oiParms)
                   xmlReportTypes.load(url)
                }

                formDoc = oiServerURL + "inet_orders_xsl?type="
                formSelectTag = "/xsl:stylesheet/xsl:param[@name='myId']"
                oiFileName = "REPORT_TYPES"
                oiPageTitle = ""
                oiListName = "ORDERS_WIZARD_STEP1"
                oiFormName = ""
                oiListFields = ""
                oiListTotal = ""
                oiFormFields = ""
                oiByClauses = "BY NAME"
                oiWithClauses = "WITH ACTIVE = \"Y\""
                oiProcedure = "inet_oi_xml"

                defaultButton = "pb_next"

                oiPrepareXSLT()
                //oiParms = "cmd=LIST REPORT_TYPES WITH ACTIVE = 1 BY NAME CODE NAME PRICE SPEED_ORDINARY SPEED_PRIORITY SPEED_FLASH VALIDFIELDS DELIVERYFIELDS"
                //url = oiBuildURL(oiProcedure,oiParms)
                //oiGetXMLData(url,state_Change_body_onload_new)


                var html = oiXSLTTransform(oiListXSLT,xmlReportTypes)
                //alert("html = " + html.xml)
                datafromoi.innerHTML = html.xml
                break
            case "lk_ordermaint":
                /*
                // Original Code
                listDoc = "xsl/orders_2_list.xsl"
                listSortTag = "/xsl:stylesheet/xsl:template/html/body/xsl:if/table/xsl:for-each/xsl:sort"

                // Style sheet used for form/data entry & edit
                formDoc = "xsl/orders_wizard_step2.xsl"
                formSelectTag = "/xsl:stylesheet/xsl:param[@name='myId']"

                oiFileName = "ORDERS"
                oiListName = ""
                oiFormName = ""
                oiListFields = "ORDERNO,DATE,REPORT_TYPE,SUBJECT,PRICE"
                oiFormFields = ""
                oiByClauses = "BY-DSND ORDERNO"
                oiWithClauses = ""


                oiProcedure = "inet_oi_xml_orders"
                //var oiParms = "cmd=LIST ORDERS WITH ORDERNO BY ORDERNO AND WITH STATUS = '2' STATUS SUBJECT DATE REPORT_TYPE PRICE USERNAME"
                oiParms = "filename=ORDERS"
                oiParms += "&with_clauses=STATUS = '2'"
                oiParms += "&by_clauses=BY DATE"
                url = oiBuildURL(oiProcedure,oiParms)
                oiGetXMLData(url,state_Change_body_onload)
                */

                //formDoc = "xsl/orders_wizard_step2.xsl"
                formSelectTag = "/xsl:stylesheet/xsl:param[@name='myId']"

                oiFileName = "ORDERS"
                oiPageTitle = ""
                oiListName = "ORDERS_MAINT_LIST"
                oiFormName = ""
                oiListFields = "ORDERNO,DATE,SUBJECTLISTNAME,REPORT_TYPE,USER_COMPANY_NAME,COUNTRY,PRICE"
                oiListTotal = "PRICE"
                oiFormFields = ""
                oiByClauses = "BY-DSND ORDERNO"
                oiWithClauses = "WITH WEBAPP = 'DMS' AND WITH STATUS = '2'"
                oiProcedure = "inet_oi_xml_allcolumns"
                defaultButton = "pb_search"
                oiPrepareXSLT()
                url = oiBuildURL(oiProcedure,oiParms)
                oiGetXMLData(url,state_Change_body_onload_new)

                break
            case "lk_userhistory":
                oiFileName = "ORDERS"
                oiPageTitle = ""
                oiListName = "ORDERS_HISTORY_USERS"
                oiFormName = "NONE"
                oiListFields = "ORDERNO,DATE,REPORT_TYPE,SUBJECTLISTNAME50,COUNTRY,STATUS_DESC,PRICE,INVOICE_NO"
                oiListTotal = "PRICE"
                oiFormFields = ""
                oiByClauses = "BY-DSND ORDERNO"
                oiWithClauses = "WITH WEBAPP = 'DMS'"
                oiProcedure = "inet_oi_xml_allcolumns"

                defaultButton = "pb_search"

                oiPrepareXSLT()
                //url = oiBuildURL(oiProcedure,oiParms)
                //oiGetXMLData(url,state_Change_body_onload_new)

                var xmlNew = createXMLDoc(xmlNew)
                var text = '<?xml version="1.0" encoding="windows-1252" ?>'
                text += '<rows xmlns:rti="http://www.revelation.com/XMLSchema" rti:noNamespaceSchemaLocation="">'
                text += '\n<blankxml></blankxml>'
                text += "\n</rows>"
                xmlNew.loadXML(text)
                //alert("here")
                var html = oiXSLTTransform(oiListXSLT,xmlNew)
                //alert("html = " + html.xml)
                datafromoi.innerHTML = html.xml
                break
            case "lk_cniorderhistory":
                oiFileName = "ORDERS"
                oiPageTitle = ""
                oiListName = "ORDERS_SEARCH_CNI_LIST"
                oiFormName = "NONE"
                oiListFields = "ORDERNO,DATE,USERNAME,AUTHORCOMPANY,REPORT_TYPE,SUBJECT,DELIVERYSPEED,NEWREPORT,PRICE,DMS_WWRN_FEE"
                oiListTotal = "PRICE,DMS_WWRN_FEE"
                oiFormFields = ""
                oiByClauses = "BY-DSND ORDERNO"
                oiWithClauses = "WITH WEBAPP = 'WWRN'"
                oiProcedure = "inet_oi_xml_allcolumns"

                defaultButton = "pb_search"

                oiPrepareXSLT()
                //url = oiBuildURL(oiProcedure,oiParms)
                //oiGetXMLData(url,state_Change_body_onload_new)

                var xmlNew = createXMLDoc(xmlNew)
                var text = '<?xml version="1.0" encoding="windows-1252" ?>'
                text += '<rows xmlns:rti="http://www.revelation.com/XMLSchema" rti:noNamespaceSchemaLocation="">'
                text += "\n</rows>"
                xmlNew.loadXML(text)
                //alert("here")
                var html = oiXSLTTransform(oiListXSLT,xmlNew)
                //alert("html = " + html.xml)
                datafromoi.innerHTML = html.xml
                break
            case "lk_cnipurge":
                oiFileName = "REPORTS"
                oiPageTitle = ""
                oiListName = ""
                oiFormName = "REPORTS_PURGE"
                oiListFields = ""
                oiListTotal = ""
                oiFormFields = "REPORT_DATE"
                oiByClauses = ""
                oiWithClauses = ""
                oiProcedure = "inet_reports_purge"

                defaultButton = "pb_purge"

                oiPrepareXSLT()
                //url = oiBuildURL(oiProcedure,oiParms)
                //oiGetXMLData(url,state_Change_body_onload_new)

                var xmlNew = createXMLDoc(xmlNew)
                var text = '<?xml version="1.0" encoding="windows-1252" ?>'
                text += '<rows xmlns:rti="http://www.revelation.com/XMLSchema" rti:noNamespaceSchemaLocation="">'
                text += "\n</rows>"
                xmlNew.loadXML(text)
                //alert("here")
                var html = oiXSLTTransform(oiFormXSLT,xmlNew)
                //alert("html = " + html.xml)
                datafromoi.innerHTML = html.xml
                break
            default:
                //alert("Menu Item not found")
                break
        }
        // Update the history list
}

function state_Change_body_onload(data,response) {
    // XML data returned from OI
    //alert("state change orig data = " + data)
    xmldoc.loadXML(data)
    oiXMLTransform(listDoc,listSortTag,"/")
}

function state_Change_body_onload_new(data,response) {
    // XML data returned from OI
    //alert("state change new data = " + data)

    // Check for no session
    if (data=="no session") {
        location.load = "default.htm?nosession=1"
        return
    }
    xmldoc.loadXML(data)

    // check for post read processing
    //get the current page
    hash = location.hash
    page = hash.substring(1)
    //alert("page = " + page)
    switch (page) {
        case "lk_home1":
            // this is the home page, preload the report types database.
            // in the background so the user does not notice the delay
            var html = oiXSLTTransform(oiListXSLT,xmldoc)
            // now display the data
            datafromoi.innerHTML = html.xml
            loadReportTypes()
            break
        case "lk_order":
            // Order Wizard
            var html = oiXSLTTransform(oiListXSLT,xmldoc)
            // now display the data
            datafromoi.innerHTML = html.xml
            form_orders.elements[1].focus()
            break
        case "lk_reports":
            // set focus to the search box
            var html = oiXSLTTransform(oiListXSLT,xmldoc,"activeQuery","1")
            datafromoi.innerHTML = html.xml
            document.getElementById("subject_startwith").focus()
            subject_startwith.focus()
            //alert("lk_reports")
            break
        case "lk_usercnireports":
            var html = oiXSLTTransform(oiListXSLT,xmldoc,"activeQuery","1")
            datafromoi.innerHTML = html.xml
            document.getElementById("subject_startwith").focus()
            document.getElementById("subject_startwith").focus()
            //subject_startwith.focus()
            break
        case "lk_userhistory":
            var html = oiXSLTTransform(oiListXSLT,xmldoc)
            datafromoi.innerHTML = html.xml
            break
        case "lk_cniorderhistory":
            var html = oiXSLTTransform(oiListXSLT,xmldoc,"activeQuery","1")
            datafromoi.innerHTML = html.xml
            document.getElementById("subject_startwith").focus()
            document.getElementById("subject_startwith").focus()
            break
        case "lk_ordermaint":
            var html = oiXSLTTransform(oiListXSLT,xmldoc)
            datafromoi.innerHTML = html.xml
            // Set focus to the username control
            document.getElementById("searchtext").focus()
            searchtext.focus()
            //alert("oiWithClauses  = " + oiWithClauses)

            //if (oiWithClauses=="WITH WEBAPP = 'DMS' AND WITH STATUS = '2'") {
            //    //alert("here")
            //    rows = xmldoc.selectNodes("//row")
            //    total = rows.length
            //    //orderno = xmldoc.selectNodes("//row["+row+"]/orderno").text
            //    tabtext = tab_new.innerHTML
            //    tabtext += " [" + total + "]"
            //    tab_new.innerHTML = tabtext
            //}

            break
        default:
            if (oiListName=="REPORTS_PRICE_LIST") {
                //alert("here")
                discount = (100-getCookie("snuserdiscount"))/100
                //alert("userdiscount = " + discount)
                var html = oiXSLTTransform(oiListXSLT,xmldoc,"discount",discount)
            } else if (oiListName=="REPORTS_SEARCH"){
                if (oiWithClauses!="") {
                   var html = oiXSLTTransform(oiListXSLT,xmldoc,"activeQuery","1")
                } else {
                   var html = oiXSLTTransform(oiListXSLT,xmldoc,"activeQuery","0")
                }
            } else {
                 var html = oiXSLTTransform(oiListXSLT,xmldoc)
            }
            //alert("default")
            //alert("html = " + html.xml)
            datafromoi.innerHTML = html.xml
            // Set focus to the username control
            document.getElementById("searchtext").focus()
            //document.getElementById("searchtext").value = "testme"
            //after focus
            searchtext.focus()
            //alert("after focus")
            break
     }

}

function state_Change_body_onload_form(data,response) {
    // XML data returned from OI
    //alert("state change new form data = " + data)
    xmldoc.loadXML(data)
    var html = oiXSLTTransform(oiFormXSLT,xmldoc)
    //alert("html = " + html.xml)
    datafromoi.innerHTML = html.xml

    // check for post read processing
    //get the current page
    hash = location.hash
    page = hash.substring(1)

    switch (page) {
        case "lk_ordermaint":
            // resize the Admin Notes control to display all the notes.
            //value = document.getElementById("order_notes").value
            //alert("notes is " + value)
            break
        case "lk_reports":
            // Set focus to the seart
            document.getElementById("subject_startwith").focus()
            document.getElementById("subject_startwith").focus()
            break
    }
}

function lk_logout_onclick() {
        // The user wants to logout so clear the cookies
        setCookie("username","",1)
		setCookie("type","",1)
		setCookie("fullname","",1)
		setCookie("firstname","",1)
   		setCookie("sessionid","",1)
   		setCookie("email","",1)
   		setCookie("member","",1)
   		setCookie("discount","",1)
}

function changeView(view,withClause,orderno) {
   oiFileName = "ORDERS"
   oiListName = "ORDERS_MAINT_LIST"
   oiFormName = ""
   oiWithClauses = "WITH WEBAPP = 'DMS' AND WITH STATUS = '"+view+"'"
   defaultButton = "pb_search"

   switch (view) {
        case 0:
           oiListName = "QUOTES_MAINT_LIST"
           oiFormName = "QUOTES_TEMPLATE"
           oiListFields = "ORDERNO,DATE,REPORT_TYPE,QUOTE_CONTACTNAME,QUOTE_COMPANYNAME,QUOTE_PHONE,QUOTE_EMAIL"
           oiByClauses = "BY ORDERNO"
        case 2:
            oiListFields = "ORDERNO,DATE,SUBJECTLISTNAME,REPORT_TYPE,USER_COMPANY_NAME,COUNTRY,PRICE"
            oiByClauses += " BY-DSND ORDERNO"
           break
        case 3:
            oiListFields = "ORDERNO,DATE,SUBJECTLISTNAME,PENDING_DUE_DATE,PENDING_SENT_TO,REPORT_TYPE,DELIVERYSPEED,USER_COMPANY_NAME,COUNTRY,PRICE"
            oiByClauses += " BY-DSND ORDERNO"
            break
        case 4:
            oiListFields = "ORDERNO,DATE,SUBJECTLISTNAME,COUNTRY,COMPLETE_DATE,REPORT_TYPE,DELIVERYSPEED,USER_COMPANY_NAME,PRICE"
            oiByClauses += " BY-DSND ORDERNO"
            break
        case 5:
            oiListFields = "EXPORTED_DATE,INVOICE_NO,ORDERNO,COMPLETE_DATE,SUBJECTLISTNAME,REPORT_TYPE,DELIVERYSPEED,PENDING_SENT_TO,USER_COMPANY_NAME,COUNTRY,PRICE"
            oiByClauses += " BY-DSND INVOICE_NO"
            oiListName = "ORDERS_EXPORT_LIST"
            break
        case "SEARCH":
            oiListFields = "ORDERNO,DATE,STATUS_DESC,INVOICE_NO,PENDING_SENT_TO,COMPLETE_DATE,SUBJECTLISTNAME,REPORT_TYPE,DELIVERYSPEED,USER_COMPANY_NAME,COUNTRY,PRICE"
            oiByClauses += " BY-DSND ORDERNO"
            oiListName = "ORDERS_SEARCH_LIST"
            // Change the withClauses for this view
            oiWithClauses = "WITH WEBAPP = 'DMS' "
            break
        case "CORRESPONDENTS":
            oiListFields = "ORDERNO,DATE,INVOICE_NO,PENDING_SENT_TO,COMPLETE_DATE,SUBJECTLISTNAME,REPORT_TYPE,DELIVERYSPEED,USER_COMPANY_NAME,COUNTRY,PRICE"
            oiByClauses = " BY PENDING_SENT_TO"
            oiListName = "ORDERS_CORRESPONDENTS_LIST"
            // Change the withClauses for this view
            oiWithClauses = "WITH WEBAPP = 'DMS' AND WITH STATUS = 5"
            break
        default:
            oiListFields = "ORDERNO,DATE,SUBJECTLISTNAME,REPORT_TYPE,DELIVERYSPEED,USER_COMPANY_NAME,COUNTRY,PRICE"
            oiByClauses += " BY-DSND ORDERNO"
            break
    }

    oiListTotal = "PRICE"
    oiFormFields = ""

    if (withClause) {
        oiWithClauses += " AND " + withClause
    }

    oiProcedure = "inet_oi_xml_allcolumns"

    oiPrepareXSLT()
    url = oiBuildURL(oiProcedure,oiParms)

    if (view=="SEARCH"|view=="5"|view=="CORRESPONDENTS") {
       var xmlNew = createXMLDoc(xmlNew)
       var text = '<?xml version="1.0" encoding="windows-1252" ?>'
       text += '<rows xmlns:rti="http://www.revelation.com/XMLSchema" rti:noNamespaceSchemaLocation="">'
       text += '\n<blankxml></blankxml>'
       text += "\n</rows>"
       xmlNew.loadXML(text)
       //alert("here")
       var html = oiXSLTTransform(oiListXSLT,xmlNew)
       //alert("html = " + html.xml)
       datafromoi.innerHTML = html.xml
       document.getElementById("date").focus()
       document.getElementById("date").focus()
    } else {
        oiGetXMLData(url,state_Change_body_onload_new)
    }

}

function viewOrder(type,orderno) {

    // Original Code
    //alert("here " + type)
    //formDoc = oiServerURL + "inet_orders_xsl/" + getOISession() + "?type=" + type + "&status=2"
    //orderno = xmldoc.selectNodes("//row["+row+"]/orderno").text
    //alert("order no = " +  orderno)
    //activeOrderNo = orderno
    //oiXMLTransform(formDoc,"","","",formSelectTag,"orderno",orderno)


    /* New Stuff */

    oiFormXSLT =  oiServerURL + "inet_orders_xsl/" + getOISession() + "?type=" + type + "&status=2"
    //oiPrepareXSLT()
    //alert("here")
    html = oiXSLTTransform(oiFormXSLT,xmldoc,"myId",orderno)
    datafromoi.innerHTML=html.xml
    activeOrderNo = orderno
    // resize the Admin Notes control to display all the notes.
    value = document.getElementById("order_notes").value
    cols = document.getElementById("order_notes").cols
    delim = String.fromCharCode(10)
    val = value.split(delim)
    rows = val.length
    //alert("rows = " + val.length)
    if (rows>5) {
        //alert("here")
        document.getElementById("order_notes").rows = rows + 2
        //alert("after")
    } else {
        // Check the overall length of the notes. Divide the length by the width
        // of a row and then reset the number of rows if more than 5 is required.
        rows = value.length/cols
        rows = Math.round(rows)
        //alert("length rows = " + rows)
        if (rows>5) {
            document.getElementById("order_notes").rows = rows + 2
        }
    }

	// 071015 DGG Amendment Start
	// if the status is new (2) then search for previous orders for the same subject
	//status = document.getElementById("status").value
	//if (status==2)
	//{
	 //  url =  oiServerURL + "inet_orders_check_history/" + getOISession() + "?"+$('subject').serialize()+oiRefresh()
	//	new Ajax.Request( url , {
	//		method: 'get' ,
	//	   onSuccess: function(transport) {
	//			win = new Window({className: "dialog", width:750, height:400, zIndex:100, title: "Previous Orders for subject " + $('subject').value})
	//			win.getContent().innerHTML = transport.responseText
	//			win.showCenter();
	//			//new Window.confirm(transport.responseText)
	//	   }
	//	})
	//}
}

function orderPending() {
    // Set the order status to pending and re-display

    document.getElementById("status").value = 3
    //var status = xmldoc.selectNodes("//row[orderno='"+activeOrderNo+"']/status").item(0)
    //status.text = 3

    document.getElementById("pending_date").value = defaultDate()
    document.getElementById("pending_user").value = getCookie("snusername")
    var  pendingDue = ""
    if (document.getElementById("deliverydate"))  {
		pendingDue += document.getElementById("deliverydate").value
    }

	// removed because Pending _Due_date is a date field, not a freewrite field.
    //if (document.getElementById("deliverytime"))  {
	//	pendingDue += document.getElementById("deliverytime").value
    //}

   document.getElementById("pending_due_date").value = pendingDue

    updateXMLFromForm("form_orders","orderno="+activeOrderNo)

    var type = xmldoc.selectNodes("//row[orderno='"+activeOrderNo+"']/report_type").item(0).text
    //formDoc = oiServerURL + "inet_orders_xsl/" + getOISession() + "?type=" + type
    //oiXMLTransform(formDoc,"","","",formSelectTag,"orderno",activeOrderNo)

    document.body.style.cursor = "wait"
    oiProcessingMsg("Flagging as pending...Please Wait","oisysmessage")

    viewOrder(type,activeOrderNo)
    //result = oiSendXMLData(writeURL,postWriteRow,0)

    // We use a Syncronous connection here, so pass callBack param
    // as a null.
    result = oiSendXMLData(writeURL,"",0)
    oiProcessingMsg("Order flagged as pending","oisysmessage")
    document.body.style.cursor = "auto"
    rowxml = XMLDocLoad(result)
    pending_sent_to = rowxml.selectNodes("//pending_sent_to").item(0).text
    oldprice = document.getElementById("price").value
    newprice = rowxml.selectNodes("//price").item(0).text

	// reset the price if the old price = 0
     if (oldprice=="0")
     {
		 document.getElementById("price").value = newprice
     }

    //alert("pending sent to = " + pending_sent_to)
    if (pending_sent_to) {
	// Set the pending sent to field
    	document.getElementById("pending_sent_to").value = pending_sent_to
    } else {
	document.getElementById("pb_pending_sent_to").onclick()
    }

    // Move Focus to Pending_Sent_To
    document.getElementById("pending_sent_to").focus()
    document.getElementById("pending_sent_to").focus()
}

function orderClosed() {
    // Set the order status to pending and re-display
    document.getElementById("status").value = 4

    // Update the user and date for the closed status
    document.getElementById("complete_user").value = getCookie("snusername")
    document.getElementById("complete_date").value = defaultDate()
    document.getElementById("complete_time").value = defaultTime()
    username = document.getElementById("username").value
    document.getElementById("complete_sent_to").value = username


    updateXMLFromForm("form_orders","orderno="+activeOrderNo)


    //var type = xmldoc.selectNodes("//row[orderno='"+activeOrderNo+"']/report_type").item(0).text
    //formDoc = oiServerURL + "inet_orders_xsl/" + getOISession() + "?type=" + type
    //oiXMLTransform(formDoc,"","","",formSelectTag,"orderno",activeOrderNo)

    var type = xmldoc.selectNodes("//row[orderno='"+activeOrderNo+"']/report_type").item(0).text
    viewOrder(type,activeOrderNo)
    oiSendXMLData(writeURL,postWriteRow,0)
    document.getElementById("pb_update_footer").focus()
    document.getElementById("pb_update_footer").focus()
}

function orderCancel() {
    // Set the order status to pending and re-display
    var ans = confirm("Do you really wish to cancel this order?")
    if (ans==true) {
        reason = prompt("Please enter the reason for cancelling the order","")
        if (reason!=null) {
            document.getElementById("status").value = 6
            document.getElementById("cancel_date").value = defaultDate()
            document.getElementById("cancel_user").value = getCookie("snusername")
            document.getElementById("cancel_reason").value = reason
            // 070504 DGG Amendment Start
            // Item 273
            ordernotes = document.getElementById("order_notes").value
            ordernotes = ordernotes + "\n" + defaultDate() + " - Order Cancelled - " + reason
            document.getElementById("order_notes").value = ordernotes
            // 070504 DGG Amendment End

            updateXMLFromForm("form_orders","orderno="+activeOrderNo)

            //var type = xmldoc.selectNodes("//row[orderno='"+activeOrderNo+"']/report_type").item(0).text
            //formDoc = oiServerURL + "inet_orders_xsl/" + getOISession() + "?type=" + type
            //oiXMLTransform(formDoc,"","","",formSelectTag,"orderno",activeOrderNo)

            var type = xmldoc.selectNodes("//row[orderno='"+activeOrderNo+"']/report_type").item(0).text
            viewOrder(type,activeOrderNo)

            oiSendXMLData(writeURL,postWriteRow)
       } else {
            alert("Order not cancelled\n\nYou must enter the reason you want to cancel the order")
       }
    }
}

function quoteCancel() {
    // Set the order status to pending and re-display
    var ans = confirm("Do you really wish to cancel this order?")
    if (ans==true) {
        reason = prompt("Please enter the reason for cancelling the order","")
        if (reason!=null) {
            document.getElementById("status").value = 6
            document.getElementById("cancel_date").value = defaultDate()
            document.getElementById("cancel_user").value = getCookie("snusername")
            document.getElementById("cancel_reason").value = reason
            // 070504 DGG Amendment Start
            // Item 273
            ordernotes = document.getElementById("order_notes").value
            ordernotes = ordernotes + "\n" + defaultDate() + " - Order Cancelled - " + reason
            document.getElementById("order_notes").value = ordernotes
            // 070504 DGG Amendment End

            updateXMLFromForm("form_orders","orderno="+activeOrderNo)

            //var type = xmldoc.selectNodes("//row[orderno='"+activeOrderNo+"']/report_type").item(0).text
            //formDoc = oiServerURL + "inet_orders_xsl/" + getOISession() + "?type=" + type
            //oiXMLTransform(formDoc,"","","",formSelectTag,"orderno",activeOrderNo)

            oiSendXMLData(writeURL,postWriteRow)


       } else {
            alert("Order not cancelled\n\nYou must enter the reason you want to cancel the order")
       }
    }
}

function pb_new_order_onclick() {
 //   type = oi_popup("create","REPORT_TYPES","CODE,NAME","BY NAME","CODE")
 //   if (type) {
 //       username = oi_popup("create","USERS","COMPANY,FIRSTNAME,LASTNAME","BY COMPANY","USERNAME")
 //       if (username) {
 //           // Create an order
 //           orderWizStep1(type)
 //       }
 //   }
 lk_order.click()
}

function orderSave(refresh) {
    // Saves the data from the form into the activeXML document and
    // then sends the data back to OI for saving into the database
    //alert("here")
    updateXMLFromForm("form_orders","orderno="+activeOrderNo)
    oiSendXMLData(writeURL,postWriteRow,refresh)
}

function pb_export() {
    // Export the closed orders to MYBO
    //url = oiBuildURL("inet_orders_export_myob","mode=1")
    //oiGetXMLData(url,postExport)

    //var p=window.createPopup()
    //var pbody=p.document.body
    //pbody.style.backgroundColor="yellow"
    //pbody.style.border="solid black 1px"

    // executes the export
    exportorders.click()

    // update the page so the user knows whats going on
    datafromoi.innerHTML ="<h4 valign='middle' align='center'><br />Creating Export File<br /><br />...please wait...<br /><br /><img src='images/waiting_animation.gif' /></h4>"
    datafromoi.style.cursor = "wait"

    //pbody.innerHTML="<p align='center' valign='center' height='100%'>Creating Export file<br/>...please wait...</p>"
    //x = (screen.availHeight/2) - 25
    //y = (screen.availWidth/2) - 150
    //p.show(y,x,300,50,document.body)

    // wait 10 seconds
    var t=setTimeout("datafromoi.style.cursor = 'default'; changeView(5)","10000")

}

function postExport(data,response){
    //alert("post export : " + data)
    //datafromoi.innerHTML = data
    //withClause = "WITH EXPORTED_DATE = '"+ defaultDate() + "' "
    //changeView(5,withClause)
}

function pendSendEmail() {
    // Bring up the send email screen and fill it in with info from the order
    // get the correspondent id
    var correspondent = document.getElementById("pending_sent_to").value
    if (correspondent!="") {
        // we have a valid correspondent, build the email to send.
        // Define an XML document to hold data
        var xmlemail = ""
        xmlemail = createXMLDoc()

        Procedure = "inet_comm_create_correspondent"
        Parms = "ONO=" + activeOrderNo
        Parms += "&CNO=" + correspondent
        Parms += "&UID=" + getCookie("snusername")
		var dueDate = ""
		if (document.getElementById("deliverydate"))
		{
			dueDate += document.getElementById("deliverydate").value
		}

		if (document.getElementById("deliverytime"))
		{
			dueDate += " " + document.getElementById("deliverytime").value
		}

        Parms += "&PDATE=" + dueDate
        var url = oiBuildURL(Procedure,Parms)

        xmlemail.load(url)
        //var toemail = xmlemail.selectSingleNode("//row[0]/email").text
        data = xmlemail.xml
        val = oi_dialog("create","COMMS","FROM,TO,SUBJECT,MESSAGE","","COMMS_EMAIL_SEND_CORRESPONDENT","Send E-Mail request to Correspondent",data,"")
     } else {
        alert("Please select a correspondent first")
     }
}

function userSendEmail() {
    // create an e-mail to send to the user

    // Define an XML document to hold data
    var xmlemail = ""
    xmlemail = createXMLDoc()

    Procedure = "inet_comm_create_client"
    Parms = "ONO=" + activeOrderNo
    Parms += "&UID=" + getCookie("snusername")
    var url = oiBuildURL(Procedure,Parms)

    xmlemail.load(url)
    //var toemail = xmlemail.selectSingleNode("//row[0]/email").text
    data = xmlemail.xml
    val = oi_dialog("create","COMMS","FROM,TO,SUBJECT,MESSAGE","","COMMS_EMAIL_SEND_CLIENT","Send E-Mail request to Client",data,"")
}

function pb_emailForward(id) {
    // create an e-mail to send to the user

    // Define an XML document to hold data
    var xmlemail = ""
    xmlemail = createXMLDoc()

    Procedure = "inet_comm_create_forward"
    Parms = "CNO=" + id
    var url = oiBuildURL(Procedure,Parms)

    xmlemail.load(url)
    data = xmlemail.xml
    val = oi_dialog("create","COMMS","FROM,TO,SUBJECT,MESSAGE","","COMMS_EMAIL_SEND","Forward E-Mail",data,"")
}


function pb_emailForwardOld(id) {
    // Forward an email from the COMM_EMAIL form
    // Creates a new email and calls the send dialog box

    // Define an XML document to hold data
    var xmlemail = ""
    xmlemail = createXMLDoc(xmlemail)

    var subject = "FWD: " + document.getElementById("subject").value
    var message = "\n\n\n\n_______________________________________________"
    message += "\nFrom: reports@dmsgroup.net"
    message += "\nTo: " + document.getElementById("to").value
    message += "\nDate: " + document.getElementById("sent_date").value
    message += "\nSubject: " + document.getElementById("subject").value
    message += "\n\n" + document.getElementById("message").value
    var orderNo = document.getElementById("orderno").value

    text = '<?xml version="1.0" encoding="windows-1252" ?>'
    text += "<comms>"
    text += "\n\t<row ID='NEW'>"
    text += "\n\t\t<from>reports@dmsgroup.net</from>"
    text += "\n\t\t<to>" + document.getElementById("to").value + "</to>"
    text += "\n\t\t<subject>" + subject + "</subject>"
    text += "\n\t\t<message>" + message + "</message>"
    text += "\n\t\t<orderno>" + orderNo + "</orderno>"
    text += "\n\t\t<sent_date>" + defaultDate() + "</sent_date>"
    text += "\n\t</row>"
    text += "\n</comms>"
    data = text

    val = oi_dialog("create","COMMS","FROM,TO,SUBJECT,MESSAGE","","COMMS_EMAIL_SEND","Forward E-Mail",data,"")

}

function orderWizStep1(type,username) {
    // Grab the type of order the user wants and create
    // an empty xml document to hold the order details.
    // Then load the report order form XSL

    //formDoc = oiServerURL + "inet_orders_xsl/" + getOISession() + "?type="
    //formSelectTag = "/xsl:stylesheet/xsl:param[@name='myId']"

    if (type==null) {
        var type = document.getElementById("txt_type").value
    }

    // select the row from the xmldoc for the chosen type
    typerow = xmlReportTypes.selectNodes("//row[code='"+type+"']")

    if (typerow.length==0) {
        alert("Report Code " + type + " not found!\nPlease Choose a report from the list")
        return
    }

    // If this is ADMIN or higher user level then ask for the client UserName
    usertype = getCookie("snusertype")
    if (usertype=="ADMIN"|usertype=="SYSADMIN") {
        returnData = oi_popup("create","USERS","COMPANY,ACTIVE,FIRSTNAME,LASTNAME","BY COMPANY","USERNAME,COMPANY,PHONE,EMAIL,DMS_DISCOUNT")
        //returnData = oi_search("create","USERS","COMPANY,FIRSTNAME,LASTNAME","BY COMPANY","USERNAME,COMPANY,PHONE,EMAIL,DMS_DISCOUNT")
        if (returnData) {
            username = returnData[0]
            company = returnData[1]
            phone = returnData[2]
            email = returnData[3]
            discount = returnData[4]
			// 071211 DGG  amendment start
			// replace and ampersands with &amp; in company names so the order wizard does not break.
            company = company.replace(/&/,"&amp;")
			// 071211 DGG Amendment End
        } else {
            alert("You must select a user from the list\n\nPlease try again")
            // exit out of the order wizard process
            return
       }

    } else {
        username = getCookie("snusername")
        company = getCookie("snusercompany")
        phone = getCookie("snuserphone")
        email = getCookie("snuseremail")
        discount = getCookie("snuserdiscount")
    }

    // Create a new XML document

    text = '<?xml version="1.0" encoding="windows-1252" ?>'
    text += "<orders>"
    text += "\n\t<row ID='NEW'>"
    text += "\n\t\t<status>0</status>"
    text += "\n\t\t<orderno></orderno>"
    text += "\n\t\t<report_type>" + type + "</report_type>"
    //text += "\n\t\t<report_name>" + xmlReportTypes.selectNodes("//row[code='"+type+"']/name").item(0).text + "</report_name>"
    text += "\n\t\t<speed_ordinary>" + xmlReportTypes.selectNodes("//row[code='"+type+"']/speed_ordinary").item(0).text + "</speed_ordinary>"
    text += "\n\t\t<speed_priority>" + xmlReportTypes.selectNodes("//row[code='"+type+"']/speed_priority").item(0).text + "</speed_priority>"
    text += "\n\t\t<speed_flash>" + xmlReportTypes.selectNodes("//row[code='"+type+"']/speed_flash").item(0).text + "</speed_flash>"
    text += "\n\t\t<report_price>" + xmlReportTypes.selectNodes("//row[code='"+type+"']/price").item(0).text + "</report_price>"
    text += "\n\t\t<username>" + username + "</username>"
    text += "\n\t\t<create_user>" + getCookie("snusername") + "</create_user>"
    text += "\n\t\t<user_company_name>" + company + "</user_company_name>"
    text += "\n\t\t<user_contact_name>" + getCookie("snuserfullname") + "</user_contact_name>"
    text += "\n\t\t<user_phone>" + phone + "</user_phone>"
    text += "\n\t\t<user_email>" + email + "</user_email>"
    text += "\n\t\t<user_type>" + getCookie("snusertype") + "</user_type>"
    text += "\n\t\t<userdiscount>" + discount + "</userdiscount>"
    text += "\n\t\t<deliveryspeed>O</deliveryspeed>"
    text += "\n\t\t<deliverydate></deliverydate>"
    text += "\n\t\t<deliverytime></deliverytime>"
    text += "\n\t\t<country>Australia</country>"
    text += "\n\t\t<price></price>"

    today = defaultDate()
    text += "\n\t\t<date>" + today + "</date>"

    // Add the list of valid report fields to the xml document.
    fieldscnt = xmlReportTypes.selectNodes("//row[code='"+type+"']/validfields").length

    for (i=0;i<fieldscnt;i++) {
       thiscol = xmlReportTypes.selectNodes("//row[code='"+type+"']/validfields").item(i).text
       switch (thiscol) {
            case "TRADE_REFERENCE":
                for (j=1;j<6;j++) {
                    thisfield = "trade_comp" + j
                    text += "\n\t\t<" + thisfield.toLowerCase() + "></" + thisfield.toLowerCase() + ">"
                    thisfield = "trade_ph" + j
                    text += "\n\t\t<" + thisfield.toLowerCase() + "></" + thisfield.toLowerCase() + ">"
                    thisfield = "trade_con" + j
                    text += "\n\t\t<" + thisfield.toLowerCase() + "></" + thisfield.toLowerCase() + ">"
                }
                break
            case "EWR":
                for (j=1;j<6;j++) {
                    thisfield = "ewr_att" + j
                    text += "\n\t\t<" + thisfield.toLowerCase() + "></" + thisfield.toLowerCase() + ">"
                    thisfield = "ewr_comp" + j
                    text += "\n\t\t<" + thisfield.toLowerCase() + "></" + thisfield.toLowerCase() + ">"
                    thisfield = "ewr_email" + j
                    text += "\n\t\t<" + thisfield.toLowerCase() + "></" + thisfield.toLowerCase() + ">"
                }
                thisfield = "ewr_duration"
                text += "\n\t\t<" + thisfield.toLowerCase() + "></" + thisfield.toLowerCase() + ">"
                break
            default:
                thisfield = xmlReportTypes.selectNodes("//row[code='"+type+"']/validfields").item(i).text
                text += "\n\t\t<" + thisfield.toLowerCase() + "></" + thisfield.toLowerCase() + ">"
      }
    }

    // Add the list of valid delivery fields to the xml document.
    //fieldscnt = xmlReportTypes.selectNodes("//row[code='"+type+"']/deliveryfields").length
    //for (i=0;i<fieldscnt;i++) {
    //   thisfield = xmlReportTypes.selectNodes("//row[code='"+type+"']/deliveryfields").item(i).text
    //    alert("deliveryfield = " + thisfield )
    //   text += "\n\t\t<" + thisfield.toLowerCase() + "></" + thisfield.toLowerCase() + ">"
    //}

    text += "\n\t</row>"
    text += "\n</orders>"
    //alert(text)
    xmldoc.loadXML(text)

    // Now load the order form
    //oiXMLTransform(formDoc+type+"&status=0","","","",formSelectTag,"orderno","")
    oiFormXSLT =  oiServerURL + "inet_orders_xsl/" + getOISession() + "?type=" + type + "&status=0"
    //oiPrepareXSLT()
    //alert("here")
    html = oiXSLTTransform(oiFormXSLT,xmldoc,"myId","NEW")
    datafromoi.innerHTML=html.xml
    //activeOrderNo = orderno
}

function orderWizCancel() {
    // User wants to canel the order. Confirm this first
    var option = confirm("Are you sure you wish to cancel this order?")

    if (option==true) {
        // The user has confirmed the cancel, so send them back to step 1
        //body_onload()
        //window.location.reload()
        lk_order.click()
    }
}

function orderWizBack() {
    // User wants to canel the order. Confirm this first
    var status = xmldoc.selectSingleNode("//status")
    var type = xmldoc.selectSingleNode("//report_type").text
    switch (status.text) {
        case "1":
            // We are at step 3, go back to setp 2
            status.text = "0"
            //oiXMLTransform(formDoc)
            //oiXMLTransform(formDoc+type,"","","",formSelectTag,"orderno","")
            oiFormXSLT =  oiServerURL + "inet_orders_xsl/" + getOISession() + "?type=" + type + "&status=0"
            html = oiXSLTTransform(oiFormXSLT,xmldoc,"myId","NEW")
            datafromoi.innerHTML=html.xml
            break
        case "0":
          // We are at step 2, go back to step 1
          orderWizCancel()
          break
    }
}

function orderWizConfirm() {
    // The user has entered their data and now wishes to confirm the order.

    // Update the XML document with the new values
    var form = document.getElementById("form_orders")
    //alert(xmldoc.xml)
    updateXMLFromForm("form_orders","0")

    //for (i=0;i<(form.length)-1;i++) {
    //    var control = form.item(i)
    //    controlid = control.id
    //    if (control.type!="button"|"hidden"){
    //        column = xmldoc.selectNodes("//row[0]/"+controlid)
    //        if (column.length) {
    //            //alert("Control Name = " + controlid + "\nControl Value = " + control.value)
    //            column.item(0).text = control.value
    //        }
    //    }
    //}

    //alert(xmldoc.xml)

    // Calculate the price
    var status = xmldoc.selectSingleNode("/orders/row/status")
    var report_price = Number(xmldoc.selectSingleNode("/orders/row/report_price").text)
    var price = xmldoc.selectSingleNode("/orders/row/price")
    var speed = xmldoc.selectSingleNode("/orders/row/deliveryspeed").text
    var type = xmldoc.selectSingleNode("/orders/row/report_type").text
    var discount = xmldoc.selectSingleNode("/orders/row/userdiscount").text
    var reportdiscount = xmlReportTypes.selectNodes("//row[code='"+type+"']/discount").item(0).text

    if (report_price=="0") {
        price.text = Number("00.00")
    }else{
        switch (speed) {
            case "O":
                price.text = report_price
                break
            case "P":
                price.text = report_price * Number(1.4)
                break
           case "F":
                price.text = report_price * Number(1.8)
                break
        }

        if (reportdiscount=="Y"){
            // Apply User Discount
            if (discount>0) {
                //alert("discount = " + discount)
                price.text = price.text - (price.text*(discount/100))
            }
        }

        // Rounding. 0.49 down 0.5 up
        price.text = Math.round(price.text)
     }

    status.text = "1"
    //oiXMLTransform(formDoc+type)
    //oiXMLTransform(formDoc+type,"","","",formSelectTag,"orderno","")

    oiFormXSLT =  oiServerURL + "inet_orders_xsl/" + getOISession() + "?type=" + type + "&status=0"
    html = oiXSLTTransform(oiFormXSLT,xmldoc,"myId","NEW")
    datafromoi.innerHTML=html.xml

    //disable all the controls
    var form = document.getElementById("form_orders")

    for (i=0;i<form.length;i++) {
        var control = form.item(i)
        if (control.type!="button"|"hidden") {
            document.getElementById(control.id).disabled = "disabled"
        }
    }

    // Change the page heading
    document.getElementById("wizStepHeading").innerHTML = "DMS Report Order Wizard - Step 3 of 4"
    document.getElementById("pb_next").focus()
    document.getElementById("pb_next").focus()
}

function orderWizOrder() {
    document.getElementById("status").value = 2
    oiSendXMLData(writeURL,postWriteRow)
}


function pb_search(cols,norestore) {
    // Get the values the user has input into the form
    // the name of the search values are passed as searchcols
    // comma delimited.
    oiWithClausesBak = oiWithClauses

    // Fix to get comms list to load faster
    if (oiFileName=="COMMS") {
        oiWithClauses = ""
    }

    //oiByClauses = ""
    //alert("search withClause = " + oiWithClauses)
    searchcols = cols.split(",")

    for (i=0;i<searchcols.length;i++) {
        thiscolvalue = document.getElementById(searchcols[i]).value
        //thiscolvalue = colvalue.replace(/'/,"&apos;")
        //newvalue = value.replace(/'/,"&apos;")
        thiscolOperator = document.getElementById(searchcols[i]).operator
        if (thiscolOperator==null){
            thiscolOperator = "EQUAL"
        }
        //alert("search col " + searchcols[i])
        switch (searchcols[i]) {
            case "date":
                searchDate("date")
                break
            case "subject_startwith":
                // CNI Subject starting with search
                thiscolvalue = trim(thiscolvalue)

                // subject must be atleast three characters long
                if (thiscolvalue.length<3) {
                    alert("You must enter at least 3 characters for the subject name")
                    window.document.subject_startwith.focus()
                    return
                }
                //if (oiWithClauses.length>0) {
                //        oiWithClauses = oiWithClauses + " AND "
                //}
                // fix for ampersand not working
                x = thiscolvalue.replace(/&/,"z26z")
                oiWithClauses = "WITH SUBJECT '" + x + "]'"
                //oiWithClauses = "WITH SUBJECT '" + thiscolvalue + "]'"
                break
            case "subject_xref":
                // regular any word subject search.
                if (thiscolvalue!="") {
                    if (oiWithClauses.length>0) {
                        oiWithClauses = oiWithClauses + " AND "
                    }
                    var sub = thiscolvalue.split(" ")
                    var validsubject = 0
                    for (j in sub) {
                        if (sub[j]!="") {
                            if (validsubject==1) {
                                oiWithClauses = oiWithClauses + " AND "
                            }
                            // fix for ampersand not working
                            x = sub[j].replace(/&/,"z26z")
                            //oiWithClauses = oiWithClauses + "WITH SUBJECTLISTNAME_XREF = '" + sub[j] + "' "
                            oiWithClauses = oiWithClauses + "WITH SUBJECTLISTNAME_XREF = '" + x + "' "
                            validsubject = 1
                        }
                    }
                }
                break
            case "user_company_name_xref":
                // regular any word subject search.
                if (thiscolvalue!="") {
                    if (oiWithClauses.length>0) {
                        oiWithClauses = oiWithClauses + " AND "
                    }
                    var sub = thiscolvalue.split(" ")
                    var validsubject = 0
                    for (j in sub) {
                        if (sub[j]!="") {
                            if (validsubject==1) {
                                oiWithClauses = oiWithClauses + " AND "
                            }
                            // Fix for searches containing ampersand not working
                            x = sub[j].replace(/&/,"z26z")
                            
                        	//oiWithClauses = oiWithClauses + "WITH USER_COMPANY_NAME_XREF = '" + encodeURIComponent(sub[j]) + "' "	
                            //oiWithClauses = oiWithClauses + "WITH USER_COMPANY_NAME_XREF = '" + sub[j] + "' "
                            oiWithClauses = oiWithClauses + "WITH USER_COMPANY_NAME_XREF = '" + x + "' "
                            validsubject = 1
                        }
                    }
                }
                break
            case "currusername":
                if (oiWithClauses.length>0) {
                    oiWithClauses = oiWithClauses + " AND "
                }
                oiWithClauses = oiWithClauses + "WITH USERNAME = '" + getCookie("snusername") + "' "
                break
            case "searchtext":
                if (oiWithClauses.length>0) {
                    oiWithClauses = oiWithClauses + " AND "
                }
                //oiWithClauses = oiWithClauses + "WITH RECORD [] '" + thiscolvalue + "' OR WITH @ID [] '" + thiscolvalue + "') "
                // fix for ampersand not working
                x = thiscolvalue.replace(/&/,"z26z")
                //oiWithClauses = oiWithClauses + 'WITH RECORD [] "' + thiscolvalue + '" '
                oiWithClauses = oiWithClauses + 'WITH RECORD [] "' + x + '" '
                break
            case "exported_date":
                searchDate("exported_date")
                break
            default:
                // For all general field searches.
                if (thiscolvalue.length>0) {
                    if (oiWithClauses.length>0) {
                        oiWithClauses = oiWithClauses + " AND "
                    }
                    //fix for ampersand not working
                    x = thiscolvalue.replace(/&/,"z26z")
                    oiWithClauses = oiWithClauses + "WITH " + searchcols[i] + " " + thiscolOperator + " '" + x + "' "
                    //oiWithClauses = oiWithClauses + "WITH " + searchcols[i] + " " + thiscolOperator + " '" + thiscolvalue + "' "
                    ////oiWithClauses = oiWithClauses + "WITH " + searchcols[i] + " = '" + thiscolvalue + "' "
                    ////oiWithClauses = oiWithClauses + "WITH " + searchcols[i] + " '" + thiscolvalue + "' "
                }
                break
        }
    }

   if (oiWithClauses!="") {
		//alert("with clause = " + oiWithClauses)
        oiPrepareXSLT()
        url = oiBuildURL(oiProcedure,oiParms)
        //alert("url = " + url)
        //alert("listDoc = " + listDoc)
        if (listDoc!="") {
            oiGetXMLData(url,state_Change_body_onload)
        } else {
            //datafromoi.innerHTML = "<center><b>Searching<br/><br/>...Please Wait...</b></center>"
            oiGetXMLData(url,state_Change_body_onload_new)
        }
    } else {
        alert("Please select a report to run")
    }

    if (norestore!="1") {
        // Restores the withclauses back to default values
        oiWithClauses = oiWithClausesBak
        oiPrepareXSLT()
        url = oiBuildURL(oiProcedure,oiParms)
        //alert("oi with clauses = " + oiWithClauses)
    }
}

function searchDateOrig(ctrlname) {
    // Calculate special values

    var fromdate = document.getElementById(ctrlname + "_fromdate").value
    var todate = document.getElementById(ctrlname + "_todate").value
    var report = document.getElementById(ctrlname).value

    var period = report.substring(0,4)
    var rpt = report.substring(4)

    var today = new Date()

    var day = today.getDay()
    var date = today.getDate() + 1
    var mth = today.getMonth() + 1
    var yr = today.getFullYear()
    var qtr = ""

    // Calculate the current quater.
    switch (mth) {
        case 1:
            var qtr = 1
            break
        case 2:
            var qtr = 1
            break
        case 3:
            var qtr = 1
            break
        case 4:
            var qtr = 2
            break
        case 5:
            var qtr = 2
            break
        case 6:
            var qtr = 2
            break
        case 7:
            var qtr = 3
            break
        case 8:
            var qtr = 3
            break
        case 9:
            var qtr = 3
            break
        case 10:
            var qtr = 4
            break
        case 11:
            var qtr = 4
            break
        case 12:
            var qtr = 4
            break
    }

    // Make adjustments is the user wants the last mth/qtr/year values
    if (period=="last") {
        if (rpt=="mth") {
            if (mth==1) {
                mth = 12
                yr = yr - 1
            } else {
                mth = mth - 1
            }
        }
        if (rpt=="yr") {
            yr = yr -1
        }
        if (rpt=="qtr") {
            if (qtr==1) {
                qtr = 4
                yr = yr - 1
            } else {
                qtr = qtr - 1
            }
        }
    }

    // If the month is less than ten then add a leading zero
    if (mth<10) {
        var mth = "0" + "" + mth
    }

    //fieldname = crtlname.toUpperCase()
    fieldname = ctrlname

    switch (rpt) {
        case "mth":
            thiscolvalue = "WITH " + fieldname + "_MONTH = '" + yr + "" + mth + "'"
            break
        case "qtr":
            thiscolvalue = "WITH " + fieldname + "_QTR = '" + yr + "" + qtr + "'"
            break
        case "yr":
            thiscolvalue = "WITH " + fieldname + "_YEAR = '" + yr + "'"
            break
        case "custom":
            thiscolvalue = "WITH " + fieldname + " FROM '" + fromdate + "' TO '" + todate + "'"
            break
        default:
            thiscolvalue = ""
            break
    }
}

function searchDate(ctrlname) {
    // Calculate special values

    var fromdate = document.getElementById(ctrlname + "_fromdate").value
    var todate = document.getElementById(ctrlname + "_todate").value
    var report = document.getElementById(ctrlname).value

    var period = report.substring(0,4)
    var rpt = report.substring(4)

    var today = new Date()

    var day = today.getDay()
    var date = today.getDate() + 1
    var mth = today.getMonth() + 1
    var yr = today.getFullYear()
    var qtr = ""

    // Calculate the current quater.
    switch (mth) {
        case 1:
            var qtr = 1
            break
        case 2:
            var qtr = 1
            break
        case 3:
            var qtr = 1
            break
        case 4:
            var qtr = 2
            break
        case 5:
            var qtr = 2
            break
        case 6:
            var qtr = 2
            break
        case 7:
            var qtr = 3
            break
        case 8:
            var qtr = 3
            break
        case 9:
            var qtr = 3
            break
        case 10:
            var qtr = 4
            break
        case 11:
            var qtr = 4
            break
        case 12:
            var qtr = 4
            break
    }

    // Make adjustments is the user wants the last mth/qtr/year values
    if (period=="last") {
        if (rpt=="mth") {
            if (mth==1) {
                mth = 12
                yr = yr - 1
            } else {
                mth = mth - 1
            }
        }
        if (rpt=="yr") {
            yr = yr -1
        }
        if (rpt=="qtr") {
            if (qtr==1) {
                qtr = 4
                yr = yr - 1
            } else {
                qtr = qtr - 1
            }
        }
     }

    // If the month is less than ten then add a leading zero
    //if (mth<10) {
    //    var mth = "0" + "" + mth
    //}

    // Find the month end date
    switch (mth) {
        case 2:
            lastDay = "28"
            break
        case 4:
            lastDay = "30"
            break
        case 6:
            lastDay = "30"
            break
        case 9:
            lastDay = "30"
            break
        case 11:
            lastDay = "30"
            break
        default:
            lastDay = "31"
            break
    }

    //fieldname = crtlname.toUpperCase()
    fieldname = ctrlname

    switch (rpt) {
        case "mth":
            fromdate = "01/" + mth + "/" + yr
            todate = lastDay + "/" + mth + "/" + yr
            break
        case "qtr":
            if (qtr=="1") {
                fromdate = "01/01/" + yr
                todate = "31/03/" + yr
            }
            if (qtr=="2") {
                fromdate = "01/04/" + yr
                todate = "30/06/" + yr
            }
            if (qtr=="3") {
                fromdate = "01/07/" + yr
                todate = "30/09/" + yr
            }
            if (qtr=="4") {
                fromdate = "01/10/" + yr
                todate = "31/12/" + yr
            }
            break
        case "yr":
            fromdate = "01/01/" + yr
            todate = "31/12/" + yr
            break
    }

    thiscolvalue = ""

    if (fromdate!="") {
        thiscolvalue = "WITH " + fieldname + " FROM '" + fromdate + "' TO '" + todate + "'"
    }

    if (thiscolvalue!="") {
        if (oiWithClauses.length>0) {
            oiWithClauses = oiWithClauses + " AND "
        }
        oiWithClauses = oiWithClauses + thiscolvalue
    }
}

function txt_stdreports_onchange(ctrl) {
    rpt = ctrl.value

    if (rpt=="custcustom") {
        document.getElementById("daterange").style.visibility="visible"
    }else{
        document.getElementById("daterange").style.visibility="hidden"
    }
}

function quoteWizard(mode,type) {
    // DMS Quote Wizard

    switch(mode) {
		case "create":
			// Start a dialogbox and load the quote wizard page

			var args = new Object()
            args.type = type
            var list = "dialogHeight : 600px; dialogWidth : 800px; center: yes; resizable: no; status: no; help: no"
            rtnValue = window.showModalDialog("quotewizard.htm#lk_quotewizard",args,list)
            break
        case "build":
            // Grab the type of order the user wants and create
            // an empty xml document to hold the order details.
            // Then load the report order form XSL

            // Fix for the localhash being stripped off in Live
            page = location.hash
            if (page=="") {
                location.hash = "#lk_quotewizard"
            }

            formDoc = oiServerURL + "inet_quotes_xsl?type="
            formSelectTag = "/xsl:stylesheet/xsl:param[@name='myId']"
            type = null
            var args = window.dialogArguments
            if (args) {
                type = args.type
            }

            if (type==null) {
                var type = queryParm("type")
            }

            // select the row from the xmldoc for the chosen type
            typerow = xmlReportTypes.selectNodes("//row[code='"+type+"']")

            // Create a new XML document

            text = '<?xml version="1.0" encoding="windows-1252" ?>'
            text += "<orders>"
            text += "\n\t<row>"
            text += "\n\t\t<status>0</status>"
            text += "\n\t\t<orderno></orderno>"
            text += "\n\t\t<report_type>" + type + "</report_type>"
            text += "\n\t\t<username></username>"
            text += "\n\t\t<create_user>SYSADMIN</create_user>"
            text += "\n\t\t<user_company_name></user_company_name>"
            text += "\n\t\t<user_contact_name></user_contact_name>"
            text += "\n\t\t<user_phone></user_phone>"
            text += "\n\t\t<user_email></user_email>"
            text += "\n\t\t<user_type></user_type>"
            text += "\n\t\t<userdiscount></userdiscount>"
            text += "\n\t\t<deliveryspeed>O</deliveryspeed>"
            text += "\n\t\t<deliverydate></deliverydate>"
            text += "\n\t\t<deliverytime></deliverytime>"
            text += "\n\t\t<country>Australia</country>"
            text += "\n\t\t<price></price>"

            today = defaultDate()
            text += "\n\t\t<date>" + today + "</date>"

            text += "\n\t</row>"
            text += "\n</orders>"
            //alert(text)
            xmldoc.loadXML(text)

            // Now load the order form
            oiXMLTransform(formDoc+type+"&status=0&optionsflag=0","","","",formSelectTag,"orderno","")
            break
         case "save":
            // save the request
            // Check for required information
            requiredColumns = "QUOTE_CONTACTNAME,QUOTE_TITLE,QUOTE_COMPANYNAME,QUOTE_PHONE,QUOTE_EMAIL"
            requiredArray = requiredColumns.split(",")
            if (oiRequiredProcessing(requiredArray,"#FFB6C1")==true) {
                oiSendXMLData(writeURL,postWriteRow)
                //window.returnValue = null
                //window.close()
            }
            break
         case "cancel":
            // cancel the order
            var ans = confirm("Do you really wish to cancel this quote request?")
            if (ans==true) {
                window.returnValue = null
                window.close()
            }
         case "close":
            window.returnValue = null
            window.close()
            break
      }
}

function viewQuote(type,orderno) {

    // Original Code
    //alert("here " + type)
    formDoc = oiServerURL + "inet_quotes_xsl/" + getOISession() + "?type=" + type
    //orderno = xmldoc.selectNodes("//row["+row+"]/orderno").text
    //alert("order no = " +  orderno)
    activeOrderNo = orderno
    oiXMLTransform(formDoc,"","","",formSelectTag,"orderno",orderno)

}

function quoteOrderCreate(quoteNumber) {
    // creates a new order from a quote request
    //alert("xml = \n" + xmldoc.xml)
    //var type = xmldoc.selectNodes("//row[@ID='"+quoteNumber+"']/report_type").item(0).text
    type = document.getElementById("report_type").value
    username = document.getElementById("username").value
    //alert("type = " + type)
    if (username) {
        document.getElementById("status").value = 2
        //alert("xml \n" + xmlReportTypes.xml)
        price = xmlReportTypes.selectNodes("//row[@ID='"+type+"']/price").item(0).text
        // need to calculate the price including speed and discount.
        //alert("price = " + price)
        document.getElementById("price").value = price

        //updateXMLFromForm("form_orders","orderno="+quoteNumber)
        //alert("before form doc " + formDoc)
        //formDoc = oiServerURL + "inet_orders_xsl/" + getOISession() + "?type=" + type
        //formSelectTag = "/xsl:stylesheet/xsl:param[@name='myId']"
        //alert("url = " + formDoc)
        //oiXMLTransform(formDoc,"","","",formSelectTag,"orderno",quoteNumber)
        //viewOrder(type,quoteNumber)
		activeOrderNo = quoteNumber
        oiSendXMLData(writeURL,quoteOrderCreatePost,0,quoteNumber)

    } else {
        alert("Please create a user before creating an order")
    }

}

function quoteOrderCreatePost(data) {
	quoteNumber = document.getElementById("orderno").value
    type = document.getElementById("report_type").value

	formSelectTag = "/xsl:stylesheet/xsl:param[@name='myId']"

	oiFileName = "ORDERS"
	oiPageTitle = ""
	oiListName = "ORDERS_MAINT_LIST"
	oiFormName = ""
	oiListFields = "ORDERNO,DATE,SUBJECTLISTNAME,REPORT_TYPE,USER_COMPANY_NAME,COUNTRY,PRICE"
	oiListTotal = "PRICE"
	oiFormFields = ""
	oiByClauses = "BY ORDERNO"
	oiWithClauses = "WITH WEBAPP = 'DMS' AND WITH STATUS = '2'"
	oiProcedure = "inet_oi_xml_allcolumns"
	defaultButton = "pb_search"
	oiPrepareXSLT()
	url = oiBuildURL(oiProcedure,oiParms)

	xmldoc.load(url)

   viewOrder(type,quoteNumber)
}

function quoteUserCreate(quoteNumber) {
    //Creates a new user record from a quote request
    // Create a new XML document

	var contactname = document.getElementById("quote_contactname").value.split(" ")
    var firstname = ""
	var lastname = ""

	if (contactname[0])
	{
		firstname = contactname[0]
	}

	if (contactname[1])
	{
		for (i=1;i<contactname.length ;i++ )
		{
					lastname += contactname[i] + " "
		}
	}

    text = '<?xml version="1.0" encoding="windows-1252" ?>'
    text += "\n<users>"
    text += "\n\t<row ID='NEW'>"
    text += "\n\t\t<username></username>"
    text += "\n\t\t<password></password>"
    text += "\n\t\t<firstname>" + firstname + "</firstname>"
    text += "\n\t\t<lastname>" + lastname + "</lastname>"
    text += "\n\t\t<type>USER</type>"
    text += "\n\t\t<company>" + document.getElementById("quote_companyname").value + "</company>"
    text += "\n\t\t<email>" + document.getElementById("quote_email").value + "</email>"
    text += "\n\t\t<phone>" + document.getElementById("quote_phone").value + "</phone>"
    text += "\n\t\t<abn>" + document.getElementById("quote_creditor_abn").value + "</abn>"
    text += "\n\t\t<tax_code>GST</tax_code>"
    text += "\n\t\t<source>Online Quote Request</source>"
    text += "\n\t\t<source_client>Y</source_client>"
    text += "\n\t\t<active>Y</active>"
    text += "\n\t</row>"
    text += "\n</users>"
    //alert(text)
    //xmldoc.loadXML(text)
    value = oi_dialog("create","USERS","","","","Create A New User",text,"USERNAME,FIRSTNAME,LASTNAME,COMPANY,PHONE,EMAIL")

    if (value) {
        document.getElementById("username").value = value[0]
		document.getElementById("user_fullname").value = value[1] + " " + value[2]
        document.getElementById("user_company_name").value = value[3]
        document.getElementById("user_phone").value = value[4]
        document.getElementById("user_email").value = value[5]
        oiSendXMLData(writeURL,postWriteRow,0,quoteNumber)
    }

}

function CNICreateOrder(reportNo,update) {
    // creates a new CNI order
    //alert("here reportno = " + reportNo)
    text = '<?xml version="1.0" encoding="windows-1252" ?>'
    text += "\n<orders>"
    text += "\n\t<row ID='NEW'>"
    text += "\n\t\t<orderno></orderno>"
    text += "\n\t\t<date>" + defaultDate() + "</date>"
    text += "\n\t\t<username>" + getCookie("snusername") + "</username>"
    text += "\n\t\t<user_fullname>" + getCookie("snuserfullname") + "</user_fullname>"
    text += "\n\t\t<user_email>" + getCookie("snuseremail") + "</user_email>"
    text += "\n\t\t<report_no>" + reportNo + "</report_no>"
    text += "\n\t\t<newreport>" + update + "</newreport>"
    text += "\n\t\t<subject>" + xmldoc.selectSingleNode("//row[id='" + reportNo + "']/subject/text()").xml + "</subject>"
    type = getCookie("snusertype")
    page = location.hash
    //if (type=="ADMIN" | type=="SYSADMIN") {
    if (page=="#lk_reports") {
        // Add the author name for DMS staff
        text += "\n\t\t<authorname>" + xmldoc.selectSingleNode("//row[id='" + reportNo + "']/author_name/text()").xml + "</authorname>"
    }
    text += "\n\t\t<report_type>" + xmldoc.selectSingleNode("//row[id='" + reportNo + "']/type/text()").xml + "</report_type>"
    text += "\n\t\t<country>" + xmldoc.selectSingleNode("//row[id='" + reportNo + "']/country/text()").xml + "</country>"
    text += "\n\t\t<webapp>WWRN</webapp>"
    text += "\n\t\t<price></price>"
    text += "\n\t\t<deliveryspeed>O</deliveryspeed>"
    text += "\n\t</row>"
    text += "\n</orders>"
    //alert("newdoc = " + text)
    var xmlNew = createXMLDoc(xmlNew)
    xmlNew.loadXML(text)
    oiFormXSLT = oiFormXSLT.replace(/=REPORTS/, "=ORDERS")
    //alert("oiform = " + oiFormXSLT)
    var html = oiXSLTTransform(oiFormXSLT,xmlNew,"filterKey","NEW")
    //alert("html = " + html.xml)
    datafromoi.innerHTML = html.xml

    // Now update the price
    CNICalculateOrderPrice()
}

function CNICalculateOrderPrice() {
    // Set price defaults
    var speedPriority = 1.4
    var speedFlash = 1.8

    // Is the user a WWRN member or not
    var member = getCookie("snusermember")
    var speed = document.getElementById("deliveryspeed").value
    var newReport = document.getElementById("newreport").checked

    //alert("New report = " + newReport)

    // Does the user want a new report generated?
    if (newReport==true) {
        if (member=="Y") {
            var price = Number("90")
        } else {
            var price = Number("115")
        }
        document.getElementById("deliveryspeed").disabled = ""
    } else {
        if (member=="Y") {
            var price = Number("37")
        } else {
            var price = Number("42")
        }
        document.getElementById("deliveryspeed").disabled = "disabled"
    }

    // Now add any extra based on delivery speed
    switch (speed) {
        case "O":
            // Ordinary speed. Nothing to add
            break
        case "P":
            // Priority Speed. Adjust price
            price = price*speedPriority
            break
        case "F":
            // Flash Speed. Adjust price
            price = price*speedFlash
            break
   }

   // Do any GST or tax work here.

   // Rounding. 0.49 down 0.5 up
   price = Math.round(price)
   // Now update the price in the form
   document.getElementById("price").value = price + ".00"
}

function CNIPostWriteRow(data,response) {
    // called after an order has been placed with the cni
    // displays the order confirmation page.
    //alert("data = \n\n" + data)
    xmldoc.loadXML(data)
    orderno = xmldoc.selectSingleNode("//orderno/text()").xml
    //alert("post cni order = " + orderno)
    var html = oiXSLTTransform(oiFormXSLT,xmldoc,'filterKey',orderno)
    datafromoi.innerHTML = html.xml

    document.getElementById("newreport").disabled = "disabled"
    document.getElementById("deliveryspeed").disabled = "disabled"

    page = location.hash

    if (page=="#lk_usercnireports") {
        // need to change user details back to the web user
        document.getElementById("username").value = getCookie("snusername")
        document.getElementById("email").value = getCookie("snuseremail")
        document.getElementById("user_fullname").value = getCookie("snuserfullname")
        CNICalculateOrderPrice()
    }
}

function pb_exportinvoice() {
    // exports a single invoice to MYOB
    invoiceNo = prompt("Enter the invoice number to export?","")
    if (invoiceNo) {
        //var newDoc=document.open("text/tab-separated-values")
        //a = "\\dms\\oecgi2.exe\\inet_orders_export_myob\\myobexport.tab?invoiceno=" + invoiceNo
        a = oiServerURL + "\\inet_orders_export_myob\\myobexport.tab?invoiceno=" + invoiceNo
        exportorders.href = a
        exportorders.click()
    }
}

function pb_exportdate() {
    // exports a single invoice to MYOB
    date = prompt("Enter the export date to re-export?","")
    if (date) {
        //var newDoc=document.open("text/tab-separated-values")
        //a = "\\cgi-bin\\oecgi.exe\\inet_orders_export_myob\\myobexport.tab?exporteddate=" + date
        a = oiServerURL + "\\inet_orders_export_myob\\myobexport.tab?exporteddate=" + date
        exportorders.href = a
        exportorders.click()
    }
}

function selectUser(control) {
    //alert("here "+this.id)
    returnData = oi_popup("create","USERS","COMPANY,FIRSTNAME,LASTNAME","BY COMPANY","USERNAME,COMPANY,PHONE,EMAIL,DMS_DISCOUNT,FIRSTNAME,LASTNAME")
    //returnData = oi_search("create","USERS","COMPANY,FIRSTNAME,LASTNAME","BY COMPANY","USERNAME,COMPANY,PHONE,EMAIL,DMS_DISCOUNT")
    if (returnData) {
        document.getElementById("username").value = returnData[0]
        document.getElementById("user_company_name").value = returnData[1]
        document.getElementById("user_phone").value = returnData[2]
        document.getElementById("user_email").value = returnData[3]
        document.getElementById("user_fullname").value = returnData[5] + " " + returnData[6]
    }
}

function dmsPrintNewComm() {
	// prints a new comm that has not been saved.
	var myparms = "&from="  +  encodeURIComponent(document.getElementById("from").value)
	myparms += "&to="  +  encodeURIComponent(document.getElementById("to").value)
    myparms += "&subject="  +  encodeURIComponent(document.getElementById("subject").value)
	myparms += "&message="  +  encodeURIComponent(document.getElementById("message").value)
	//alert(myparms)
	oi_printPreview("create","COMMS",oiFormFields,oiByClauses,oiFormXSLT+myparms,"Print Preview COMMS","","0","")
}
