var usepreview = true;

function AjaxRequest(file, variables, foo){
   this.file = file || "ajax.php";
   this.variables = variables || null;
   this.foo = foo || function() {};
   this.req = (window.XMLHttpRequest ? new XMLHttpRequest() : (window.ActiveXObject ? new window.ActiveXObject("Microsoft.XMLHTTP") : false));
   this.doRequest = function(){
      if(!this.req){
         window.alert('Failured to construct an XMLHTTP-Instance.');
      }else{
         var time = new Date();
         this.req.open("POST", "ajax.php?t=" + time.getTime(), true);
         this.req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
         this.req.onreadystatechange = this.foo;
         this.req.send(this.variables);
      }
   }
}

function no_preview(){
   usepreview = false;
   document.getElementById('tr_livepreview').style.display = 'none';
   document.getElementById('tr_livepreview2').style.display = 'none';
}

function textarea_grow(id, areaheight){
   var newheight = parseInt(document.getElementById(id).style.height) + parseInt(areaheight);
   document.getElementById(id).style.height = newheight + 'px';
}

function textarea_shrink(id, areaheight){
   var newheight = parseInt(document.getElementById(id).style.height) - parseInt(areaheight);
   if(newheight>0) document.getElementById(id).style.height = newheight + 'px';
}

function no_userpic(){
   document.getElementById('tr_userpic').style.display = 'none';
}
function no_usecomments(){
   document.getElementById('tr_usecomments').style.display = 'none';
}
function no_usesmilies(){
   document.getElementById('tr_usesmilies').style.display = 'none';
}
function no_usewtbcodes(){
   document.getElementById('tr_usewtbcodes').style.display = 'none';
}
function no_usehtml(){
   document.getElementById('tr_usehtml').style.display = 'none';
}
function no_options(){
   document.getElementById('tr_options').style.display = 'none';
}
function no_optional(){
   document.getElementById('tr_optional').style.display = 'none';
}

function livesearch(){
   var content_text = window.document.getElementById('text').value;
   if(window.document.getElementById('binary').checked == true) var binary = 1;
   else var binary = 0;
   var page = window.document.getElementById('page').value;
   lsearch = new AjaxRequest("ajax.php", "action=search&text=" + content_text + "&binary=" + binary + "&page=" + page, function() {
      if(lsearch.req.readyState==4){
         if(lsearch.req.status==200){
            var response = lsearch.req.responseText;
            window.document.getElementById('entries').innerHTML = response;
         }
      }
   })
   lmsgbox = new AjaxRequest("ajax.php", "action=searchmsgbox&text=" + content_text + "&binary=" + binary, function() {
      if(lmsgbox.req.readyState==4){
         if(lmsgbox.req.status==200){
            var response = lmsgbox.req.responseText;
            window.document.getElementById('msgbox').innerHTML = response;
         }
      }
   })
   lsearch.doRequest();
   lmsgbox.doRequest();
}

