var xslTemplateIE = 'liquor_applications/xsl/application noticeboard.xsl'
var xslTemplateIE_ver4 = 'liquor_applications/xsl/application noticeboard ver4.xsl'
var xslTemplateMOZ = 'liquor_applications/xsl/application noticeboard moz.xsl'
var xslTemplateSAF = 'liquor_applications/xsl/application noticeboard saf.xsl'
var xmlDataPath = 'liquor_applications/xml/application noticeboard data.xml'

function AJAX_load(path)
/*	
Preconditions: path is valid URI;
Postconditions: returns a loaded XMLDocument
Purpose: loads an external XML document and returns it when it loads
alerts error message if any errors occur
Adapted from: [url="http://www.w3schools.com/Dom/dom_parser.asp"]http://www.w3schools.com/Dom/dom_parser.asp[/url]
*/
{
    try { // MSIE
        var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    }
    catch (e) {
        try { // Firefox, Opera, etc.
            var xmlDoc = document.implementation.createDocument("", "", null);
        }
        catch (e) {
            alert(e.message)
        }
    }
    try {
        xmlDoc.async = false; // halt code execution until xmlDoc is loaded
        xmlDoc.load(path); // load file
    }
    catch (e) { // unable to load
        try {	// for Safari
            xmlDoc = new XMLHttpRequest();
            xmlDoc.open("GET", path, false);
            xmlDoc.send();
            xmlDoc = xmlDoc.responseXML;

        }
        catch (e) {
            alert(e.message)
            return; // return with nothing
        }
    }
    return xmlDoc;
}

function getTodayDateSerial() {
    var date = new Date();
    var d = date.getDate();
    var day = (d < 10) ? '0' + d : d;
    var m = date.getMonth() + 1;
    var month = (m < 10) ? '0' + m : m;
    var year = date.getFullYear();

    return year.toString() + month.toString() + day.toString();
}

function isMSXMLinstalled() {
    try {
        var msXMLobj = new ActiveXObject('Msxml2.FreeThreadedDOMDocument');
    }
    catch (e) {
        return false;
    }
    return true;
}

function verMSXML4() {
    try {
        var msXMLobj = new ActiveXObject('Msxml2.FreeThreadedDOMDocument.4.0');
    }
    catch (e) {
        return '';
    }
    return '.4.0'
}

function getApplications(appNumber, orgApp, dteToday, dtePosted, dteSubmissionClose, dteOperator, suburb, postCode, lGA, appType, appStatus, functEvents) {
    if (window.ActiveXObject) {
        // code for IE

        if (isMSXMLinstalled() == false) {
            window.open('liquor_applications/get_msxml.asp', '_top');
            return false;
        }

        varMSXMLVersion = verMSXML4();

        var xslDoc = new ActiveXObject('Msxml2.FreeThreadedDOMDocument' + varMSXMLVersion);

        xslDoc.async = false;

        if (varMSXMLVersion != '') {
            xslDoc.load(xslTemplateIE_ver4); // Load MSXML 4.0
        }
        else {
            xslDoc.load(xslTemplateIE);
        }
        var xslt = new ActiveXObject('Msxml2.XSLTemplate' + varMSXMLVersion);

        xslt.stylesheet = xslDoc;

        var xmlDoc = new ActiveXObject('Msxml2.DOMDocument' + varMSXMLVersion);

        xmlDoc.async = false;
        xmlDoc.load(xmlDataPath);

        var xslProc;

        xslProc = xslt.createProcessor();
        xslProc.addParameter('orgApp', orgApp);
        xslProc.addParameter('appNumber', appNumber);
        xslProc.addParameter('dteToday', dteToday);
        xslProc.addParameter('dtePosted', dtePosted);
        xslProc.addParameter('dteSubmissionClose', dteSubmissionClose);
        xslProc.addParameter('dteOperator', dteOperator);
        xslProc.addParameter('suburb', suburb);
        xslProc.addParameter('postCode', postCode);
        xslProc.addParameter('lGA', lGA);
        xslProc.addParameter('appType', appType);
        xslProc.addParameter('appStatus', appStatus);
        xslProc.addParameter('functEvents', functEvents);
        xslProc.input = xmlDoc;
        xslProc.transform();

        document.write(xslProc.output);
    }
    else if (document.implementation && document.implementation.createDocument) {
        // code for Mozilla, Firefox, Opera, etc.

        browser = navigator.userAgent;
        var xsl;
        if (browser.indexOf('Safari') > 0 || window.opera) {
            xsl = AJAX_load(xslTemplateSAF)
        }
        else {
            xsl = AJAX_load(xslTemplateMOZ)
        }
        /*
        var xsl=document.implementation.createDocument('','',null);
			
        xsl.async=false;
        xsl.load(xslTemplateMOZ);
        */

        var xmlDoc;

        xmlDoc = AJAX_load(xmlDataPath)
        /*	xmlDoc = document.implementation.createDocument('','',null);
        xmlDoc.async = false;
        xmlDoc.load(xmlDataPath);
        */
        var xsltProc = new XSLTProcessor();

        xsltProc.importStylesheet(xsl);
        xsltProc.setParameter(null, 'orgApp', orgApp)
        xsltProc.setParameter(null, 'appNumber', appNumber)
        xsltProc.setParameter(null, 'dteToday', dteToday)
        xsltProc.setParameter(null, 'dtePosted', dtePosted);
        xsltProc.setParameter(null, 'dteSubmissionClose', dteSubmissionClose);
        xsltProc.setParameter(null, 'dteOperator', dteOperator);
        xsltProc.setParameter(null, 'suburb', suburb);
        xsltProc.setParameter(null, 'postCode', postCode);
        xsltProc.setParameter(null, 'lGA', lGA);
        xsltProc.setParameter(null, 'appType', appType);
        xsltProc.setParameter(null, 'appStatus', appStatus);
        xsltProc.setParameter(null, 'functEvents', functEvents);

        xmlDoc = xsltProc.transformToDocument(xmlDoc);

        var serializer = new XMLSerializer();

        document.write(serializer.serializeToString(xmlDoc));
    }
    else {
        window.open('liquor_applications/browser_not_supported.asp', '_top');
    }
}
