﻿var xajaxRequestUri="/co-mment/comment.php";
var xajaxDebug=false;
var xajaxStatusMessages=false;
var xajaxWaitCursor=false;
var xajaxDefinedGet=0;
var xajaxDefinedPost=1;

function showCount()
{
    return xajax.call("getCommentCountByBlogId", arguments,1);
}

function changeCommentsVisibity(blogid, blogTitle, blogUrl, authorEmail, authorName, publishTime)  //改变某blog对应div的显示状态
//function changeCommentsVisibity(blogid)  //改变某blog对应div的显示状态
{
	var panComments = document.getElementById("panComments_" + blogid); //获得需要操作的div对象本身
  	var lnkShow     = document.getElementById("lnkShow_" + blogid); //获得链接
  	var count       = document.getElementById("count" + blogid); //获得链接

    //eval("var count"+blogid=document.getElementById("count" + blogid));

	if (panComments != null)
	{
		if (panComments.style.display != "none") //现在显示中
		{
			lnkShow.innerHTML = "关闭中...";
			hideComments(blogid);
			showCount(blogid,"count"+blogid);  //这句话在FF下面不执行
		}
		else //现在隐藏中，开始显示
		{
            //hideAllDiv();
			lnkShow.innerHTML = "载入中...";
			//showComments(blogid);
            showComments(blogid, blogTitle, blogUrl, authorEmail, authorName, publishTime);
            //showComments(arguments);
			lnkShow.innerHTML = "关闭回复";
		}
	}
	return false;
}


//function showComments(blogid)  //显示某blog对应div，并将链接文字更改
function showComments(blogid, blogTitle, blogUrl, authorEmail, authorName, publishTime) 
//function showComments() 
{
  	var panComments = document.getElementById("panComments_" + blogid);
    panComments.style.display = "";
    return xajax.call("getCommentsByBlogId", arguments, 1);
}
function getCommentCount(blogUrl)
{
    return xajax.call("getCommentCountByBlogUrl", arguments, 1);
}


function hideComments(blogid)  //隐藏某blogid对应div
{
	var panComments = document.getElementById("panComments_" + blogid);
	if (panComments != null)//如果div状态为显示，那么执行后面的部分
	{
		panComments.style.display = "none";         //隐藏div
	}
}

function showformbox(formid) //显示输入框
{
    document.getElementById("form-hide-" + formid).style.display="block";
    document.getElementById("comment-input-" + formid).style.height="120px";
    //document.getElementById("comments_form-" + formid).style.height="322px";
}

function addComment()
{
    return xajax.call("addComment", arguments, 1);
}

function addCommentById(blogid)
{
    var form = document.getElementById("comments_form-"+blogid);
	if (!checkForm(form))
	{
		return;
	}
	document.getElementById("post" + blogid).style.backgroundPosition="0px -50px";

    addComment(xajax.getFormValues("comments_form-"+blogid,true));
    return false;
}




function friendroll(num)//1是index页面，10是item页面，(item回复数>15)显示最新友情网址
{
    if (num == 1) 
	{
		var MonthlyCountShow = document.getElementById("friendrolllist"); //获得写入点
		var url;

		MonthlyCountShow.innerHTML = "<ul><li>初始中...</li><li>初始中...</li></ul>";
		document.getElementById("friendroll").style.display="block";//显示该模块
        return xajax.call("getFriendRoll", arguments,1);

	}
}

function ShowNewComments(num) //1是index页面，10是item页面，(item回复数>8)显示最新回复栏目
{
	if (num == 1) 
	{
		var nc = document.getElementById("NewCommentsList"); //获得写入点，回复的汉字数应该在28字左右截断
        document.getElementById("nncc").style.display="block";//显示该模块
		nc.style.display = "block";
		//nc.innerHTML = xmlhttp.responseText; 

        return xajax.call("getNewCommentsList",arguments,1);
	}
}