function show_preview(cases){
   if(usepreview==true){
      switch(cases){
      case 'entry':
         var content_text = window.document.getElementById('text').value;
         if(document.text.usesmilies.checked == true){
            var content_usesmilies = 1;
         }else{
            var content_usesmilies = 0;
         }
         if(document.text.usewtbcodes.checked == true){
            var content_usewtbcodes = 1;
         }else{
            var content_usewtbcodes = 0;
         }
         if(document.text.usehtml.checked == true){
            var content_usehtml = 1;
         }else{
            var content_usehtml = 0;
         }
         preview = new AjaxRequest("ajax.php", "action=preview_entry&text=" + content_text + "&usesmilies=" + content_usesmilies + "&usewtbcodes=" + content_usewtbcodes + "&usehtml=" + content_usehtml, function() {
            if(preview.req.readyState==4){
               if(preview.req.status==200){
                  var response = preview.req.responseText;
                  window.document.getElementById('preview').innerHTML = response;
               }
            }
         })
      break;
      case 'comment':
         var content_text = window.document.getElementById('text').value;
         if(document.text.usesmilies.checked == true){
            var content_usesmilies = 1;
         }else{
            var content_usesmilies = 0;
         }
         if(document.text.usewtbcodes.checked == true){
            var content_usewtbcodes = 1;
         }else{
            var content_usewtbcodes = 0;
         }
         if(document.text.usehtml.checked == true){
            var content_usehtml = 1;
         }else{
            var content_usehtml = 0;
         }
         preview = new AjaxRequest("ajax.php", "action=preview_comment&text=" + content_text + "&usesmilies=" + content_usesmilies + "&usewtbcodes=" + content_usewtbcodes + "&usehtml=" + content_usehtml, function() {
            if(preview.req.readyState==4){
               if(preview.req.status==200){
                  var response = preview.req.responseText;
                  window.document.getElementById('preview').innerHTML = response;
               }
            }
         })
      break;
      case 'entrycomment':
         var content_text = window.document.getElementById('comment').value;
         preview = new AjaxRequest("ajax.php", "action=preview_entrycomment&text=" + content_text, function() {
            if(preview.req.readyState==4){
               if(preview.req.status==200){
                  var response = preview.req.responseText;
                  window.document.getElementById('preview').innerHTML = response;
               }
            }
         })
      break;
      case 'commentcomment':
         var content_text = window.document.getElementById('comment').value;
         preview = new AjaxRequest("ajax.php", "action=preview_commentcomment&text=" + content_text, function() {
            if(preview.req.readyState==4){
               if(preview.req.status==200){
                  var response = preview.req.responseText;
                  window.document.getElementById('preview').innerHTML = response;
               }
            }
         })
         break;
      }
      preview.doRequest();
   }
}

function info(url, width){
   width = parseInt(width) + 50;
   tsi = window.open(url, "tsi1", "width=" + width + ",height=600,status=yes,scrollbars=yes,resizable=yes");
   tsi.focus();
}

function fieldsform(fieldtype, linkyn){
//1 - text | 2 - textarea | 3 - select | 4 - radio | 5 - checkbox
   fieldtype = parseInt(fieldtype);
   if(linkyn!=parseInt(linkyn)) linkyn = (linkyn==true) ? 1 : 0;
   switch(fieldtype){
   case 1:
      document.getElementById('tr_icon').style.display = 'table-row';
      document.getElementById('tr_link').style.display = 'table-row';
      document.getElementById('tr_value').style.display = 'table-row';
      document.getElementById('tr_values').style.display = 'none';
      document.getElementById('tr_defaultvalue').style.display = 'none';
      document.getElementById('tr_defaultbool').style.display = 'none';
      document.getElementById('tr_maxchars').style.display = 'table-row';
      document.getElementById('tr_size').style.display = 'none';
   break;
   case 2:
      document.getElementById('tr_icon').style.display = 'table-row';
      document.getElementById('tr_link').style.display = 'table-row';
      document.getElementById('tr_value').style.display = 'table-row';
      document.getElementById('tr_values').style.display = 'none';
      document.getElementById('tr_defaultvalue').style.display = 'none';
      document.getElementById('tr_defaultbool').style.display = 'none';
      document.getElementById('tr_maxchars').style.display = 'table-row';
      document.getElementById('tr_size').style.display = 'none';
   break;
   case 3:
      document.getElementById('tr_icon').style.display = 'table-row';
      document.getElementById('tr_link').style.display = 'table-row';
      document.getElementById('tr_value').style.display = 'none';
      document.getElementById('tr_values').style.display = 'table-row';
      document.getElementById('tr_defaultvalue').style.display = 'table-row';
      document.getElementById('tr_defaultbool').style.display = 'none';
      document.getElementById('tr_maxchars').style.display = 'none';
      document.getElementById('tr_size').style.display = 'table-row';
   break;
   case 4:
      document.getElementById('tr_icon').style.display = 'table-row';
      document.getElementById('tr_link').style.display = 'table-row';
      document.getElementById('tr_value').style.display = 'none';
      document.getElementById('tr_values').style.display = 'table-row';
      document.getElementById('tr_defaultvalue').style.display = 'table-row';
      document.getElementById('tr_defaultbool').style.display = 'none';
      document.getElementById('tr_maxchars').style.display = 'none';
      document.getElementById('tr_size').style.display = 'none';
   break;
   case 5:
      document.getElementById('tr_icon').style.display = 'table-row';
      document.getElementById('tr_link').style.display = 'table-row';
      document.getElementById('tr_value').style.display = 'table-row';
      document.getElementById('tr_values').style.display = 'none';
      document.getElementById('tr_defaultvalue').style.display = 'none';
      document.getElementById('tr_defaultbool').style.display = 'table-row';
      document.getElementById('tr_maxchars').style.display = 'none';
      document.getElementById('tr_size').style.display = 'none';
   break;
   if(linkyn==1) document.getElementById('tr_target').style.display = 'table-row';
   else document.getElementById('tr_target').style.display = 'none';
   }
}

