var ajax_vars = {}; var ajax_class = Class.create({ initialize: function(shadow) { ajax_vars.shadow = shadow ? this.get_element(shadow) : false; ajax_vars.doshadow = ajax_vars.shadow ? true : false; }, action: function(url, trg, func, shadow) { shadow = (shadow == null) ? false : (shadow ? true : false); ajax_vars.doshadow = shadow; ajax_vars.trg = trg ? this.get_element(trg) : false; ajax_vars.request = this.http_request(); func = ((typeof func) == "function") ? func : this.refresh; if (!ajax_vars.request) { alert('Error! May be your browser is not compatible with AJAX'); return false; } if (ajax_vars.shadow && ajax_vars.doshadow) this.doshadow(); ajax_vars.request.onreadystatechange = func; ajax_vars.request.open("GET", url, true); ajax_vars.request.setRequestHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT"); ajax_vars.request.setRequestHeader("Cache-Control", "post-check=0, pre-check=0"); ajax_vars.request.setRequestHeader("Pragma", "no-cache"); ajax_vars.request.send(null); }, refresh: function() { if (ajax_vars.request.readyState == 4) { if (ajax_vars.request.status == 200) { if (ajax_vars.trg) { ajax_vars.trg.innerHTML = ajax_vars.request.responseText; ajax_vars.trg.style.visibility = 'visible'; } } else alert("AJAX error!"); if (ajax_vars.shadow) { ajax_vars.shadow.style.visibility = "hidden"; ajax_vars.doshadow = true; } } }, http_request: function() { var request = false; if (window.XMLHttpRequest) { request = new XMLHttpRequest(); if (request.overrideMimeType) request.overrideMimeType('text/html'); } else if (window.ActiveXObject) { try { request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } return request; }, doshadow: function() { if (ajax_vars.shadow && ajax_vars.doshadow) { ajax_vars.shadow.style.visibility = "visible"; this.fix_loading_size(); } }, unshadow: function() { if (ajax_vars.shadow && ajax_vars.doshadow) { ajax_vars.shadow.style.visibility = "hidden"; this.fix_loading_size(); } }, fix_loading_size: function() { if (ajax_vars.shadow) { var IE = (window.attachEvent && navigator.userAgent.indexOf('Opera') === -1) ? true : false; var rheight; if (window.innerHeight && window.scrollMaxY) rheight = window.innerHeight + window.scrollMaxY; else if (document.body.scrollHeight > document.body.offsetHeight) rheight = document.body.scrollHeight; else rheight = document.body.offsetHeight; if (!IE) ajax_vars.shadow.style.height = "100%"; if (ajax_vars.shadow.offsetHeight > rheight) rheight = ajax_vars.shadow.offsetHeight; ajax_vars.shadow.style.width = "100%"; ajax_vars.shadow.style.height = rheight + "px"; } }, get_element: function(elem) { return (elem && elem.length && elem.split) ? document.getElementById(elem) : (elem ? elem : false); }, get_top_pos: function(el) { if (document.getBoxObjectFor) { return document.getBoxObjectFor(el).y } var returnValue = el.offsetTop; while ((el = el.offsetParent) != null) { if (el.tagName!='html') { returnValue += (el.offsetTop - el.scrollTop); if (document.all) returnValue += el.clientTop; } } return returnValue; } }); document.write('<style type="text/css"> div#ajax_block { position: absolute; visibility: hidden; left: 0; top: 0; width: 100%; height: 100%; z-index: 1001; } div#ajax_block div#ajax_shadow { position: absolute; left: 0; top: 0; width: 100%; height: 100%; background-color: #fff; opacity: .40; filter: alpha(opacity=40); z-index: 1000; } div#ajax_block div#ajax_message { position: absolute; left: 0; top: 0; width: 100%; height: 100%; z-index: 1001; } div#ajax_block div#ajax_message table td div#ajax_center div#loading { text-align: center; border: 2px solid #000; background: #fff; padding: 5px; font-weight: bold; } <\/style> <div id="ajax_block"><div id="ajax_shadow"><\/div><div id="ajax_message"><\/div><\/div>'); var ajax = new ajax_class("ajax_block");