Index: platform/inc/ajax.js =================================================================== diff -u -N --- platform/inc/ajax.js (revision 12930) +++ platform/inc/ajax.js (revision 0) @@ -1,263 +0,0 @@ -function preg_print_pre(obj, reg) -{ - if (!reg) reg = /.*/; - var p = '' - for (var prop in obj) { - if (prop.match(reg) ) { - p += prop + ': '+obj[prop] + '\n' - } - } - alert(p) -} - - -// Main AJAX classs -function Request() {} - -Request.timeout = 60000; //60 seconds -Request.method = 'GET'; -Request.headers = new Array(); -Request.params = null; - -Request.makeRequest = function(p_url, p_busyReq, p_progId, p_successCallBack, p_errorCallBack, p_pass, p_object) { - //p_url: the web service url - //p_busyReq: is a request for this object currently in progress? - //p_progId: element id where progress HTML should be shown - //p_successCallBack: callback function for successful response - //p_errorCallBack: callback function for erroneous response - //p_pass: string of params to pass to callback functions - //p_object: object of params to pass to callback functions - - if (p_busyReq) return; - var req = Request.getRequest(); - if (req != null) { - p_busyReq = true; - Request.showProgress(p_progId); - req.onreadystatechange = function() { - if (req.readyState == 4) { - p_busyReq = false; - window.clearTimeout(toId); - try { - if (req.status == 200) { - // preg_print_pre(req) - p_successCallBack(req, p_pass, p_object); - } else { - p_errorCallBack(req, p_pass, p_object); - } - Request.hideProgress(p_progId); - } - catch (e) { -// alert('AJAX error') - } - } - } - var $ajax_mark = (p_url.indexOf('?') ? '&' : '?') + 'ajax=yes'; - req.open(Request.method, p_url + $ajax_mark, true); - - if (Request.method == 'POST') { - Request.headers['Content-type'] = 'application/x-www-form-urlencoded'; - Request.headers['referer'] = p_url; - } - else { - Request.headers['If-Modified-Since'] = 'Sat, 1 Jan 2000 00:00:00 GMT'; - } - - Request.sendHeaders(req); - if (Request.method == 'POST') { - req.send(Request.params); - Request.method = 'GET'; // restore method back to GET - } - else { - req.send(null); - } - - var toId = window.setTimeout( function() {if (p_busyReq) req.abort();}, Request.timeout ); - } -} - -Request.processRedirect = function($request) { - var $match_redirect = new RegExp('^#redirect#(.*)').exec($request.responseText); - if ($match_redirect != null) { - // redirect to external template requested - window.location.href = $match_redirect[1]; - return true; - } - return false; -} -Request.sendHeaders = function($request) { - for (var $header_name in Request.headers) { - if (typeof Request.headers[$header_name] == 'function') { - continue; - } - $request.setRequestHeader($header_name, Request.headers[$header_name]); - } - Request.headers = new Array(); // reset header afterwards -} - -Request.getRequest = function() { - var xmlHttp; - try { xmlHttp = new ActiveXObject('MSXML2.XMLHTTP'); return xmlHttp; } catch (e) {} - try { xmlHttp = new ActiveXObject('Microsoft.XMLHTTP'); return xmlHttp; } catch (e) {} - try { xmlHttp = new XMLHttpRequest(); return xmlHttp; } catch(e) {} - return null; -} - -Request.showProgress = function(p_id) { - if (p_id != '') { - Request.setOpacity(20, p_id); - - if (!document.getElementById(p_id + '_progress')) { - document.body.appendChild(Request.getProgressObject(p_id)); - } - else { - var $progress_div = document.getElementById(p_id + '_progress'); - $progress_div.style.top = getRealTop(p_id) + 'px'; - $progress_div.style.height = document.getElementById(p_id).clientHeight; - $progress_div.style.display = 'block'; - } -// document.getElementById(p_id).innerHTML = Request.getProgressHtml(); - } -} - -Request.hideProgress = function(p_id) { - if (p_id != '') { - document.getElementById(p_id + '_progress').style.display = 'none'; - Request.setOpacity(100, p_id); - } -} - -Request.setOpacity = function (opacity, id) { - var elem = typeof(id)=='string' ? document.getElementById(id) : id; - var object = elem.style; - object.opacity = (opacity / 100); - object.MozOpacity = (opacity / 100); - object.KhtmlOpacity = (opacity / 100); - object.filter = "alpha(opacity=" + opacity + ")"; -} - -Request.getProgressHtml = function() { - return "