function FormatNumber(num, decpoint, sep){
   if((arguments.length==2)||(arguments.length==1)) sep = ',';
   if(arguments.length==1) decpoint = '.';
   num = num.toString();
   a = num.split(decpoint);
   x = a[0];
   y = a[1];
   z = '';
   if(typeof(x)!='undefined'){
      for(i=x.length-1;i>=0;i--) z += x.charAt(i);
      z = z.replace(/(\d{3})/g, "$1" + sep);
      if(z.slice(-sep.length)==sep) z = z.slice(0, -sep.length);
      x = '';
      for(i=z.length-1;i>=0;i--) x += z.charAt(i);
      if((typeof(y)!='undefined')&&(y.length>0)) x += decpoint + y;
   }
   return x;
}

function SwitchMenu(obj){ 
   if(document.getElementById){ 
   var el = document.getElementById(obj); 
   var ar = document.getElementById("masterdiv").getElementsByTagName("span"); 
      if(el.style.display != "block"){
         for(var i=0; i<ar.length; i++){ 
            if(ar[i].className=="submenu")
            ar[i].style.display = "none"; 
         } 
         el.style.display = "block"; 
      }else{ 
         el.style.display = "none"; 
      } 
   } 
}

function selectall(form){
   for(var i=0; i<document.getElementById(form).elements.length; i++){
      var e = document.getElementById(form).elements[i];
      if((e.type=="checkbox")){
         e.checked = (document.getElementById(form).all.checked) ? true : false;
      }		
   }
}

function confirmIT(link, text){
   if(window.confirm(text) == true) document.location.href = link;
}

