/* Ajax url-loading object request queue built on top of it */ /* namespacing object */ var x_ajaxurlloader=new Object(); x_ajaxurlloader.READY_STATE_UNINITIALIZED=0; x_ajaxurlloader.READY_STATE_LOADING=1; x_ajaxurlloader.READY_STATE_LOADED=2; x_ajaxurlloader.READY_STATE_INTERACTIVE=3; x_ajaxurlloader.READY_STATE_COMPLETE=4; /*--- content loader object for cross-browser requests ---*/ x_ajaxurlloader.ContentLoader=function(url,onload,onerror,method,params,contentType){ this.req=null; this.onload=onload; this.onerror=(onerror) ? onerror : this.defaultError; this.loadXMLDoc(url,method,params,contentType); this.url = url; } x_ajaxurlloader.ContentLoader.prototype.loadXMLDoc=function(url,method,params,contentType){ if (!method){ method="GET"; } if (!contentType && method=="POST"){ contentType='application/x-www-form-urlencoded'; } if (window.XMLHttpRequest){ this.req=new XMLHttpRequest(); } else if (window.ActiveXObject){ this.req=new ActiveXObject("Microsoft.XMLHTTP"); } if (this.req){ try{ var loader=this; this.req.onreadystatechange=function(){ x_ajaxurlloader.ContentLoader.onReadyState.call(loader); } this.req.open(method,url,true); if (contentType){ this.req.setRequestHeader('Content-Type', contentType); } this.req.send(params); }catch (err){ this.onerror.call(this); } } } x_ajaxurlloader.ContentLoader.onReadyState=function() { var req=this.req; var ready=req.readyState; if(ready==x_ajaxurlloader.READY_STATE_LOADING) { document.body.style.cursor = "progress"; } else { document.body.style.cursor = "auto"; } if (ready==x_ajaxurlloader.READY_STATE_COMPLETE) { var httpStatus=req.status; if (httpStatus==200 || httpStatus==0) { this.onload.call(this); } else { this.onerror.call(this); } } } x_ajaxurlloader.ContentLoader.prototype.defaultError=function(){ var error_msg = ""; error_msg = "X_AjaxUrlLoader Error: Data Fetch" +"\n\n--------------------------------------------" +"\n\nreadyState:"+this.req.readyState +"\n\n--------------------------------------------" +"\nstatus: "+this.req.status +"\nurl: "+this.url +"\n\n--------------------------------------------" +"\nheaders: "+this.req.getAllResponseHeaders() +"\n\n--------------------------------------------" ; alert(error_msg); }/* A_Ajax 2Mpact functions */ var _loading_popup = true; function bepaal_loading_popup(loading_popup) { if(typeof loading_popup == "undefined") { _loading_popup = true; } else { _loading_popup = loading_popup; } } //Function Prepares calls xmlHttpRequest function makeHttpRequest_x_ajax(detail_link, postdata, loading_popup) { bepaal_loading_popup(loading_popup); if(_loading_popup) { x_ajax_start_loading(); } x_ajax_debug_link = detail_link; //controle op & var regEx_amp = /\&\;/gi; detail_link = detail_link.replace(regEx_amp,"&"); //Make sure we set the server side page if(typeof detail_link == "undefined") { alert('X_Ajax Error: no server side code ('+detail_link+')'); return false; } //create reg exp so we do not grabbed cached material var regEx = /(\s|:)/gi; var strDT = "ts=" + new Date().toString().replace(regEx,""); //add our post data to strDT if (typeof postdata != "undefined") { strDT += "&"+postdata; } //Make the request to the server var loader1 = new x_ajaxurlloader.ContentLoader(detail_link,finishRequest_x_ajax_html,null,"POST",strDT); //Make request return 1; } //Function takes html document function finishRequest_x_ajax_html() { //var bx = window.clearTimeout(timerUpdate); var strDoc = this.req.responseText; //Grab HTML var input_voor_arr = ''; var start_idx = 0; var resp_aantal = 0; var response_arr_multiple = []; var response_arr = []; var response_status = ''; var huidige_div_tab = ''; var response_result = ''; var response_extra = ''; if(strDoc.length > 0) { response_arr_multiple = strDoc.split('|#|'); var response_status_multiple = response_arr_multiple[0]; if(response_status_multiple == 'MULTIPLE') { start_idx = 1; resp_aantal = response_arr_multiple.length - 1; // laatste steeds divider !! } else { start_idx = 0; resp_aantal = 1; response_arr_multiple[start_idx] = strDoc; } //0 niet, want is eerste resultaat for(var i= start_idx; i < resp_aantal; i ++) { input_voor_arr = response_arr_multiple[i]; //alert(input_voor_arr); response_arr = input_voor_arr.split('|@|'); response_status = response_arr[0]; huidige_div_tab = response_arr[1]; response_result = response_arr[2]; response_extra = response_arr[3]; switch(response_status) { case 'SHOW': x_ajax_print(huidige_div_tab, response_result); break; case 'RELOAD': x_ajax_reload(huidige_div_tab); break; case 'REDIRECT': x_ajax_redirect(response_extra); break; case 'DISPLAY': x_ajax_display(huidige_div_tab, response_extra); break; case 'APPEND': x_ajax_append(huidige_div_tab, response_result, response_extra); break; case 'EVAL': x_ajax_eval(response_result); break; case 'DO_NOTHING': break; default: if (x_ajax_debug) { window.open(x_ajax_debug_link,'xajaxdebug'); } else { alert('X_Ajax Error: Problem with data.'); } } } if(_loading_popup) { x_ajax_stop_loading(); _loading_popup = true; } } else { alert('X_Ajax Error: No data found. 404 ('+huidige_div_tab+')'); } } //Function prints html function x_ajax_print(huidige_div_tab, content) { document.getElementById(huidige_div_tab).innerHTML = content; } //Function reloads function x_ajax_reload(huidige_div_tab) { document.location.reload(true); } //Function redirects function x_ajax_redirect(redirect_location) { redirect_location = redirect_location.replace(/\&\;/gi, "&"); document.location.href = redirect_location; } //Function displays/hides div function x_ajax_display(huidige_div_tab, display_style) { switch (display_style) { case "block" : case "inline" : case "none" : document.getElementById(huidige_div_tab).style.display = display_style; break; case "visible" : case "hidden" : document.getElementById(huidige_div_tab).style.visibility = display_style; break; default : document.getElementById(huidige_div_tab).style.display = "block"; } } //Function appends div to div function x_ajax_append(parent_div, content, child_div) { var mydiv = document.createElement("div"); mydiv.setAttribute("id",child_div); mydiv.innerHTML = content; document.getElementById(parent_div).appendChild(mydiv); } //Function evaluates a javascript expression, statement or sequence of statements function x_ajax_eval(js_code) { eval(js_code); } /** * Post a form to a given URL through an AJAX request. * * The function is typically called like this: * * but you can also specify the form through other mechanisms * such as document.getElementById("myForm"). * * Be aware that all input elements with a name will be * present in the post, including all submit buttons. * * @param {HTMLFormElement} form The form to post * @param {String} url The URL to post it to * @param {Boolean} loading_popup Wil je een 'Bezig met laden'-venstertje zien? */ function x_ajax_post_form(form, url, loading_popup) { var postStr = ""; var element; var elValue; // check for presence of FCKeditors var hasFCK = (typeof FCKeditorAPI != "undefined"); var editor; for (var i = 0; i < form.elements.length; i++) { element = form.elements[i]; // only elements with a name and if of type radio or checkbox only when checked if (element.name && ((element.type != "radio" && element.type != "checkbox") || element.checked)) { // this will work for everything but FCKeditors elValue = element.value; // check for linked FCK instance and if one use its content if (hasFCK && element.type == "hidden") { editor = FCKeditorAPI.GetInstance(element.id); if (typeof editor != "undefined") { elValue = editor.GetXHTML(true); } } postStr += element.name+"="+encodeURIComponent(elValue)+"&"; } } // remove last & postStr = postStr.slice(0, -1); makeHttpRequest_x_ajax(url, postStr, loading_popup); } /** * Post a div as if it were a form to a given URL through an AJAX request. * * The function is typically called like this if you work with a button and know * at which level it is nested inside the div (in this case directly as a child): * * but you can also specify the div through other mechanisms such as * document.getElementById("myDiv") and call the function from outside the div. * * Be aware that all input elements with a name will be present in the post, * including all submit buttons. * * @param {Node} div The div containing the elements to post * @param {String} url The URL to post it to * @param {Boolean} loading_popup Wil je een 'Bezig met laden'-venstertje zien? */ function x_ajax_post_div(div, url, loading_popup) { var postStr = ""; var tagname; var element; var elValue; // check for presence of FCKeditors var hasFCK = (typeof FCKeditorAPI != "undefined"); var editor; var elements = div.getElementsByTagName("*"); for (var i = 0; i < elements.length; i++) { element = elements[i]; tagname = element.tagName.toLowerCase(); // only elements that would normally be submitted with a form if (tagname == "input" || tagname == "select" || tagname == "button" || tagname == "textarea") { // only elements with a name and if of type radio or checkbox only when checked if (element.name && ((element.type != "radio" && element.type != "checkbox") || element.checked)) { // this will work for everything but FCKeditors elValue = element.value; // check for linked FCK instance and if one use its content if (hasFCK && element.type == "hidden") { editor = FCKeditorAPI.GetInstance(element.id); if (typeof editor != "undefined") { elValue = editor.GetXHTML(true); } } postStr += element.name+"="+encodeURIComponent(elValue)+"&"; } } } // remove last & postStr = postStr.slice(0, -1); makeHttpRequest_x_ajax(url, postStr, loading_popup); } /** * Toont de 'loading'-popup */ function x_ajax_start_loading() { var ajax_loading_area = document.getElementById("ajax_loading_area"); if (ajax_loading_area !== null) { var scrollY = document.documentElement.scrollTop; if(!scrollY) { scrollY = document.body.scrollTop; } if(!scrollY) { scrollY = window.pageYOffset; } if(!scrollY) { scrollY = 0; } ajax_loading_area.style.top = scrollY+200 + "px"; ajax_loading_area.className = ""; } } /** * Verbergt de 'loading'-popup */ function x_ajax_stop_loading() { var ajax_loading_area = document.getElementById("ajax_loading_area"); if (ajax_loading_area !== null) { ajax_loading_area.className = "hidden"; } }