"use strict";


// Functions
// -----------------

// Common
var PreloadImage;
var GetIEVersion;
var GetLanguage;
var GetRequest;
var ChangeMenuLanguage;
var ForceLanguage;
var ajaxObject;
var InitXmlHttp;
var UnInitXmlHttp;

// History
var History_Add;
var History_Check;

// Blog
var Blog_CreateSearchButton;
var Blog_CreatePost;
var Blog_CreateSearch;
var Blog_CreateNavi;
var Blog_ChangeFontSize;
var Blog_CreateFontControl;
var Blog_GetPostCallback;
var Blog_PostCountCallback;
var Blog_Create;
var Blog_Search;

// Jabber
var Jabber_Register;
var Jabber_OnClick;
var Jabber_CreateRegisterButton;

// Miranda Wizard
var Miranda_CheckSubItem;
var Miranda_ShowDownloadSize;
var Miranda_ConnectionCallback;
var Miranda_SetItems;
var Miranda_ClearItems;
var Miranda_ReadRequest;
var Miranda_ReadCookie;
var Miranda_SaveCookie;
var Miranda_Download;
var Miranda_FadeIn;
var Miranda_FadeOut;
var Miranda_CreateButton;

// MD5 Searchengine
var MD5_Search;
var MD5_CreateSearchButton;

// Mass HTML Validator
var Validator_Callback;
var Validator_GetUrlsCallback;
var Validator_Start;
var Validator_Abort;
var Validator_CreateButton;

// SoF Servers
var SoF_Register;
var SoF_CreateButton;
var SoF_OnClick;

// Tooltips and screenshots
var UpdateMouse;
var Tooltip_Init;
var Tooltip_Show;
var Tooltip_Show_;
var Tooltip_Hide;
var Screenshot_Init;
var Screenshot_Show;
var Screenshot_Show_;
var Screenshot_Hide;

// Main
var ChangeFavicon;
var LoadContent;
var InitPage;



// Variables
// -----------------

/*global ActiveXObject, Image, XMLHttpRequest, alert, document, escape, navigator, unescape, window, self, setTimeout, clearTimeout */


// Main
var sMainStartPage = "";
var sMainForcedLang = "";
var sMainContent = "";
var sMainUrl = "";
var sMainSubheader = "";
var sMainTitle = "";
var bMainInitialized = false;

// History
var tHistoryTimeout = null;

// XmlHttpRequest
var httpContent = null;
var httpTooltip = null;
var httpMiranda = null;
var httpMd5 = null;
var httpJabber = null;
var httpValidator = null;
var httpValidator2 = null;
var httpSoF = null;

// Blog
var iBlogPostsPerPage = 2;
var iBlogPostCount = -1;
var iBlogStart = 0;
var iBlogLen = 1;
var iBlogFontSize = 11;
var elBlogMessage = null;
var elBlogFontBigger = null;
var elBlogFontSmaller = null;

// Miranda IM Wizard
var bIsGenerating = false;

// MD5 Searchengine
var iMd5TimeStart = 0;
var iMd5TimeEnd = 0;

// Mass HTML Validator
var sValidatorURLs = null;
var iValidatorURLcnt = 1;

// Tooltips and screnshots
var elTooltip = null;
var elScreenshot = null;
var bTooltipShow = false;
var bScreenshotShow = false;
var iScreenshotWidth = 20;
var iScreenshotHeight = 20;
var tTooltipTimeout = null;
var tScreenshotTimeout = null;






// Event handlers
// ------------------------

window.onload = function ()
{
  if( !bMainInitialized )
  {                   
    //PreloadImage("/?content=spinner&type=gif");
    //PreloadImage("/?content=icon_search&type=gif");
    
    var sParam = "&lang=";
    var sLocation = window.location.href;
    
    var sLangLoc = sLocation.indexOf(sParam);
    if( sLangLoc > -1 )
    {
      var sLang = sLocation.substring(sLangLoc+sParam.length, sLangLoc+sParam.length+2);
      if( sLang ){ sMainForcedLang = sLang; }
    }
    
    bMainInitialized = true;
    
    sMainStartPage = window.location.href;
    
    InitPage(GetRequest(window.location.href));
    
    if( window.location.hash && window.location.hash.length > 0 )
    {
      LoadContent(window.location.hash.substring(1, window.location.hash.length));
    }
  }
};

/*window.onerror = function(sMessage, sUrl, sLine)
{
  alert('Error: ' + sMessage + '\nLine: ' + sLine);
  return true;
};*/

window.onbeforeunload = function()
{
  if( sMainContent.search("miranda") > -1 )
  {
    Miranda_SaveCookie();
  
    if( bIsGenerating )
    {
      return "";
    }
  }
};



// Common functions
// -----------------

PreloadImage = function(sImage)
{
  var imgImage = new Image();
  imgImage.src = sImage;

  var elDiv = document.createElement("div");
  if( !elDiv ){ return; }
  elDiv.style.visibility = "hidden";
  elDiv.style.background = "url(" + sImage + ") no-repeat";
 
  document.body.appendChild(elDiv);


  var elImg = document.createElement("img");
  if( !elImg ){ return; }
  elImg.src = sImage;
    
  elDiv.appendChild(elImg);
};

GetIEVersion = function()
{
  var rv = -1; 
  
  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) )
    {
      rv = parseFloat(RegExp.$1);
    }
  }
  
  return rv;
};

GetLanguage = function()
{
  if( sMainForcedLang ){ return sMainForcedLang; }

  if( navigator.appName == 'Netscape' )
  {
    return navigator.language.substring(0,2).toLowerCase();
  }
  else if( GetIEVersion() > -1 )
  {
    return navigator.browserLanguage.substring(0,2).toLowerCase();
  }
  
  return "en";
};

GetRequest = function(sUrl)
{
  sUrl = (sUrl+'').toLowerCase();
  
  var sSplit = sUrl.split("?");
  if( sSplit && sSplit[1] )
  {
    var sSplit2 = sSplit[1].split("&");
    if( sSplit2 && sSplit2[0] )
    {
      var sSplit3 = sSplit2[0].split("#");
      if( sSplit3 && sSplit3[0] )
      {
        return sSplit3[0];
      }    
    
      return sSplit2[0];
    }  
    else
    {
      var sSplit4 = sSplit[1].split("#");
      if( sSplit4 && sSplit4[0] )
      {
        return sSplit4[0];
      } 
    
      return sSplit[1];
    }
  }
  
  return "blog";
};

ChangeMenuLanguage = function(sLang)
{
  if( sLang == "de" )
  {   
    document.getElementById('menu_projects').firstChild.nodeValue = "Projekte";
    document.getElementById('menu_contact').firstChild.nodeValue = "Kontakt";
    document.getElementById('imprint').firstChild.nodeValue = "Impressum";
  }
  else
  {
    document.getElementById('menu_projects').firstChild.nodeValue = "Projects";
    document.getElementById('menu_contact').firstChild.nodeValue = "Contact";
    document.getElementById('imprint').firstChild.nodeValue = "Imprint";
  }
  
  document.getElementById('menu_blog').href = "/?blog&lang=" + sLang;
  document.getElementById('menu_projects').href = "/?projects&lang=" + sLang;
  document.getElementById('menu_jabber').href = "/?jabber&lang=" + sLang;
  document.getElementById('menu_contact').href = "/?contact&lang=" + sLang;
  document.getElementById('imprint').href = "/?contact&lang=" + sLang;
};

ForceLanguage = function(sLang)
{
  if( !sLang ){ return; }
  
  sMainForcedLang = sLang;
  
  if( sLang == "de" )
  {
    document.getElementById('main_flag_en_img').className = "";
    document.getElementById('main_flag_de_img').className = "main_flag_selected";
  }
  else
  {
    document.getElementById('main_flag_de_img').className = "";
    document.getElementById('main_flag_en_img').className = "main_flag_selected";
  }
  
  if( sMainContent.search("miranda") > -1 ){ LoadContent("miranda_"+sLang); }
  else{ LoadContent(sMainContent); }
};