//====================================================================

function checkForm(form)
{
	//检查填写信息
	var ErrCount, ErrMsg;
	var TempCheckResult;

	var ErrHead = new Array();
	ErrHead[0] = "老大";
	ErrHead[1] = "还有";
	ErrHead[2] = "对了";

	ErrCount = 0;
	ErrMsg = "";

	var blogid  = HtmlEncode(form.blogid.value);
	var name    = HtmlEncode(form.name.value);
	var email   = HtmlEncode(form.email.value);
	var url     = HtmlEncode(form.url.value);
	var content = HtmlEncode(form.comment.value);

	TempCheckResult = CheckName(name);
	if (TempCheckResult != "")
	{
		ErrMsg = ErrMsg + ErrHead[ErrCount] + "，" + TempCheckResult + "。"
		ErrCount = ErrCount + 1
	}
		
	TempCheckResult = CheckEmail(email);
	if (TempCheckResult != "")
	{
		ErrMsg = ErrMsg + ErrHead[ErrCount] + "，" + TempCheckResult + "。"
		ErrCount = ErrCount + 1
	}
		
	TempCheckResult = CheckComment(content);
	if (TempCheckResult != "")
	{
		ErrMsg = ErrMsg + ErrHead[ErrCount] + "，" + TempCheckResult + "。"
		ErrCount = ErrCount + 1
	}
		
	var panMsg = document.getElementById("panMsg_" + blogid);
       if (ErrMsg != "")
       {
               if (panMsg != null)
               {
                       panMsg.innerHTML = ErrMsg;
               }
               else
               {
                       //alert(ErrMsg);
               }
               return false;
       }
	else
	{
		if (panMsg != null)
			panMsg.innerHTML = "";
	}
	return true;
}

function HtmlEncode(text)
{
   return text.replace('&', '&amp;').replace('<','&lt;').replace('>', '&gt;').replace('"', '&quot;');
}

function HtmlDecode(text)
{
   return text.replace('&lt;', '<').replace('&gt;', '>').replace('&quot;', '"').replace('&amp;', '&');
}

function CheckEmail(Email) //检查Email合法性。返回值为空则正常，否则为错误描述
{
	var ErrMsg;
	ErrMsg = "";

	Email = Email.replace(/^\s/, '').replace(/\s$/, '');


	if (Email.length <= 0)
		ErrMsg = "留下Email吧";
	else
	{
		var regEx, Match, Matches;   // Create variable.
		regEx = /^[a-z0-9_\-.]+@([a-z0-9|_\-]+\.)+((com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum|co)|([a-z]{2}))$/i;
		if (!regEx.test(Email))
		{
			ErrMsg = "您的Email我怎么认不出来涅";
		}
	}

	return ErrMsg;
}

function CheckName(Name) //检查名字合法性，包括长度不得大于50。返回值为空则正常，否则为错误描述
{
	var ErrMsg;
	ErrMsg = "";

	Name = Name.replace(/^\s/, '').replace(/\s$/, '');
	if (Name.length > 50)
		ErrMsg = "名字太长了";
	

	if (Name.length <= 0)
		ErrMsg = "好歹留个名字吧";

	return ErrMsg;
}

function CheckComment(Comment) //检查内容合法性。返回值为空则正常，否则为错误描述
{
	var ErrMsg;
	ErrMsg = "";

	Comment = Comment.replace(/^\s/, '').replace(/\s$/, '');
	if (Comment.length <= 0)
		ErrMsg = "您到底要说什么呢";

	return ErrMsg;
}



/********************* xajax ********************/
/* xajax Javascript library :: version 0.2.4 */
Array.prototype.containsValue=function(valueToCheck)
{
	for(var i=0;i<this.length;i++)
	{
		if(this[i]==valueToCheck)
			return true;
	}
	return false;
}