function htmlspecialchars(text){
   text=text.replace(/&/gi, "&amp;");
   text=text.replace(/</gi, "&lt;");
   text=text.replace(/>/gi, "&gt;");
   text=text.replace(/\"/gi, "&quot;");
   text=text.replace(/'/gi, "&#039;");
   return text;
}
function nl2br(text){
   text=text.replace(/\n/gi, "<br />");
   return text;
}

function showmenu(elmnt){
   document.getElementById(elmnt).style.visibility="visible";
}
function hidemenu(elmnt){
   document.getElementById(elmnt).style.visibility="hidden";
}

function wtbcodes(aTag, eTag, tForm, tElement,ynPrompt){
   var input = document.forms[tForm].elements[tElement];
   input.focus();
   if(typeof document.selection != 'undefined'){
      var range = document.selection.createRange();
      var insText = range.text;
      if(aTag == '[url]'){
         var tInpuu = prompt("URL:", "http://");
         if(tInpuu){
            if(tInpuu != 'http://'){
               var tInput = prompt("Text:", insText);
               aTag = '[url=' + tInpuu + ']';
               if(!tInput){
                  tInput = tInpuu;
               }
            }else return;
         }else return;
      }else{
         if(aTag == '[email]'){
            var tInpuu = prompt("eMail:", "");
            if(tInpuu){
               var tInput = prompt("Text:", insText);
               aTag = '[email=' + tInpuu + ']';
               if(!tInput){
                  tInput = tInpuu;
               }
            }else return;
         }else{
            if(ynPrompt != 'no'){
               var tInput = prompt("Text:", insText);
               if(!tInput) return;
            }else{
              var tInput = '';
            }
         }
      }
      range.text = aTag + tInput + eTag;
      range = document.selection.createRange();
      if(insText.length == 0){
         range.move('character', -eTag.length);
      }else{
         range.moveStart('character', aTag.length + insText.length + eTag.length);      
      }
         range.select();
   }else if(typeof input.selectionStart != 'undefined'){
      var start = input.selectionStart;
      var end = input.selectionEnd;
      var insText = input.value.substring(start, end);
      input.value = input.value.substr(0, start) + aTag + insText + eTag + input.value.substr(end);
      var pos;
      if(insText.length == 0){
         pos = start + aTag.length;
      }else{
         pos = start + aTag.length + insText.length + eTag.length;
      }
      input.selectionStart = pos;
      input.selectionEnd = pos;
   }else{
      var pos;
      var re = new RegExp('^[0-9]{0,3}$');
      while(!re.test(pos)){
         pos = prompt("Einfügen an Position (0.." + input.value.length + "):", "0");
      }
      if(pos > input.value.length){
         pos = input.value.length;
      }
      var insText = prompt("Bitte geben Sie den zu formatierenden Text ein:");
      input.value = input.value.substr(0, pos) + aTag + insText + eTag + input.value.substr(pos);
   }
}

var blinkColTbl = new Array();
blinkColTbl[0] = "black";
blinkColTbl[1] = "silver";
var blinkTimeout = 1000;

function blinky(){
   var blinkTimeout = 10000;
   blink();
}

function zucki(){
   var blinkTimeout = 20000;
   blink();
}

var blinkIdx = 0;

function blink(){
   if((document.all)&&(document.all.blink)){
      blinkIdx = (blinkIdx+=1) % 2;
      var color = blinkColTbl[blinkIdx];
      if(document.all.blink.length){
         for(i=0;i<document.all.blink.length;i++) document.all.blink[i].style.color=color;
      }else document.all.blink.style.color=color;
      setTimeout("blink();" , blinkTimeout);
   }
}

function HexArray(n){
   this.length = n
   for(i=0; i<10; i++) this[i] = i
   this[10] = "A"
   this[11] = "B"
   this[12] = "C"
   this[13] = "D"
   this[14] = "E"
   this[15] = "F"
   return(this)
}

hex = new HexArray()

function DezNachHex(x){
   var high = Math.floor(x / 16)
   var low = Math.floor(x - high * 16)
   return(hex[high] + "" + hex[low])
}

function Farbspiel(text){
   for(i=0;i<text.length;i++){
      FarbwertRot = 255 - (255 * i) / (text.length - 1)
      FarbwertGruen = 10
      FarbwertBlau = 10
      document.write("<span style=\"color: #" + DezNachHex(FarbwertRot) + DezNachHex(FarbwertGruen) + DezNachHex(FarbwertBlau) + ";\">" + text.substring(i, i + 1) + "</wtFont>")
   }
}

function MakeArray(n){
   this.length=n;
   for(var i=1; i<=n; i++) this[i]=i-1;
   return this
}

hex2=new MakeArray(16);
hex2[11]="A"; hex2[12]="B"; hex2[13]="C"; hex2[14]="D"; hex2[15]="E"; hex2[16]="F";

function ToHex(x){
   var high2 = x/16;
   var s = high2+"";
   s = s.substring(0,2);
   high2 = parseInt(s,10);
   var left = hex[high2+1];
   var low2 = x-high2*16;
   s = low2+"";
   s = s.substring(0,2);
   low2 = parseInt(s,10);
   var right = hex2[low2+1];
   var string = left+""+right;
   return string;
}

function rainbow(text){
   text = text.substring(3,text.length-4);
   color_d1 = 200;
   mul = color_d1/text.length;
   var page
   for(i=0;i<text.length;i++){
      color_d1 = 200*Math.sin (i/(text.length/3));
      color_h1 = ToHex(color_d1);
      color_d2 = mul*i;
      color_h2 = ToHex(color_d2);
      page = '<span style="color: #FF' + color_h1+color_h2+ ';">';
      page+= text.substring(i,i+1) + '</span>';
      document.write(page)
   }
}
