Rev 1306 |
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 = location.href.substring(0,location.href.indexOf('/',location.href.indexOf("://")+3)) + 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 getObjectByStartId(objectId)
{
// cross-browser function to get an object's style object given its id
try
{
for(var element in document.elements)
{
alert(element.value);
}
// 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)
{
hideOne(id);
showOne(showId);
}
function show(id,hideId)
{
hideOne(hideId);
showOne(id);
}
function hideOne(id)
{
// getObjectById(id).style.visibility='hidden';
// getObjectById(id).style.position='absolute';
getObjectById(id).style.display='none';
}
function showOne(id)
{
// getObjectById(id).style.visibility='visible';
// getObjectById(id).style.position='relative';
getObjectById(id).style.display='';
}
function showOrHideOne(id)
{
if(getObjectById(id).style.display == 'none')
showOne(id);
else
hideOne(id);
}
function showOrHideOneWithStartId(id)
{
for(var i = 1; getObjectById(id + i) != '' && getObjectById(id + i) != null && getObjectById(id + i) != 'undefined'; i++)
{
showOrHideOne(id + i);
}
}
function showOrHide(id,hideValue,showValue)
{
if(getObjectById(id).style.display == 'none')
{
showOne(id);
return showValue;
}
else
{
hideOne(id);
return hideValue;
}
}
/**
* 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)
{
objXmlHttp=new XMLHttpRequest();
objXmlHttp.onload=handler;
objXmlHttp.onerror=handler;
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;
var semaphoreFlashNews = 0;
function getFlashNews(jsp,timeout)
{
getFlashNewsJsp = jsp;
getFlashNewsTimeout = timeout;
semaphoreFlashNews = 1;
getFlashNewsTimeoutCall();
}
function getFlashNewsTimeoutCall()
{
xmlHttpTopFlashNews=GetXmlHttpObject(stateChangedGetFlashNews);
semaphoreFlashNews = 1;
startRequest(xmlHttpTopFlashNews,"","flashTopNews",stateChangedGetFlashNews,"",getFlashNewsJsp)
}
function stateChangedGetFlashNews()
{
if (semaphoreFlashNews == 1 && (xmlHttpTopFlashNews.readyState==4 || xmlHttpTopFlashNews.readyState=="complete"))
{
getObjectById("flashTopNews").innerHTML=xmlHttpTopFlashNews.responseText;
setTimeout(getFlashNewsTimeoutCall,getFlashNewsTimeout);
semaphoreFlashNews = 0;
}
}
/***************************************************
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 searchCall(div,query,searchType,page,module,moduleInternalKey,action)
{
searchResultsDiv = div;
xmlHttpSearch=GetXmlHttpObject(stateChangedSearchCall);
startRequest(xmlHttpSearch,"dispatch=searchModule&query=" + query + "&searchType=" + searchType + "&page=" + page + "&module=" + module + "&moduleInternalKey=" + moduleInternalKey,"",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;
var semaphoreReminder = 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)
{
if(semaphoreReminder == 1)
{
getObjectById(putMsgId).innerHTML = "<div class=\"messages\">busy...</div>";
}
else
{
semaphoreReminder = 1;
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);
// hideOne(reminderFormId);
showOne(putMsgId);
}
}
function stateChangedPutReminderCall()
{
if (xmlHttpReminder.readyState==4 || xmlHttpReminder.readyState=="complete")
{
if(xmlHttpReminder.responseText.indexOf("<div class=\"messages\">") >= 0)
{
getObjectById(putMsgId).innerHTML = xmlHttpReminder.responseText;
}
else if(semaphoreReminder == 1)
{
semaphoreReminder = 0;
getObjectById(putMsgId).innerHTML = '<div class="statusOK">' + putOkMsg + '</div>';
activeRemindersCounter = activeRemindersCounter + 1;
showOne('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);
//hideOne(reminderFormId);
showOne(putMsgId);
}
function stateChangedDeleteExpiredReminderCall()
{
stateChangedDeleteReminderCall("expired");
if(expiredRemindersCounter <= 0)
{
hideOne('expiredReminders');
}
if(expiredRemindersCounter < 0)
expiredRemindersCounter = 0;
}
function stateChangedDeleteActiveReminderCall()
{
stateChangedDeleteReminderCall("active");
if(activeRemindersCounter <= 0)
{
hideOne('activeReminders');
}
if(activeRemindersCounter < 0)
activeRemindersCounter = 0;
}
function stateChangedDeleteReminderCall(type)
{
if (xmlHttpReminder.readyState==4 || xmlHttpReminder.readyState=="complete")
{
if(type == "active")
activeRemindersCounter--;
else
expiredRemindersCounter--;
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);
}
/******************************
* Cotas de Impressao
******************************/
var quotasDiv;
var xmlHttpQuotas;
var quotasErrorMsg;
var impressorasMsg;
var quotasDisponiveisMsg;
var donaldPretoMsg;
var billCorMsg;
function loadQuotas(div,action,_quotasErrorMsg, _impressorasMsg, _quotasDisponiveisMsg, _donaldPretoMsg, _billCorMsg)
{
quotasDiv = div;
quotasErrorMsg = _quotasErrorMsg;
impressorasMsg = _impressorasMsg;
quotasDisponiveisMsg = _quotasDisponiveisMsg;
donaldPretoMsg = _donaldPretoMsg;
billCorMsg = _billCorMsg;
if(!xmlHttpQuotas)
xmlHttpQuotas = GetXmlHttpObject(stateChangedLoadQuotasCall);
startRequest(xmlHttpQuotas,"","",stateChangedLoadQuotasCall,"",action);
}
function stateChangedLoadQuotasCall()
{
if (xmlHttpQuotas.readyState==4 || xmlHttpQuotas.readyState=="complete")
{
putQuotasImpressao(xmlHttpQuotas.responseXML);
}
}
function putQuotasImpressao(xmlData)
{
if(xmlData == null)
{
getObjectById(quotasDiv).innerHTML=quotasErrorMsg;
}
else
{
var pretoTr = xmlData.getElementsByTagName('preto')[0].getElementsByTagName("tr")[0];
var corTr = xmlData.getElementsByTagName('cor')[0].getElementsByTagName("tr")[0];
if(pretoTr == null || corTr == null)
{
getObjectById(quotasDiv).innerHTML=quotasErrorMsg;
}
else
{
var copiasImpressasPreto = pretoTr.getElementsByTagName('td')[1].getElementsByTagName('font')[0].firstChild.nodeValue;
var copiasDisponiveisPreto = pretoTr.getElementsByTagName('td')[2].getElementsByTagName('font')[0].firstChild.nodeValue;
var copiasImpressasCor = corTr.getElementsByTagName('td')[1].getElementsByTagName('font')[0].firstChild.nodeValue;
var copiasDisponiveisCor = corTr.getElementsByTagName('td')[2].getElementsByTagName('font')[0].firstChild.nodeValue;
var response = "";
response += "<table class=\"dataTable\">\n";
response += " <tr>\n";
response += " <th>" + impressorasMsg + "</th>\n";
response += " <th>" + quotasDisponiveisMsg + "</th>\n";
response += " </tr>\n";
response += " <tr>\n";
response += " <th>" + donaldPretoMsg + "</th>\n";
if(copiasDisponiveisPreto == '0')
response += "<td align=\"right\" style=\"color:red\">"+ copiasDisponiveisPreto +"</td>\n"
else
response += "<td align=\"right\" style=\"color:green\">"+ copiasDisponiveisPreto +"</td>\n"
response += " </tr>\n";
response += " <tr>\n";
response += " <th>" + billCorMsg + "</th>\n";
if(copiasDisponiveisCor == '0')
response += "<td align=\"right\" style=\"color:red\">"+ copiasDisponiveisCor +"</td>\n"
else
response += "<td align=\"right\" style=\"color:green\">"+ copiasDisponiveisCor +"</td>\n"
response += " </tr>\n";
response += "</table>\n";
getObjectById(quotasDiv).innerHTML=response;
}
}
}