Index: trunk/core/admin_templates/js/ajax.js
===================================================================
diff -u -N
--- trunk/core/admin_templates/js/ajax.js (revision 8907)
+++ trunk/core/admin_templates/js/ajax.js (revision 0)
@@ -1,325 +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.sendHeaders = function($request) {
- for (var $header_name in Request.headers) {
- $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.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+'
|
';
- 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;
-};
-
-// AJAX ProgressBar classs
-function AjaxProgressBar($url) {
- this.WindowTitle = this.GetWindow().document.title;
- this.URL = $url;
- this.BusyRequest = false;
- this.LastResponceTime = this.GetMicroTime();
- this.ProgressPercent = 0; // progress percent
- this.ProgressTime = new Array();
- this.Query();
-}
-
-AjaxProgressBar.prototype.GetWindow = function() {
- return window.parent ? window.parent : window;
-}
-
-AjaxProgressBar.prototype.GetMicroTime = function() {
- var $now = new Date();
- return Math.round($now.getTime() / 1000); // because miliseconds are returned too
-}
-
-AjaxProgressBar.prototype.Query = function() {
-// prompt('requestinng', this.URL);
- Request.makeRequest(this.URL, this.BusyRequest, '', this.successCallback, this.errorCallback, '', this);
-}
-
-// return time needed for progress to finish
-AjaxProgressBar.prototype.GetEstimatedTime = function() {
- return Math.ceil((100 - this.ProgressPercent) * Math.sum(this.ProgressTime) / this.ProgressPercent);
-}
-
-AjaxProgressBar.prototype.successCallback = function($request, $params, $object) {
- var $responce = $request.responseText;
- var $match_redirect = new RegExp('^#redirect#(.*)').exec($responce);
- if ($match_redirect != null) {
- $object.showProgress(100);
- // redirect to external template requested
- window.location.href = $match_redirect[1];
- return false;
- }
-
- if ($object.showProgress($responce)) {
- $object.Query();
- }
-}
-
-AjaxProgressBar.prototype.errorCallback = function($request, $params, $object) {
- alert('AJAX Error; class: AjaxProgressBar; ' + Request.getErrorHtml($request));
-}
-
-AjaxProgressBar.prototype.FormatTime = function ($seconds) {
- $seconds = parseInt($seconds);
-
- var $minutes = Math.floor($seconds / 60);
- if ($minutes < 10) $minutes = '0' + $minutes;
- $seconds = $seconds % 60;
- if ($seconds < 10) $seconds = '0' + $seconds;
-
- return $minutes + ':' + $seconds;
-}
-
-AjaxProgressBar.prototype.showProgress = function ($percent) {
- this.ProgressPercent = $percent;
- var $now = this.GetMicroTime();
- this.ProgressTime[this.ProgressTime.length] = $now - this.LastResponceTime;
- this.LastResponceTime = $now;
-
- var $display_progress = parseInt(this.ProgressPercent);
- this.GetWindow().document.title = $display_progress + '% - ' + this.WindowTitle;
- document.getElementById('progress_display[percents_completed]').innerHTML = $display_progress + '%';
- document.getElementById('progress_display[elapsed_time]').innerHTML = this.FormatTime( Math.sum(this.ProgressTime) );
- document.getElementById('progress_display[Estimated_time]').innerHTML = this.FormatTime( this.GetEstimatedTime() );
-
- document.getElementById('progress_bar[done]').style.width = $display_progress + '%';
- document.getElementById('progress_bar[left]').style.width = (100 - $display_progress) + '%';
- return $percent < 100 ? true : false;
-}
-
-// AJAX PopupManager class
-function AjaxPopupManager($url) {
- this.URL = $url;
- this.ResponceFunction = null;
- this.PopupSizes = new Array();
-}
-
-AjaxPopupManager.prototype.GetSize = function ($template) {
- if (this.ResponceFunction == null) {
- alert ('Please define responce function first (type: '+typeof(this.ResponceFunction)+')');
- }
-
- if (!isset(this.PopupSizes[$template])) {
- var $url = this.URL + '&type=GetPopupSize&template_name=' + $template;
-// alert('from ajax: '+$url);
- Request.makeRequest($url, this.BusyRequest, '', this.successCallback, this.errorCallback, ['GetSize', $template], this);
- }
- else {
-// alert('from cache');
- this.ResponceFunction(this.PopupSizes[$template]);
- }
-}
-
-AjaxPopupManager.prototype.successCallback = function($request, $params, $object) {
- var $responce = $request.responseText;
- var $match_redirect = new RegExp('^#redirect#(.*)').exec($responce);
- if ($match_redirect != null) {
- // redirect to external template requested
- window.location.href = $match_redirect[1];
- return false;
- }
-
- switch ($params[0]) {
- case 'GetSize':
- // store responce to cache for future use
- $object.PopupSizes[ $params[1] ] = $responce;
- break;
- }
-
- $object.ResponceFunction($responce);
- $object.ResponceFunction = null; // reset responce function
-}
-
-AjaxPopupManager.prototype.errorCallback = function($request, $params, $object) {
- alert('AJAX Error; class: AjaxPopupManager; ' + Request.getErrorHtml($request));
-}
\ No newline at end of file