/**
 * get teaser from wikipedia of given keyword
 *
 * Created on 19.01.2009
 * Project: CMS
 *
 * '$Id: keywords_wikipedia.js,v 1.2 2009/01/20 14:17:25 abaethe Exp $'
 *
 */


var req;
var gkfw_retries = 0;
var gkfw_kw;
var gkfw_lng;

/**
 * send ajax request
 */
function getKeywordFromWikipedia(kw, lng) 
{
  gkfw_retries++;
  if( gkfw_retries > 2 )
    exit;

  getKeywordFromWikipedia_init();

  if( !gkfw_kw )
  {
    gkfw_kw  = kw;   // keep 'em in mind for possible retries
    gkfw_lng = lng;  
  }

  // ! encodeURIComponent() encodes in UTF8 - so be aware to decode GET-params in receiving server-script !
  kw = encodeURIComponent(kw);    // prepare for GET-request

  //req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  req.open('GET','http://www.atzonline.com/keywordWikipedia.php?kw=' + kw + '&lng=' +  lng, true);  // have2use own server due to XSS-security
  req.onreadystatechange = getKeywordFromWikipediaResponse;   // call it AFTER open() to make it work in f**king IE
  req.send(null);
}

/**
 * handle ajax responses
 */
function getKeywordFromWikipediaResponse()
{
  if( req.readyState == 4 )   // XHR-state 'complete'
  {
    if( req.status == 200 )   // want HTTP status code 'OK' only
    {
      var t_div = document.getElementById('wikipedia_keyword');   // determine target div
      var rText = req.responseText;

      var reg = "(div|table)>\n<p>((.|\n)*)<\/p>\n<table id=\"toc\"";   // tricky, but we made worse things
      var regex = new RegExp(reg, "im");
      if( rText.match(regex) )
      {
        teaser = RegExp.$2;

        // use FQDNs
        var reg_fqdn = '<a href="';   // tricky, but we made worse things
        var regex_fqdn = new RegExp(reg_fqdn, "igm");
        teaser = teaser.replace(regex_fqdn, '<a target="_blank" href="http://' + gkfw_lng + '.wikipedia.org');

        t_div.innerHTML = teaser + t_div.innerHTML;
        t_div.style.display = 'block';
      }
      else if( gkfw_retries == 1 )
      {
        // start retry with upper case of first letter
        var tmp_kw = gkfw_kw;
        tmp_kw = tmp_kw.substr(0, 1).toUpperCase() + tmp_kw.substr(1, tmp_kw.length - 1);
        getKeywordFromWikipedia(tmp_kw, gkfw_lng);
      }
      else if( gkfw_retries == 2 )
        // start retry with full upper cases
        getKeywordFromWikipedia(gkfw_kw.toUpperCase(), gkfw_lng);
    }
    //else
    //  alert("There was a problem retrieving the XML data:\n" + req.statusText);
  }
}


/**
 * init stuff
 */
function getKeywordFromWikipedia_init()
{
  if( typeof req == 'undefined' )      
    req = createXMLHttpRequest();
}

function createXMLHttpRequest()
{
  var myreq = null;

  if( window.XMLHttpRequest )      // Mozilla, Safari, ...
    myreq = new XMLHttpRequest();
  else if( window.ActiveXObject )  // IE
    myreq = new ActiveXObject("Microsoft.XMLHTTP");

/*  var req = null;
  try 
  {
    req = new ActiveXObject("MSXML2.XMLHTTP");
  }
  catch( err_MSXML2 )
  {
    try
    {
      req = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch( err_Microsoft )
    {
      if( typeof XMLHttpRequest != "undefined" ) 
        req = new XMLHttpRequest;
    }
  } */

  return myreq;
}

