function AjaxRequest(url,options){var xmlHttpReq;var opts=options;if(window.XMLHttpRequest){xmlHttpReq=new XMLHttpRequest();if(xmlHttpReq.overrideMimeType){xmlHttpReq.overrideMimeType("text/html");}}
else if(window.ActiveXObject){try{xmlHttpReq=new ActiveXObject("Msxml2.XMLHTTP");}
catch(e){try{xmlHttpReq=new ActiveXObject("Microsoft.XMLHTTP");}
catch(e){try{xmlHttpReq=new XMLHttpRequest();}
catch(e){}}}}
var returnFunction=function(){if(xmlHttpReq.readyState==4){try{if(xmlHttpReq.status==200){if(opts.update){var el=jQuery.getOne(opts.update);el.innerHTML=xmlHttpReq.responseText;executeLoadedScript(el);}
if(opts.onComplete){opts.onComplete(xmlHttpReq,opts.returnArgs);}
AjaxUtil.remove(opts.ajaxId);}}
catch(e){}}};var send=function(url){var urlArray=url.split("?");var path=urlArray[0];var query=urlArray[1];try{if(opts.method=="get"){xmlHttpReq.open("GET",url,true);xmlHttpReq.onreadystatechange=returnFunction;xmlHttpReq.send("");}
else{xmlHttpReq.open("POST",path,true);xmlHttpReq.setRequestHeader("Method","POST "+path+" HTTP/1.1");xmlHttpReq.setRequestHeader("Content-Type","application/x-www-form-urlencoded");xmlHttpReq.onreadystatechange=returnFunction;xmlHttpReq.send(query);}}
catch(e){}};send(url);this.resend=function(url,options){opts=options;send(url);};this.getId=function(){return ajaxId;};this.cleanUp=function(){xmlHttpReq.onreadystatechange=function(){};returnFunction=null;returnArgs=null;xmlHttpReq=null;};}
var AjaxUtil={counter:1,requests:[],request:function(url,options){var opts=options||{};var ajaxId=(opts.reverseAjax)?0:AjaxUtil.getNextId();opts.ajaxId=ajaxId;var request;if(ajaxId==0&&AjaxUtil.requests[0]){request=AjaxUtil.requests[0];request.resend(url,opts);}
else{request=new AjaxRequest(url,opts);AjaxUtil.requests[ajaxId]=request;}
if(!opts.onComplete&&!opts.update){AjaxUtil.remove(ajaxId);}},submit:function(form,options){var url=form.action;var inputs=jQuery("input, textarea, select",form);var opts=options||{};var params=inputs.serialize();if(url.indexOf("?")==-1){url=url+"?"+params;}
if(url.lastIndexOf("?")==url.length-1){url=url+params;}
else{url=url+"&"+params;}
if(opts.disable){inputs.attr("disabled",true);}
AjaxUtil.request(url,opts);},update:function(url,id,options){var opts=options||{};opts.update=id;AjaxUtil.request(url,opts);},getNextId:function(){var id=AjaxUtil.counter++;if(AjaxUtil.counter>20){AjaxUtil.counter=1;}
return id;},remove:function(id){if(id){var request=AjaxUtil.requests[id];if(request){request.cleanUp();request=null;}}}};var ReverseAjax={initialize:function(){jQuery(window).bind('unload',ReverseAjax.release);ReverseAjax.request();},request:function(){AjaxUtil.request(themeDisplay.getPathMain()+"/portal/reverse_ajax",{onComplete:ReverseAjax.response,reverseAjax:true});},response:function(xmlHttpRequest){var res=Liferay.Util.toJSONObject(xmlHttpRequest.responseText);var status=res.status;if(status&&status!="failure"){if(status=="success"){if(res.chatMessages){Messaging.getChatsReturn(res.chatMessages);}
if(res.chatRoster){MessagingRoster.getEntriesReturn(res.chatRoster);}}
ReverseAjax.request();}},release:function(){AjaxUtil.request(themeDisplay.getPathMain()+"/portal/reverse_ajax?release=1",{reverseAjax:true});}};function executeLoadedScript(el){var scripts=el.getElementsByTagName("script");for(var i=0;i<scripts.length;i++){if(scripts[i].src){var head=document.getElementsByTagName("head")[0];var scriptObj=document.createElement("script");scriptObj.setAttribute("type","text/javascript");scriptObj.setAttribute("src",scripts[i].src);head.appendChild(scriptObj);}
else{try{if(Liferay.Browser.is_safari){eval(scripts[i].innerHTML);}
else if(Liferay.Browser.is_mozilla){eval(scripts[i].textContent);}
else{eval(scripts[i].text);}}
catch(e){}}}}
function loadPage(path,queryString,returnFunction,returnArgs){AjaxUtil.request(path+"?"+queryString,{onComplete:returnFunction,returnArgs:returnArgs});}
function printJSON(data){if(data&&data.id){var target=document.getElementById(data.id);if(target){target.innerHTML=data.toString();}}}