/*
 * IntelliMaker ajax engine
 * Based on script by Frederico Caldeira Knabben Copyright (C) 2003-2005 
 * 
 * Licensed under the terms of the GNU Lesser General Public License:
 * 		http://www.opensource.org/licenses/lgpl-license.php
 * 
 * For further information visit:
 * 		http://www.fckeditor.net/
 * 
 * 
 * File Name: imajax.js
 */

/*
Classe imXml
Si occupa di gestire la richiesta XML che il client fa al server
*/
var mypagefoxajax = ''; 

function closeDivErrMsgAjax(myname){
   // alert('qui: ' + myname);
    //document.getElementById(myname).style.display='none';
    switch(mypagefoxajax){
        case 'act_newide_albero.aspx':
            if (document.getElementById('loadingDiv')){
                document.getElementById('loadingDiv').style.display = 'none'; 
	            document.getElementById('loadingDiv').style.visibility = 'hidden';               			
	        }
            break;				        
    }
}

function createDivErrMsgAjax(msg){
    var str = '';
//    var today = new Date();
//    var myname = today.getTime();
//    str +=  '<div id="' + myname +'" style="position:absolute;top:100px;left:100px;">\n';
//    str +=  '<table width="479" border="0" cellspacing="0" cellpadding="0">\n';
//    str +=  '<form id="form1" name="form1" method="post" action="">\n';
//    str +=  '<tr>\n';
//    str +=  '<td width="5"><img src="/images/ajaxerr/ajaxerr1.gif" width="5" height="20" /></td>\n';
//    str +=  '<td width="469" background="/images/ajaxerr/ajaxerr2.gif"><strong>Error</strong></td>\n';
//    str +=  '<td width="5"><img src="/images/ajaxerr/ajaxerr3.gif" width="5" height="20" /></td>\n';
//    str +=  '</tr>\n';
//    str +=  '<tr>\n';
//    str +=  '<td><img src="/images/ajaxerr/ajaxerr4.gif" width="5" height="101" /></td>\n';
//    str +=  '<td align="center" background="/images/ajaxerr/ajaxerr5.gif"><table width="85%" border="0" cellspacing="0" cellpadding="0">\n';
//    str +=  '  <tr>\n';
//    str +=  '    <td width="90"><img src="/images/ajaxerr/icon_noconnect.png" alt="No Connection" width="64" height="56" /></td>\n';
//    str +=  '    <td width="309"><p>' + msg + '<br />\n';
//    str +=  '    </p>\n';
//    str +=  '         <div align="right"><input type="button" name="button" id="button" value="Close" onclick="closeDivErrMsgAjax(\'' + myname + '\');return false;" /></div>\n';
//    str +=  '      </td>\n';
//    str +=  '  </tr>\n';
//    str +=  '</table></td>\n';
//    str +=  '<td><img src="/images/ajaxerr/ajaxerr6.gif" width="5" height="101" /></td>\n';
//    str +=  '</tr>\n';
//    str +=  '<tr>\n';
//    str +=  '<td><img src="/images/ajaxerr/ajaxerr7.gif" width="5" height="5" /></td>\n';
//    str +=  '<td background="/images/ajaxerr/ajaxerr8.gif"><img src="/images/ajaxerr/ajaxerr8.gif" width="1" height="5" /></td>\n';
//    str +=  '<td><img src="/images/ajaxerr/ajaxerr9.gif" width="5" height="5" /></td>\n';
//    str +=  '</tr></form>\n';
//    str +=  '</table>\n';
//    str +=  '</div>\n';
	alert(msg);
	closeDivErrMsgAjax('noname');
    //document.body.innerHTML += str;
}

var imXml = function()
{
 var CallBack;  
}

imXml.prototype.GetHttpRequest = function()
{
	if ( window.XMLHttpRequest )		// Gecko
		return new XMLHttpRequest() ;
	else if ( window.ActiveXObject )	// IE
		return new ActiveXObject("MsXml2.XmlHttp") ;
}

