var ajaxscript    = 'portal.php';
var lastsearch    = '';
var partner       = new Array();

Event.observe(window, 'load', function() {
 // Anzahl Aufgaben alle 5 Minuten aktualisieren
 if($('_tasks'))
  new Ajax.PeriodicalUpdater('tasks', ajaxscript, {
   parameters: { ajax: 'tasks' },
   frequency: 300,
   decay: 1
  });
 // Portale jede Stunde aktualisieren
 if($('_c1') && $('_c2'))
  new PeriodicalExecuter(function(pe) {
   updatePortals($F('_search_text'));
   //pe.stop();
  }, 3600);
 // News Box jede Stunde aktualisieren
 if($('_box_news'))
  new PeriodicalExecuter(function(pe) {
   new Ajax.Request(ajaxscript, {
    parameters: { ajax: 'news' },
    onSuccess: function(transport) {
     var json = transport.responseText.evalJSON();
     $('_box_news').innerHTML = json;
    },
    onFailure: function(transport) {
     alert(transport.responseText);
    }
   });
   //pe.stop();
  }, 3600);
 // Aktions Box jede Stunde aktualisieren
 if($('_box_campaign'))
  new PeriodicalExecuter(function(pe) {
   new Ajax.Request(ajaxscript, {
    parameters: { ajax: 'campaign' },
    onSuccess: function(transport) {
     var json = transport.responseText.evalJSON();
     $('_box_campaign').innerHTML = json;
    },
    onFailure: function(transport) {
     alert(transport.responseText);
    }
   });
   //pe.stop();
  }, 3600);
 // Partner Box jede Stunde aktualisieren
 if($('_box_partner'))
  new PeriodicalExecuter(function(pe) {
   new Ajax.Request(ajaxscript, {
    parameters: { ajax: 'partner' },
    onSuccess: function(transport) {
     var json = transport.responseText.evalJSON();
     $('_box_partner').innerHTML = json;
     indexPartner();
    },
    onFailure: function(transport) {
     alert(transport.responseText);
    }
   });
   //pe.stop();
  }, 3600);
 // Fuegt das loading Bild ein
 var loading = new Element('img', {'id': 'loading', 'src': 'images/site/loading.gif'});
 loading.setStyle({position: 'absolute', bottom: '15px', left: '165px', width: '32px', height: '32px'});
 loading.hide();
 $('spacer').insert(loading);
 // Event observer fuer Suchbutton (Klick)
 $('_search_submit').observe('click', function(event) {
  if($('_c1') && $('_c2'))
   updatePortals($F('_search_text'));
 });
 // Event observer fuer Suchtext (Entertaste)
 $('_search_text').observe('keypress', function(event) {
  var code = (event.charCode) ? event.charCode : event.keyCode;
  if(code == 13 && $('_c1') && $('_c2'))
   updatePortals($F('_search_text'));
 });
 // Sendet einen Suchrequest, sobald sich der neue Suchtext um mindestens 4 Zeichen vom alten unterscheidet
 if($('_c1') && $('_c2'))
  new PeriodicalExecuter(function(pe) {
   var searchtext = $F('_search_text');
   if((lastsearch.length > 0 && searchtext.length == 0) || diff(lastsearch, searchtext) > 3)
    updatePortals(searchtext);
   //pe.stop();
  }, 0.1);
 $('_search_text').focus();
 // Parnter Banner indizieren
 indexPartner();
 rotatePartner();
});

// Parnter Banner indizieren
function indexPartner() {
 partner = new Array();
 $$('#_box_partner a').each(function(element) { partner.push(element.cloneNode(true)); });
}

function getRealHeight(element) {
	var height       = element.getHeight();
	var marginTop    = element.getStyle('marginTop') || '0px';
	var marginBottom = element.getStyle('marginBottom') || '0px';
	height += parseInt(marginTop.substring(0, marginTop.indexOf('px')));
	height += parseInt(marginBottom.substring(0, marginBottom.indexOf('px')));
	
	return height;
}

// Partner rotieren
function rotatePartner() {
 $('_box_partner').update(partner[Math.floor(Math.random() * (partner.length-1))]);
 var height  = 0;
 [$('c1'), $('c2'), $('c3')].each(function(element) { var currentHeight = getRealHeight(element); if(currentHeight > height) height = currentHeight; });
 $('content').setStyle({ height: height + 'px' });
 setTimeout('rotatePartner()', 6 * 1000);
}

// Aktualisiert die Portalspalten
function updatePortals(searchtext) {
 $('loading').show();
 lastsearch = searchtext;
 new Ajax.Request(ajaxscript, {
  parameters: { ajax: 'search', search: searchtext },
  onSuccess: function(transport) {
   var json = transport.responseText.evalJSON();
   $('_c1').innerHTML = json[0];
   $('_c2').innerHTML = json[1];
   $('loading').hide();
  },
  onFailure: function(transport) {
   alert(transport.responseText);
   $('loading').hide();
  }
 });
 $('_search_text').focus();
}

// Ueberprueft, um wieviel Zeichen string1 von string2 abweicht
function diff(string1, string2) {
 string1 = string1.strip();
 string2 = string2.strip();
 var abs = Math.abs(string1.length - string2.length);
 var min = (string1.length < string2.length) ? string1.length : string2.length;
 var pos = 0;
 while(pos < min) {
  if(string1.substr(pos, 1) != string2.substr(pos, 1))
   abs++;
  pos++;
 }
 return abs;
}

