/**
	* Ajax based procedure to get data by url (rw)
	*
	* el: id of html-element
	* url: url
	* param: runtime params
	* none_eval: execute without eval-of-responseText (for json / javascript-responses)
	*
	* getdata('div_chat2', 'index.php?page=viewcompiler_chat&id_view=18', 'searchcontent=Max&searchfield=145', 1)
	*/

function getdata(el, url, param, none_eval)
	{
	var req;

	try { req = new ActiveXObject('Msxml2.XMLHTTP'); } // ie6+
  catch(e)
    {
    try { req = new ActiveXObject('Microsoft.XMLHTTP'); } // ie5-
    catch(e)
	    {
	    try { req = new XMLHttpRequest(); } // moz
	    catch (e) { req = false; }
	    }
    }

	req.open('post', url, true);

	req.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
	req.onreadystatechange = function()
  		{
    	if((req.readyState == 4) && (req.status == 200))
    		{
    		if(none_eval)
    			{
    			sethtml(el, req.responseText);
    			}
    		else
    			{
    			eval(req.responseText);
    			}
      	}
  		};

  req.send(param);
	}

function sethtml(div, content)
	{
  var search = content;
  var script;
  while( script = search.match(/(<script[^>]+javascript[^>]+>\s*(<!--)?)/i))
  	{
    search = search.substr(search.indexOf(RegExp.$1) + RegExp.$1.length);
    if (!(endscript = search.match(/((-->)?\s*<\/script>)/))) break;
    block = search.substr(0, search.indexOf(RegExp.$1));
    search = search.substring(block.length + RegExp.$1.length);

    var oScript = document.createElement('script');
    oScript.text = block;
    document.getElementsByTagName("head").item(0).appendChild(oScript);
  	}

    document.getElementById(div).innerHTML = content;
	}



/**
	* Switch div's
	*/
function switch_div_display(id, force_state)
	{
	var el = document.getElementById(id);
	if(el)
		{
		if(force_state!='') { el.style.display=force_state; }
		else if(el.style.display=='block') { el.style.display='none'; }
		else { el.style.display='block'; }
		}
	}

function switch_div_innerhtml(id, text1, text2, force_state)
	{
	var el = document.getElementById(id);
	if(el)
		{
		if(el.innerHTML == text1 || force_state == '2') { el.innerHTML = text2; }
		else { el.innerHTML = text1; }
		}
	}

function switch_div_style(id, style1, style2, force_state)
	{
	var el = document.getElementById(id);
	if(el)
		{
		if(el.style.cssText == style1 || force_state == '2') { el.style.cssText = style2; }
		else { el.style.cssText = style1; }
		}
	}

function switch_img_src(id, src1, src2, force_state)
	{
	var el = document.getElementById(id);
	if(el)
		{
		if(el.language == src1 || force_state == '2' || !(el.language!='') || el.lang == '') { el.src = src2; el.language = src2; el.lang = src2; }
		else { el.src = src1; el.language = src1; el.lang = src1; }
		}
	}

function switch_div_display_all(opener_todisplay, opener_toclose, label1, force_state1, label2, force_state2, imglabel, src1, src2)
	{
	var el = document.getElementById(opener_todisplay);
	if(el) { el.style.display = 'block'; }

	var el = document.getElementById(opener_toclose);
	if(el) { el.style.display = 'none'; }

	for(var i=0,c=500;i<c;++i)
		{
		switch_div_display(label1 + i, force_state1);
		switch_div_display(label2 + i, force_state2);
		switch_img_src(imglabel + i, src1, src2, '2');
		}
	}



/**
	* Cookies
	*/
function cookie_check()
	{
  document.cookie = "_cookie_check=1";
  if(cookie_getvalue("_cookie_check")==true) { return '1'; }
  else { return false; }
	}

function cookie_getvalue(label)
	{
  var exp = new RegExp (escape(label) + "=([^;]+)");
  if (exp.test (document.cookie + ";")) {
    exp.exec (document.cookie + ";");
    return unescape(RegExp.$1);
  }
  else return false;
	}



/* Selection */

function deselectQuote(target_idfield)
	{
	var tgt = document.getElementById('div_'+target_idfield +'_content');
	var backup = document.getElementById('quote_backup');
	if(tgt && backup)
		{
		removeElement('quote_mark');
		tgt.innerHTML = backup.innerHTML;
		removeElement('quote_backup');
		}
	}

function selectQuote(quote, target_idtypefield)
	{
	var id_tgt = 'div_'+target_idtypefield+'_content';
	var tgt = document.getElementById(id_tgt);
	if(tgt)
		{
		var content = tgt.innerHTML;
		if(content!='' && quote!='')
			{
			tgt.innerHTML = '';
			addElement(id_tgt, 'div', 'quote_backup', content, 'display:none;');
			content = content.replace(quote, "<span style='color:white;background-color:#447bcd;'>"+quote+"</span>");
			addElement(id_tgt, 'div', 'quote_mark', content, '');
			}
		}
	}

function addElement(parent_id, type, id, innerhtml, style)
	{
  var parent = document.getElementById(parent_id);
  if(parent)
  	{
  	var el = document.createElement(type);
  	//el.setAttribute('style', style);
  	setElementStyle(el, style);
  	el.setAttribute('id', id);
  	el.setAttribute('name', id);
  	el.innerHTML = innerhtml;
  	parent.appendChild(el);
  	}
	}

