/* ------------- Initialisierung -------------------------------------------*/

Ajax.flXHRproxy.registerOptions(ibkgb_server + "/guestbook",{instancePooling:true,autoUpdatePlayer:true,xmlResponseText:false,loadPolicyURL:ibkgb_server+"/flensed/policy.xml"});

function init_gb()
{
	// Hat IE ActiveX aktiviert?
	if (navigator.appName == "Microsoft Internet Explorer")
	{
		var ibkgb_use = true;
		try { a = new ActiveXObject("Shell.UIHelper") }
		catch(e) { ibkgb_use = false }	
	}
	else ibkgb_use = true;
		
	if(ibkgb_use == true) 
	{ 

	  // Captcha ziehen
	  ibkgbGetCaptcha();
	  
	  // Eintraege holen
		ibkgbGetEntries(0);
	}
	else alert('Um das Gästebuch nutzen zu können, müssen Sie ActiceX aktivieren!');
}

function ibkgbSwitchForm()
{
	new Effect.toggle($('ibkgb_form_div'), 'Blind', {afterFinish: ccRedraw});
	var sw = $('ibkgb_switcher');
}

/* ------------- Einlesen -------------------------------------------*/

function ibkgbGetCaptcha()
{
	var where = ibkgb_server + '/guestbook/captcha.php';
	
	// existiert schon eine id -> mitsenden um session zu l&ouml;schen
	var pbody = '&' + Form.Element.serialize('cap_sess');
	var opt = {
		method: 'post',
		postBody: pbody,
	    onSuccess: function(t) { 
	    
	    	  $('cap_sess').value = t.responseText;
	    	  $('cap_img').src    = ibkgb_server + '/guestbook/captcha_img.php?im=' + t.responseText;
	    },
	    on404: function(t) {

	    	  $('ibkgb_captcha').update('Error 404: location "' + t.statusText + '" was not found.<br>');
	    },
	    onFailure: function(t) {

	    	  $('ibkgb_captcha').update('Error ' + t.status + ' -- ' + t.statusText + '<br>');
	    },
	    onException: handleError,
	    	    
	    asynchronous: true
		}
		
	  new Ajax.Request(where, opt);
}

function handleError(request,errObj) {
	alert("Error: "+errObj.number
		+"\nType: "+errObj.name
		+"\nDescription: "+errObj.description
		+"\nSource Object Id: "+errObj.srcElement.instanceId
	);
}


/* ------------- Einlesen -------------------------------------------*/

function ibkgbGetEntries(nr)
{
	$('ibkgb_start').value = nr;
	var mydata   = '&' + Form.serialize("ibk_guestbook");
	var where    = ibkgb_server + '/guestbook/get.php';
	var opt = {
	    method: 'post',
	    postBody: mydata,
	    onSuccess: function(t) {
	    	  ibkgbUpdateEntries(t.responseText);
	    },
	    on404: function(t) {
	    	  $('ibkgb_theentries').update('Error 404: location "' + t.statusText + '" was not found.<br>');
	    },
	    onFailure: function(t) {
	    	  $('ibkgb_theentries').update('Error ' + t.status + ' -- ' + t.statusText + '<br>');
	    },
	    	    
	    asynchronous: true,
	    evalScripts:  false
		}
		
	  new Ajax.Request(where, opt);
}



function ibkgbUpdateEntries(txt)
{
	var output  = txt; 
	var outarr  = output.parseQuery();
	
  var entries = $$('#ibkgb_entry_dummy table')[0];
  var counter = $$('#ibkgb_browser_dummy table')[0];
	
	// leeren von theentries
	$('ibkgb_theentries').update('');
  
	if(outarr['ergebnisse'] > 0)
	{
		// Seitenwechsler oben
		if(outarr['ranges'] != undefined) {
			var counter_copy1  = counter.cloneNode(true);
			counter_copy1.down(2).update(outarr['prev'] + ' ' + outarr['ranges'] + ' ' + outarr['next'])
			$('ibkgb_theentries').insert({bottom: counter_copy1});
		}
		
	  // Aufbau der Eintraege
	  for (var i=0;i<outarr['ergebnisse'];i++)
	  {
		  var entries_copy  = entries.cloneNode(true);
		  entries_copy.down(2).update(outarr['name_'+i] + ' schrieb am ' + outarr['date_' + i]);
		  entries_copy.down().next().down(1).update(outarr['entry_' + i]);
		  $('ibkgb_theentries').insert({bottom: entries_copy});
		}
		
		if(outarr['ranges'] != undefined) {
			var counter_copy2  = counter.cloneNode(true);
			counter_copy2.down(2).update(outarr['prev'] + ' ' + outarr['ranges'] + ' ' + outarr['next'])
			$('ibkgb_theentries').insert({bottom: counter_copy2});
		}
		
		ccRedraw();

	}
	else $('ibkgb_theentries').update('Es liegen noch keine Eintr&auml;ge im G&auml;stebuch vor.');
}

/* ------------- Versenden -------------------------------------------*/

