// Polymita Technologies. All rights reserved. // Boundary for multipart forms. DO NOT CHANGE IT !!! var boundary = "Polymita_CollagePortals_AJAX_Boundary_" + new Date().getMilliseconds() * new Date().getMilliseconds() * new Date().getMilliseconds() + ";"; var ajaxAlertsEnabled = false; /** * Loads a given url into element with id tagId. If a body is specified, it uses multipart content-type * to POST to the url. */ function ajaxRequest(url, body, tagId) { return ajaxRequest(url, body, tagId, null, null); } function ajaxRequest(url, body, tagId, onAjaxRequestScript, onAjaxResponseScript) { var ajaxHandler = new Object(); url = url.replace(/&/g,'&'); ajaxHandler.ajaxRequestScript = onAjaxRequestScript; ajaxHandler.ajaxResponseScript = onAjaxResponseScript; if (ajaxAlertsEnabled) alert("ajax request: " + url + "\nbody:\n" + body + "\n\non " + tagId); beforeAjaxRequest(); ajaxHandler.ajaxTarget = tagId; // Execute the ajaxRequestScript specified by client. if (onAjaxRequestScript != null) eval(onAjaxRequestScript); if (window.XMLHttpRequest) { ajaxHandler.ajaxReq = new XMLHttpRequest(); } else if (window.ActiveXObject) { ajaxHandler.ajaxReq = new ActiveXObject('Microsoft.XMLHTTP'); } ajaxHandler.ajaxResponse = function(){ // Only if req shows "complete" if (ajaxHandler.ajaxReq.readyState == 4) { // only if "OK" if (ajaxHandler.ajaxReq.status == 200) { if (ajaxHandler.ajaxReq.responseText.indexOf("") != -1 && ajaxHandler.ajaxReq.responseText.indexOf("expired.jsp")==-1 ){ //alert("Portal response contains an html tag. Doing my best with "+ajaxHandler.ajaxReq.responseText); // Just reload page, it may work document.location.href = document.location.href; } else { var element = document.getElementById(ajaxHandler.ajaxTarget); var newElement = document.createElement(element.tagName); newElement.id = element.id; //alert("Setting "+ ajaxHandler.ajaxReq.responseText); newElement.innerHTML = ajaxHandler.ajaxReq.responseText; if (ajaxAlertsEnabled) alert("Set " + newElement.outerHTML); element.parentNode.replaceChild(newElement, element); // Execute the ajaxResponseScript specified by client. if (ajaxHandler.ajaxResponseScript != null) eval(ajaxHandler.ajaxResponseScript); if ( tt_Init ) tt_Init(); //Evaluate tooltips } } else { window.status = "XmlHttpRequest: There was a problem retrieving the data:\n" + ajaxHandler.ajaxReq.status + ' ' + ajaxHandler.ajaxReq.statusText; } afterAjaxRequest(); ajaxHandler.ajaxTarget = ''; } } var ajaxLoadingDivTimeout; function beforeAjaxRequest(){ document.body.style.cursor = 'wait'; ajaxLoadingDivTimeout = setTimeout('if(document.getElementById(\'ajaxLoadingDiv\'))document.getElementById(\'ajaxLoadingDiv\').style.display=\'block\'',100); } function afterAjaxRequest(){ document.body.style.cursor = 'default'; if ( ajaxLoadingDivTimeout ) clearTimeout(ajaxLoadingDivTimeout); document.getElementById('ajaxLoadingDiv').style.display='none'; } var ajaxReq = ajaxHandler.ajaxReq; if (ajaxReq != null) { ajaxReq.onreadystatechange = ajaxHandler.ajaxResponse; if (body) { ajaxReq.open('POST', url, true); //XMLHttpRequest handles only UTF-8 ajaxReq.setRequestHeader("Content-Type", "multipart/form-data; charset=UTF-8; boundary=" + boundary); } else { ajaxReq.open('GET', url, true); } if (ajaxAlertsEnabled) alert("Sending body:\n" + body); ajaxReq.send(body); if (ajaxAlertsEnabled) alert("Loading " + url + " into " + tagId); return false; } return true; } function getBody(element) { var body = ''; if (element && element.name) { body += '--' + boundary + '\r\n'; body += 'Content-Disposition: form-data; name="' + element.name + '"' + '\r\n\r\n'; body += element.value + '\r\n'; } return body; } /** * Returns the body multipart representation for a form, adding an ajaxAction parameter. */ function getFormBody(form) { return getFormBody(form, true); } /** * Returns the body multipart representation for a form, adding an ajaxAction parameter, depending on second parameter. */ function getFormBody(form, addAjaxParameter) { var body = ''; for (var i = 0; i < form.length; i++) { field = form[i]; if (!field.name || field.name=='') continue; if (field.type == 'checkbox' || field.type == 'radio') { if (field.checked) body += getBody(field); } else if ((field.type == 'select-one' || field.type == 'select-multiple')) { for (var j = 0; j < field.length; j++) { if (field[j].selected) { value = field[j].value; if (value == '') value = field[j].text; body += '--' + boundary + '\r\n'; body += 'Content-Disposition: form-data; name="' + field.name + '"' + '\r\n\r\n'; body += value + '\r\n'; } } } else { body += getBody(field); } } if(addAjaxParameter){ if(ajaxAlertsEnabled) alert("Adding ajax parameter to form to be sent"); body += '--' + boundary + '\r\n'; body += 'Content-Disposition: form-data; name="ajaxAction"' + '\r\n\r\n'; body += 'true\r\n'; } else{ if(ajaxAlertsEnabled) alert("Getting form body without ajax parameter: "+addAjaxParameter); } body += "--" + boundary; return body; } var ajaxPreviousHandlers = new Object(); var ajaxedElementIds = new Array(); function setAjaxTarget(element, targetId) { return setAjaxTarget(element, targetId, null, null); } function submitAjaxForm(form){ if(form){ if(form.onsubmit){ var wasAjaxed = false; for(i=0;i