function removeElement(parent_id, id)
	{
	var parent = document.getElementById(parent_id);
	var div = document.getElementById(id);
	if(parent && div)
		{
  	parent.removeChild(div);
  	}
	}

function setElementStyle(el, declaration)
	{
	try
		{
		if(el)
			{
			declaration = declaration.replace(/\s+/g,''); // remove all white spaces
			if(document.all) // shit-ie
				{
				if(declaration.charAt(declaration.length-1)==';') { declaration = declaration.slice(0, -1); }

				var k, v;
				var splitted = declaration.split(';');
				for(var i=0, len=splitted.length; i<len; i++)
					{
					k = rzCC(splitted[i].split(':')[0]);
					v = splitted[i].split(':')[1];

					if(k!='' && v!='') { el.style.setAttribute(k, v); }
					//eval("el.style."+k+"='"+v+"'");
					}
				return(true);
				}
			else
				{
				el.setAttribute('style', declaration);
				return(true);
				}
			}
		}
	catch(e) { return(false); }
	}

// retrieving-css-styles-via-javascript/
function rzCC(s)
	{
  for(var exp=/-([a-z])/; exp.test(s); s=s.replace(exp,RegExp.$1.toUpperCase()));
  return s;
	}




function selectText(node, text)
	{
  if(window.getSelection)
  	{
  	if(node)
  		{
  		node.selectionStart = node.innerHTML.lastIndexOf(text);
    	node.selectionEnd = node.innerHTML.lastIndexOf(text) + text.length;
    	node.focus();
  		}
  	}
  else if(document.selection && document.body.createTextRange)
  	{
    var range = document.body.createTextRange();
    range.moveToElementText(node);
    range.findText(text);
    range.select();
  	}
	}

function highlightText(name)
	{
	if(window.getSelection)
		{
		//var s = window.getSelection();

		//r1.setStartBefore(document.getElementById(el));
		//r1.setEndAfter(document.getElementById(el)) ;

		var el = document.getElementById(name);
		var r = document.createRange();

		var first = el.firstChild.firstChild;
		var last = el.lastChild;
		var r = document.createRange();
		var sp = document.createElement("span");
		sp.style.backgroundColor = "yellow";

		/*
		r.setStart(first, 2);
		r.setEnd(last, 3);
		*/

		r1.setStartBefore(el);
		r1.setEndAfter(el);

		r.surroundContents(sp);

		/*
		r.selectNodeContents(el);
		r.setEndBefore(el.lastChild);
		*/
		/*
		r.startOffset = 2;
		r.endOffset = 6;
		*/
		/*
		r.setStart(el, 0);
		r.setEndAfter(el);
		*/
		}
	else if(document.selection && document.body.createTextRange)
  	{
  	var r1 = document.body.createTextRange();
		r1.moveToElementText(document.getElementById(el));
		r1.setEndPoint("EndToEnd", r1);
		r1.moveStart('character', 4);
		r1.moveEnd('character', 8);
		r1.select();
  	}
	}

function charcount(char_element, maxchars, error_element, showcount_element)
 	{
 	var el = document.getElementById(char_element);
 	var err = document.getElementById(error_element);
 	var show = document.getElementById(showcount_element);

 	if(el)
 		{
 		var l = el.value.length;
 		if(show) { show.innerHTML = l + ' Zeichen'; }
 		if(err) { err.innerHTML = ''; }
 		if(l > maxchars)
 			{
 			if(err) { err.innerHTML = 'Bitte kürzen Sie ihren Text. Es sind maximal ' + maxchars + ' Zeichen erlaubt.'; }
 			return false;
 			}
 		else
 			{
 			return true;
 			}
 		}
	}

function trim(str)
	{
	var	str = str.replace(/^\s\s*/, ''), ws = /\s/, i = str.length;
	while (ws.test(str.charAt(--i)));
	return str.slice(0, i + 1);
	}



function switch_ajax_comments(teaser, hidden, morelink, length)
	{
	window.setTimeout('', 5000);

	for(var i=0; i<document.getElementsByTagName("span").length; ++i)
		{
  	var node = document.getElementsByTagName("span")[i];

  	alert(node.name);

  	if(node.name == teaser)
  		{
  		alert(teaser);
  		}
		}

	var t = document.getElementById(teaser);
	var h = document.getElementById(hidden);
	var l = document.getElementById(morelink);

	//alert('t: ' + t + ', h: ' + h + ', l: ' + l);

	if(length < 150)
		{
		t.style.display = 'none';
		h.style.display = 'block';
		l.style.display = 'none';
		}
	}
/**
 * Writes defined values to hidden fields of a vote form.
 */
function writeVoteValue(formid, toTrigger)
    {
    switch(toTrigger)
        {
            case 'wd':
                document.getElementById('voteForm_'+formid).votevalue.value = 1;
                document.getElementById('voteForm_'+formid).votevalue2.value = 1;
                break;
            case 'w':
                document.getElementById('voteForm_'+formid).votevalue.value = 1;
                document.getElementById('voteForm_'+formid).votevalue2.value = 0;
                break;
            case 'd':
                document.getElementById('voteForm_'+formid).votevalue.value = 0;
                document.getElementById('voteForm_'+formid).votevalue2.value = 1;
                break;
            case 'n':
            default:
                document.getElementById('voteForm_'+formid).votevalue.value = 0;
                document.getElementById('voteForm_'+formid).votevalue2.value = 0;
                break;
        }
    }