" + Request.progressText + "
" + Request.progressText + "

"; -} - -Request.getProgressObject = function($id) { - var $div = document.createElement('DIV'); - var $parent_div = document.getElementById($id); - - $div.id = $id + '_progress'; - - $div.style.width = $parent_div.clientWidth + 'px'; - $div.style.height = '150px'; // default height if div is empty (first ajax request for div) - $div.style.left = getRealLeft($parent_div) + 'px'; - $div.style.top = getRealTop($parent_div) + 'px'; - $div.style.position = 'absolute'; - - /*$div.style.border = '1px solid green'; - $div.style.backgroundColor = '#FF0000';*/ - - $div.innerHTML = '
'+Request.progressText+'
'+escape(Request.progressText)+'
'; - return $div; -} - -Request.getErrorHtml = function(p_req) { - //TODO: implement accepted way to handle request error - return '[status: ' + p_req.status + '; status_text: ' + p_req.statusText + '; responce_text: ' + p_req.responseText + ']'; -} - -Request.serializeForm = function(theform) { - if (typeof(theform) == 'string') { - theform = document.getElementById(theform); - } - - var els = theform.elements; - var len = els.length; - var queryString = ''; - - Request.addField = function(name, value) { - if (queryString.length > 0) queryString += '&'; - queryString += encodeURIComponent(name) + '=' + encodeURIComponent(value); - }; - - for (var i = 0; i= 0) { - Request.addField(el.name, el.options[el.selectedIndex].value); - } - break; - - case 'select-multiple': - for (var j = 0; j < el.options.length; j++) { - if (!el.options[j].selected) continue; - Request.addField(el.name, el.options[j].value); - } - break; - - case 'checkbox': - case 'radio': - if (!el.checked) continue; - Request.addField(el.name,el.value); - break; - } - } - return queryString; -}; - -function RatingManager ($url) { - this.Url = $url; - this.BusyRequest = false; -} - -RatingManager.prototype.makeVote = function ($vote, $prefix, $id, $size) { - var $url = this.Url.replace('#PREFIX#', $prefix).replace('#VOTE#', $vote).replace('#ID#', $id).replace('#SIZE#', $size); - - Request.makeRequest($url, this.BusyRequest, '', this.successCallback, this.errorCallback, [$vote, $prefix, $id], this); -} - -RatingManager.prototype.successCallback = function ($request, $params, $object) { - var response = $request.responseText; - - if (response.substring(0, 5) == '@err:') { - alert(response.substring(5)); - return ; - } - - document.getElementById('page_rating_' + $params[2]).innerHTML = response; -} - - -RatingManager.prototype.errorCallback = function($request, $params, $object) { - alert('AJAX Error; class: RatingManager; ' + Request.getErrorHtml($request)); -} - -function PollManager ($url) { - this.Url = $url; - this.BusyRequest = false; -} - -PollManager.prototype.makeVote = function ($prefix, $poll_id, $option_id) { - var $url = this.Url.replace('#PREFIX#', $prefix).replace('#POLL_ID#', $poll_id).replace('#OPTION_ID#', $option_id); - Request.makeRequest($url, this.BusyRequest, '', this.successCallback, this.errorCallback, [$poll_id, $option_id], this); -} - -PollManager.prototype.successCallback = function ($request, $params, $object) { - var response = $request.responseText; - if (response.substring(0, 5) == '@err:') { - alert(response.substring(5)); - return ; - } - document.getElementById('pollvote_' + $params[0]).innerHTML = response; -} - -PollManager.prototype.errorCallback = function($request, $params, $object) { - alert('AJAX Error; class: PollManager; ' + Request.getErrorHtml($request)); -} \ No newline at end of file