var progressBar; if (document.all) { navigator.userAgent.toLowerCase().indexOf('msie 5') != -1 ? is_ie5 = true : is_ie5 = false; is_ie = true; is_moz1_6 = false; is_mozilla = false; is_ns4 = false; } else if (document.getElementById) { navigator.userAgent.toLowerCase().match('mozilla.*rv[:]1\.6.*gecko') ? is_moz1_6 = true : is_moz1_6 = false; is_ie = false; is_ie5 = false; is_mozilla = true; is_ns4 = false; } else if (document.layers) { is_ie = false; is_ie5 = false is_moz1_6 = false; is_mozilla = false; is_ns4 = true; } /****************************************** Connector Class *************************************************/ // Constructor function cConnector() { this.requests = new Array(); this.oxmlhttp = null; this.isVisibleBar = false; this.tid = 0; this.progressBar = null; this.oldX = 0; this.oldY = 0; this.updateVersion = ""; } cConnector.prototype.buildBar = function() { var div = document.getElementById('divProgressBar'); if(! div) { div = document.createElement("DIV"); div.style.visibility = "hidden"; div.style.width = "103px"; div.id = 'divProgressBar'; div.align = "center"; div.innerHTML = '  '+get_lang('loading')+'... '; div.style.background = "#cc4444"; div.style.position = 'fixed'; div.style.top = '0px'; div.style.right = '0px'; document.body.appendChild(div); if(is_ie) { var elem = document.all[div.id]; elem.style.position="absolute"; var root = document.body; var posX = elem.offsetLeft-root.scrollLeft; var posY = elem.offsetTop-root.scrollTop; root.onscroll = function() { elem.style.right = '0px'; elem.style.top = (posY + root.scrollTop) + "px"; }; } } } cConnector.prototype.hideProgressBar = function () { var div = document.getElementById('divProgressBar'); div.style.visibility = 'hidden'; this.isVisibleBar = false; } cConnector.prototype.showProgressBar = function(){ var div = document.getElementById('divProgressBar'); if (! div){ connector.buildBar(); connector.showProgressBar(); return; } div.style.visibility = 'visible'; this.isVisibleBar = true; } function XMLTools() { this.path = ""; } var connector = new cConnector(); function cExecuteForm(form, handler){ connector.showProgressBar(); if(! (divUpload = document.getElementById('divUpload'))) { divUpload = document.createElement('DIV'); divUpload.id = 'divUpload'; document.body.appendChild(divUpload); } handlerExecuteForm = handler; var form_handler = function (data){ handlerExecuteForm(data); handlerExecuteForm = null; } divUpload.innerHTML= ""; form.target ="uploadFile"; form.submit(); } function cExecute(requestURL,handler){ var AjaxRequest = function () { Ajax = false; if (window.XMLHttpRequest) //Gecko Ajax = new XMLHttpRequest(); else if (window.ActiveXObject) //Other nav. try { Ajax = new ActiveXObject("Msxml12.XMLHTTP"); } catch (e) { Ajax = new ActiveXObject("Microsoft.XMLHTTP"); } } var responseRequest = function (){ if (Ajax.readyState == 4) if (Ajax.status == 200) handler(Ajax.responseText); else throw("Connection error!"); } AjaxRequest(); if (!Ajax){ throw("No connection"); return; } Ajax.onreadystatechange = responseRequest; if (typeof(method) == 'undefined') method = 'GET'; Ajax.open(method, requestURL, true); Ajax.send(null); } function unserialize(str) { var matchB = function (str, iniPos) { var nOpen, nClose = iniPos; do { nOpen = str.indexOf('{', nClose+1); nClose = str.indexOf('}', nClose+1); if (nOpen == -1) { return nClose; } if (nOpen < nClose ) { nClose = matchB(str, nOpen); } } while (nOpen < nClose); return nClose; } var f = function (str) { switch (str.charAt(0)) { case 'a': var data = new Array(); var n = parseInt( str.substring( str.indexOf(':')+1, str.indexOf(':',2) ) ); var arrayContent = str.substring(str.indexOf('{')+1, str.lastIndexOf('}')); for (var i = 0; i < n; i++) { var pos = 0; /* Process Index */ var indexStr = arrayContent.substr(pos, arrayContent.indexOf(';')+1); var index = f(indexStr); pos = arrayContent.indexOf(';', pos)+1; /* Process Content */ var part = null; switch (arrayContent.charAt(pos)) { case 'a': var pos_ = matchB(arrayContent, arrayContent.indexOf('{', pos))+1; part = arrayContent.substring(pos, pos_); pos = pos_; data[index] = f(part); break; case 's': var pval = arrayContent.indexOf(':', pos+2); var val = parseInt(arrayContent.substring(pos+2, pval)); pos = pval + val + 4; data[index] = arrayContent.substr(pval+2, val); break; default: part = arrayContent.substring(pos, arrayContent.indexOf(';', pos)+1); pos = arrayContent.indexOf(';', pos)+1; data[index] = f(part); break; } arrayContent = arrayContent.substr(pos); } break; case 's': var pos = str.indexOf(':', 2); var val = parseInt(str.substring(2,pos)); var data = str.substr(pos+2, val); str = str.substr(pos + 4 + val); break; case 'i': case 'd': var pos = str.indexOf(';'); var data = parseInt(str.substring(2,pos)); str = str.substr(pos + 1); break; case 'N': var data = null; str = str.substr(str.indexOf(';') + 1); break; case 'b': var data = str.charAt(2) == '1' ? true : false; break; } return data; } unserialized = f(str); return unserialized; } var unserialized = new Object(); // Serialize Data Method function serialize(data) { var f = function(data) { var str_data; if (data == null || (typeof(data) == 'string' && data == '')) { str_data = 'N;'; } else switch(typeof(data)) { case 'object': var arrayCount = 0; str_data = ''; for (i in data) { if (i == 'length') { continue; } arrayCount++; switch (typeof(i)) { case 'number': str_data += 'i:' + i + ';' + f(data[i]); break; case 'string': str_data += 's:' + i.length + ':"' + i + '";' + f(data[i]); break; default: showMessage(Element('cc_msg_err_serialize_data_unknown').value); break; } } if (!arrayCount) { str_data = 'N;'; } else { str_data = 'a:' + arrayCount + ':{' + str_data + '}'; } break; case 'string': str_data = 's:' + data.length + ':"' + data + '";'; break; case 'number': str_data = 'i:' + data + ';'; break; case 'boolean': str_data = 'b:' + (data ? '1' : '0') + ';'; break; default: showMessage(Element('cc_msg_err_serialize_data_unknown').value); return null; } return str_data; } return f(data); }