/** * CMS main JavaScript library, needed by the CMSForms php class * * @author Markus Klein * @version $Id: CMSServer forms.js.php v1.00.59 (Uploaded 2010-09-02 15:17:09 by admin_mk, installed here 2010-09-02 15:17:35 by unknown) $ * @package cms * @subpackage javascript */ // GLOBALE VARS var intervalID = 0, execInterval = 0; // Timer IDs var lookupVisible = false; // Lookup-Dropdown Sichtbarkeit var lookupRequest = false; // Request-Objekt fuer Lookups var lookupTask; // Task-Schluessel var lookupLastVal; // Vorheriger Wert im Lookup var lookupDomId; // DOM-ID des aktuellen Lookup var script_path = "cms/"; // Initialisieren var shiftPressed = false; var altPressed = false; var ctrlPressed = false; var formFocus = ''; // JSON.parse for older browsers if (typeof(JSON) == "undefined") { JSON = {}; } if (typeof(JSON.parse) == "undefined") { JSON.parse = function(expr) { return eval('('+expr+')'); }} // ALLGEMEINE FUNKTIONEN function str_replace(wht, wth, in_strg) { var strg=new String(in_strg); return strg.split(wht).join(wth); } function strtr(instr, searchstring, replacestring) { for(var i = 0; i < searchstring.length; i++) { instr=str_replace(searchstring[i], replacestring[i], instr); } return instr; } function check_url(identifier) { var urlst=document.getElementById(identifier).value; if(urlst.substring(0,4)=="www.") { document.getElementById(identifier).value="http://"+urlst; } } function encode_utf8(s) { return unescape(encodeURIComponent(s)); } function decode_utf8(s) { return decodeURIComponent(escape(s)); } /** * Convert & to & for proper calls in js * * @param string url * @return string fixed url */ function url_amp_remove(url) { return str_replace('&', '&', url); } function check_digits(identifier,maxvalue) { var str=document.getElementById(identifier).value; var valu=parseInt(str); if (valu > maxvalue) {valu=maxvalue;} str="" + valu; if (str=="NaN") str=""; document.getElementById(identifier).value=str; } function select_gethtml(selecter, targetid) { var srcid=document.getElementById(selecter).value; var tarelem=document.getElementById(targetid); var htmlcode=document.getElementById(srcid).innerHTML; tarelem.innerHTML=htmlcode; } function cms_html_cleanup(htmlString, cleanLevel) { var req = exec_request('/cms/ajax_handler.php', false, 'task=htmlcleanup&cleanlevel='+encodeURIComponent(cleanLevel)+'&value='+encodeURIComponent(htmlString)); if(typeof(cleanLevel) == 'undefined') { disarmLevel = 0; } if(req.status == 200) { if(req.responseText) { // is there any response htmlString = req.responseText; } } else { debug_print("cms_html_cleanup error: "+req.status); } return htmlString; } function disarm(s, disarmLevel, defaultifresponseempty) { if (typeof(defaultifresponseempty) == 'undefined') { // if no default value for empty responses is supplied, use the input string defaultifresponseempty = s; } if(typeof(disarmLevel) == 'undefined') { disarmLevel = 5; } var req = exec_request('/cms/ajax_handler.php?task=disarm&value='+encodeURIComponent(s)+'&level='+disarmLevel); if(req.status == 200) { if(req.responseText) { // is ther any response s = req.responseText; } else { // if not, apply default value s = defaultifresponseempty; } } else { debug_print("disarm error: "+req.status); } return s; } function setURLTitle(defaultvalue) { var linktitle = document.getElementById('obj_obj_linktitle'); var headline = document.getElementById('obj_obj_headline'); if (trim(linktitle.value) == '') { linktitle.value = disarm(headline.value, 5, defaultvalue); } } /** * Detect mouse position (cross browser) * * @param e event reference * @return array 0 => x position, 1 => y position */ function get_mouse_position(e) { e = e || window.event; var cursor = {x:0, y:0}; if (e.pageX || e.pageY) { cursor.x = e.pageX; cursor.y = e.pageY; } else { cursor.x = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft; cursor.y = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop; } return cursor; } function trim (str) { // trim leading and following whitespaces return str.replace (/^\s+/, '').replace (/\s+$/, ''); } /** * Detect keycode * * @param evt event reference * @return integer keycode */ function get_keycode(evt) { var keyCode; if(!evt) evt = window.event; if ("which" in evt) { keyCode = evt.which; // modern } else if ("keyCode" in evt) { keyCode = evt.keyCode; // legacy } shiftPressed = evt.shiftKey; altPressed = evt.altKey; ctrlPressed = evt.ctrlKey; return keyCode; } // Dom-Objekt leeren/loeschen function empty_node(dom_id) { var clearDom; if(clearDom = document.getElementById(dom_id)) { clearDom.innerHTML=''; } } function kill_node(dom_id) { var killme = document.getElementById(dom_id); killme.parentNode.removeChild(killme); } // Ersetzen einer Text-Box Auswahl, bzw. Einfassen function selection_replace(tid, repl, wrap_st, wrap_nd) { var ta, sel_text; if(ta = document.getElementById(tid)) { if(typeof wrap_st == 'undefined') { wrap_st = ''; } if(typeof wrap_nd == 'undefined') { wrap_nd = ''; } ta.focus(); // IE if(typeof document.selection != 'undefined') { var range = document.selection.createRange(); sel_text = range.text; if(repl != null) { sel_text = repl; } range.text = wrap_st + sel_text + wrap_nd; range = document.selection.createRange(); if(sel_text.length == 0) { range.move('character', -wrap_nd.length); } else { range.moveStart('character', wrap_st.length + sel_text.length + wrap_nd.length); } range.select(); // Gecko } else if(typeof ta.selectionStart != 'undefined') { var start = ta.selectionStart; var end = ta.selectionEnd; sel_text = ta.value.substring(start, end); if(repl != null) { sel_text = repl; } ta.value = ta.value.substr(0, start) + wrap_st + sel_text + wrap_nd + ta.value.substr(end); var pos; if (sel_text.length == 0) { pos = start + wrap_st.length; } else { pos = start + wrap_st.length + sel_text.length + wrap_nd.length; } ta.selectionStart = pos; ta.selectionEnd = pos; } } } // Herausloesen einer Seite function flyout(winid, w, h) { var theWin = popwin("", w, h, winid); document.getElementById("flyoutlink").innerHTML=""; theWin.document.write(document.documentElement.innerHTML) document.body.innerHTML=" "; theWin.focus(); } /** * Maximise window */ function maximize_window() { window.moveTo(0,0); window.resizeTo(screen.availWidth, screen.availHeight); } // Oeffnen einer Hilfe-Box function help_page(linktitle_or_url) { if ((linktitle_or_url.indexOf('download.php') >= 0) || (linktitle_or_url.indexOf('services/files') >= 0)) { window.location.href = linktitle_or_url; } else if (linktitle_or_url.indexOf('/') >= 0) { popwin(linktitle_or_url, 640, 480, "cmshelp", "yes"); } else { popwin("/"+linktitle_or_url+".html?print=1", 640, 480, "cmshelp", "yes"); } } // Duplizieren eines Eingabebereichs mit fortlaufend nummeriertem Array function auto_expand(thisnode) { setTimeout('auto_expand_now("'+ thisnode.id +'")', 15); } function auto_expand_now(thisnodeId) { var src_range; var trg_range; var thisnode; thisnode = document.getElementById(thisnodeId); if((thisnode.value != "")||(thisnode.value=="SELECT")) if(src_range=auto_expand_detect_frame(thisnode)) { var range_id=src_range.id; var range_nr=range_id; range_nr=range_nr.replace(/(.*__)([0-9]+)(.*)/, "$2"); range_nr=parseInt(range_nr); var new_nr=range_nr+1; new_id=str_replace("__"+range_nr, "__"+new_nr, range_id); if(trg_range=document.getElementById(new_id)) { // Existiert, Event entfernen thisnode.onChange=null; thisnode.onKeyDown=null; } else { trg_range=src_range.cloneNode(true); trg_range.id=new_id; auto_expand_recursive_repl(trg_range, "__"+range_nr, "__"+new_nr); src_range.parentNode.insertBefore(trg_range, src_range.nextSibling); } } } function auto_expand_detect_frame(nod) { var par; while(par=nod.parentNode) { nod=par; if(typeof(nod.id) != "undefined") { var s = new String; s=nod.id; if(s.substring(s.length-6)=="_frame") { return(nod); } } } return(false); } // Rekursiver String-Replace innerhalb eines Knotens ueber id, value, name function auto_expand_recursive_repl(nodeobj, strwhat, strwith) { var tagTyp; for(var i = 0; i < nodeobj.childNodes.length; i++) { if(typeof(nodeobj.childNodes[i].tagName) != "undefined") { tagTyp = nodeobj.childNodes[i].tagName; if(nodeobj.childNodes[i].hasChildNodes()) { auto_expand_recursive_repl(nodeobj.childNodes[i], strwhat, strwith); } if(nodeobj.childNodes[i].id) { nodeobj.childNodes[i].id = str_replace(strwhat, strwith, nodeobj.childNodes[i].id); } if(nodeobj.childNodes[i].name) { nodeobj.childNodes[i].name = str_replace(strwhat, strwith, nodeobj.childNodes[i].name); } if(nodeobj.childNodes[i].href) { nodeobj.childNodes[i].href = str_replace(strwhat, strwith, nodeobj.childNodes[i].href); } if(tagTyp != "OPTION" && nodeobj.childNodes[i].type != "button") { if(nodeobj.childNodes[i].value) {nodeobj.childNodes[i].value = ""; } } } } } // Klassisches Popup function popwin(targeturl, w, h, winid, scrlbars) { var nw = 30 + w; var nh = 55 + h; var theWin; if(typeof winid == 'undefined') { winid="theWin"; } if(typeof scrlbars == 'undefined') { scrlbars="no"; } if(theWin = window.open(targeturl, winid, "toolbar=no,location=no,status=no,menubar=no,scrollbars="+scrlbars+",resizable=yes,width="+nw+",height="+nh+"")) { theWin.resizeTo(nw,nh); theWin.focus(); } if(winid != "theWin") { return theWin; } } // Zaehler und Maxlength-Funktion fuer Textareas function textarea_count(span_id, maxlen, count_text) { var inp=document.getElementById(span_id); var span=document.getElementById(span_id + "_counter"); var lft=maxlen - inp.value.length; if(lft < 0) { lft=0; inp.value = inp.value.substring(0,maxlen); } count_text=str_replace("%", lft, count_text); span.innerHTML = "
" + count_text + "
"; } // Bild / Downloaduebersicht starten function open_archive(dom_id, overview_type) { elem=document.getElementById(dom_id); var nw=750; var nh=700; imgArch = window.open("/cms/admin/overview.php?item_nr="+elem.value+"&dom_id="+dom_id+"&displaymode=2&imgselect=1&type="+overview_type, "imgArch","toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width="+nw+",height="+nh+""); if(imgArch) { imgArch.focus(); imgArch.resizeTo(nw,nh); } } // Bildvorschau Swap function preview_image(dom_id) { var imgpath=document.getElementById(dom_id).value; var ext=imgpath.substring(imgpath.length-4); if((ext==".gif")||(ext==".jpg")||(ext==".png")) { var prev=document.getElementById(dom_id+"_preview"); var oldsrc=prev.src; var thumb=imgpath; var check=thumb.lastIndexOf("/")+1; thumb="/images/"+thumb.substring(0,check)+"th_"+thumb.substring(check); if(oldsrc.indexOf(thumb) == -1) { prev.src=(thumb); } } } // Bildauswahl wiederherstellen function preview_restore(dom_id) { document.getElementById(dom_id+"_preview").src="/cms/gfx/nopic.gif"; } // Dokument-Charset ermitteln function get_charset() { var ret="", s=new String; if(document.charset) { ret=document.charset; } // Simpel in IE else { var metas=document.getElementsByTagName("meta"); var c=0, cont; while(metas[c]) { if(s=metas[c].getAttribute("http-equiv")) if(s.toLowerCase() == "content-type") { cont=metas[c].getAttribute("content")+";charset=;"; cont=cont.split("charset=")[1]; cont=cont.split(";")[0]; return cont; } c++; } } return ret; } ///// "AJAX" Funktionen basierend auf HTTP-Request Objekt ////////////////////////////// // Request Objekt laden function get_request() { var req; if(window.XMLHttpRequest) // Moz { req = new XMLHttpRequest(); //if(req.overrideMimeType) { req.overrideMimeType('text/xml'); } } else if (window.ActiveXObject) // IE { try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} } } if(!req) { return false; } else { return req; } } // Ajax Aufruf einer URI function exec_request(url, async, params) { var meth='POST'; if(typeof(async) == "undefined") { async = false; } if(typeof(params) == "undefined") { params = ''; } // meth='GET'; } var req; if(req = get_request()) { req.open(meth, url, async); if(meth == 'POST') { req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); req.setRequestHeader("Content-length", params.length); req.setRequestHeader("Connection", "close"); req.send("charset=UTF-8&"+params); } else { req.send(null); } hourglass(false); return req; } else { return false; } } // Hourglass-Cursor an/aus function hourglass(stats) { if (typeof(document.body) != 'undefined' && document.body != null) { if(typeof(document.body.style.cursor) != 'undefined') { document.body.style.cursor = (stats ? "wait" : "auto"); } } } // Synchroner Aufruf einer URI und Annahme von Daten function ajax_call(url) { var req=exec_request(url, false); if(req.status == 200) { ajax_parent_push(req); } else { debug_print("Ajax Call error: "+req.status); } } // Asynchroner Aufruf einer URI und Annahme von Daten var async_acall; function ajax_call_async(url) { async_acall = exec_request(url, true); async_acall.onreadystatechange = ajax_call_async_receive; } function ajax_call_async_receive() { if(typeof(async_acall)!="undefined") if(async_acall.readyState == 4) { if(async_acall.status == 200) { ajax_parent_push(async_acall); } } } /** * Place an ajax call and return the plain response text */ function ajax_get_value(url) { var req=exec_request(url, false); if(req.status == 200) { if (req.responseText) { return req.responseText; } else { return false; } } else { return false; } } // Auslesen des HTML Blocks aus der Response, und Uebertragung in Block-Element function ajax_parent_push(req) { var root = false; if(req.responseXML || req.responseText) { /* XML */ if (req.responseXML && (root = req.responseXML.getElementsByTagName("body")[0])) { var dom_id=ajax_return_value(root, "domid"); var html=ajax_content_reassemble(root); fill_dom_innerhtml(dom_id, html); /* JSON */ } else if(req.responseText) { try { root = JSON.parse(req.responseText); } catch(err) { debug_print('Failed to parse JSON: '+err.description); } if (root) { if(typeof(root.body) != 'undefined') { fill_dom_innerhtml(root.domid, root.body); } if(typeof(root.jsexec) != "undefined") { eval(root.jsexec); } } } else { debug_print("No XML / JSON body!"); } } else { debug_print("No ajax response!"); } } /** * Put some contents into an element identified by dom_id. * If the element is not found, do nothing. */ function fill_dom_innerhtml(dom_id, inner_html) { var elem; if (dom_id) { elem = document.getElementById(dom_id); if (elem) { elem.innerHTML = inner_html; } } } // Rueckgabewert aus XML Textknoten extrahieren function ajax_return_value(obj, tagnam) { var elem; if(elem = obj.getElementsByTagName(tagnam)[0].firstChild) { return elem.data; } else { return ''; } } // Inhalte aller enthaltener DIVs aneinanderreihen function ajax_content_reassemble(root) { var cnt=0, chunk, ret=''; var divs = root.getElementsByTagName("div"); var chunk; var conts; for(var k=0, chunk; chunk=divs[k++];) { if(conts = chunk.firstChild) { ret = ret + conts.data; } else { debug_print('nofirstchild:'+chunk); } } return ret; } // Formularinhalt per AJAX Aufruf uebermittlen function ajax_form_submit(frm, async) { var params="", act; if(frm) { act=frm.action; params+=ajax_form_submit_assemble(frm.getElementsByTagName("input")); params+=ajax_form_submit_assemble(frm.getElementsByTagName("select")); params+=ajax_form_submit_assemble(frm.getElementsByTagName("textarea")); return exec_request(act, async, params); } } function ajax_form_submit_assemble(elems) { var c = 0, params = '', value = ''; while(elems[c]) { if(elems[c].name && elems[c].value) { if(elems[c].type == 'checkbox') { value = elems[c].checked ? elems[c].value : ''; } else { value = elems[c].value; } params+=elems[c].name +"=" + encodeURIComponent(value) + "&"; } c++; } return params; } // Aufruf einer Lookup-Box var ajax_lookup_response_interval = 200; function ajax_lookup(task, dom_id, e) { lookupTask=task; lookupDomId=dom_id; var key_num=get_keycode(e); if (key_num==40) { // Down if(lookupVisible) { lookupRequest = false; // AJAX Abbruch var selbox = document.getElementById(dom_id+'_select'); selbox.selectedIndex = 0; selbox.focus(); lookup_onchange(e); } } else if(key_num==9) { // Tab lookup_hide_now(); ajax_destroy(dom_id); } else if(typeof(intervalId) == "undefined" || intervalID < 1) { clearInterval(intervalID); intervalID = setTimeout('ajax_lookup_now();',ajax_lookup_response_interval); ajax_lookup_response_interval = 500; } } // Lookup-Rahmenbedingungen erzeugen, AJAX Request absetzen function ajax_lookup_now(offs) { lookupRequest = false; var dom_id=lookupDomId; if(!offs) {offs=0;} clearInterval(intervalID); intervalID = 0; var ajax_in; if(ajax_in=document.getElementById(dom_id)) { var ajax_div; if(!(ajax_div=document.getElementById(dom_id+'_ajaxdiv'))) { var divcontainer=document.createElement("div"); divcontainer.style.position="relative"; ajax_in.parentNode.appendChild(divcontainer); ajax_div=document.createElement("div"); ajax_div.id=dom_id+'_ajaxdiv'; ajax_div.style.zIndex="100"; ajax_div.style.position="absolute"; ajax_div.style.width="100%"; ajax_div.style.left="0"; ajax_div.style.top="0"; ajax_div.style.padding="0"; ajax_div.style.margin="0"; ajax_div.style.overflow="hidden"; ajax_div.style.visibility="visible"; divcontainer.appendChild(ajax_div); } if(ajax_in.value.length >= 1) { if((ajax_in.value != lookupLastVal) && (!lookupRequest)) { lookupLastVal=ajax_in.value; lookupRequest=get_request(); lookupRequest.onreadystatechange = lookup_receive; lookupRequest.open("GET", "/cms/ajax_handler.php?task="+lookupTask+"&dom_id="+dom_id+"&value="+encodeURIComponent(lookupLastVal)+"&offset="+offs, true); lookupRequest.send(null); } } else { lookup_hide_now(); } } } /* * Set and position error bubble */ function forms_errorbubble_position(dom_id, hasError) { var errorbubble; var errorbiframe; var fldnode; var useIeHack = false; var currentErrorBubble; // Detect IE6 if(typeof(navigator.appVersion) != 'undefined') { useIeHack = (navigator.appVersion.indexOf('MSIE 6') >= 0); } if(errorbubble = document.getElementById('errorbubble')) { currentErrorBubble = errorbubble.getAttribute('name'); if(fldnode = document.getElementById(dom_id)) { // Parent node var prnt = fldnode.parentNode; if(hasError) { currentErrorbubble = dom_id; prnt.setAttribute('class', 'favalError'); prnt.setAttribute('className', 'favalError'); if(currentErrorBubble == "" || currentErrorBubble == "none") { // Allocate error bubble in page body var body = document.getElementsByTagName('body')[0]; body.insertBefore(errorbubble, body.firstChild); // Find field position var fldPos = find_object_position(fldnode); // Move bubble to field errorbubble.style.top = (fldPos[1] - 81) + 'px'; errorbubble.style.left = (fldPos[0] - 10) + 'px'; errorbubble.style.zIndex = '101'; // IE 6 Hack: no element can be shown in front of select boxes // except iframes. So we overlay the error bubble with an invisible // iframe, which will block out any underlying select boxes if(useIeHack) { if(!(errorbiframe = document.getElementById('errorbiframe'))) { errorbiframe = document.createElement('iframe'); errorbiframe.id = 'errorbiframe'; errorbiframe.style.position = 'absolute'; errorbiframe.style.display = 'none'; errorbiframe.setAttribute('frameBorder', 0); body.insertBefore(errorbiframe, errorbubble); } // copy style for (var i in errorbubble.style) { try { errorbiframe.style[i] = errorbubble.style[i]; } catch (e) {}} } // Show the bubble errorbubble.style.display = 'block'; errorbubble.setAttribute('name', dom_id); if(useIeHack) { errorbiframe.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)'; errorbiframe.style.display = 'block'; errorbiframe.style.height = '60px'; } } setTimeout('errorbubble_avoid_view_blocking("'+formFocus+'")', 100); } else { prnt.setAttribute('class', ''); prnt.setAttribute('className', ''); if(currentErrorBubble == dom_id) { errorbubble_hide(); } } } } } /** * Detect if current focussed element lies covered behind the error bubble. * If so, hide error bubble. */ function errorbubble_avoid_view_blocking(favalId) { var errorbubble, errorpos; var currentelem, currentpos; var maxtop; if(errorbubble = document.getElementById('errorbubble')) { if (currentelem = document.getElementById(favalId)) { currentpos = find_object_position(currentelem); errorpos = find_object_position(errorbubble); maxtop = errorpos[1]; maxtop = maxtop + 81; if (currentpos[1] < maxtop) { errorbubble_hide(); } } } } /** * Remember focussed element */ function forms_faval_focus(dom_id) { formFocus = dom_id; } /* * Hide the error bubble */ function errorbubble_hide() { var errorbubble, errorbiframe; if(errorbubble = document.getElementById('errorbubble')) { errorbubble.setAttribute('name', ''); errorbubble.style.display = 'none'; if(errorbiframe = document.getElementById('errorbiframe')) { errorbiframe.style.display = 'none'; } } } /* * Do forms class validation call */ function forms_faval(favalUrl, favalId, favalFtype, favalVtype, favalMand) { var favalField, errorbubble; if((favalField = document.getElementById(favalId)) && (errorbubble = document.getElementById('errorbubble'))) { var currentErrorBubble = errorbubble.getAttribute('name'); if(currentErrorBubble == favalId) { errorbubble_hide(); } setTimeout('ajax_call_async("'+favalUrl+'?faval='+favalId+'&ftype='+favalFtype+'&vtype='+favalVtype+'&mand='+favalMand+'&value='+encodeURIComponent(favalField.value)+'")', 15); } } function find_object_position(obj) { var curleft = curtop = 0; if (obj.offsetParent) { do { curleft += obj.offsetLeft; curtop += obj.offsetTop; } while (obj = obj.offsetParent); } return [curleft,curtop]; } // Antwort fuer Lookup- AJAX Request entgegennehmen function lookup_receive() { if(typeof(lookupRequest)!="undefined") if(lookupRequest.readyState == 4) { if(lookupRequest.status == 200) { var root=lookupRequest.responseXML; var lookie; if (lookie = root.getElementsByTagName("lookup")[0]) { var dom_id=lookie.getAttribute("dom_id"); var offs=lookie.getAttribute("offset"); var content=root.getElementsByTagName('div')[0]; var opts=root.getElementsByTagName('option'); var cnt; if(opts.length) { cnt=opts.length } else { cnt=0; } if(cnt > 0) { lookup_show(); var selc, xt, curs, newopt; if(selc=document.getElementById(dom_id+'_select')) { curs=0; if(offs == 0) { selc.innerHTML=""; } else { xt=selc.lastChild; xt.id = opts[curs].getAttribute("id"); xt.value = opts[curs].getAttribute("value"); xt.innerHTML = opts[curs].firstChild.data; curs++; } while(curs < cnt) { if(opts[curs]) { newopt = document.createElement("option"); newopt.id = opts[curs].getAttribute("id"); newopt.value = opts[curs].getAttribute("value"); newopt.innerHTML = opts[curs].firstChild.data; selc.appendChild(newopt); } curs++; } if(offs > 0) { lookup_onchange(); } } } else { lookup_hide_now(); } } else { lookupRequest = false; debug_print('lookup_receive(): invalid ajax response'); } ajax_lookup_response_interval = 200; } lookupRequest=false; } } // Lookup-Selectbox ggf. erzeugen function lookup_show() { var dom_id=lookupDomId; if(lookupVisible != true) { var ajax_in=document.getElementById(dom_id); var ajax_div=document.getElementById(dom_id+'_ajaxdiv'); ajax_div.style.top=ajax_in.style.top; ajax_div.style.visibility='visible'; ajax_div.style.overflow='visible'; var ajax_sel; if(!(ajax_sel=document.getElementById(dom_id+'_select'))) { ajax_sel = document.createElement("select"); ajax_div.appendChild(ajax_sel); ajax_sel.id=dom_id+'_select'; if(document.attachEvent) { ajax_sel.attachEvent ("onchange", lookup_onchange); ajax_sel.attachEvent ("onkeyup", lookup_onkey); ajax_sel.attachEvent ("onblur", lookup_hide_now); ajax_sel.attachEvent ("ondblclick", lookup_accept); } else { ajax_sel.addEventListener ("change", lookup_onchange, false); ajax_sel.addEventListener ("keyup", lookup_onkey, false); ajax_sel.addEventListener ("blur", lookup_hide_now, false); ajax_sel.addEventListener ("ondblclick", lookup_accept, false); } ajax_sel.size=6; ajax_sel.style.margin="0"; ajax_sel.style.width="100%"; ajax_sel.style.height="100pt"; } ajax_in.focus(); lookupVisible=true; } return false; } // Wert aus Lookup-Box uebertragen, oder Listenerweiterung ausloesen function lookup_onchange(e) { var selc=document.getElementById(lookupDomId+'_select'); var ajax_in=document.getElementById(lookupDomId); if(selc.value.substr(0,8)=="_extend_") { ajax_in.value=lookupLastVal; lookupLastVal=""; ajax_lookup_now(selc.value.substr(8)); } else { ajax_in.value=selc.value; if(ajax_in.onchange) ajax_in.onchange(); } return true; } // Tastendruck im Lookup entgegennehmen function lookup_onkey(e) { var key_num=get_keycode(e); if(key_num==13) lookup_accept(); } function lookup_accept() { document.getElementById(lookupDomId).focus(); lookup_hide_now(); ajax_destroy(lookupDomId); } // Lookup nach 100ms ausblenden function lookup_hide() { intervalID=setTimeout('lookup_hide_now();',100); } // Lookup sofort ausblenden function lookup_hide_now() { if(lookupVisible) { var ac; if(ac=document.getElementById(lookupDomId+'_ajaxdiv')) { ac.style.overflow="hidden"; ac.style.visibility='hidden'; lookupVisible=false; } } } /** * Cross browser add-event-listener functionality * Example: add_event_listener(document, 'onload', testfunction); * */ function add_event_listener(listenerobj, event_name, function_reference) { if(document.attachEvent) { listenerobj.attachEvent (event_name, function_reference); } else { listenerobj.addEventListener (event_name, function_reference, false); } } // AJAX-Div leeren function ajax_destroy(dom_id) { empty_node(dom_id+'_ajaxdiv'); } // Timer anhalten function ajax_keep() { clearInterval(intervalID); } // AJAX Loader iframe erstellen / wiederfinden function get_portal(frameid) { var iframe_obj; if(!(iframe_obj=document.getElementById(frameid))) { iframe_obj = document.createElement("iframe"); iframe_obj.id=frameid; iframe_obj.name=frameid; iframe_obj.style.position = 'absolute'; iframe_obj.style.top = '-10px'; iframe_obj.width = '1px'; iframe_obj.height = '1px'; iframe_obj.frameborder = '0'; document.body.appendChild(iframe_obj) } return(iframe_obj); } ///// Tab-Navigation /////////////////////////////////////////////////////////////////// function tab_open(tab_nr, targetUrl, reloadTab, instanceId) { var tabs; var bord, wght, topbord, topimg; var instId = instanceId + '_'; var tab_id = instId + 'body_' + tab_nr; var div_id = instId + 'body_div_' + tab_nr; targetUrl = url_amp_remove(targetUrl); tabs = document.getElementsByTagName("td"); /* Highlight the tab */ var check = instId + 'body'; var checkStrLen = check.length; for(var i=0; i < tabs.length; i++) { if(tabs[i].id.substr(0, checkStrLen) == check) { if(tabs[i].id == tab_id) { bord="none"; wght="bold"; topbord="2px solid orange"; topimg="2px"; } else { bord="solid"; wght="normal"; topbord="0 none"; topimg="0"; } tabs[i].style.borderBottomStyle=bord; document.getElementById(tabs[i].id+"_label").style.fontWeight=wght; document.getElementById(tabs[i].id+"_label").style.borderTop=topbord; document.getElementById(tabs[i].id+"_img").style.top=topimg; } } /* Select the tab page */ var divs=document.getElementById(instId + "tabcontainer").getElementsByTagName("div"); check = instId + 'body_div'; checkStrLen = check.length; for(var i=0; i < divs.length; i++) { if(divs[i].id.substr(0, checkStrLen) == check) { if(divs[i].id == div_id) { divs[i].style.visibility="visible"; divs[i].style.display="block"; } else { divs[i].style.visibility="hidden"; divs[i].style.display="none"; } } } /* Open desired location in tab */ tab_load(tab_nr, targetUrl, reloadTab, instanceId); } /** * Change Tab iframe location without opening it */ function tab_load(tab_nr, targetUrl, reloadTab, instanceId) { if((typeof(targetUrl) != "undefined") && targetUrl != '') { var ifrId = instanceId + "_tab_iframe_" + tab_nr; var ifr=document.getElementById(ifrId); var currentUrl = ifr.src; currentUrl = currentUrl.substring(currentUrl.length - targetUrl.length); if((currentUrl != targetUrl) || reloadTab) { ifr.src = '/cms/gfx/ajaxclock.gif'; setTimeout('tab_open_switch_iframe("'+ifrId+'", "'+targetUrl+'");',15); } } } /* * Delayed opening of an iframe tab (for hourglass display) */ function tab_open_switch_iframe(ifrId, targetUrl) { document.getElementById(ifrId).src = targetUrl; } // SELECTPLUS function selectpluscomplete(fieldvalue, feld, keycode) { fieldvalue=fieldvalue.toLowerCase(); mom=-1; for (i = 0; i < feld.length; i++) if (feld.options[i].selected) { mom = i; break; } if (keycode==38) { if ((!mom)||(mom<=0)) return; else feld.options[mom-1].selected = true; return; } if (keycode==40) { if ((!mom)||(mom<=0)) return; if (mom>=feld.length-1) return; else feld.options[mom+1].selected = true; return; } neu = 0; if (!fieldvalue || fieldvalue=="") { feld.options[0].selected = true; return; } for (i = 0; i < feld.length; i++) { nohit=1; current = feld.options[i].text.toLowerCase(); for (j = 0; j=0) { feld.options[mom].selected = false; } feld.options[neu].selected = true; } // f_SELECTMOVER function move_highlighted_select_options(sourceObjId, targetObjId) { var childOption; var IEPreserveWidth; var sourceObj = document.getElementById(sourceObjId); var targetObj = document.getElementById(targetObjId); IEPreserveWidth = sourceObj.offsetWidth; for(var i = 0; i < sourceObj.options.length; ++i) { if (sourceObj.options[i].selected) { childOption = sourceObj.removeChild(sourceObj.options[i]); childOption.ondblclick = function(){ move_highlighted_select_options(targetObjId, sourceObjId); } targetObj.appendChild(childOption); i--; } } sourceObj.style.width = IEPreserveWidth + 'px'; } function smoAdd(fieldId) { move_highlighted_select_options(fieldId+'_source', fieldId+'_list'); smaUpdateValues(fieldId); } function smoRemove(fieldId) { move_highlighted_select_options(fieldId+'_list', fieldId+'_source'); smaUpdateValues(fieldId); } // f_SELECTMULTI function smaRemove( fieldId ) { // remove text item if ($(fieldId+'_search')) for(i=0;i<$(fieldId+'_list').options.length;++i) { if ($(fieldId+'_list').options[i].text == $(fieldId+'_search').value) { $(fieldId+'_list').removeChild($(fieldId+'_list').options[i]); } } // remove selected items for(i=0;i<$(fieldId+'_list').options.length;++i) { if (!$(fieldId+'_list').options[i].selected) continue; $(fieldId+'_list').removeChild($(fieldId+'_list').options[i]); } smaUpdateValues( fieldId ); } function smaUpdateValues( fieldId ) { if (!$(fieldId+'_values')) return; if (!$(fieldId+'_list')) return; $(fieldId+'_values').value=''; var len = $(fieldId+'_list').options.length; for(i=0;i 0 ? '|' : '') + $(fieldId+'_list').options[i].value; } } function smaAdd( fieldId, url, error ) { var searchStr = $(fieldId+'_search').value; if (!searchStr || searchStr.length < 1 ) return; $(fieldId+'_indicator').style.display = 'inline'; new Ajax.Request(url, { method: 'post', parameters: 'smai=' + encodeURIComponent(searchStr), onComplete:function(smaRequest) { if(smaRequest.responseText && smaRequest.responseText!='undefined') { var responseArr = smaRequest.responseText.split('|'); // Check if value does not exist for (i = 0; i < $(fieldId+'_list').options.length; i++) { if ($(fieldId+'_list').options[i].value == responseArr[0]) { $(fieldId+'_indicator').style.display = 'none'; return; } } opt = new Option(responseArr[1], responseArr[0]); try { $(fieldId+'_list').options[$(fieldId+'_list').options.length]=opt; $(fieldId+'_search').value=''; smaUpdateValues( fieldId ); } catch(ex) { return; } } else { alert(error); } $(fieldId+'_indicator').style.display = 'none'; } } ); } function smaKey(e, add, fieldId, url, error) { var keynum; keynum = (e.keyCode) ? e.keyCode : e.which; if (keynum==13 && add && $(fieldId+'_search').value) { smaAdd(fieldId,url,error); return false; } return true; } // Init EditArea, needs to have the editArea lib loaded function init_editarea(dom_id, the_syntax) { editAreaLoader.init({ id: dom_id, start_highlight: true, allow_resize: "both", allow_toggle: false, replace_tab_by_spaces: 4, language: "en", font_size: "9", syntax: the_syntax }); } // datumshelfer // Only allows certain keys to be used in the date field function DateDigitsOnly(e) { var KeyCode = (e.keyCode) ? e.keyCode : e.which; return ((KeyCode == 8) // backspace || (KeyCode == 9) // tab || (KeyCode == 37) // left arrow || (KeyCode == 39) // right arrow || (KeyCode == 46) // delete || (KeyCode == 59) // : || (KeyCode == 190) // . || (KeyCode == 191) // / || (KeyCode == 13) // Enter || ((KeyCode > 47) && (KeyCode < 58)) // 0 - 9 Keyboard || ((KeyCode > 95) && (KeyCode < 106)) // 0 - 9 NUM Pad ); } // Adds an option to a select box specified by selectId // can e.g. be called from within xajax with $xajaxresponse->AddScript() so that // you don't need to refer to element ids in xajax responses directly function addOption(selectId, txt, val) { var objOption = new Option(txt, val); document.getElementById(selectId).options.add(objOption); } // deletes all options of a given selectbox element function clearAllOptions(selectId) { var objSelectbox = document.getElementById(selectId); for(var i=(objSelectbox.options.length - 1);i>=0;i--) { objSelectbox.options[i] = null; } } // Firebug Debugging function debug_print(str) { if(typeof(console) != "undefined") { console.info(str); } } function resizeToFit(that) { var objNode = (typeof(this.nodeName)=='undefined') ? that : this ; var objIframe = window.parent.document.getElementById('resizeToFit'); var intScrollX, intScrollY, intWinWidth, intWinHeight, intMaxWidth, intMaxHeight; var intWhileCount = 0; do{ // scroll the document by 1 pixel window.scrollTo(1,1); // measure the scroll position intScrollX = (document.all) ? document.body.scrollLeft : window.pageXOffset ; intScrollY = (document.all) ? document.body.scrollTop : window.pageYOffset ; // measure window size intWinWidth = (document.all) ? document.body.offsetWidth : window.innerWidth ; intWinHeight = (document.all) ? document.body.offsetHeight : window.innerHeight ; // if the scroll position is not 0 if(intScrollX>0){ // make the window larger window.resizeBy(32,0); // make the iframe larger if(objIframe!=null && !document.all) objIframe.style.width = (objIframe.style.width=='') ? '64px' : (parseInt(objIframe.style.width) + 32) + 'px'; } if(intScrollY>0){ // make the window larger window.resizeBy(0,32); // make the iframe larger if(objIframe!=null && !document.all) objIframe.style.height = (objIframe.style.height=='') ? '64px' : (parseInt(objIframe.style.height) + 32) + 'px'; } // count the steps intWhileCount += 1; }while((intScrollX>0 || intScrollY>0) && intWhileCount<900); } function waitToFit() { setTimeout("resizeToFit()",100); } var watch_timer; var last_time = 0; var last_action_domain_key = ''; var last_action_rnd_ignore_key = 0; function watch_session_action(action_domain_key, unixtime, rnd_ignore_key) { clearInterval(watch_timer); if (last_action_domain_key == '' && typeof(action_domain_key) != 'undefined') { last_action_domain_key = action_domain_key; } if (last_time == 0 && typeof(unixtime) != 'undefined') { last_time = unixtime; } if (last_action_rnd_ignore_key == 0 && typeof(rnd_ignore_key) != 'undefined') { last_action_rnd_ignore_key = rnd_ignore_key; } //debug_print('watch_'+last_action_domain_key+','+last_time); var url = '/cms/ajax_handler.php?task=sessionaction&value='+last_action_domain_key+'&time='+last_time+'&rnd_ignore_key='+last_action_rnd_ignore_key; async_acall = exec_request(url, true); async_acall.onreadystatechange = watch_session_action_receive; watch_timer = setTimeout('watch_session_action("'+last_action_domain_key+'")', 5000); } function watch_session_action_receive() { if(typeof(async_acall) != "undefined") if(async_acall.readyState == 4) { if(async_acall.status == 200) { if(root = JSON.parse(async_acall.responseText)) { if(typeof(root.javascript) != "undefined") { debug_print(root.javascript); eval(root.javascript); } if(typeof(root.lasttime) != "undefined") { last_time = root.lasttime; clearInterval(watch_timer); watch_timer = setTimeout('watch_session_action("'+root.action_domain_key+'")', 5000); } } } } } /** * Display a tooltip */ function tooltip_show(event, tooltiphtml) { var mousepos = get_mouse_position(event); var tooltip; if (!(tooltip = document.getElementById('cmstooltip'))) { /* Create tooltip */ tooltip = document.createElement('div'); tooltip.id = 'cmstooltip'; tooltip.className = 'cmstooltip'; tooltip.style.position = 'absolute'; document.body.appendChild(tooltip) } if (tooltip.innerHTML == '') { tooltip.innerHTML = tooltiphtml; tooltip.style.display = 'block'; } tooltip.style.left = (mousepos['x'] + 10)+'px'; tooltip.style.top = (mousepos['y'] + 10)+'px'; } /** * Hide the tooltip */ function tooltip_hide() { var tooltip; if (tooltip = document.getElementById('cmstooltip')) { tooltip.innerHTML = ''; tooltip.style.display = 'none'; } } function show_social_networking_list(soc_instance_id) { var soc_nw_lst = document.getElementById(soc_instance_id); soc_nw_lst.style.visibility = 'visible'; } function hide_social_networking_list(soc_instance_id) { var soc_nw_lst = document.getElementById(soc_instance_id); soc_nw_lst.style.visibility = 'hidden'; }