/**
* CMS main JavaScript library, needed by the CMSForms php class
*
* @version $Id: CMSServer forms.js.php v1.00.86 (Uploaded 2011-12-15 12:46:30 by admin_mk, installed here 2011-12-15 12:46:42 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 = ""; // 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(json_string) { return eval('('+json_string+')'); }}
// ALLGEMEINE FUNKTIONEN
function getElementsByClassName(classname, node)
{
if(!node) node = document.getElementsByTagName("body")[0];
var a = [];
var all_elems = node.getElementsByTagName("*");
var i;
var addcount = -1;
for (i in all_elems) {
if (all_elems[i].className && all_elems[i].className.indexOf(classname) != -1) {
addcount++;
a[addcount] = all_elems[i];
}
}
return a;
}
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));
}
/**
* Simulate clicking a submit button. Will try onsubmit first.
* Requires reference to any element within the form.
*/
function form_submit(elem)
{
var is_form = get_parent_by_tag_name(elem, 'form');
if (is_form) {
if (typeof(is_form.onsubmit) != 'undefined' && is_form.onsubmit != null) {
if (is_form.onsubmit()) {
return is_form.submit();
}
} else {
return is_form.submit();
}
} else {
debug_print('Form not found');
}
}
/**
* Return an element's parent by its tag name
*
* This example could find an input fields's form:
*
* form_elem = get_parent_by_tag_name(this, 'form');
*
*/
function get_parent_by_tag_name(elem, tagname)
{
tagname = tagname.toUpperCase();
while (typeof(elem.parentNode) != 'undefined' && elem.parentNode != null) {
elem = elem.parentNode;
if (typeof(elem.tagName != 'undefined') && elem.tagName != null && elem.tagName == tagname) {
return elem;
} else if (typeof(elem.parentNode) == 'undefined') {
return false;
}
}
}
/**
* Convert & to & for proper calls in js
*
* @param string url
* @return string fixed url
*/
function url_amp_remove(url)
{
return str_replace('&', '&', url);
}
function add_classname(dom_object, classname)
{
if (typeof(dom_object.className) != 'string') {
dom_object.className = '';
}
if (dom_object.className.indexOf(classname) == -1) {
dom_object.className = trim(dom_object.className + ' ' + classname);
}
}
function strip_classname(dom_object, classname)
{
if (typeof(dom_object.className) == 'string') {
dom_object.className = trim(str_replace(' '+classname+' ', ' ', ' '+dom_object.className+' '));
}
}
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('/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('/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 x => x position, y => 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.opener = this;
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);
//old overview
var nw=750;
var nh=700;
imgArch = window.open("/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+"");
//new overview
// var nw=screen.availWidth-10;
// var nh=screen.availHeight-55;
// imgArch = window.open("/admin/overview/archive_overview.php?root="+overview_type, "imgArch","toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width="+nw+",height="+nh+"");
if(imgArch) {
imgArch.opener = this;
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="/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;
}
/**
* Return div displaying ajax clock
*/
function get_ajaxclock_html()
{
return '
';
}
///// "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)
{
var async_call = exec_request(url, true);
async_call.onreadystatechange = function () { ajax_call_async_receive(async_call); };
}
function ajax_call_async_delayed(url, delay)
{
setTimeout('ajax_call_async("'+url+'")', delay);
}
function ajax_call_async_receive(async_call)
{
if(typeof(async_call)!="undefined") if(async_call.readyState == 4) {
if(async_call.status == 200) {
ajax_parent_push(async_call);
}
}
}
/**
* 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('ajax_parent_push JSON error: '+req.responseText);
}
if (root) {
if (typeof(root.resp) != 'undefined') {
/* Response from ajax_response.class.php */
if (typeof(root.set_innerhtml) == 'object') {
var key;
for (key in root.set_innerhtml) {
fill_dom_innerhtml(key, root.set_innerhtml[key]);
}
}
} else if(typeof(root.body) != 'undefined') {
/* Response from ajax_parent_push() */
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", "/ajax_handler.php?task="+lookupTask+"&dom_id="+dom_id+"&value="+encodeURIComponent(lookupLastVal)+"&offset="+offs, true);
lookupRequest.send(null);
}
} else {
lookup_hide_now();
}
}
}
// 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 htmlcontents;
var lookup_elem;
if (lookup_elem = root.getElementsByTagName("lookup")[0]) {
var dom_id=lookup_elem.getAttribute("dom_id");
var offs=lookup_elem.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="";
}
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);
if (curs == 0) {
selc.value = newopt.value;
}
}
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';
add_event_listener(ajax_sel, 'change', lookup_onchange);
add_event_listener(ajax_sel, 'click', lookup_onchange);
add_event_listener(ajax_sel, 'keyup', lookup_onkey);
add_event_listener(ajax_sel, 'blur', lookup_hide_now);
add_event_listener(ajax_sel, 'dblclick', lookup_accept);
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);
var chld;
var offset;
if(selc.value.substr(0,8)=="_extend_") {
ajax_in.value=lookupLastVal;
lookupLastVal="";
offset = selc.value.substr(8);
if (chld = document.getElementById(lookupDomId+'_extender')) {
selc.removeChild(chld);
}
ajax_lookup_now(offset);
} 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()
{
debug_print('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;
}
}
}
function get_errorbubble()
{
errorbubble = document.getElementById('errorbubble');
if (!errorbubble) {
errorbubble = document.createElement('div');
errorbubble.id = 'errorbubble';
errorbubble.setAttribute('name', 'none');
errorbubble.onmousemove = errorbubble_hide;
document.getElementsByTagName('body')[0].appendChild(errorbubble);
}
return errorbubble;
}
/*
* 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);
}
// Get or create errorbubble
errorbubble = get_errorbubble();
if (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;
errorbubble = get_errorbubble();
if(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;
errorbubble = get_errorbubble();
if (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;
errorbubble = get_errorbubble();
if((favalField = document.getElementById(favalId)) && errorbubble) {
var currentErrorBubble = errorbubble.getAttribute('name');
if(currentErrorBubble == favalId) {
errorbubble_hide();
}
if (favalUrl.indexOf('?') >= 0) {
favalUrl += '&';
} else {
favalUrl += '?';
}
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];
}
/**
* Cross browser add-event-listener functionality
*
* Example:
*
* add_event_listener(window, "load", function() { lb_init(); });
* add_event_listener(window, "resize", function() { alert("foo!"); });
*/
function add_event_listener(elem, event_name, function_reference)
{
if (elem.addEventListener) {
// W3C DOM
elem.addEventListener(event_name, function_reference, false);
return true;
} else if (elem.attachEvent) {
var r = elem.attachEvent("on" + event_name, function_reference);
return r;
} else {
elem['on' + event_name] = function_reference;
return true;
}
}
// 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);
}
/**
* Fade out an element after duration x
*/
function blink_message(dom_id, duration)
{
if (typeof(duration) != "number") {
duration = 1500;
}
setTimeout("elem_fadeout(\"" + dom_id + "\")", duration);
}
/**
* Create a tooltip like bubble
*/
function create_blink_message(message_html, append_to_element, classname, duration)
{
if (typeof(classname) != "string") {
classname = "ok";
}
var elem = get_or_create_element('cmsblinkmessage', 'div');
elem.className = 'cmstooltip '+classname;
elem.style.position = 'absolute';
elem.style.zIndex = 200;
elem.style.opacity = 1;
elem.style.top = '5px';
elem.style.display = 'block';
elem.innerHTML = message_html;
/* Find element to attach the message bubble to */
var attach_elem;
if (typeof(append_to_element) == 'string') {
attach_elem = document.getElementById(append_to_element);
}
/* Fallback to body */
if (typeof(attach_elem) != 'object') {
alert('neh');
attach_elem = document.body;
}
attach_elem.appendChild(elem);
blink_message('cmsblinkmessage', duration);
}
/**
* Get an element by ID, if it doesn't exist, create one of the given type
*/
function get_or_create_element(dom_id, element_type)
{
var elem = document.getElementById(dom_id);
if (!elem) {
elem = document.createElement(element_type);
elem.id = dom_id;
}
return elem;
}
/**
* Fade out an element
*/
var elem_fadeout_timer;
function elem_fadeout(dom_id)
{
clearInterval(elem_fadeout_timer);
var fadeOut = document.getElementById(dom_id);
var opac = fadeOut.style.opacity;
if (opac == "") {
opac = fadeOut.style.opacity = 1;
}
if (opac > 0.02) {
fadeOut.style.opacity -= 0.02;
elem_fadeout_timer = setTimeout("elem_fadeout('" + dom_id + "');", 10);
} else {
fadeOut.style.display = "none";
fadeOut.style.opacity = 1;
}
}
function elem_fade_cancel()
{
clearInterval(elem_fadeout_timer);
}
/**
* CMS Tab Navigation Functions
*/
/**
* Open a tab
*/
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;
/* Store current tab nr */
document.getElementById(instId + 'current').value = 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) {
tabs[i].className = 'cmstab_selected';
} else {
tabs[i].className = 'cmstab_unselected';
}
}
}
/* 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);
}
/**
* Refresh current open tab location
*/
function tab_refresh(instanceId)
{
var tab_nr = document.getElementById(instanceId + '_current').value;
var target_url = document.getElementById(instanceId + '_body_' + tab_nr + '_url').value;
if (target_url) {
tab_load(tab_nr, target_url, true, 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 = '/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;
}
}
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
function get_ie_version()
{
var rv = -1; // Return value assumes failure.
if (navigator.appName == 'Microsoft Internet Explorer') {
var ua = navigator.userAgent;
var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null) rv = parseFloat( RegExp.$1 );
}
return rv;
}
function cmstab_auto_size(instanceid)
{
var tabelem = document.getElementById(instanceid + '_table');
if (tabelem) {
var prnt = tabelem.parentNode;
var h = prnt.clientHeight;
if (typeof(h) != 'undefined' && h) {
if (navigator.appVersion.indexOf("MSIE") != -1) {
// IE Hack
h = h - 40;
}
if (tabelem.height) {
tabelem.height = h;
}
tabelem.style.height = h + 'px';
}
}
}
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 = '/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);
}
}
}
}
}
/**
* LoginBox label overlay Init
*/
function login_box_init_overlabels()
{
if (!document.getElementById) return;
var labels, id, field;
// Set focus and blur handlers to hide and show
// LABELs with 'overlabel' class names.
labels = document.getElementsByTagName('label');
for (var i = 0; i < labels.length; i++) {
if (labels[i].className == 'overlabel') {
// Skip labels that do not have a named association
// with another field.
id = labels[i].htmlFor || labels[i].getAttribute('for');
if (!id || !(field = document.getElementById(id))) {
continue;
}
// Change the applied class to hover the label
// over the form field.
labels[i].className = 'overlabel-apply';
// Hide any fields having an initial value.
if (field.value !== '') {
login_box_hide_label(field.getAttribute('id'), true);
}
// Set handlers to show and hide labels.
field.onfocus = function () {
login_box_hide_label(this.getAttribute('id'), true);
};
field.onblur = function () {
if (this.value === '') {
login_box_hide_label(this.getAttribute('id'), false);
}
};
// Handle clicks to LABEL elements (for Safari).
labels[i].onclick = function () {
var id, field;
id = this.getAttribute('for');
if (id && (field = document.getElementById(id))) {
field.focus();
}
};
}
}
}
function login_box_hide_label(field_id, hide)
{
var field_for;
var labels = document.getElementsByTagName('label');
for (var i = 0; i < labels.length; i++) {
field_for = labels[i].htmlFor || labels[i].getAttribute('for');
if (field_for == field_id) {
labels[i].style.display = (hide) ? 'none' : 'block';
return true;
}
}
}
/**
* 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';
tooltip.style.zIndex = 200;
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';
}
/**
* Get viewport height
*/
function get_viewport_height()
{
var viewportheight;
if (typeof window.innerWidth != "undefined") {
viewportheight = window.innerHeight; // modern
} else if (typeof document.documentElement != "undefined" && typeof document.documentElement.clientWidth != "undefined" && document.documentElement.clientWidth != 0) {
viewportheight = document.documentElement.clientHeight; // IE6 compliant
} else {
viewportheight = document.getElementsByTagName("body")[0].clientHeight // Older / Quirks
}
return viewportheight;
}
/**
* Resize iframe to match contents
*
* Example usage:
*
*
*/
function auto_resize_iframe(frameId)
{
try {
frame = document.getElementById(frameId);
innerDoc = (frame.contentDocument) ? frame.contentDocument : frame.contentWindow.document;
if (innerDoc == null){
// Google Chrome
frame.height = document.all[frameId].clientHeight + document.all[frameId].offsetHeight + document.all[frameId].offsetTop;
} else {
if (frame.style) {
frame.style.height = (innerDoc.body.scrollHeight + 18) + 'px';
} else {
frame.height = (innerDoc.body.scrollHeight + 18);
}
}
} catch(err) {
debug_print('auto_resize_iframe: ' + err.message);
}
}
/**
* Send debug message to console
*/
function debug_print(str)
{
if(typeof(console) != "undefined" && str) {
console.info(str);
}
}