/** * Execute javascripts and parse html * */ function sethtml(content) { var search = content; var loc = 0; var script; var endscript; while( script = search.match(/(]+javascript[^>]+>\s*()?\s*<\/script>)/))) break; block = search.substr(0, search.indexOf(endscript[0])); search = search.substring(endscript[0].length + endscript[0].length); var oScript = document.createElement('script'); oScript.text = block; if (oScript.innerHTML.search('location.href') != -1) { loc = 1; } document.getElementsByTagName("head").item(0).appendChild(oScript); } return loc; } /** * Retrieve xmlhttp data * */ function xmlhttp_data(href, div, async, base, id, post_param, get_param, func) { // Initial values var result = ''; var xmlrequest = null; var loc = 0; // Asynchronous/synchronous var async_action = (((typeof(async) != 'undefined') && (async != '')) || (async == 1)) ? 1 : 0 try { xmlrequest = new XMLHttpRequest(); } catch (e) { try { xmlrequest = new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { try { xmlrequest = new ActiveXObject('Microsoft.XMLHTTP'); } catch (e) { xmlrequest = null; } } } if (!xmlrequest && window.createRequest) { try { xmlrequest = window.createRequest(); } catch (e) { xmlrequest = null; } } // Return empty string when no xmlhttp request could be created if (xmlrequest != null) { if (async_action) { xmlrequest.onreadystatechange = function() { // Return value? if (xmlrequest.readyState == 4) { if (xmlrequest.status == 200) { // Skip when no response empty if (xmlrequest.responseText.length > 0) { // Handle all javascripts => redirect? loc = sethtml(xmlrequest.responseText); // Set innerHTML if ((typeof(div) != 'undefined') && (div.length) && (div != '')) { if (!loc) { try { getElement(div).innerHTML = xmlrequest.responseText; } catch (err) {} } } else { result = xmlrequest.responseText; } } } // Assign an empty function to the state handler; xmlrequest.onreadystatechange = function () {} // Abort current transfer. This will also call the state handler, which is not what we want xmlrequest.abort(); // Clear object xmlrequest = null; if ((!loc) && (typeof(func) != 'undefined')) { // function pointer try { func(result); } catch(err) {} } } } } // action => synchronous/asynchronous var action = (async_action) ? true : false; // Post parameters? params = ''; if ((typeof(post_param) == 'string') && (post_param.length) && (post_param != '')) { params += post_param; } // href + get parameters? href_get_param = base + href + '?id=' + id; if ((typeof(get_param) == 'string') && (get_param.length) && (get_param != '')) { href_get_param += get_param; } xmlrequest.open('POST', href_get_param, action); //Send the proper header information along with the request xmlrequest.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); xmlrequest.send(params); if (!async_action) { // Return value? if (xmlrequest.status == 200) { // Skip when no response empty if (xmlrequest.responseText.length > 0) { // Handle all javascripts => redirect? loc = sethtml(xmlrequest.responseText); // Set innerHTML if ((typeof(div) != 'undefined') && (div.length) && (div != '')) { if (!loc) { getElement(div).innerHTML = xmlrequest.responseText; } } else { result = xmlrequest.responseText; } } } // Assign an empty function to the state handler; xmlrequest.onreadystatechange = function () {} // Abort current transfer. This will also call the state handler, which is not what we want xmlrequest.abort(); // Clear object xmlrequest = null; if ((!loc) && (typeof(func) != 'undefined')) { // function pointer try { func(result); } catch(err) { console.log(err); } } } } else { // Asynchronous request; return the Ajax object so the caller can // process it further, where necessary result = xmlrequest; } return result; }