function Xajax()
{
	this.DebugMessage=function(text)
	{
		if(text.length > 1000)
			text=text.substr(0,1000)+"...\n[long response]\n...";
		try
		{
			if(this.debugWindow==undefined||this.debugWindow.closed==true)
			{
				this.debugWindow=window.open('about:blank','xajax-debug','width=800,height=600,scrollbars=1,resizable,status');
				this.debugWindow.document.write('<html><head><title>Xajax debug output</title></head><body><h2>Xajax debug output</h2><div id="debugTag"></div></body></html>');
			}
			text=text.replace(/&/g,"&amp;");
			text=text.replace(/</g,"&lt;");
			text=text.replace(/>/g,"&gt;");
			debugTag=this.debugWindow.document.getElementById('debugTag');
			debugTag.innerHTML=('<b>'+(new Date()).toString()+'</b>: '+text+'<hr/>')+debugTag.innerHTML;
		}
		catch(e)
		{
			//alert("Xajax Debug:\n "+text);
		}
	};
	
	this.workId='xajaxWork'+new Date().getTime();
	this.depth=0;
	this.responseErrorsForAlert=["400","401","402","403","404","500","501","502","503"];

	this.getRequestObject=function()
	{
		if(xajaxDebug)
			this.DebugMessage("Initializing Request Object..");

		var req=null;
		if(typeof XMLHttpRequest!="undefined")
			req=new XMLHttpRequest();

		if(!req&&typeof ActiveXObject!="undefined")
		{
			try
			{
				req=new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch(e)
			{
				try
				{
					req=new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch(e2)
				{
					try
					{
						req=new ActiveXObject("Msxml2.XMLHTTP.4.0");
					}
					catch(e3)
					{
						req=null;
					}
				}
			}
		}

		if(!req&&window.createRequest)
			req=window.createRequest();
		
		if(!req)
			this.DebugMessage("Request Object Instantiation failed.");

		return req;
	}

	this.$=function(sId)
	{
		if(!sId)
		{
			return null;
		}

		var returnObj=document.getElementById(sId);
		
		if(!returnObj&&document.all)
		{
			returnObj=document.all[sId];
		}

		if(xajaxDebug&&!returnObj&&sId!=this.workId)
		{
			this.DebugMessage("Element with the id \""+sId+"\" not found.");
		}

		return returnObj;
	}

	this.include=function(sFileName)
	{
		var objHead=document.getElementsByTagName('head');
		var objScript=document.createElement('script');
		objScript.type='text/javascript';
		objScript.src=sFileName;
		objHead[0].appendChild(objScript);
	}

	this.stripOnPrefix=function(sEventName)
	{
		sEventName=sEventName.toLowerCase();
		if(sEventName.indexOf('on')==0)
		{
			sEventName=sEventName.replace(/on/,'');
		}
		return sEventName;
	}

	this.addOnPrefix=function(sEventName)
	{
		sEventName=sEventName.toLowerCase();
		if(sEventName.indexOf('on')!=0)
		{
			sEventName='on'+sEventName;
		}
		return sEventName;
	}

	this.addHandler=function(sElementId,sEvent,sFunctionName)
	{
		if(window.addEventListener)
		{
			sEvent=this.stripOnPrefix(sEvent);
			eval("this.$('"+sElementId+"').addEventListener('"+sEvent+"',"+sFunctionName+",false);");
		}
		else
		{
			sAltEvent=this.addOnPrefix(sEvent);
			eval("this.$('"+sElementId+"').attachEvent('"+sAltEvent+"',"+sFunctionName+",false);");
		}
	}

	this.removeHandler=function(sElementId,sEvent,sFunctionName)
	{
		if(window.addEventListener)
		{
			sEvent=this.stripOnPrefix(sEvent);
			eval("this.$('"+sElementId+"').removeEventListener('"+sEvent+"',"+sFunctionName+",false);");
		}
		else
		{
			sAltEvent=this.addOnPrefix(sEvent);
			eval("this.$('"+sElementId+"').detachEvent('"+sAltEvent+"',"+sFunctionName+",false);");
		}
	}
	
	this.create=function(sParentId,sTag,sId)
	{
		var objParent=this.$(sParentId);
		objElement=document.createElement(sTag);
		objElement.setAttribute('id',sId);

		if(objParent)
			objParent.appendChild(objElement);
	}

	this.insert=function(sBeforeId,sTag,sId)
	{
		var objSibling=this.$(sBeforeId);
		objElement=document.createElement(sTag);
		objElement.setAttribute('id',sId);
		objSibling.parentNode.insertBefore(objElement,objSibling);
	}

	this.insertAfter=function(sAfterId,sTag,sId)
	{
		var objSibling=this.$(sAfterId);
		objElement=document.createElement(sTag);
		objElement.setAttribute('id',sId);
		objSibling.parentNode.insertBefore(objElement,objSibling.nextSibling);
	}

	this.getInput=function(sType,sName,sId)
	{
		var Obj;
		if(!window.addEventListener)
		{
			Obj=document.createElement('<input type="'+sType+'" id="'+sId+'" name="'+sName+'">');
		}
		else
		{
			Obj=document.createElement('input');
			Obj.setAttribute('type',sType);
			Obj.setAttribute('name',sName);
			Obj.setAttribute('id',sId);
		}
		return Obj;
	}

	this.createInput=function(sParentId,sType,sName,sId)
	{
		var objParent=this.$(sParentId);
		var objElement=this.getInput(sType,sName,sId);

		if(objParent&&objElement)
			objParent.appendChild(objElement);
	}

	this.insertInput=function(sBeforeId,sType,sName,sId)
	{
		var objSibling=this.$(sBeforeId);
		var objElement=this.getInput(sType,sName,sId);

		if(objElement&&objSibling&&objSibling.parentNode)
			objSibling.parentNode.insertBefore(objElement,objSibling);
	}

	this.insertInputAfter=function(sAfterId,sType,sName,sId)
	{
		var objSibling=this.$(sAfterId);
		var objElement=this.getInput(sType,sName,sId);
		if(objElement&&objSibling&&objSibling.parentNode)
		{
			objSibling.parentNode.insertBefore(objElement,objSibling.nextSibling);
		}
	}

	this.remove=function(sId)
	{
		objElement=this.$(sId);
		if(objElement&&objElement.parentNode&&objElement.parentNode.removeChild)
		{
			objElement.parentNode.removeChild(objElement);
		}
	}

	this.replace=function(sId,sAttribute,sSearch,sReplace)
	{
		var bFunction=false;
		if(sAttribute=="innerHTML")
			sSearch=this.getBrowserHTML(sSearch);
		
		eval("var txt=this.$('"+sId+"')."+sAttribute);

		if(typeof txt=="function")
		{
			txt=txt.toString();
			bFunction=true;
		}

		if(txt.indexOf(sSearch)>-1)
		{
			var newTxt='';
			while(txt.indexOf(sSearch)>-1)
			{
				x=txt.indexOf(sSearch)+sSearch.length+1;
				newTxt+=txt.substr(0,x).replace(sSearch,sReplace);
				txt=txt.substr(x,txt.length-x);
			}

			newTxt+=txt;

			if(bFunction)
			{
				eval('this.$("'+sId+'").'+sAttribute+'=newTxt;');
			}
			else if(this.willChange(sId,sAttribute,newTxt))
			{
				eval('this.$("'+sId+'").'+sAttribute+'=newTxt;');
			}
		}
	}

	this.getFormValues=function(frm)
	{
		var objForm;
		var submitDisabledElements=false;

		if(arguments.length > 1&&arguments[1]==true)
			submitDisabledElements=true;

		var prefix="";

		if(arguments.length > 2)
			prefix=arguments[2];
		
		if(typeof(frm)=="string")
			objForm=this.$(frm);
		else
			objForm=frm;
		
		var sXml="<xjxquery><q>";
		
		if(objForm&&objForm.tagName=='FORM')
		{
			var formElements=objForm.elements;
			for(var i=0;i < formElements.length;i++)
			{
				if(!formElements[i].name)
					continue;
				
				if(formElements[i].name.substring(0,prefix.length)!=prefix)
					continue;
				
				if(formElements[i].type&&(formElements[i].type=='radio'||formElements[i].type=='checkbox')&&formElements[i].checked==false)
					continue;
				
				if(formElements[i].disabled&&formElements[i].disabled==true&&submitDisabledElements==false)
					continue;
				
				var name=formElements[i].name;
				if(name)
				{
					if(sXml!='<xjxquery><q>')
						sXml+='&';

					if(formElements[i].type=='select-multiple')
					{
						for(var j=0;j < formElements[i].length;j++)
						{
							if(formElements[i].options[j].selected==true)
								sXml+=name+"="+encodeURIComponent(formElements[i].options[j].value)+"&";
						}
					}
					else
					{
						sXml+=name+"="+encodeURIComponent(formElements[i].value);
					}
				}
			}
		}
		sXml+="</q></xjxquery>";return sXml;
	}

	this.objectToXML=function(obj)
	{
		var sXml="<xjxobj>";
		for(i in obj)
		{
			try
			{
				if(i=='constructor')
					continue;
				
				if(obj[i]&&typeof(obj[i])=='function')
					continue;
				
				var key=i;
				var value=obj[i];

				if(value&&typeof(value)=="object"&&this.depth <=50)
				{
					this.depth++;
					value=this.objectToXML(value);
					this.depth--;
				}

				sXml+="<e><k>"+key+"</k><v>"+value+"</v></e>";
			}
			catch(e)
			{
				if(xajaxDebug)
					this.DebugMessage(e.name+": "+e.message);
			}
		}

		sXml+="</xjxobj>";
		return sXml;
	}

	this._nodeToObject=function(node)
	{
		if(node.nodeName=='#cdata-section')
		{
			var data="";
			for(var j=0;j<node.parentNode.childNodes.length;j++)
			{
				data+=node.parentNode.childNodes[j].data;
			}
			return data;
		}
		else if(node.nodeName=='xjxobj')
		{
			var data=new Array();
			for(var j=0;j<node.childNodes.length;j++)
			{
				var child=node.childNodes[j];
				var key;
				var value;
				if(child.nodeName=='e')
				{
					for(var k=0;k<child.childNodes.length;k++)
					{
						if(child.childNodes[k].nodeName=='k')
						{
							key=child.childNodes[k].firstChild.data;
						}
						else if(child.childNodes[k].nodeName=='v')
						{
							value=this._nodeToObject(child.childNodes[k].firstChild);
						}
					}

					if(key!=null&&value!=null)
					{
						data[key]=value;key=value=null;
					}
				}
			}

			return data;
		}
	}

	this.loadingFunction=function(){};
	
	this.doneLoadingFunction=function(){};
	
	var loadingTimeout;

	this.call=function(sFunction,aArgs,sRequestType)
	{
		var i,r,postData;
		if(document.body&&xajaxWaitCursor)
			document.body.style.cursor='wait';

		if(xajaxStatusMessages==true)
			window.status='Sending Request...';

		clearTimeout(loadingTimeout);
		loadingTimeout=setTimeout("xajax.loadingFunction();",400);

		if(xajaxDebug)
			this.DebugMessage("Starting xajax...");
		
		if(sRequestType==null)
		{
			var xajaxRequestType=xajaxDefinedPost;
		}
		else
		{
			var xajaxRequestType=sRequestType;
		}

		var uri=xajaxRequestUri;
		var value;
		switch(xajaxRequestType)
		{
			case xajaxDefinedGet:
			{
				var uriGet=uri.indexOf("?")==-1?"?xajax="+encodeURIComponent(sFunction):"&xajax="+encodeURIComponent(sFunction);

				if(aArgs)
				{
					for(i=0;i<aArgs.length;i++)
					{
						value=aArgs[i];
						if(typeof(value)=="object")
							value=this.objectToXML(value);
						
						uriGet+="&xajaxargs[]="+encodeURIComponent(value);
					}
				}
				
				uriGet+="&xajaxr="+new Date().getTime();
				uri+=uriGet;
				postData=null;
			}
			break;
			
			case xajaxDefinedPost:
			{
				postData="xajax="+encodeURIComponent(sFunction);
				postData+="&xajaxr="+new Date().getTime();

				if(aArgs)
				{
					for(i=0;i <aArgs.length;i++)
					{
						value=aArgs[i];
						if(typeof(value)=="object")
							value=this.objectToXML(value);
						
						postData=postData+"&xajaxargs[]="+encodeURIComponent(value);
					}
				}
			}
			break;
			
			default:
				//alert("Illegal request type: "+xajaxRequestType);
				return false;
				break;
		}

		r=this.getRequestObject();

		if(!r)
			return false;

		r.open(xajaxRequestType==xajaxDefinedGet?"GET":"POST",uri,true);
		
		if(xajaxRequestType==xajaxDefinedPost)
		{
			try
			{
				r.setRequestHeader("Method","POST "+uri+" HTTP/1.1");
				r.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
			}
			catch(e)
			{
				//alert("Your browser does not appear to support asynchronous requests using POST.");
				return false;
			}
		}

		r.onreadystatechange=function()
		{
			 //if (document.readyState!="complete")
			 //}
			if (r.readyState!=4)
				return;

			if (r.status==200)
			{
				if(xajaxDebug)
					xajax.DebugMessage("Received:\n"+r.responseText);

				if(r.responseXML&&r.responseXML.documentElement)
					xajax.processResponse(r.responseXML);
				else
				{
					var errorString="Error: the XML response that was returned from the server is invalid.";
					errorString+="\nReceived:\n"+r.responseText;
					trimmedResponseText=r.responseText.replace(/^\s+/g,"");
					trimmedResponseText=trimmedResponseText.replace(/\s+$/g,"");

					if(trimmedResponseText!=r.responseText)
						errorString+="\nYou have whitespace in your response.";

					//alert(errorString);
					document.body.style.cursor='default';

					if(xajaxStatusMessages==true)
						window.status='Invalid XML response error';
				}
			}
			else
			{
				if(xajax.responseErrorsForAlert.containsValue(r.status))
				{
					var errorString="Error: the server returned the following HTTP status: "+r.status;errorString+="\nReceived:\n"+r.responseText;
					//alert(errorString);
				}

				document.body.style.cursor='default';
				if(xajaxStatusMessages==true)
					window.status='Invalid XML response error';
			}

			delete r;
			r=null;
		}

		if(xajaxDebug)
			this.DebugMessage("Calling "+sFunction+" uri="+uri+" (post:"+postData+")");
		
		r.send(postData);
		if(xajaxStatusMessages==true)
			window.status='Waiting for data...';
		
		delete r;
		return true;
	}

	this.getBrowserHTML=function(html)
	{
		tmpXajax=this.$(this.workId);
		if(!tmpXajax)
		{
			tmpXajax=document.createElement("div");
			tmpXajax.setAttribute('id',this.workId);
			tmpXajax.style.display="none";
			tmpXajax.style.visibility="hidden";
			document.body.appendChild(tmpXajax);
		}

		tmpXajax.innerHTML=html;
		var browserHTML=tmpXajax.innerHTML;
		tmpXajax.innerHTML='';
		return browserHTML;
	}

	this.willChange=function(element,attribute,newData)
	{
		if(!document.body)
		{
			return true;
		}

		if(attribute=="innerHTML")
		{
			newData=this.getBrowserHTML(newData);
		}

		elementObject=this.$(element);
		if(elementObject)
		{
			var oldData;
			eval("oldData=this.$('"+element+"')."+attribute);
			
			if(newData!==oldData)
				return true;
		}

		return false;
	}

	this.viewSource=function()
	{
		return "<html>"+document.getElementsByTagName("HTML")[0].innerHTML+"</html>";
	}
	
	this.processResponse=function(xml)
	{
		clearTimeout(loadingTimeout);
		this.doneLoadingFunction();

		if(xajaxStatusMessages==true)
			window.status='Processing...';
		
		var tmpXajax=null;
		xml=xml.documentElement;
		if(xml==null)
			return;
		
		var skipCommands=0;
		for(var i=0;i<xml.childNodes.length;i++)
		{
			if(skipCommands > 0)
			{
				skipCommands--;
				continue;
			}

			if(xml.childNodes[i].nodeName=="cmd")
			{
				var cmd;
				var id;
				var property;
				var data;
				var search;
				var type;
				var before;
				var objElement=null;

				for(var j=0;j<xml.childNodes[i].attributes.length;j++)
				{
					if(xml.childNodes[i].attributes[j].name=="n")
					{
						cmd=xml.childNodes[i].attributes[j].value;
					}
					else if(xml.childNodes[i].attributes[j].name=="t")
					{
						id=xml.childNodes[i].attributes[j].value;
					}
					else if(xml.childNodes[i].attributes[j].name=="p")
					{
						property=xml.childNodes[i].attributes[j].value;
					}
					else if(xml.childNodes[i].attributes[j].name=="c")
					{
						type=xml.childNodes[i].attributes[j].value;
					}
				}

				if(xml.childNodes[i].childNodes.length > 1&&xml.childNodes[i].firstChild.nodeName=="#cdata-section")
				{
					data="";
					for(var j=0;j<xml.childNodes[i].childNodes.length;j++)
					{
						data+=xml.childNodes[i].childNodes[j].data;
					}
				}
				else if(xml.childNodes[i].firstChild&&xml.childNodes[i].firstChild.nodeName=='xjxobj')
				{
					data=this._nodeToObject(xml.childNodes[i].firstChild);
					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")
						{
							search=internalData;
						}

						if(xml.childNodes[i].childNodes[j].nodeName=="r")
						{
							data=internalData;
						}
					}
				}
				else if(xml.childNodes[i].firstChild)
					data=xml.childNodes[i].firstChild.nodeValue;
				else
					data="";
				
				if(objElement!="XJX_SKIP")
					objElement=this.$(id);

				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";
						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)
				{
					//if(xajaxDebug)
						//alert("While trying to '"+cmdFullname+"' (command number "+i+"), the following error occured:\n"
						//	+e.name+": "+e.message+"\n"
						//	+(id&&!objElement?"Object with id='"+id+"' wasn't found.\n":""));
				}

				delete objElement;
				delete cmd;
				delete cmdFullname;
				delete id;
				delete property;
				delete search;
				delete data;
				delete type;
				delete before;
				delete internalData;
				delete j;
				delete k;
			}
		}

		delete xml;
		delete i;
		document.body.style.cursor='default';
		if(xajaxStatusMessages==true)
			window.status='Done';
	}
}

var xajax=new Xajax();
xajaxLoaded=true;


xajax.realCall = xajax.call;
xajax.call = function(sFunction, aArgs, sRequestType)
{
	var browser=navigator.appName;
	if (browser == "Microsoft Internet Explorer" && document.readyState != "complete")
	{
		window.setTimeout (function () { xajax.call(sFunction, aArgs, sRequestType); }, 100);
		return false;
	}
	return this.realCall(sFunction, aArgs, sRequestType);
}
//end