function ibkgbVersenden(where)
{	
	// first: clear all info-texts
	$('ibkgb_info_text').update('');
	var mycheck = ibkgbCheckPflicht();
	
	if (mycheck == '') 
	{
	  ibkgbShow('ibkgb_geduld');
	  ibkgbSender(where);
	}
	else
	{
		$('ibkgb_info_text').update(mycheck);
		ibkgbShow('ibkgb_info');
	}
	
}

function ibkgbSender(where)
{	
	  var mydata   = '&' + addslashes(Form.serialize("ibk_guestbook"));
	  
	  // Timeout check starten
	  var timeout = setTimeout('sendfailure()',10000);

	  var opt = {
	    method: 'post',
	    postBody: mydata,
	    onSuccess: function(t) {

	    	switch (t.responseText)
	    	{
	    		case '0':
	    			$('ibk_guestbook').reset();
		    	  $('ibkgb_start').value=0;
		    	  var nr_text = 'Ihr G&auml;stebucheintrag ist erfolgt!';
		    	  if (ibkgb_confirm == 1)
		    	    nr_text += '<br />Er wird angezeigt, sobald der Seitenbetreiber den Eintrag freigeschaltet hat';
		    	  
		    	  setTimeout('ibkgbGetEntries('+0+')',100);
						setTimeout('ibkgbGetCaptcha()',50);		
				
	    		break;
	    		
	    		case '1':
						var nr_text = 'Der eingegebene Code ist leider falsch!';
	    		break;
	    		
	    		case '2':
						var nr_text = 'Bitte geben Sie zum Versenden den Bild-Code ein.';
	    		break;
	    		
	    		case '3':
						var nr_text = 'Ihre Session f&uuml;r den Code ist abgelaufen.<br />Bitte erzeugen Sie einen neuen Code';
	    		break;
	    		
	    		case '4':
						var nr_text = 'Sie hatten 3 fehlerhafte Versuche!<br />Bitte erzeugen Sie einen neuen Code';
	    		break;
	    		
	    		default:
	    			var nr_text = 'Ein unbekannter Fehler ist aufgetreten!: ' + t.responseText;
	    		break;

	    	}
	    	
				if(timeout)
	    		clearTimeout(timeout);
				
				    
				
    	  $('ibkgb_geduld').hide();
    	  $('ibkgb_info_text').update(nr_text);
    	  $('ibkgb_info').show();
    	  
	    },
	    on404: function(t) {
	    		Effect.Fade('ibkgb_geduld');
	    },
	    onFailure: function(t) {
	    		Effect.Fade('ibkgb_geduld');
	    },
	    	    
	    asynchronous: true,
	    evalScripts:  false
		}
		
	  new Ajax.Request(where, opt);
	  
	  return true;
}

function sendfailure() 
{
	var failureText = 'Leider ist keine Rückmeldung erfolgt, ob Ihr Beitrag in das G&auml;stebuch eingetragen wurde.<br />' +
										'Bitte laden Sie die Seite neu, um zu sehen, ob der Eintrag durchgef&uuml;hrt wurde.';
	$('ibkgb_geduld').hide();
	$('ibkgb_info_text').update(failureText);
	$('ibkgb_info').show();
}

/* ------------- kleine Hilfs-Funktionen -------------------------------------------*/

function ibkgbShow(what)
{
	//alert(what);
	Element.show(what);
	Effect.Appear('ibkgb_waiter');
	new Effect.Opacity('ibkgb_maintable', {duration:1.0, from:1.0, to:0.3});
	return true;
}

function ibkgbHide(what)
{
	new Effect.Opacity('ibkgb_maintable', {duration:1.0, from:0.3, to:1.0});	
	Effect.Fade('ibkgb_waiter');
	Effect.Fade(what);
	return true;
}

function ibkgbCheckPflicht()
{
	var nc = $('ibkgb_nachricht').value;
	var nm = $('ibkgb_name').value;
	var fehler = '';
	
	if (trim(nc) == '') fehler += "Bitte geben Sie eine Nachricht ein, die Sie eintragen m&ouml;chten<br />";
	if (trim(nm) == '') fehler += "Bitte geben Sie Ihren Namen ein!<br />";
	
	return fehler;	
}

function ibkgbFragnach()
{
	var antwort = confirm('Wollen Sie die Formularfelder wirklich leeren?');
	return antwort;
}

/* ------------- Zusatz-Funktionen -------------------------------------------*/

function lTrim(sString)
{
	while (sString.substring(0,1) == ' ') sString = sString.substring(1, sString.length);
	return sString;
}

function rTrim(sString)
{
	while (sString.substring(sString.length-1, sString.length) == ' ') sString = sString.substring(0,sString.length-1);
	return sString;
}

function trim(sString)
{
	sString = lTrim(sString);
	sString = rTrim(sString);
	return sString;
}

function addslashes( str ) {
    return (str+'').replace(/([\\"'])/g, "\\$1").replace(/\0/g, "\\0");
}

