/**
* @author RainChen @ Fri Jul 28 17:06:37 CST 2006
* @uses xajax file upload extend
* @access public
* @param null
* @return null
* @version 0.1 
*/
function xajax_extend()
{
    if(typeof(xajax) == 'undefined')
    {
        return false;
    }
    
    xajax.newSessionID = function()
    {
        var sessionID;
        sessionID = new String(new Date().getTime());
        var random = new String(Math.random( )).substr(2);
        sessionID = sessionID + random;
        return sessionID;
    }
    
    xajax.setStatusMessages = function(msg)
    {
        window.status = msg;
    }
    
    var loadingTimeout;

    xajax.upload = function(rpcFunc,formID,url)
    {
        //alert(rpcFunc + " | " + formID + " | " + divID + " | " + field1Id + " | " + field2Id + " | " + url);
        var form = xajax.$(formID);
        if(!form)
        {
            return false;
        }
        var newSessionID = xajax.newSessionID();
        // init status
        if (document.body && xajaxWaitCursor)
            document.body.style.cursor = 'wait';
        if (xajaxStatusMessages == true) xajax.setStatusMessages('Sending Request...');
        clearTimeout(loadingTimeout);
        loadingTimeout = setTimeout("xajax.loadingFunction();",400);
        if (xajaxDebug) xajax.DebugMessage("Starting xajax...");
        if(!url)
        {
            url = xajaxRequestUri;
        }
        var separator = '?';
        if(url.indexOf('?') != -1)separator = '&';
        url += separator + 'xajax='+encodeURIComponent(rpcFunc);
        url += "&xajaxr=" + new Date().getTime();
        // get the upload file local path
        var formItem;
        var nodeName;
        for(var i=0; i<form.getElementsByTagName('input').length; i++)
        {
            formItem = form.elements[i];
            nodeName = new String(formItem.nodeName).toLowerCase();
            if(formItem.name == '' || nodeName == 'button')
            {
                continue;
            }
            if(formItem.type == 'file')
            {
                url += '&'+formItem.name+'='+encodeURIComponent(formItem.value);
            }
            if(formItem.type == 'hidden')
            {
                url += '&'+formItem.name+'='+encodeURIComponent(formItem.value);
            }
        }
        form.action = url;
        //alert( url );
        var iframeName = form.id + newSessionID;
        var iframe;
        if((iframe = xajax.$(iframeName)))
        {
            document.body.removeChild(iframe);
        }
        iframe = xajax.createIframe(iframeName,iframeName);
        form.target = iframeName;
        var xmlDoc;
        var responseXML;
        if(typeof iframe.onreadystatechange == 'object') // for IE
        {
            iframe.onreadystatechange = function()
            {
                if(iframe.readyState == 'complete' && !iframe.loaded)
                {
                    // IE load twice (bug or feature?)
                    iframe.loaded = true;
                    xmlDoc = document.frames(iframe.id);
                    if(xmlDoc.window.document.location != iframe.src)
                    {
                        responseXML = xmlDoc.window.document.XMLDocument;
                        xajax.uploadResponse(responseXML,iframe, xmlDoc);
                    }
                }
            }
        }
        else // for FF
        {
            iframe.onload = function()
            {
                xmlDoc = iframe.contentWindow;
                alert(iframe.contentWindow.name);
                alert(xmlDoc.window.document.location + " | " +  iframe.src);
                if(xmlDoc.window.document.location != iframe.src)
                {
					// my share - must be something different than iframe elso no fully functional
			        //var iframe1 = xajax.createIframe('xajax_stub_iframe','xajax_stub_iframe');
					// transfering problem - form problem
					//xajax_FormOriginalCopy(divID,formID,field1Id,field2Id);
					// orig code
                    responseXML = xmlDoc.document;
                    xajax.uploadResponse(responseXML,iframe, xmlDoc);
                }
            }
        }
    }
    
    xajax.uploadResponse = function(responseXML,iframeObj, xmlDoc)
    {
        // doit on the old way ...
		alert(responseXML);
		xml = responseXML.documentElement;
		alert(xml);
		if (xml == null)
		{
			return;        
		}
		
		for (var i=0; i<xml.childNodes.length; i++)
		{
			alert( xml.childNodes[i].nodeName );
			if (xml.childNodes[i].nodeName == "cmd")
			{
				var callargs = new Object();
				
				for (var j=0; j<xml.childNodes[i].attributes.length; j++)
				{
					if (xml.childNodes[i].attributes[j].name == "n")
					{
						callargs.cmd = xml.childNodes[i].attributes[j].value;
					}
					else if (xml.childNodes[i].attributes[j].name == "t")
					{
						callargs.id = xml.childNodes[i].attributes[j].value;
					}
					else if (xml.childNodes[i].attributes[j].name == "p")
					{
						callargs.property = xml.childNodes[i].attributes[j].value;
					}
					else if (xml.childNodes[i].attributes[j].name == "c")
					{
						callargs.type = xml.childNodes[i].attributes[j].value;
					}
				} 
				
				if (xml.childNodes[i].childNodes.length > 1 && xml.childNodes[i].firstChild.nodeName == "#cdata-section")
				{
					callargs.data = "";
					for (var j=0; j<xml.childNodes[i].childNodes.length; j++)
					{
						callargs.data += xml.childNodes[i].childNodes[j].data;
					}
				}
				else if (xml.childNodes[i].firstChild && xml.childNodes[i].firstChild.nodeName == 'xjxobj') {
					callargs.data = xajax._nodeToObject(xml.childNodes[i].firstChild);
					callargs.objElement = "XJX_SKIP";
				}
				else if (xml.childNodes[i].childNodes.length > 1)
				{
					for (var j=0; j<xml.childNodes[i].childNodes.length; j++)
					{
						if (xml.childNodes[i].childNodes[j].childNodes.length > 1 && xml.childNodes[i].childNodes[j].firstChild.nodeName == "#cdata-section")
						{
							var internalData = "";
							for (var k=0; k<xml.childNodes[i].childNodes[j].childNodes.length;k++)
							{
								internalData+=xml.childNodes[i].childNodes[j].childNodes[k].nodeValue;
							}
						} else {
							var internalData = xml.childNodes[i].childNodes[j].firstChild.nodeValue;
						}
					
						if (xml.childNodes[i].childNodes[j].nodeName == "s")
						{
							callargs.search = internalData;
						}
						if (xml.childNodes[i].childNodes[j].nodeName == "r")
						{
							callargs.data = internalData;
						}
					}
				}
				else if (xml.childNodes[i].firstChild)
				{
					callargs.data = xml.childNodes[i].firstChild.nodeValue;
				}
				else
				{
					callargs.data = "";				
				}
				if (callargs.objElement != "XJX_SKIP") callargs.objElement = xajax.$(callargs.id);
				
				//xajax.commands[callargs.cmd](callargs);
				alert("Call ["+ callargs.cmd + "] arg=[" +callargs.data +"]");
				var cmd=callargs.cmd;
				var data=callargs.data;
var cmdFullname;
try{if(cmd=="cc"){cmdFullname="addConfirmCommands";var confirmResult=confirm(data);if(!confirmResult){skipCommands=id;}
}
if(cmd=="al"){cmdFullname="addAlert";alert(data);}
else if(cmd=="js"){cmdFullname="addScript/addRedirect";alert(data);eval(data);}
else if(cmd=="jc"){cmdFullname="addScriptCall";var scr=id+'(';if(data[0]!=null){scr+='data[0]';for(var l=1;l<data.length;l++){scr+=',data['+l+']';}
}
scr+=');';eval(scr);}
else if(cmd=="in"){cmdFullname="addIncludeScript";this.include(data);}
else if(cmd=="as"){cmdFullname="addAssign/addClear";if(this.willChange(id,property,data)){eval("objElement."+property+"=data;");}
}
else if(cmd=="ap"){cmdFullname="addAppend";eval("objElement."+property+"+=data;");}
else if(cmd=="pp"){cmdFullname="addPrepend";eval("objElement."+property+"=data+objElement."+property);}
else if(cmd=="rp"){cmdFullname="addReplace";this.replace(id,property,search,data)
}
else if(cmd=="rm"){cmdFullname="addRemove";this.remove(id);}
else if(cmd=="ce"){cmdFullname="addCreate";this.create(id,data,property);}
else if(cmd=="ie"){cmdFullname="addInsert";this.insert(id,data,property);}
else if(cmd=="ia"){cmdFullname="addInsertAfter";this.insertAfter(id,data,property);}
else if(cmd=="ci"){cmdFullname="addCreateInput";this.createInput(id,type,data,property);}
else if(cmd=="ii"){cmdFullname="addInsertInput";this.insertInput(id,type,data,property);}
else if(cmd=="iia"){cmdFullname="addInsertInputAfter";this.insertInputAfter(id,type,data,property);}
else if(cmd=="ev"){cmdFullname="addEvent";property=this.addOnPrefix(property);eval("this.$('"+id+"')."+property+"= function(){"+data+";}");}
else if(cmd=="ah"){cmdFullname="addHandler";this.addHandler(id,property,data);}
else if(cmd=="rh"){cmdFullname="addRemoveHandler";this.removeHandler(id,property,data);}
}
catch(e){}
				
			}
		}
        
        document.body.style.cursor = 'default';
        setTimeout("xajax.deleteIframe('"+iframeObj.name+"');",400);
        iframeObj = null;
    }
    xajax.deleteIframe = function(iframeName)
    {
        if((iframe = xajax.$(iframeName)))
        {
            document.body.removeChild(iframe);
        }
    }    
    xajax.createIframe = function(name,id)
    {
        var iframe;
        if(!id)
        {
            id = '';
        }
        if(document.all && navigator.appName == "Microsoft Internet Explorer") // for IE
        {
            iframe = document.createElement('<iframe id="'+id+'" name="'+name+'">');
        }
        else // for FF
        {
        	alert("Create Iframe FF");
            iframe = document.createElement('iframe');
            iframe.id = id;
            iframe.name = name;
        }
        iframe.width = '0';
        iframe.height = '0';
        iframe.style.display = 'none';
        iframe.scrolling = 'no';
        iframe.src = 'about:blank';
        document.body.appendChild(iframe);
        return iframe;
    }
}
xajax_extend();