imXml.prototype.LoadUrl = function( urlToCall, asyncFunctionPointer )
{
	
}

//function rifletti(myobj){
//        var lis = '';
//        for(var i in myobj) lis += i + ' -> '+ myobj[i] + '\n';
//        return lis;
//    }

// This the handler for the Web request completed event
// that is used to display return data.

imXml.prototype.SelectNodes = function( xpath )//xml
{
	if ( document.all )		// IE
		return this.DOMDocument.selectNodes( xpath ) ;
	else					// Gecko
	{
		var aNodeArray = new Array();

		var xPathResult = this.DOMDocument.evaluate( xpath, this.DOMDocument, 
				this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), XPathResult.ORDERED_NODE_ITERATOR_TYPE, null) ;
		if ( xPathResult ) 
		{
			var oNode = xPathResult.iterateNext() ;
 			while( oNode )
 			{
 				aNodeArray[aNodeArray.length] = oNode ;
 				oNode = xPathResult.iterateNext();
 			}
		} 
		return aNodeArray ;
	}
}

imXml.prototype.SelectSingleNode = function( xpath ) //xml
{
	//alert(xpath);
	if ( document.all )		// IE
		return this.DOMDocument.selectSingleNode( xpath ) ;
	else					// Gecko
	{
		var xPathResult = this.DOMDocument.evaluate( xpath, this.DOMDocument,
				this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), 9, null);//alert('xPathResult' + xPathResult);

		if ( xPathResult && xPathResult.singleNodeValue )
			return xPathResult.singleNodeValue ;
		else	
			return null ;
	}
}



/*
* Classe Connector
* chiama il comando sul server e passa il risultato ad una funzione di callback
* contiene anche i metodi per gli errori
*/


function Connector(){//connection
        this.init();
};

Connector.prototype.init = function(){ //connection
	//Url sul server del risponditore ai comandi
	var sConnUrl = '/imajax/Server/comandi.aspx'

	// Gecko has some problems when using relative URLs (not starting with slash).
	//if ( sConnUrl.substr(0,1) != '/' && sConnUrl.indexOf( '://' ) < 0 )
	//	sConnUrl = window.location.href.replace( /browser.html.*$/, '' ) + sConnUrl ;

	Connector.prototype.ConnectorUrl = sConnUrl + ( sConnUrl.indexOf('?') != -1 ? '&' : '?' ) ;
}
	
Connector.prototype.SendCommand = function( command, params, callBackFunction ) //connection
{
	var urlToCall = this.ConnectorUrl + 'Command=' + command ;
	
	if ( params ) urlToCall += '&' + params ;

	if ( callBackFunction ){
	
        var arrUrl = urlToCall.split('?');
        var theUrl = arrUrl[0];
        var thePars = (arrUrl.length<2)?null:arrUrl[1];
    	
        var request = new Sys.Net.WebRequest();
        request.set_url("/imajax/Server/comandi.aspx");
        request.set_httpVerb('POST');
        var body = thePars;
        request.set_body(body);
        //request.get_headers('Content-Type', 'application/x-www-form-urlencoded');
        request.add_completed(callBackFunction);
        request.invoke();
    }
}

Connector.prototype.CheckError = function( responseXml ) //connection
{
	//alert(rifletti(responseXml));
	var iErrorNumber = 0
	var oErrorNode = responseXml.SelectSingleNode( 'Comando/Error' ) ;
	if ( oErrorNode )
	{
		iErrorNumber = parseInt( oErrorNode.attributes.getNamedItem('number').value ) ;
		switch ( iErrorNumber )
		{
			case 0 :
				break ;
			case 1 :	// Custom error. Message placed in the "text" attribute.
				alert( oErrorNode.attributes.getNamedItem('text').value ) ;
				break ;
		}
	}
	return iErrorNumber ;
}