ajaxObject = function()
{
  try
  {
    return new XMLHttpRequest();
  }
  catch(i)
  {
    try
    {
      return new ActiveXObject("Msxml2.XMLHTTP.6.0");
    }
    catch(e)
    {
      try
      {
        return new ActiveXObject("Msxml2.XMLHTTP.3.0");
      }
      catch(f)
      {
        try
        {
          return new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch(g)
        {
          try
          {
            return new ActiveXObject("Microsoft.XMLHTTP");
          }
          catch(h)
          {
            throw new Error("FAILED TO INITIALIZE XmlHttp!");
          }
        }
      }
    }
  }
};

InitXmlHttp = function(sHttp)
{ 
  if( sHttp == "httpContent" )
  {
    httpContent = new ajaxObject();
    if( !httpContent )
    {
      throw new Error("FAILED TO INITIALIZE httpContent!");
    }
  }
  else if( sHttp == "httpMiranda" )
  {
    httpMiranda = new ajaxObject();
    if( !httpMiranda )
    {
      throw new Error("FAILED TO INITIALIZE httpMiranda!");
    }
  }
  else if( sHttp == "httpTooltip" )
  {
    httpTooltip = new ajaxObject();
    if( !httpTooltip )
    {
      throw new Error("FAILED TO INITIALIZE httpTooltip!");
    }
  }
  else if( sHttp == "httpMd5" )
  {  
    httpMd5 = new ajaxObject();
    if( !httpMd5 )
    {
      throw new Error("FAILED TO INITIALIZE httpMd5!");
    }
  }  else if( sHttp == "httpJabber" )
  {  
    httpJabber = new ajaxObject();
    if( !httpJabber )
    {
      throw new Error("FAILED TO INITIALIZE httpJabber!");
    }
  }
  else if( sHttp == "httpValidator" )
  {  
    httpValidator = new ajaxObject();
    if( !httpValidator )
    {
      throw new Error("FAILED TO INITIALIZE httpValidator!");
    }
  }
  else if( sHttp == "httpValidator2" )
  {
    httpValidator2 = new ajaxObject();
    if( !httpValidator2 )
    {
      throw new Error("FAILED TO INITIALIZE httpValidator2!");
    }
  }
  else if( sHttp == "httpSoF" )
  {
    httpSoF = new ajaxObject();
    if( !httpSoF )
    {
      throw new Error("FAILED TO INITIALIZE httpSoF!");
    }
  }
  else
  {
    return 0;
  }
  
  return 1;
};

UnInitXmlHttp = function()
{
  if( httpContent ){ httpContent.abort(); }
  if( httpMiranda ){ httpMiranda.abort(); }
  if( httpTooltip ){ httpTooltip.abort(); }
  if( httpMd5 ){ httpMd5.abort(); }
  if( httpJabber ){ httpJabber.abort(); }
  if( httpValidator ){ httpValidator.abort(); }
  if( httpValidator2 ){ httpValidator2.abort(); }
  if( httpSoF ){ httpSoF.abort(); }
};



// Blog 
// ---------------

Blog_CreateSearchButton = function()
{
  var elSearchfield = document.getElementById('searchfield'); 
  if( !elSearchfield ){ return; }

  var elA = document.createElement("a");
  if( !elA ){ return; }
    
  elA.href = "#";
  elA.id = "btn";
  elA.className = "button";
  elA.onclick = function ()
  {
    this.blur();
    Blog_Search();
    return false;
  };
    
  var elSpan = document.createElement("span");
  if( !elSpan ){ return; }

  if( GetLanguage() == "de" ){ elSpan.appendChild(document.createTextNode("Los")); }
  else{ elSpan.appendChild(document.createTextNode("Go")); }

  elA.appendChild(elSpan);
  elSearchfield.parentNode.insertBefore(elA, elSearchfield.nextSibling);
};

Blog_CreatePost = function(sPost, sDate, sTitle, sMessage, sSource)
{
  var elBlog = document.getElementById('blog');
  if( !elBlog ){ return; }

  var elPost = document.createElement("div");
  if( !elPost ){ return; }
  elPost.id = "post_" + sPost;
  elPost.className = "post";
  elBlog.appendChild(elPost);

  var elDate = document.createElement("div");
  if( !elDate ){ return; }
  elDate.id = "date_" + sPost;
  elDate.className = "date";
  elDate.appendChild(document.createTextNode(sDate));
  elPost.appendChild(elDate);

  var elTitle = document.createElement("div");
  if( !elTitle ){ return; }
  elTitle.id = "title_" + sPost;
  elTitle.className = "title";
  elPost.appendChild(elTitle);
  
  var elH1 = document.createElement("h1");
  if( !elH1 ){ return; }
  elTitle.appendChild(elH1);
    
  var elA = document.createElement("a");
  if( !elA ){ return; }
  elA.href = "/?blog&post=" + sPost + (sMainForcedLang ? '&lang='+GetLanguage() : '');
  elA.onclick = function ()
  {
    LoadContent('blog_' + sPost + ':0');
    return false;
  };
  elA.appendChild(document.createTextNode(sTitle));
  elH1.appendChild(elA);
  
  var elHr = document.createElement("hr");
  if( !elHr ){ return; }
  elTitle.appendChild(elHr);
  
  if( sSource != "-" )
  {
    var elQuotesOpen = document.createElement("div");
    if( !elQuotesOpen ){ return; }
    elQuotesOpen.className = "quotes_open";
    elQuotesOpen.appendChild(document.createTextNode("„"));
    elPost.appendChild(elQuotesOpen);
  }
  
  var elMessage = document.createElement("div");
  if( !elMessage ){ return; }
  elBlogMessage = elMessage;
  elMessage.id = "message_" + sPost;
  elMessage.className = "message";
  elMessage.innerHTML = sMessage;
  elPost.appendChild(elMessage);
  
  if( sSource != "-" )
  {
    var elQuotesEnd = document.createElement("div");
    if( !elQuotesEnd ){ return; }
    elQuotesEnd.className = "quotes_end";
    elQuotesEnd.appendChild(document.createTextNode("“"));
    elMessage.appendChild(elQuotesEnd);
  
    var elSource = document.createElement("div");
    if( !elSource ){ return; }
    elSource.id = "source_" + sPost;
    elSource.className = "source";
    elPost.appendChild(elSource);
  
    var elB = document.createElement("b");
    if( !elB ){ return; }
    if( GetLanguage() == "de"  ){ elB.appendChild(document.createTextNode("Quelle: ")); }
    else{ elB.appendChild(document.createTextNode("Source: ")); }
    elSource.appendChild(elB);
  
    var elA2 = document.createElement("a");
    if( !elA2 ){ return; }
    elA2.href = sSource;
    elA2.target = "_blank";
    elA2.appendChild(document.createTextNode(sSource.substring(0, 100)));
    elSource.appendChild(elA2);
  }
};

Blog_CreateSearch = function()
{
  var elBlog = document.getElementById('blog');
  if( !elBlog ){ return; }

  var elForm = document.createElement("form");
  if( !elForm ){ return; } 
  elForm.method = "post";
  elForm.action = "/?blog" + (sMainForcedLang ? '&lang='+GetLanguage() : '');
  elForm.onsubmit = function()
  {
    this.blur();
    Blog_Search();
    return false;
  };
  elBlog.appendChild(elForm);
  
  var elFieldset = document.createElement("fieldset");
  if( !elFieldset ){ return; } 
  elForm.appendChild(elFieldset);
 
  var elDiv = document.createElement("div");
  if( !elDiv ){ return; } 
  elDiv.className = "search";
  elFieldset.appendChild(elDiv);

  var elInput = document.createElement("input");
  if( !elInput ){ return; } 
  elInput.type = "text";
  elInput.maxlength = "25";
  elInput.name = "search";
  elInput.className = "searchfield";
  elInput.id = "searchfield";
  if( GetLanguage() == "de" ){ elInput.value = "Suche"; }
  else{ elInput.value = "Search"; }
  elInput.onclick = function()
  {
    if( this.value == "Suche" || this.value == "Search" )
    {
      this.value = '';
    }
    
    return true;
  };
  elDiv.appendChild(elInput);
  
  var elA = document.createElement("a");
  if( !elA ){ return; }
  elA.className = "button";
  elA.href = "#";
  elA.id = "btn";
  elA.onclick = function()
  {
    this.blur();
    Blog_Search();
    return false;
  };
  elDiv.appendChild(elA);

  var elSpan = document.createElement("span");
  if( !elSpan ){ return; }
  if( GetLanguage() == "de" ){ elSpan.appendChild(document.createTextNode("Los")); }
  else{ elSpan.appendChild(document.createTextNode("Go")); }
  elA.appendChild(elSpan);

  var elImg = document.createElement("img");
  if( !elImg ){ return; }
  elImg.id = "spinner";
  elImg.className = "spinner";
  elImg.src = "/?content=spinner&amp;type=gif";
  elImg.alt = "";
  elImg.width = 16;
  elImg.height = 16;
  elDiv.appendChild(elImg);
};

Blog_CreateNavi = function(sID)
{
  if( iBlogLen <= 0 ){ return; }
  
  var elBlog = document.getElementById('blog');
  if( !elBlog ){ return; }

  var elNavi = document.createElement("div");
  if( !elNavi ){ return; }
  elNavi.id = "navi_" + String(iBlogStart) + "_" + String(iBlogLen) + "_" + sID;
  elNavi.className = "navi";
  elBlog.appendChild(elNavi);
      
      
  if( (iBlogStart-iBlogPostsPerPage)-1 >= 0 )
  {
    var elBackward = document.createElement("a");
    if( !elBackward ){ return; }
    elBackward.href = "/?blog&start=" + String((iBlogStart-iBlogPostsPerPage)-1) + "&len=" + String(iBlogLen) + (sMainForcedLang ? '&lang='+GetLanguage() : '');
    elBackward.onclick = function()
    {
      if( (iBlogStart-iBlogPostsPerPage)-1 > -1 )
      {
        LoadContent('blog_' + String((iBlogStart-iBlogPostsPerPage)-1) + ":" + String(iBlogLen));
      }
      
      return false;
    };
    elBackward.appendChild(document.createTextNode("<- "));
    elNavi.appendChild(elBackward);
  }

  if( iBlogStart != iBlogPostCount )
  {
    var elForward = document.createElement("a");
    if( elForward === null ){ return; }
    elForward.href = "/?blog&start=" + String((iBlogStart+iBlogPostsPerPage)+1) + "&len=" + String(iBlogLen) + (sMainForcedLang ? '&lang='+GetLanguage() : '');
    elForward.onclick = function()
    {
      if( iBlogPostCount >= (iBlogStart+iBlogPostsPerPage)+1 )
      {
        LoadContent('blog_' + String((iBlogStart+iBlogPostsPerPage)+1) + ":" + String(iBlogLen));
      }
      
      return false;
    };
    elForward.appendChild(document.createTextNode(" ->"));
    elNavi.appendChild(elForward);
  }
};

Blog_ChangeFontSize = function(sPost, iSize)
{
  if( iSize < 1 ){ iSize = 1; }
  else if( iSize > 23 ){ iSize = 23; }

  var elMessage = elBlogMessage;
  if( !elMessage )
  {
    elMessage = document.getElementById('message_' + sPost);
    if( !elMessage ){ return; }
  }
  elMessage.style.fontSize = String(iSize) + "px";
  
  
  var elSmaller = elBlogFontSmaller;
  if( !elSmaller )
  {
    elSmaller = document.getElementById('font_smaller');
    if( !elSmaller ){ return; }
  }
  elSmaller.href = "/?blog&post=" + sPost + "&fontsize=" + String(iSize-1) + (sMainForcedLang ? '&lang='+GetLanguage() : '');
  elSmaller.onclick = function()
  {
    Blog_ChangeFontSize(sPost, iSize-1);
    return false;
  };
    
  var elBigger = elBlogFontBigger;
  if( !elBigger )
  {
    elBigger = document.getElementById('font_bigger');
    if( !elBigger ){ return; }
  }
  elBigger.href = "/?blog&post=" + sPost + "&fontsize=" + String(iSize+1) + (sMainForcedLang ? '&lang='+GetLanguage() : '');
  elBigger.onclick = function()
  {
    Blog_ChangeFontSize(sPost, iSize+1);
    return false;
  };
};

Blog_CreateFontControl = function(sPost)
{
  if( iBlogLen !== 0 ){ return; }
  
  var elBlog = document.getElementById('blog');
  if( !elBlog ){ return; }
  
  var elNavi = document.createElement("div");
  if( !elNavi ){ return; }
  elNavi.id = "font_control_" + sPost;
  elNavi.className = "font_control";
  elBlog.appendChild(elNavi);
    
    
  var elA = document.createElement("a");
  if( !elA ){ return; }
  elBlogFontSmaller = elA;
  elA.id = "font_smaller";
  elA.href = "/?blog&post=" + sPost + "&fontsize=" + String(iBlogFontSize-1) + (sMainForcedLang ? '&lang='+GetLanguage() : '');
  elA.onclick = function()
  {
    Blog_ChangeFontSize(sPost, iBlogFontSize-1);
    return false;
  };
  elNavi.appendChild(elA);
  
  var elImg = document.createElement("img");
  if( !elImg ){ return; }
  elImg.src = "/?content=icon_font_smaller&type=png";
  elImg.alt = "";
  elImg.width = 16;
  elImg.height = 16;
  elImg.className = "smaller";
  if( GetLanguage() == "de" ){ elImg.title = "Kleinere Schrift"; }
  else{ elImg.title = "Smaller font"; }
  elA.appendChild(elImg);
  
  
  
  var elA2 = document.createElement("a");
  if( !elA2 ){ return; }
  elBlogFontBigger = elA2;
  elA2.id = "font_bigger";
  elA2.href = "/?blog&post=" + sPost + "&fontsize=" + String(iBlogFontSize+1) + (sMainForcedLang ? '&lang='+GetLanguage() : '');
  elA2.onclick = function()
  {
    Blog_ChangeFontSize(sPost, iBlogFontSize+1);
    return false;
  };
  elNavi.appendChild(elA2);
  
  var elImg2 = document.createElement("img");
  if( !elImg2 ){ return; }
  elImg2.src = "/?content=icon_font_bigger&type=png";
  elImg2.alt = "";
  elImg2.width = 16;
  elImg2.height = 16;
  elImg2.className = "bigger";
  if( GetLanguage() == "de" ){ elImg2.title = "Größere Schrift"; }
  else{ elImg2.title = "Bigger font"; }
  elA2.appendChild(elImg2);  
};

Blog_GetPostCallback = function()
{
  if( httpContent.readyState == 4 && httpContent.status == 200 && httpContent.responseText )
  {
    var sServerPost = httpContent.responseText;
    if( sServerPost == "ERROR" ){ return; }
      
    var sSplit = sServerPost.split(">><<");
    if( !sSplit ){ return; }

    var sMessage = sSplit[1];
    var sSplit2 = sSplit[0].split("||");
    if( !sSplit2 ){ return; }
    
    var sPost =  sSplit2[0];
    var sDate = sSplit2[1];
    var sTitle = sSplit2[2];
    var sSource = sSplit2[3];

    if( sPost == String(iBlogStart) )
    {
      document.title = sMainTitle;   
      document.getElementById('subheader').innerHTML = "<h2>" + sMainSubheader + "</h2>";
      document.getElementById('content').innerHTML = '<div class="right"><div class="blog" id="blog"> </div></div><div style="clear: both;"> </div>';
    
      Blog_CreateSearch();
      
      if( iBlogLen > 0 ){ Blog_CreateNavi('1'); }
      else if( iBlogLen === 0 ){ Blog_CreateFontControl(String(iBlogStart)); }
    }
  
    if( sDate != "-1" ){ Blog_CreatePost(sPost, sDate, sTitle, sMessage, sSource);  }
        
    if( Number(sPost)-1 >= (iBlogStart-iBlogLen) )
    { 
      httpContent.open('GET', "blog.php?get_post=" + String(Number(sPost)-1) + "&lang=" + GetLanguage() + (sMainForcedLang ? '&forcedlang' : '') + "&rand=" + Math.floor(Math.random()*65535), true);
      //httpContent.setRequestHeader("User-Agent", navigator.userAgent);
      httpContent.onreadystatechange = Blog_GetPostCallback;   
      httpContent.send(null);    
    }
    else
    {
      if( iBlogLen > 0 ){ Blog_CreateNavi('2'); }
    }
  }
};

Blog_PostCountCallback = function()
{
  if( httpContent.readyState == 4 && httpContent.status == 200 && httpContent.responseText )
  {
    if( sMainForcedLang ){ ChangeMenuLanguage(sMainForcedLang); }
  
    var sServerPostCount = httpContent.responseText;
    if( sServerPostCount == "ERROR" ){ return; }

    if( Number(sServerPostCount) > 0 ){ iBlogPostCount = Number(sServerPostCount); }
    
    if( iBlogStart == -1 ){ iBlogStart = iBlogPostCount; }

    httpContent.open('GET', "blog.php?get_post="+String(iBlogStart) + "&lang=" + GetLanguage() + (sMainForcedLang ? '&forcedlang' : '') + "&rand=" + Math.floor(Math.random()*65535), true);
    //httpContent.setRequestHeader("User-Agent", navigator.userAgent);
    httpContent.onreadystatechange = Blog_GetPostCallback;   
    httpContent.send(null);
  }
};

Blog_Create = function(sStart, sLen)
{
  if( httpContent )
  {
      iBlogStart = Number(sStart);
      iBlogLen = Number(sLen);
    
      httpContent.open('GET', "blog.php?get_posts&lang=" + GetLanguage() + (sMainForcedLang ? '&forcedlang' : '') + "&rand=" + Math.floor(Math.random()*65535), true);
      //httpContent.setRequestHeader("User-Agent", navigator.userAgent); 
      httpContent.onreadystatechange = Blog_PostCountCallback;  
      httpContent.send(null);
  }
  else
  {
    document.getElementById('content').innerHTML = '<div class="right"><b>ERROR: FAILED TO INITIALIZE httpContent!</b></div><div style="clear: both;"> </div>';
  }
};

Blog_Search = function()
{
  if( httpContent )
  {  
    var elSearchfield = document.getElementById('searchfield');
    if( !elSearchfield || !elSearchfield.value.length ){ return; }

    document.body.style.cursor = 'wait';
    document.getElementById('spinner').style.display = "inline";
  
    var sUrl = "blog.php?xml&search=" + elSearchfield.value + "&lang=" + GetLanguage() + (sMainForcedLang ? '&forcedlang' : '') + "&rand=" + Math.floor(Math.random()*65535);

    httpContent.open('GET', sUrl, true);
    //httpContent.setRequestHeader("User-Agent", navigator.userAgent);
    httpContent.onreadystatechange = function () 
    {
      if( httpContent.readyState == 4 && httpContent.status == 200 && httpContent.responseText )
      {
        document.getElementById('content').innerHTML = httpContent.responseText;
        Blog_CreateSearchButton();
        
        document.getElementById('spinner').style.display = "none";
        document.body.style.cursor = 'auto';
      }
    };
          
    httpContent.send(null);
  }
  else
  {
    document.getElementById('content').innerHTML = '<div class="right"><b>ERROR: FAILED TO INITIALIZE httpContent!</b></div><div style="clear: both;"> </div>';
  }
};




// Jabber 
// -----------------

Jabber_Register = function()
{
  if( httpJabber )
  {  
    document.body.style.cursor = 'wait';
    document.getElementById('spinner').style.visibility = "visible";  
  
    var sName = document.getElementById('name').value;
    var sPwd = document.getElementById('pwd').value;
    var sEmail = document.getElementById('email').value;
    
    var sParameters = "name=" + escape(sName) + "&pwd=" + escape(sPwd) + "&email=" + escape(sEmail);
    var sUrl = "_jabber/?register&js&lang=" + GetLanguage() + "&rand=" + Math.floor(Math.random()*65535);


  
    httpJabber.open('POST', sUrl, true);
    httpJabber.onreadystatechange = function () 
    {
      if( httpJabber.readyState == 4 && httpJabber.status == 200 && httpJabber.responseText )
      {
        var sResult = httpJabber.responseText;
        
        if( httpJabber.responseText == "mail_already_known" )
        {
          if( GetLanguage() == "de" ){ sResult = "Es wurde bereits ein Account mit der E-Mail registriert!"; }
          else{ sResult = "An account with that e-mail has already been registered!"; }
        }
        else if( httpJabber.responseText == "name_already_exists" )
        {
          if( GetLanguage() == "de" ){ sResult = "Es wurde bereits ein Account mit dem Namen registriert!"; }
          else{ sResult = "An account with that name has already been registered!"; }
        }
        else if( httpJabber.responseText == "invalid_name" )
        {
          if( GetLanguage() == "de" ){ sResult = "Der von dir eingegebene Name ist ungültig!"; }
          else{ sResult = "The name you have entered is invalid!"; }
        }
        else if( httpJabber.responseText == "invalid_password" )
        {
          if( GetLanguage() == "de" ){ sResult = "Das von dir eingegebene Passwort ist ungültig!"; }
          else{ sResult = "The password you have entered is invalid!"; }
        }
        else if( httpJabber.responseText == "invalid_email" )
        {
          if( GetLanguage() == "de" ){ sResult = "Die von dir eingegebene E-Mail ist ungültig!"; }
          else{ sResult = "The email you have entered is invalid!"; }
        }
        else if( httpJabber.responseText == "mail_sent" )
        {
          if( GetLanguage() == "de" ){ sResult = "Die Registrierungs E-Mail wurde versandt."; }
          else{ sResult = "The registration e-mail has been sent."; }
        }
        else if( httpJabber.responseText == "mail_not_sent" )
        {
          if( GetLanguage() == "de" ){ sResult = "Die Registrierungs E-Mail wurde nicht versandt."; }
          else{ sResult = "The registration e-mail has not been sent."; }
        }  
        
        
        document.getElementById('result').innerHTML = "<br /><b>" + sResult + "</b>";
        
        
        document.body.style.cursor = 'auto';
        document.getElementById('spinner').style.visibility = "hidden"; 
      }
    };

    httpJabber.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    httpJabber.setRequestHeader("Content-Length", sParameters.length);
    //httpJabber.setRequestHeader("User-Agent", navigator.userAgent);
    httpJabber.send(sParameters);
  }
  else
  {
    document.getElementById('result').innerHTML = '<b>ERROR: FAILED TO INITIALIZE httpJabber!</b>';
  }
};

Jabber_OnClick = function(e)
{
  var sVal = e.value;
  
  if( sVal == "Name" || sVal == "Password" || sVal == "Passwort" || sVal == "E-Mail" )
  {
    e.value = '';
  }
};

Jabber_CreateRegisterButton = function()
{
  var elEmail = document.getElementById('email'); 
  if( !elEmail ){ return; }

  var elA = document.createElement("a");
  if( !elA ){ return; }
    
  elA.href = "#";
  elA.id = "btn";
  elA.className = "btn_jabber";
  elA.onclick = function ()
  {
    this.blur();
    Jabber_Register();
    return false;
  };
    
  var elSpan = document.createElement("span");
  if( !elSpan ){ return; }

  if( GetLanguage() == "de" ){ elSpan.appendChild(document.createTextNode("Registrieren")); }
  else{ elSpan.appendChild(document.createTextNode("Register")); }

  elA.appendChild(elSpan);
  elEmail.parentNode.insertBefore(elA, elEmail.nextSibling);
};







// Miranda IM Wizard
// ----------------------------
  
Miranda_CheckSubItem = function(sItem)
{ 
  // Protocols
  if( sItem == "icq" )
  {
    var elSubIcq = document.getElementById('subitem_icq');
    if( !elSubIcq ){ return; }
  
    if( document.getElementById('check_icq').checked )
    {
        elSubIcq.style.display = "inline";
        elSubIcq.innerHTML = '<input id="check_icq_plus" name="protocols_icq_plus" type="checkbox" value="on" /> S!N Mod.<br />';
    }
    else
    {
        elSubIcq.style.display = "none";
        elSubIcq.innerHTML = "";
    }
    
    return;
  }
  
  var elChkNudge = document.getElementById('check_nudge');
  if( !elChkNudge ){ return; }
  
  if( sItem == "msn" )
  {
    if( document.getElementById('check_msn').checked ){ elChkNudge.checked = true; }
    else if( !document.getElementById('check_jabber').checked && !document.getElementById('check_yahoo').checked && !document.getElementById('check_tlen').checked ){ elChkNudge.checked = false; }

    return;
  }
  else if( sItem == "yahoo" )
  {
    if( document.getElementById('check_yahoo').checked ){ elChkNudge.checked = true; }
    else if( !document.getElementById('check_jabber').checked && !document.getElementById('check_msn').checked && !document.getElementById('check_tlen').checked ){ elChkNudge.checked = false; }

    return;
  }
  else if( sItem == "jabber" )
  {
    if( document.getElementById('check_jabber').checked ){ elChkNudge.checked = true; }
    else if( !document.getElementById('check_yahoo').checked && !document.getElementById('check_msn').checked && !document.getElementById('check_tlen').checked ){ elChkNudge.checked = false; }
    
    return;
  }
  else if( sItem == "tlen" )
  {
    if( document.getElementById('check_tlen').checked ){ elChkNudge.checked = true; }
    else if( !document.getElementById('check_yahoo').checked && !document.getElementById('check_msn').checked && !document.getElementById('check_jabber').checked ){ elChkNudge.checked = false; }
    
    return;
  }
  
  
  // Contactlist
  if( sItem == "modern" )
  {    
    if( document.getElementById('check_modern').checked )
    {
      Miranda_FadeOut(document.getElementById('skins_nicer'));
      Miranda_FadeIn(document.getElementById('skins_modern'));
    }
    else
    {
      Miranda_FadeIn(document.getElementById('skins_nicer'));
      Miranda_FadeOut(document.getElementById('skins_modern'));
    }
    
    return;
  }
  else if( sItem == "nicer" )
  {   
    if( document.getElementById('check_nicer').checked )
    {
      Miranda_FadeIn(document.getElementById('skins_nicer'));
      Miranda_FadeOut(document.getElementById('skins_modern'));
    }
    else
    {
      Miranda_FadeOut(document.getElementById('skins_nicer'));
      Miranda_FadeIn(document.getElementById('skins_modern'));
    }    
    
    return;
  }
  else if( sItem == "classic" )
  {
    Miranda_FadeOut(document.getElementById('skins_modern'));
    Miranda_FadeOut(document.getElementById('skins_nicer'));
 
    return;
  }
  
  
  
  // Message Window
  var elChkIeView = document.getElementById('check_ieview');
  if( !elChkIeView ){ return; }
  
  if( sItem == "tabsrmm" )
  {    
    if( document.getElementById('check_tabsrmm').checked )
    {
      elChkIeView.disabled = false;
      if( elChkIeView.checked )
      {
        Miranda_FadeIn(document.getElementById('skins_ieview'));
      }
    }
    else
    {
      elChkIeView.disabled = true;
      Miranda_FadeOut(document.getElementById('skins_ieview'));
    }
    
    Miranda_FadeIn(document.getElementById('skins_tabsrmm'));
    
    return;
  }
  else if( sItem == "scriver" )
  {   
    if( document.getElementById('check_scriver').checked )
    {
      elChkIeView.disabled = false;
      if( elChkIeView.checked )
      {
        Miranda_FadeIn(document.getElementById('skins_ieview'));
      }
    }
    else
    {
      elChkIeView.disabled = true;
      Miranda_FadeOut(document.getElementById('skins_ieview'));
    }    
    
    Miranda_FadeOut(document.getElementById('skins_tabsrmm'));
    
    return;
  }
  else if( sItem == "message_window_ieview" )
  {
    if( elChkIeView.checked )
    {
      Miranda_FadeIn(document.getElementById('skins_ieview'));
    }
    else
    {
      Miranda_FadeOut(document.getElementById('skins_ieview'));
    }
       
    return;
  }
  else if( sItem == "message_window_others" )
  {
    elChkIeView.disabled = true;
    
    Miranda_FadeOut(document.getElementById('skins_ieview'));
    Miranda_FadeOut(document.getElementById('skins_tabsrmm'));
       
    return;
  }
  
  

  // Misc
  var elChkTipper = document.getElementById('check_tipper');
  if( !elChkTipper ){ return; }
  
  if( sItem == "tipper" )
  {    
    if( elChkTipper.checked )
    {
      Miranda_FadeIn(document.getElementById('skins_tipper'));
    }
    else
    {
      Miranda_FadeOut(document.getElementById('skins_tipper'));
    }
        
    return;
  }
};
  
Miranda_ShowDownloadSize = function(sSize)
{
  var elDlSize = document.getElementById('dl_size');
  if( !elDlSize ){ return; }
  
  var iSize = Number(sSize);
  
  iSize = (iSize/1024) / 1024; 
  
  elDlSize.innerHTML = " <b>" + String(iSize).substring(0,4) + " mb</b>";
};
  
Miranda_ConnectionCallback = function()
{
  if( httpMiranda.readyState == 4 )
  {
    if( httpMiranda.status == 200 && httpMiranda.responseText )
    {       
      document.getElementById('spinner').style.display = "none";
      document.getElementById('disk').style.display = "inline";    
      
      var sResponse = httpMiranda.responseText;
      
      if( sResponse.search("FAILED") > -1 )
      {
        document.body.style.cursor = 'auto';
        bIsGenerating = false;
            
        var sSplit = sResponse.split("FAILED:");
        
        if( sSplit )
        {
          if( GetLanguage() == "de" ){ alert(sSplit[1]); }
          else{ alert(sSplit[1]); }
          
          //throw new Error("ERROR" + sSplit[1]);
        }
        else
        { 
          if( GetLanguage() == "de" ){ alert("SERVER FEHLER BEIM ERSTELLEN DER ZIP DATEI!"); }
          else{ alert("SERVER FAILED TO GENERATE ZIP FILE!"); }
          
          //throw new Error("SERVER FAILED TO GENERATE ZIP FILE!");
        }
              
        return;
      }
      
      
      if( sResponse.search("http://gecko.me/") > -1 )
      {  
        var sSplit2 = sResponse.split(" || ");
        
        if( sSplit2 )
        {
          Miranda_ShowDownloadSize(sSplit2[0]);
        
          var sLink = "http://miranda-wizard.com/?settings=" + sSplit2[2];
          document.getElementById('dl_link').innerHTML = '<b>Link:</b> <a href="' + sLink + '" target="_blank">' +  sLink + '</a>';
        
          if( GetIEVersion() > -1  )
          {
            bIsGenerating = false;
            
            var win = window.open("", "_self", "");
            win.location.replace(sSplit2[1]);
          }
          else
          {
            bIsGenerating = false;
            window.location.href = sSplit2[1];
          }
        }
        else
        {
          bIsGenerating = false;
          
          if( GetLanguage() == "de" ){ alert("UNGÜLTIGE SERVER ANTWORT: \n" + sResponse); }
          else{ alert("INVALID SERVER ANSWER: \n" + sResponse); }
          
          //throw new Error("INVALID SERVER ANSWER: \n" + sResponse);
        }
      }
      else
      {
        bIsGenerating = false;

        if( GetLanguage() == "de" ){ alert("UNGÜLTIGE SERVER ANTWORT: \n" + sResponse); }
        else{ alert("INVALID SERVER ANSWER: \n" + sResponse); }

        //throw new Error("INVALID SERVER ANSWER: \n" + sResponse);
      }
       
      document.body.style.cursor = 'auto';
      bIsGenerating = false;
    }
    else
    {
      bIsGenerating = false;
      
      if( GetLanguage() == "de" ){ alert("FEHLER BEIM KONTAKTIEREN DES DOWNLOAD SERVERS!"); }
      else{ alert("FAILED TO CONTACT DOWNLOAD SERVER!"); }
      
      //throw new Error("FAILED TO CONTACT DOWNLOAD SERVER!");
    }
  }
};

Miranda_SetItems = function(sString)
{
  if( !sString ){ return false; }
  
  var elForm = document.getElementById('form_wizard').elements;
  if( !elForm ){ return false; }
    
  var sSplit = sString.split("&");
  if( !sSplit ){ return false; }
    
  var bICQ = false;    
    
  for( var i=0; i < sSplit.length; i=i+1 )
  {
    var sSplit2 = sSplit[i].split("=");
    if( !sSplit2 ){ return false; }
      
    if( sSplit2[0] == "protocols_icq" )
    {
      bICQ = true;
    }
      
    if( sSplit2[1] == "on" || sSplit2[0] == "misc_lang_file" || sSplit2[0] == "misc_spellchecker" )
    {                 
      for( var j=0; j < elForm.length; j=j+1 )
      {
        if( elForm[j].name == sSplit2[0] )
        {
          elForm[j].checked = true;
        }
      }
    }
    else
    {
      var elements = document.getElementsByName(sSplit2[0]);
      if( !elements ){ return false; }
      
      for( var k=0; k < elements.length; k=k+1 )
      {
        if( elements[k].value == sSplit2[1] )
        {
          elements[k].checked = true;
        }
      }
    }
  }
        
  if( !bICQ )
  {
    document.getElementById('check_icq').checked = false;
    document.getElementById('subitem_icq').innerHTML = "";
  }
    
  if( !document.getElementById('check_tabsrmm').checked &&
      !document.getElementById('check_scriver').checked )
  {
    document.getElementById('check_ieview').disabled = true;
  }
  else
  {
    document.getElementById('check_ieview').disabled = false;
  }
  
  if( document.getElementById('check_tabsrmm').checked )
  {
    Miranda_FadeIn(document.getElementById('skins_tabsrmm'));
  }
  else
  {
    Miranda_FadeOut(document.getElementById('skins_tabsrmm'));
  }
   
  if( document.getElementById('check_tipper').checked )
  {
    Miranda_FadeIn(document.getElementById('skins_tipper'));
  }
  else
  {
    Miranda_FadeOut(document.getElementById('skins_tipper'));
  }  
    
  if( document.getElementById('check_ieview').checked )
  {
    Miranda_FadeIn(document.getElementById('skins_ieview'));
  }
  else
  {
    Miranda_FadeOut(document.getElementById('skins_ieview'));
  }
    
  if( document.getElementById('check_modern').checked )
  {
    Miranda_FadeOut(document.getElementById('skins_nicer'));
    Miranda_FadeIn(document.getElementById('skins_modern'));
  }
  else if( document.getElementById('check_nicer').checked )
  {
    Miranda_FadeIn(document.getElementById('skins_nicer'));
    Miranda_FadeOut(document.getElementById('skins_modern'));
  }
  else
  {
    Miranda_FadeOut(document.getElementById('skins_modern'));
    Miranda_FadeOut(document.getElementById('skins_nicer'));
  } 
  
  return true;
};

Miranda_ClearItems = function()
{
  var elements = document.getElementById('form_wizard').elements;
  if( !elements ){ return; }
    
  for( var i=0; i < elements.length; i=i+1 )
  {
    if( elements[i].name == "misc_lang_file" ){ continue; }
    
    if( elements[i].type == "checkbox" )
    {
      elements[i].checked = false;
    }
  }
};

Miranda_ReadRequest = function()
{
  var sLocation = window.location.href;  
  if( !sLocation || !sLocation.length ){ return false; }
   
  var sParameter = "&settings=";            
  var sStart = sLocation.indexOf(sParameter);
  if( sStart < 0 ){ return false; }
  
  sStart = sStart + sParameter.length;   
      
  var sString = unescape(sLocation.substring(sStart, sLocation.length));
  if( !sString ){ return false; }
  
  return sString;
  
  /*  
  var sLink = "http://miranda-wizard.com/?settings=" + escape(sString);
  document.getElementById('dl_link').innerHTML = '<b>Link:</b> <a href="' + sLink + '" target="_blank">' +  sLink.substring(0,55) + '...</a>';
  
  Miranda_ClearItems();
  Miranda_SetItems(sString);
  
  return true;*/
};

Miranda_ReadCookie = function(bSet)
{
  if( !document.cookie || !document.cookie.length ){ return false; }
  
  var sCookie = "miranda";            
  var sStart = document.cookie.indexOf(sCookie + "=");
  if( sStart < 0 ){ return false; }
  sStart = sStart + sCookie.length + 1;   
    
  var sEnd = document.cookie.indexOf(";", sStart);
  if( !sEnd ){ return false; }
  sEnd = document.cookie.length;
      
  var sString = unescape(document.cookie.substring(sStart, sEnd));
  if( !sString ){ return false; }
       
  //var sLink = "http://miranda-wizard.com/?settings=" + escape(sString);
  //document.getElementById('dl_link').innerHTML = '<b>Link:</b> <a href="' + sLink + '" target="_blank">' +  sLink.substring(0,55) + '...</a>';
  
  if( bSet )
  {
    Miranda_ClearItems();
    Miranda_SetItems(sString);
    return true;
  }
  
  return sString;
};

Miranda_SaveCookie = function()
{
  var sValue = "";
  
  var elements = document.getElementById('form_wizard').elements;
  if( !elements ){ return; }
    
  for( var i=0; i < elements.length; i=i+1 )
  {
    if( elements[i].checked )
    {
      sValue += "" + elements[i].name + "=" + elements[i].value + "&";
    }
  }
  
  sValue = sValue.substring(0, sValue.length-1);
  
  var dExpire=new Date();
  dExpire.setDate(dExpire.getDate() + 365);

  document.cookie = "miranda=" + escape(sValue) + "; domain=.gecko.me; expires=" + dExpire.toUTCString() + "; path=/";
};

Miranda_Download = function()
{
  if( bIsGenerating ){ return false; }

  var IEver = GetIEVersion();
  if( IEver > -1 && IEver < 5.0 ){ return true; }

  if( httpMiranda )
  {
    bIsGenerating = true;
    document.body.style.cursor = 'wait';

    document.getElementById('disk').style.display = "none";
    document.getElementById('spinner').style.display = "inline";
    document.getElementById('dl_size').innerHTML = " ";

    Miranda_SaveCookie();

    var sParameters = "";
    var elements = document.getElementById('form_wizard').elements;
    if( !elements ){ return; }
      
    for( var i=0; i < elements.length; i=i+1 )
    {
      if( elements[i].checked )
      {
        sParameters += "" + elements[i].name + "=" + elements[i].value + "&";
      }
    } 
    
    sParameters = sParameters.substring(0, sParameters.length-1);
    
    //var sLink = "http://miranda-wizard.com/?settings=" + escape(sParameters);
    //document.getElementById('dl_link').innerHTML = '<b>Link:</b> <a href="' + sLink + '" target="_blank">' +  sLink.substring(0,55) + '...</a>';
  
    httpMiranda.open('POST', "_miranda/?generate&lang=" + GetLanguage(), true);
    httpMiranda.onreadystatechange = Miranda_ConnectionCallback;
    httpMiranda.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    httpMiranda.setRequestHeader("Content-Length", sParameters.length);
    //httpMiranda.setRequestHeader("User-Agent", navigator.userAgent);
    httpMiranda.send(sParameters);
  }
  else
  {
    alert("FAILED TO INITIALIZE httpMiranda!");
    //throw new Error("FAILED TO INITIALIZE httpMiranda!");
  }
  
  return false;
};

Miranda_CreateButton = function()
{
  var elPos = document.getElementById('pos_dlbutton'); 
  if( !elPos ){ return; }

  var elA = document.createElement("a");
  if( !elA ){ return; }
    
  elA.href = "#";
  elA.title = "Download";
  elA.id = "btn";
  elA.className = "button_wiz";
  elA.onclick = function ()
  {
    this.blur();
    Miranda_Download();
    return false;
  };
    
  var elSpan = document.createElement("span");
  if( !elSpan ){ return; }

  elSpan.appendChild(document.createTextNode("Download"));

  elA.appendChild(elSpan);
  elPos.parentNode.insertBefore(elA, elPos.nextSibling);
};

Miranda_FadeIn = function(el)
{
  el.style.filter = "alpha(opacity:100)";
  el.style.KHTMLOpacity = "1.0";
  el.style.MozOpacity = "1.0";
  el.style.opacity = "1.0";
};

Miranda_FadeOut = function(el)
{
  el.style.filter = "alpha(opacity:50)";
  el.style.KHTMLOpacity = "0.50";
  el.style.MozOpacity = "0.50";
  el.style.opacity = "0.50";
};






// MD5 Searchengine 
// ---------------------------

MD5_Search = function()
{
  if( httpMd5 )
  {      
      var dDate = new Date();
      iMd5TimeStart = parseInt(dDate.getTime() / 1000, 10);
      
      
      var iLen = document.getElementById('hash').value.length;
      
      var sInvalidLength = "Invalid hash length!";
      if( GetLanguage() == "de" ){ sInvalidLength = "Ungültige Hashlänge!"; }
      
      var sTime = "Time";
      if( GetLanguage() == "de" ){ sTime = "Zeit"; }
      
      
      if( iLen != 32 )
      {
        document.getElementById('result').innerHTML = '<img src="/?content=icon_failed&amp;type=png" alt="" width="16" height="16" title="" /> <b>' + sInvalidLength + '</b>';
        return;
      }
      
      
      document.body.style.cursor = 'wait';
  
      document.getElementById('btn').style.display = "none";
      document.getElementById('spinner').style.display = "block";

      var sURL = "_md5/?hash=" + document.getElementById('hash').value + "&rand=" + Math.floor(Math.random()*65535);
      httpMd5.open('GET', sURL, true);
      //httpMd5.setRequestHeader("User-Agent", navigator.userAgent);

      httpMd5.onreadystatechange = function () 
      {
          if( httpMd5.readyState == 4 && httpMd5.status == 200 && httpMd5.responseText )
          {
            var sResponse = httpMd5.responseText;
            var sResult = " ";
            
            if( sResponse == "FAILED" )
            {
              sResult = '<img src="/?content=icon_failed&amp;type=png" alt="" width="16" height="16" title="" /> ' + document.getElementById('hash').value + ' = <b>?</b>';
            }
            else
            {
              sResult = '<img src="/?content=icon_okay&amp;type=png" alt="" width="16" height="16" title="" /> ' + document.getElementById('hash').value + ' = <b>'  + unescape(sResponse) + '</b>';
            }
            
            document.getElementById('result').innerHTML = sResult;
            document.getElementById('spinner').style.display = "none";
            document.getElementById('btn').style.display = "inline";

                        
            var dDate2 = new Date();
            iMd5TimeEnd = (parseInt(dDate2.getTime() / 1000, 10)-iMd5TimeStart);
            document.getElementById('time').innerHTML = '<b>' + sTime + ':</b> ' + String(iMd5TimeEnd) + 's'; 
             
            document.body.style.cursor = 'auto';          
          }
      };
      
      httpMd5.send(null);
  }
  else
  {
    document.getElementById('content').innerHTML = '<div class="right"><b>ERROR: FAILED TO INITIALIZE httpMd5!</b></div><div style="clear: both;"> </div>';
  }
};

MD5_CreateSearchButton = function()
{
  var elHash = document.getElementById('hash'); 
  if( !elHash ){ return; }

  var elA = document.createElement("a");
  if( !elA ){ return; }
    
  elA.href = "#";
  elA.id = "btn";
  elA.className = "button";
  elA.onclick = function ()
  {
    this.blur();
    MD5_Search();
    return false;
  };
    
  var elSpan = document.createElement("span");
  if( !elSpan ){ return; }

  if( GetLanguage() == "de" ){ elSpan.appendChild(document.createTextNode("Suchen")); }
  else{ elSpan.appendChild(document.createTextNode("Search")); }

  elA.appendChild(elSpan);
  elHash.parentNode.insertBefore(elA, elHash.nextSibling);
};






// Mass HTML Validator
// --------------------

Validator_Callback = function()
{
  if( httpValidator2.readyState == 4 && httpValidator2.status == 200 && httpValidator2.responseText )
  {    
    var sLang = GetLanguage();
    
    var sValid = "Valid";
    if( sLang == "de" ){ sValid = "Valide"; }
    
    var sNotValid = "Invalid";
    if( sLang == "de" ){ sNotValid = "Nicht valide"; }
    
    var sWrongUrl = "WRONG URL";
    if( sLang == "de" ){ sWrongUrl = "FALSCHE URL"; }
    
    var sCantConnect = "CONNECTION FAILED";
    if( sLang == "de" ){ sCantConnect = "VERBINDUNG FEHLGESCHLAGEN"; }
    
    var sWrongAnswer = "WRONG SERVER ANSWER";
    if( sLang == "de" ){ sWrongAnswer = "FALSCHE SERVER ANTWORT"; }
    

    var sOut = document.getElementById('results').innerHTML;
    
    if( httpValidator2.responseText == "Y" )
    {
      sOut = sOut + '<br /><img src="/?content=icon_okay&amp;type=png" alt="" width="16" height="16" title="" /> <b>' + sValid + ': ' + sValidatorURLs[iValidatorURLcnt-1] + "</b>";
    }
    else if( httpValidator2.responseText == "N" )
    {
      sOut = sOut + '<br /><img src="/?content=icon_failed&amp;type=png" alt="" width="16" height="16" title="" /> <b>' + sNotValid + ': <a href="http://validator.w3.org/check?uri=' + escape(sValidatorURLs[iValidatorURLcnt-1]) + '" target="_blank">' + sValidatorURLs[iValidatorURLcnt-1] + "</a></b>";
    }
    else if( httpValidator2.responseText == "C" )
    {
      sOut = sOut + '<br /><img src="/?content=icon_failed&amp;type=png" alt="" width="16" height="16" title="" /> <b>' + sCantConnect + ': ' + sValidatorURLs[iValidatorURLcnt-1] + "</b>";
    }
    else if( httpValidator2.responseText == "W" )
    {
      sOut = sOut + '<br /><img src="/?content=icon_failed&amp;type=png" alt="" width="16" height="16" title="" /> <b>' + sWrongUrl + ': ' + sValidatorURLs[iValidatorURLcnt-1] + "</b>";
    }
    else
    {
      sOut = sOut + '<br /><img src="/?content=icon_failed&amp;type=png" alt="" width="16" height="16" title="" /> <b>' + sWrongAnswer + ': ' + sValidatorURLs[iValidatorURLcnt-1] + "</b>";
    }
    
    document.getElementById('results').innerHTML = sOut;   
   
    var sResults = "Results";
    if( sLang == "de" ){ sResults = "Ergebnisse"; }
    document.getElementById('inner_results').innerHTML = '<br /><b>' + sResults + ':</b> ' + String(iValidatorURLcnt) + '/' + String(sValidatorURLs.length-1) + '';

    
    iValidatorURLcnt = iValidatorURLcnt+1;
    if( iValidatorURLcnt <= sValidatorURLs.length )
    {
      if( !sValidatorURLs[iValidatorURLcnt-1].length )
      {
        document.body.style.cursor = 'auto';   
        document.getElementById('spinner').style.display = "none"; 
        document.getElementById('abort').innerHTML = '';
        return;
      }
      
      self.scrollTo(0, document.getElementById('results').clientHeight+100);
      
      var sParameter = "url=" + escape(sValidatorURLs[iValidatorURLcnt-1]);
      
      httpValidator2.open('POST', "validator.php?checkurl", true);
      httpValidator2.onreadystatechange = Validator_Callback;
      httpValidator2.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      httpValidator2.setRequestHeader("Content-Length", sParameter.length);
      //httpValidator2.setRequestHeader("User-Agent", navigator.userAgent);
      httpValidator2.send(sParameter);
    }
    else
    {
      document.body.style.cursor = 'auto';  
      document.getElementById('spinner').style.display = "none";        
    }
  }
};

Validator_GetUrlsCallback = function()
{
  if( httpValidator.readyState == 4 && httpValidator.status == 200 && httpValidator.responseText )
  {
    var sResponse = httpValidator.responseText;
    
    sValidatorURLs = sResponse.split("\n");
    if( !sValidatorURLs ){ return; }

    iValidatorURLcnt = 1;
    var sParameter = "url=" + escape(sValidatorURLs[iValidatorURLcnt-1]);
        
    httpValidator2.open('POST', "validator.php?checkurl", true);
    httpValidator2.onreadystatechange = Validator_Callback;
    httpValidator2.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    httpValidator2.setRequestHeader("Content-Length", sParameter.length);
    //httpValidator2.setRequestHeader("User-Agent", navigator.userAgent);
    httpValidator2.send(sParameter);
  }
};

Validator_Start = function()
{
  if( httpValidator )
  {
    if( !document.getElementById('validator_urls').value.length ){ return; }
  
    var sResults = "Results";
    if( GetLanguage() == "de" ){sResults = "Ergebnisse";}
    document.getElementById('results').innerHTML = '';
  
    var sAbort = "Abort";
    if( GetLanguage() == "de" ){sResults = "Abbrechen";}
    document.getElementById('abort').innerHTML = '<br /><div id="inner_results"></div><a href="#" onclick="Validator_Abort(); return false;">' + sAbort + '</a>';
  
    document.body.style.cursor = 'wait';          
    document.getElementById('spinner').style.display = "inline";
    
    var sParameter = "urls=" + escape(document.getElementById('validator_urls').value);
  
    httpValidator.open('POST', "validator.php?geturls", true);
    httpValidator.onreadystatechange = Validator_GetUrlsCallback;
    httpValidator.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    httpValidator.setRequestHeader("Content-Length", sParameter.length);
    //httpValidator.setRequestHeader("User-Agent", navigator.userAgent);
    httpValidator.send(sParameter);
  }
  else
  {
    document.getElementById('content').innerHTML = '<div class="right"><b>ERROR: FAILED TO INITIALIZE httpValidator!</b></div><div style="clear: both;"> </div>';
  }
};

Validator_Abort = function()
{
  if( httpValidator ){ httpValidator.abort(); }
  if( httpValidator2 ){ httpValidator2.abort(); }
  
  document.body.style.cursor = 'auto';   
  document.getElementById('spinner').style.display = "none"; 
  document.getElementById('abort').innerHTML = '';

  self.scrollTo(0, document.getElementById('results').clientHeight+50);
};

Validator_CreateButton = function()
{
  var elURLs = document.getElementById('validator_urls'); 
  if( !elURLs ){ return; }

  var elA = document.createElement("a");
  if( !elA ){ return; }
    
  elA.href = "#";
  elA.id = "btn";
  elA.className = "button_val";
  elA.onclick = function ()
  {
    this.blur();
    Validator_Start();
    return false;
  };
    
  var elSpan = document.createElement("span");
  if( !elSpan ){ return; }

  if( GetLanguage() == "de" ){ elSpan.appendChild(document.createTextNode("Prüfen")); }
  else{ elSpan.appendChild(document.createTextNode("Validate")); }

  elA.appendChild(elSpan);
  elURLs.parentNode.insertBefore(elA, elURLs.nextSibling);
};



// SoF Servers
// -----------------------

SoF_CreateButton = function()
{
  var elURLs = document.getElementById('message'); 
  if( !elURLs ){ return; }

  var elA = document.createElement("a");
  if( !elA ){ return; }
    
  elA.href = "#";
  elA.id = "btn";
  elA.className = "button_val";
  elA.onclick = function ()
  {
    this.blur();
    SoF_Register();
    return false;
  };
    
  var elSpan = document.createElement("span");
  if( !elSpan ){ return; }

  elSpan.appendChild(document.createTextNode("Get a free server"));

  elA.appendChild(elSpan);
  elURLs.parentNode.insertBefore(elA, elURLs.nextSibling);
};

SoF_Register = function()
{
  if( httpSoF )
  {  
    document.body.style.cursor = 'wait';
    document.getElementById('spinner').style.visibility = "visible";  
  
    var sName = document.getElementById('name').value;
    var sEmail = document.getElementById('email').value;
    
    var sParameters = "name=" + escape(sName) + "&email=" + escape(sEmail);
    var sUrl = "_sof/?register&rand=" + Math.floor(Math.random()*65535);


  
    httpSoF.open('POST', sUrl, true);
    httpSoF.onreadystatechange = function () 
    {
      if( httpSoF.readyState == 4 && httpSoF.status == 200 && httpSoF.responseText )
      {
        var sResult = httpSoF.responseText;
                
        document.getElementById('result').innerHTML = "<br /><b>" + sResult + "</b>";
        
        document.body.style.cursor = 'auto';
        document.getElementById('spinner').style.visibility = "hidden"; 
      }
    };

    httpSoF.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    httpSoF.setRequestHeader("Content-Length", sParameters.length);
    //httpSoF.setRequestHeader("User-Agent", navigator.userAgent);
    httpSoF.send(sParameters);
  }
  else
  {
    document.getElementById('result').innerHTML = '<b>ERROR: FAILED TO INITIALIZE httpSoF!</b>';
  }
};

SoF_OnClick = function(e)
{
  var sVal = e.value;
  
  if( sVal == "Name" || sVal == "E-Mail" )
  {
    e.value = '';
  }
};




// Tooltips and screenshots 
// -----------------------------------

UpdateMouse = function(e)
{ 
  var x=0, y=0;

  if( elTooltip )
  {
    x = (document.all ? window.event.x + elTooltip.offsetParent.scrollLeft : e.pageX);
    y = (document.all ? window.event.y + elTooltip.offsetParent.scrollTop  : e.pageY);
    
    elTooltip.style.left = String(x + 20) + "px";
    elTooltip.style.top  = String(y + 20) + "px";
  }
  
  if( elScreenshot )
  {
    x = (document.all ? window.event.x + elScreenshot.offsetParent.scrollLeft : e.pageX);
    y = (document.all ? window.event.y + elScreenshot.offsetParent.scrollTop  : e.pageY);
    
    elScreenshot.style.left = String(x - (iScreenshotWidth)+70) + "px";
    elScreenshot.style.top  = String(y - (iScreenshotHeight)-10) + "px";
  }
};

Tooltip_Init = function()
{
  elTooltip = document.createElement("div");
  if( !elTooltip ){ return; }
  
  elTooltip.id = "tooltip";
  elTooltip.innerHTML = '<div style="text-align:center;padding-top:30px;"><img src="/?content=spinner&amp;type=gif" alt="" width="16" height="16" /></div>';

  elTooltip.style.width = "200px";
  elTooltip.style.height = "150px";
  elTooltip.style.display = "none";
  elTooltip.style.position = "absolute";
  elTooltip.style.padding = "30px 8px 3px 3px";
  
  var IEver = GetIEVersion();
  if( IEver > -1 && IEver < 7.0 ){ elTooltip.style.background = "url(/?content=tooltip&type=gif) no-repeat"; }
  else{ elTooltip.style.background = "url(/?content=tooltip&type=png) no-repeat"; }
  
  elTooltip.style.filter = "alpha(opacity:90)";
  elTooltip.style.KHTMLOpacity = "0.90";
  elTooltip.style.MozOpacity = "0.90";
  elTooltip.style.opacity = "0.90";

  document.body.appendChild(elTooltip);
  document.onmousemove = UpdateMouse;
};

Tooltip_Show = function(sLang, sTooltip)
{
  bTooltipShow = true;
  
  if( tTooltipTimeout )
  {
    clearTimeout(tTooltipTimeout);
  }
  
  tTooltipTimeout = setTimeout("Tooltip_Show_('"+sLang+"', '"+sTooltip+"')", 333);
};

Tooltip_Show_ = function(sLang, sTooltip)
{
  var sFile = "";
  
  if( !elTooltip || !bTooltipShow ){ return; }

  if( httpTooltip )
  { 
    document.body.style.cursor = 'help';

    sFile = "miranda.php?lang=" + sLang + "&tooltip=" + sTooltip + "&rand=" + Math.floor(Math.random()*65535);

    httpTooltip.open('GET', sFile, true);
    //httpTooltip.setRequestHeader("User-Agent", navigator.userAgent);
    httpTooltip.onreadystatechange = function () 
    {
      if( httpTooltip.readyState == 4 && httpTooltip.status == 200 && httpTooltip.responseText )
      {   
        var sResponse = httpTooltip.responseText;

        var sSplit = sResponse.split(" |\n| ");
        if( sSplit && sSplit[1]  ) 
        {
          elTooltip.innerHTML = "<b>" + sSplit[0] + "</b><br />" + sSplit[1];
        }
      }
    };
       
    httpTooltip.send(null);
  }
  else
  {
    elTooltip.innerHTML = '<b>ERROR: FAILED TO INITIALIZE httpTooltip!</b>';
  }
  
  elTooltip.style.display = "block";
};

Tooltip_Hide = function()
{
  bTooltipShow = false;

  if( tTooltipTimeout )
  {
    clearTimeout(tTooltipTimeout);
  }

  if( elTooltip )
  {
    document.body.style.cursor = 'auto';
    elTooltip.style.display = "none";
    elTooltip.innerHTML = '<div style="text-align:center;padding-top:30px;"><img src="/?content=spinner&amp;type=gif" alt="" width="16" height="16" /></div>';
  }
};


// Screenshot 
// ---------------------

Screenshot_Init = function()
{
  elScreenshot = document.createElement("div");
  if( !elScreenshot ){ return; }
  
  elScreenshot.id = "screenshot";
  elScreenshot.style.width = "20px";
  elScreenshot.style.height = "20px";
  elScreenshot.style.display = "none";
  elScreenshot.style.position = "absolute";
  elScreenshot.style.background = "url(/?content=spinner&type=gif) no-repeat";  
  elScreenshot.style.filter = "alpha(opacity:85)";
  elScreenshot.style.KHTMLOpacity = "0.85";
  elScreenshot.style.MozOpacity = "0.85";
  elScreenshot.style.opacity = "0.85";

  document.body.appendChild(elScreenshot);
  document.onmousemove = UpdateMouse;
};

Screenshot_Show = function(sPicture, iWidth, iHeight)
{ 
  bScreenshotShow = true;
  
  if( tScreenshotTimeout )
  {
    clearTimeout(tScreenshotTimeout);
  }
  
  tScreenshotTimeout = setTimeout("Screenshot_Show_('"+sPicture+"', "+iWidth+", "+iHeight+")", 23);
};

Screenshot_Show_ = function(sPicture, iWidth, iHeight)
{ 
  if( elScreenshot && bScreenshotShow )
  {
    document.body.style.cursor = 'help';

    iScreenshotWidth = iWidth;
    iScreenshotHeight = iHeight;
    
    elScreenshot.style.width = iWidth + "px";
    elScreenshot.style.height = iHeight + "px";
    elScreenshot.style.background = "url(/?content=" + sPicture + "&type=png) no-repeat";  
    elScreenshot.style.display = "block";
  }
};

Screenshot_Hide = function()
{
  bScreenshotShow = false;

  if( tScreenshotTimeout )
  {
    clearTimeout(tScreenshotTimeout);
  }

  if( elScreenshot )
  {
    document.body.style.cursor = 'auto';
    elScreenshot.style.display = "none";
    elScreenshot.style.width = "20px";
    elScreenshot.style.height = "20px";
    elScreenshot.style.background = "url(/?content=spinner&type=gif) no-repeat";  
  }
};



// History
// ---------------
History_Check = function()
{
  try
  {    
    var sLocation = window.location.hash;
    if( !sLocation || sLocation.length < 0 ){ sLocation = GetRequest(sMainStartPage); }
    else
    {
      var sSplit = sLocation.split("#");
      if( sSplit )
      {
        sLocation = sSplit[1];
      }
    }
    
    if( sLocation != sMainContent )
    {
      LoadContent(sLocation);
    }
    else
    {
      tHistoryTimeout = setTimeout(History_Check, 333);
    }
  }
  catch(e)
  {
  
  }
};

History_Add = function(sLocation)
{
  try
  {   
    if( (!window.location.hash || window.location.hash.length < 0) && sLocation == GetRequest(sMainStartPage) ){ return; }
    
    window.location.hash = "#" + sLocation;
  }
  catch(e)
  {
  
  }
};


// Main 
// ---------------

InitPage = function(sRequest)
{
  if( !httpContent )
  {
    if( !InitXmlHttp("httpContent") )
    {
      return;
    }
  }

  sMainContent = sRequest;
  
  Screenshot_Hide();
  Tooltip_Hide();

  if( sRequest.search("blog") > -1 || sRequest === "" )
  {
    Blog_CreateSearchButton();
  }
  else if( sRequest.search("miranda") > -1 )
  {
     Miranda_CreateButton();
  
     Miranda_FadeOut(document.getElementById('skins_nicer'));
     Miranda_FadeOut(document.getElementById('skins_tabsrmm'));
  
    if( !Miranda_ReadRequest() ){ Miranda_ReadCookie(true); }
  
    if( !httpMiranda )
    {
      if( !InitXmlHttp("httpMiranda") ){ return; }
    }
    
    if( !httpTooltip )
    {
      if( !InitXmlHttp("httpTooltip") ){ return; }
    }
    
    if( !elTooltip ){ Tooltip_Init(); }
    if( !elScreenshot ){ Screenshot_Init(); }
  }
  else if( sRequest == "md5" )
  {
    if( !httpMd5 )
    {
      if( !InitXmlHttp("httpMd5") ){ return; }
    }
  
    MD5_CreateSearchButton();
    
    var elHash = document.getElementById('hash');
    if( !elHash ){ return; }
    elHash.focus();
    elHash.select();
  }
  else if( sRequest == "jabber" )
  {
    if( !httpJabber )
    {
      if( !InitXmlHttp("httpJabber") ){ return; }
    }
  
    Jabber_CreateRegisterButton();
  }
  else if( sRequest == "validator" )
  {
    if( !httpValidator ){
      if( !InitXmlHttp("httpValidator") ){ return; } }
  
   if( !httpValidator2 ){
      if( !InitXmlHttp("httpValidator2") ){ return; } }
  
    Validator_CreateButton();
    document.getElementById('validator_urls').value = "www.w3c.org\nhttp://google.com\nhttp://www.ebay.com\nhttp://gecko.me/sitemap.xml";
  }
  else if( sRequest == "sof" )
  {
    if( !httpSoF ){
      if( !InitXmlHttp("httpSoF") ){ return; } }
    
    SoF_CreateButton();
  }
  else if( sRequest == "contact" )
  {
    var elEmail = document.getElementById('email');
    if( elEmail )
    {
      elEmail.href = "mailto:"+"m1rco"+"@"+"gecko.me";
    }
  } 
};

ChangeFavicon = function(sFavicon)
{
  var elFavicon = document.getElementById('favicon');
  if( elFavicon )
  {
    document.getElementsByTagName('head')[0].removeChild(elFavicon);
    
    var elLink = document.createElement('link');
    if( !elLink ){ return; }
    
    elLink.type = "image/vnd.microsoft.icon";
    elLink.rel = "icon";
    elLink.id = "favicon";
    elLink.href = sFavicon;
    document.getElementsByTagName('head')[0].appendChild(elLink);
  }
    
  var elShortcuticon = document.getElementById('shortcuticon');
  if( elShortcuticon )
  {
    document.getElementsByTagName('head')[0].removeChild(elShortcuticon);
    
    var elLink2 = document.createElement('link');
    if( !elLink2 ){ return; }
    
    elLink2.type = "image/vnd.microsoft.icon";
    elLink2.rel = "shortcut icon";
    elLink2.id = "shortcuticon";
    elLink2.href = sFavicon;
    document.getElementsByTagName('head')[0].appendChild(elLink2);
  }
};

LoadContent = function(sContent)
{   
  if( !bMainInitialized ){ return; }
  
  document.body.style.cursor = 'auto';
    
  if( tHistoryTimeout ){ clearTimeout(tHistoryTimeout); }
    
  UnInitXmlHttp();
  
  if( sMainContent.search("miranda") > -1 ){ Miranda_SaveCookie(); }

  sMainContent = sContent;

  History_Add(sContent);
        
  if( GetLanguage() == "de" )
  {
    if( sContent == "projects" ){ sMainSubheader = "Projekte"; }
    else if( sContent == "jabber" ){ sMainSubheader = "Jabber"; }
    else if( sContent == "validator" ){ sMainSubheader = "Mass HTML Validator"; }
    else if( sContent == "md5" ){ sMainSubheader = "MD5 Suchmaschine"; }
    else if( sContent == "sof" ){ sMainSubheader = "Free Servers"; }
    else if( sContent.search("miranda") > -1 ){ sMainSubheader = "Miranda IM Wizard"; }
    else if( sContent == "acpifix" ){ sMainSubheader = "Vista/Seven ACPI Fix für den Eee PC"; }
    else if( sContent == "nautilus" ){ sMainSubheader = "Nautilus Patches"; }
    else if( sContent == "contact" ){ sMainSubheader = "Kontakt"; }
    else{ sMainSubheader = "Blog"; }
    
    if( sContent == "projects" ){ sMainTitle = "gecko dot me: Projekte"; }
    else if( sContent == "jabber" ){ sMainTitle = "gecko dot me: Jabber"; }
    else if( sContent == "validator" ){ sMainTitle = "gecko dot me: Mass HTML Validator"; }
    else if( sContent == "md5" ){ sMainTitle = "gecko dot me: MD5 Suchmaschine"; }
    else if( sContent == "sof" ){ sMainTitle = "gecko dot me: Free Servers"; }
    else if( sContent.search("miranda") > -1 ){ sMainTitle = "gecko dot me: Miranda IM Wizard"; }
    else if( sContent == "acpifix" ){ sMainTitle = "gecko dot me: Vista/Seven ACPI Fix für den Eee PC"; }
    else if( sContent == "nautilus" ){ sMainTitle = "gecko dot me: Nautilus Patches"; }
    else if( sContent == "contact" ){ sMainTitle = "gecko dot me: Kontakt"; }
    else{ sMainTitle = "gecko dot me: Blog"; }
  }
  else
  {      
    if( sContent == "projects" ){ sMainSubheader = "Projects"; }
    else if( sContent == "jabber" ){ sMainSubheader = "Jabber"; }
    else if( sContent == "validator" ){ sMainSubheader = "Mass HTML Validator"; }
    else if( sContent == "md5" ){ sMainSubheader = "MD5 Searchengine"; }
    else if( sContent == "sof" ){ sMainSubheader = "Free Servers"; }
    else if( sContent.search("miranda") > -1 ){ sMainSubheader = "Miranda IM Wizard"; }
    else if( sContent == "acpifix" ){ sMainSubheader = "Vista/Seven ACPI Fix for the Eee PC"; }
    else if( sContent == "nautilus" ){ sMainSubheader = "Nautilus Patches"; }
    else if( sContent == "contact" ){ sMainSubheader = "Contact"; }
    else{ sMainSubheader = "Blog"; }
    
    if( sContent == "projects" ){ sMainTitle = "gecko dot me: Projects"; }
    else if( sContent == "jabber" ){ sMainTitle = "gecko dot me: Jabber"; }
    else if( sContent == "validator" ){ sMainTitle = "gecko dot me: Mass HTML Validator"; }
    else if( sContent == "md5" ){ sMainTitle = "gecko dot me: MD5 Searchengine"; }
    else if( sContent == "sof" ){ sMainTitle = "gecko dot me: Free Servers"; }
    else if( sContent.search("miranda") > -1 ){ sMainTitle = "gecko dot me: Miranda IM Wizard"; }
    else if( sContent == "acpifix" ){ sMainTitle = "gecko dot me: Vista/Seven ACPI Fix for the Eee PC"; }
    else if( sContent == "nautilus" ){ sMainTitle = "gecko dot me: Nautilus Patches"; }
    else if( sContent == "contact" ){ sMainTitle = "gecko dot me: Contact"; }
    else{ sMainTitle = "gecko dot me: Blog"; }
  }
  
  var sUrl;
  var sSplit = null;
  if( sContent.search("miranda") > -1 )
  {  
    var sLang = GetLanguage();
    
    sSplit = sContent.split("_");
    if( sSplit && sSplit[1] ){ sLang = sSplit[1]; }
  
    sUrl = "miranda.php?lang=" + sLang + (sMainForcedLang ? '&forcedlang' : '') + ( Miranda_ReadCookie(false)!=false ? "&settings="+escape(Miranda_ReadCookie(false)) : ( Miranda_ReadRequest() ? "&settings="+Miranda_ReadRequest() : "" ) ) + "&rand=" + Math.floor(Math.random()*65535);
 
    document.getElementById('main_flag_en').href = "/?miranda&lang=en";
    document.getElementById('main_flag_de').href = "/?miranda&lang=de";
    ChangeFavicon("/?content=favicon_miranda&type=ico");
  }
  else if( sContent.search("blog") > -1 )
  {
    var sStart = "-1";
    var sLen = String(iBlogPostsPerPage);
    
    sSplit = sContent.split("_");
    if( sSplit && sSplit[1] ) 
    {    
      var sSplit2 = sSplit[1].split(":");
      
      if( sSplit2 && sSplit2[1] ) 
      {    
        sStart = sSplit2[0];
        sLen = sSplit2[1];
      }
    }
    
    Blog_Create(sStart, sLen);
    
    document.getElementById('main_flag_en').href = "/?blog" + (sStart!='-1' ? "&start="+sStart : '') + (sLen!='0' ? "&len="+sLen : '') + "&lang=en";
    document.getElementById('main_flag_de').href = "/?blog" + (sStart!='-1' ? "&start="+sStart : '') + (sLen!='0' ? "&len="+sLen : '') + "&lang=de";
    ChangeFavicon("/?content=favicon&type=ico");
    
    tHistoryTimeout = setTimeout(History_Check, 333);

    return false;
  }
  else
  {
    sUrl = "" + sContent + ".php?lang=" + GetLanguage() + (sMainForcedLang ? '&forcedlang' : '') + "&rand=" + Math.floor(Math.random()*65535);
 
    document.getElementById('main_flag_en').href = "/?" + sMainContent  + "&lang=en";
    document.getElementById('main_flag_de').href = "/?" + sMainContent  + "&lang=de";
    ChangeFavicon("/?content=favicon&type=ico");
  }

  sMainUrl = sUrl;

  
  if( httpContent )
  {
    httpContent.open('GET', sUrl, true);
    //httpContent.setRequestHeader("User-Agent", navigator.userAgent);
    httpContent.onreadystatechange = function () 
    {
      if( httpContent.readyState == 4 && httpContent.status == 200 && httpContent.responseText )
      {
        document.title = sMainTitle;
        document.getElementById('subheader').innerHTML = "<h2>" + sMainSubheader + "</h2>";
        document.getElementById('content').innerHTML = httpContent.responseText;    
                
        InitPage(sMainContent);
        
        if( sMainForcedLang ){ ChangeMenuLanguage(sMainForcedLang); }
        
        tHistoryTimeout = setTimeout(History_Check, 333);
      }
    };
      
    httpContent.send(null);
  }
  else
  {
    document.getElementById('content').innerHTML = '<div class="right"><b>ERROR: FAILED TO INITIALIZE httpContent!</b></div><div style="clear: both;"> </div>';
  }
};
