// JavaScript Document

function ajaxFetchPage(sourcePage, returnElement, dataType, numRows)
{

	new Ajax.Request(sourcePage,
	{
		method:'get',
		onSuccess: function(transport)
		{
			//var response = transport.responseText || "no response text";
			//alert("Success! \n\n" + response);
			//return parseXML( transport.responseText );
			//return transport.responseText;
			//return "I AM DEFINED!";
            //alert(transport.responseText);
            //alert(sourcePage);
			//parseXML( transport.responseText, returnElement, dataType, numRows);
            $(returnElement).innerHTML = transport.responseText;
		},
		onFailure: function()
		{
			//return "Unable to get XML feed";
		}
	});
}

function loadXMLFile(xmlFile)
{
	var xmlDoc;
	
	try //Internet Explorer
	{
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async="false";
		xmlDoc.load(xmlFile);
	}
	catch(e)
	{
		try //Firefox, Mozilla, Opera, etc.
		{
			//parser=new DOMParser();
			//xmlDoc=parser.load(xmlFile);
			xmlDoc=document.implementation.createDocument("","",null);
    		xmlDoc.async="false";
    		xmlDoc.load(xmlFile);
		}
			catch(e)
		{
			alert(e.message);
			return false;
		}
	}

	return xmlDoc;
}

function loadXMLString(xmlString)
{
	var xmlDoc;
	try //Internet Explorer
	{
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async="false";
		xmlDoc.loadXML(xmlString);
		return(xmlDoc); 
	}
	catch(e)
	{
		try //Firefox, Mozilla, Opera, etc.
		{
			parser=new DOMParser();
			xmlDoc=parser.parseFromString(xmlString,"text/xml");
			return(xmlDoc);
		}
		catch(e)
		{
			alert(e.message)
		}
	}
	return(null);
}


function parseXML(XMLText, returnElement, dataType, numRows)
{

    //Element.extend(xmlDoc);
    //alert(XMLText);
    
    var xmlDoc = loadXMLString(XMLText);

	var xslDoc;
	
	switch( dataType )
	{
	    case 1:
        	xslDoc = loadXMLFile("/js/sec_dir_pr.xml");
	    break;
	    case 2:
        	xslDoc = loadXMLFile("/js/sec_dir_fr.xml");
	    break;
	    default:
        	xslDoc = loadXMLFile("/js/sec_dir_pr.xml");
	    break;
	}

    //alert(xslDoc.xml);
    
	if (window.ActiveXObject)
	{
		resultDocument=xmlDoc.transformNode(xslDoc);
        $(returnElement).update( resultDocument );
		//alert(resultDocument);
		//document.innerHTML=ex;
	}
	// code for Mozilla, Firefox, Opera, etc.
	else if (document.implementation && document.implementation.createDocument)
	{
		xsltProcessor=new XSLTProcessor();
		xsltProcessor.importStylesheet(xslDoc, 'text/xml');
		resultDocument = xsltProcessor.transformToFragment(xmlDoc,document);
        //resultDocument = (new XMLSerializer()).serializeToString( resultDocument ); 
        //alert(resultDocument);
        $(returnElement).innerHTML = "";
        $(returnElement).innerHTML = resultDocument;

		/*
		while ($(returnElement).hasChildNodes()) 
        { 
            $(returnElement).RemoveChild($(returnElement).lastChild); 
        } 
        $(returnElement).appendChild(xsltProcessor.transformToFragment(xmlDoc,document));
		*/

        /*
		resultDocument = xsltProcessor.transformToFragment(xmlDoc,document);
        $(returnElement).innerHTML = "";
        $(returnElement).appendChild(resultDocument);
        */
		//alert( $(returnElement).innerHTML );
        
        /*
        resultDocument=xslTransform(xmlDoc, xslDoc);
        $(returnElement).innerHTML = "";
        $(returnElement).appendChild(resultDocument);
        */
        //alert(resultDocument);
		//alert( $(returnElement).innerHTML );
		//document.appendChild(resultDocument);
	}    
}

function serializeToString(xd)
{
    var r = '';
    try
    {
        if ( window.XMLSerializer )
        {
            var xs = new XMLSerializer();
            return xs.serializeToString(xd);
        }
        else if ( window.ActiveXObject )
        {
            return xd.xml;
        }
    }
    catch (e)
    {
        alert(e);
    }
    return r;
}


function xslTransform(xml, xsl)
{
    var r = '';
    try
    {
        if ( window.XSLTProcessor )
        {
            var xp = new XSLTProcessor();
            xp.importStylesheet(xsl, 'text/xsl'); 
            r = xp.transformToDocument(xml);
            r = serializeToString(r);
        }
        else if ( window.ActiveXObject )
        {
            r = xml.transformNode(xsl);
        }
    }
    catch(e)
    {
        alert(e);
    }
    //alert(": "+r+" : ");

    return r;
}