Rev 166 |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
/**
*
* AJAX Functions
*
* This code is protected under GNU LGPL License
*
* @author Jorge Machado
* @date April 2008
**/
/**
* Starts XMLHTTP Ajax request
*
* @author Jorge Machado
* @date April 2008
*
* params:
* @params HTTP GET Parameters for query string
* @xmlHttpRequest request
* @id target element
* @stateChanged target function
* @innerPhrase to put while waiting for response
* @navjsp requested jsp
*/
function startRequest(xmlHttpRequest,params,id,stateChanged,innerPhrase,navjsp)
{
var contentType = "application/x-www-form-urlencoded; charset=UTF-8";
if(innerPhrase != '')
getObjectById(id).innerHTML = innerPhrase;
if (xmlHttpRequest==null)
{
alert ("Browser does not support HTTP Request");
return;
}
var finalParams = "";
var url= navjsp;
if(params != null && params.length > 0)
{
//url=url+"?"+ params;
//url=url+"&sid="+Math.random();
url=url+"?sid="+Math.random();
var paramsArray = params.split("&");
var i;
var union = '';
for(i = 0; i < paramsArray.length; i++){
var parameter = paramsArray[i].split("=");
if(parameter.length == 2)
{
finalParams += union + parameter[0] + '=' + encodeURIComponent(parameter[1]);
union = '&';
}
}
}
else
{
url=url+"?sid="+Math.random();
}
xmlHttpRequest.onreadystatechange=stateChanged;
xmlHttpRequest.open("POST",url,true);
xmlHttpRequest.setRequestHeader("Content-Type", contentType);
xmlHttpRequest.send(finalParams);
}
/**
* Return an HTML element given ID
*
* @author Jorge Machado
* @date April 2008
*
* params:
* @objectId required object
*/
function getObjectById(objectId)
{
// cross-browser function to get an object's style object given its id
try
{
if(document.getElementById && document.getElementById(objectId))
{
// W3C DOM
return document.getElementById(objectId);
}
else if (document.all(objectId))
{
// MSIE 4 DOM
return document.all(objectId);
}
else if (document.layers && document.layers[objectId])
{
// NN 4 DOM.. note: this won't find nested layers
return document.layers[objectId];
}
else
{
return false;
}
}
catch(e)
{
return false;
}
}
function hide(id,showId)
{
getObjectById(id).style.visibility='hidden';
getObjectById(id).style.position='absolute';
getObjectById(showId).style.visibility='visible';
getObjectById(showId).style.position='relative';
}
function show(id,hideId)
{
getObjectById(id).style.visibility='visible';
getObjectById(id).style.position='relative';
getObjectById(hideId).style.visibility='hidden';
getObjectById(hideId).style.position='absolute';
}
function show(id)
{
getObjectById(id).style.visibility='visible';
getObjectById(id).style.position='relative';
}
function showOrHide(id)
{
if(getObjectById(id).style.visibility == 'hidden')
{
show(id);
}
else
hide(id);
}
function showOrHide(id,hideValue,showValue)
{
if(getObjectById(id).style.visibility == 'hidden')
{
show(id);
return showValue;
}
else
{
hide(id);
return hideValue;
}
}
function hide(id)
{
getObjectById(id).style.visibility='hidden';
getObjectById(id).style.position='absolute';
}
/**
* Creates a new XmlHttpObject
* @author Jorge Machado
* @date April 2008
*
* params:
* @handler target xmlHttpObject function
*/
function GetXmlHttpObject(handler)
{
var objXmlHttp = null;
if (navigator.userAgent.indexOf("Opera")>=0)
{
alert("This example doesn't work in Opera") ;
return objXmlHttp;
}
if (navigator.userAgent.indexOf("MSIE")>=0)
{
var strName="Msxml2.XMLHTTP";
if (navigator.appVersion.indexOf("MSIE 5.5")>=0)
{
strName="Microsoft.XMLHTTP";
}
try
{
objXmlHttp=new ActiveXObject(strName);
objXmlHttp.onreadystatechange=handler ;
return objXmlHttp;
}
catch(e)
{
alert("Error. Scripting for ActiveX might be disabled") ;
return objXmlHttp;
}
}
if (navigator.userAgent.indexOf("Mozilla")>=0)
{
objXmlHttp=new XMLHttpRequest();
objXmlHttp.onload=handler;
objXmlHttp.onerror=handler;
return objXmlHttp;
}
}
/***************************************************
TopFlashNews
***************************************************/
var xmlHttpTopFlashNews;
var getFlashNewsTimeout;
var getFlashNewsJsp;
function getFlashNews(jsp,timeout)
{
getFlashNewsJsp = jsp;
getFlashNewsTimeout = timeout;
getFlashNewsTimeoutCall();
}
function getFlashNewsTimeoutCall()
{
xmlHttpTopFlashNews=GetXmlHttpObject(stateChangedGetFlashNews);
startRequest(xmlHttpTopFlashNews,"","flashTopNews",stateChangedGetFlashNews,"",getFlashNewsJsp)
}
function stateChangedGetFlashNews()
{
if (xmlHttpTopFlashNews.readyState==4 || xmlHttpTopFlashNews.readyState=="complete")
{
getObjectById("flashTopNews").innerHTML=xmlHttpTopFlashNews.responseText;
setTimeout(getFlashNewsTimeoutCall,getFlashNewsTimeout);
}
}
/***************************************************
Search
***************************************************/
var xmlHttpSearch;
var searchResultsDiv;
function searchCall(div,query,searchType,page,module,action)
{
searchResultsDiv = div;
xmlHttpSearch=GetXmlHttpObject(stateChangedSearchCall);
startRequest(xmlHttpSearch,"dispatch=searchModule&query=" + query + "&searchType=" + searchType + "&page=" + page + "&module=" + module,"",stateChangedSearchCall,"",action);
}
function stateChangedSearchCall()
{
if (xmlHttpSearch.readyState==4 || xmlHttpSearch.readyState=="complete")
{
getObjectById(searchResultsDiv).innerHTML=xmlHttpSearch.responseText;
}
}
/***************************************************
Pop
***************************************************/
var xmlHttpPop;
var popDiv;
function loadPop(div,action)
{
popDiv = div;
xmlHttpPop=GetXmlHttpObject(stateChangedPopCall);
startRequest(xmlHttpPop,"","",stateChangedPopCall,"",action);
}
function stateChangedPopCall()
{
if (xmlHttpPop.readyState==4 || xmlHttpPop.readyState=="complete")
{
getObjectById(popDiv).innerHTML=xmlHttpPop.responseText;
}
}
/***************************************************
Reminders
***************************************************/
var activeRemindersCounter = 0;
var expiredRemindersCounter = 0;
function setActiveReminders(active)
{
activeRemindersCounter = active;
}
function setExpiredReminders(expired)
{
expiredRemindersCounter = expired;
}
var xmlHttpReminder;
var newReminderId;
var reminderFormId;
var putMsgId;
var putOkMsg;
var putFailMsg;
function putReminder(startDate,expireDate,text,newReminderDiv,msgDiv,reminderFormDiv,action,waitMsg,okMsg,failMsg)
{
newReminderId = newReminderDiv;
reminderFormId = reminderFormDiv;
putMsgId = msgDiv;
putOkMsg = okMsg;
putFailMsg = failMsg;
getObjectById(putMsgId).innerHTML = waitMsg;
xmlHttpReminder=GetXmlHttpObject(stateChangedPutReminderCall);
startRequest(xmlHttpReminder,"dispatch=save&startDate="+startDate+"&expireDate="+expireDate+"&reminderView.text="+ text,"",stateChangedPutReminderCall,"",action);
// hide(reminderFormId);
show(putMsgId);
}
function stateChangedPutReminderCall()
{
if (xmlHttpReminder.readyState==4 || xmlHttpReminder.readyState=="complete")
{
if(xmlHttpReminder.responseText.indexOf("<div class=\"messages\">") >= 0)
{
getObjectById(putMsgId).innerHTML = xmlHttpReminder.responseText;
}
else
{
getObjectById(putMsgId).innerHTML = '<div class="statusOK">' + putOkMsg + '</div>';
activeRemindersCounter++;
show('activeReminders');
getObjectById(newReminderId).innerHTML = xmlHttpReminder.responseText + getObjectById(newReminderId).innerHTML;
}
}
setTimeout(cleanReminderStatus,3000);
}
function cleanReminderStatus()
{
getObjectById(putMsgId).innerHTML = '';
}
function deleteExpiredReminder(id,deleteReminderDiv,msgDiv,reminderFormDiv,action,waitMsg,okMsg,failMsg)
{
deleteReminder(id,deleteReminderDiv,msgDiv,reminderFormDiv,action,waitMsg,okMsg,failMsg,stateChangedDeleteExpiredReminderCall);
}
function deleteActiveReminder(id,deleteReminderDiv,msgDiv,reminderFormDiv,action,waitMsg,okMsg,failMsg)
{
deleteReminder(id,deleteReminderDiv,msgDiv,reminderFormDiv,action,waitMsg,okMsg,failMsg,stateChangedDeleteActiveReminderCall);
}
function deleteReminder(id,deleteReminderDiv,msgDiv,reminderFormDiv,action,waitMsg,okMsg,failMsg,callBack)
{
newReminderId = deleteReminderDiv;
reminderFormId = reminderFormDiv;
putMsgId = msgDiv;
putOkMsg = okMsg;
putFailMsg = failMsg;
getObjectById(putMsgId).innerHTML = waitMsg;
xmlHttpReminder=GetXmlHttpObject(callBack);
startRequest(xmlHttpReminder,"dispatch=delete&id="+id,"",callBack,"",action);
// hide(reminderFormId);
show(putMsgId);
}
function stateChangedDeleteExpiredReminderCall()
{
expiredRemindersCounter--;
stateChangedDeleteReminderCall();
if(expiredRemindersCounter <= 0)
{
hide('expiredReminders');
}
if(expiredRemindersCounter < 0)
expiredRemindersCounter = 0;
}
function stateChangedDeleteActiveReminderCall()
{
stateChangedDeleteReminderCall();
activeRemindersCounter--;
if(activeRemindersCounter <= 0)
{
hide('activeReminders');
}
if(activeRemindersCounter < 0)
activeRemindersCounter = 0;
}
function stateChangedDeleteReminderCall()
{
if (xmlHttpReminder.readyState==4 || xmlHttpReminder.readyState=="complete")
{
if(xmlHttpReminder.responseText.indexOf("<div class=\"messages\">") >= 0)
{
getObjectById(putMsgId).innerHTML = xmlHttpReminder.responseText;
}
else
{
getObjectById(putMsgId).innerHTML = '<div class="statusOK">' + putOkMsg + '</div>';
getObjectById(newReminderId).innerHTML = '';
}
}
setTimeout(cleanReminderStatus,3000);
}