/*
  Copyright Lutz Eymers <ixtab@polzin.com>, 1997
  Polzin GmbH, Duesseldorf
*/
<!--
  function isDigit( ch )
  {
    if ( (ch >= '0') && (ch <= '9') )
      return true;
    else
      return false;
  }


  function isAlpha( ch )
  {
    if ( ((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z')) )
      return true;
    else
      return false;
  }


  function isAlnum( ch )
  {
    if ( isAlpha( ch ) || isDigit( ch ) )
      return true;
    else
      return false;
  }


  function notIn( str1, str2 )
  {
    var i = 0;
    var j = str2.length;
    for( ; i<j; i++ )
    {
      var str3 =  str2.charAt(i);
      if( str1.indexOf( str3 ) != -1 )
        return false;
    }
    return true;
  }


  function checkUsername( username, mustBeQuoted )
  {
    var i = 0;
    var j = username.length;
    if ( username.charAt(0) != '"' )
    {
      if ( (username.charAt(0) <  ' ') || (username.charAt(0) >  '~')
            || !notIn( mustBeQuoted, username.charAt(0) ) )
        return false;
      for( i=1; i<j; i++ )
      {
        if ( ( (username.charAt(i) < ' ') || (username.charAt(i) >  '~')
              || !notIn ( mustBeQuoted, username.charAt(i) ) )
             && ( username.charAt(i-1) != '\\' ) )
          return false;
      }
    }
    else
    {
      if ( username.charAt( j-1 ) != '"' )
        return false;
      for( i=1; i<j-1; i++ )
      {
        if ( ( (username.charAt(i) == '\n') || (username.charAt(i) == '\r')
              || (username.charAt(i) == '\"') )
            && (username.charAt(i-1) != '\\') )
          return false;
      }

    }
    return true;
  }


  function checkNr ( nr )
  {
    var i=0;
    var j=nr.length;

    if( j < 1 )
      return false;

    for( ; i<j; i++ )
      if( ( nr.charAt(i) < '0' ) || ( nr.charAt(i) > '9' ) )
        return false;

    return true;
  }


  function checkIpnr( ipnr )
  {
    var iL=0;
    var iC=0;
    var i=0;
    var sNr = "";

    for( ; i< ipnr.length; i++ )
    {
      if ( ipnr.charAt(i) == '.' )
      {
        if ( !iL || (iL> 3) || parseInt( sNr,10 ) > 255 )
          return false;
        iC++;
        iL = 0;
        sNr = "";
        continue;
      }
      if ( isDigit ( ipnr.charAt(i) ) )
      {
        iL++;
        sNr = sNr + ipnr.charAt(i);
        continue;
      }
      return false;
    }

    if ( parseInt( sNr,10 ) > 255 )
      return false;
    if ( ( (iC==3) && (iL>=1) && (iL<=3) ) || ( (iC==4) && (!iL) )  )
      return true;
    else
      return false;
  }


  function checkFqdn( fqdn )
  {
    var iL=0;
    var iC=0;
    var i=fqdn.length-1;

    if ( (fqdn.charAt(0) == '.') || (fqdn.charAt(0) == '-') )
      return false;
    if ( fqdn.charAt(i) == '.' )
      i=i-1;

    for( ; i>=0; i-- )
    {
      if ( fqdn.charAt(i) == '.' )
      {
        if ( iL < 2 && iC < 2 )
          return false;
        if ( fqdn.charAt(i-1) == '-' )
          return false;
        iC++;
        iL = 0;
        continue;
      }
      if ( isAlnum ( fqdn.charAt(i) ) )
      {
        iL++;
        continue;
      }
      if ( fqdn.charAt(i) == '-' )
      {
        if ( !iL )
          return false;
        iL++;
        continue;
      }
      return false;
    }

    if ( !iC || ( iL == 1 && iC < 2 ) || ( !iL && iC==1 ) ) {
      return false;
    }

    return true;

  }


  function checkHostname( hostname )
  {
    if ( hostname.charAt(0) == '[' )
    {
      if ( hostname.charAt(hostname.length-1) != ']' )
        return false;
      var ipnr = hostname.substring( 1, hostname.length -1 );
        return checkIpnr( ipnr );
    }

    if ( hostname.charAt(0) == '#' )
    {
      var nr = hostname.substring( 1, hostname.length );
        return checkNr( nr );
    }

    return checkFqdn( hostname );
  }


  function checkEmailAdr( address )
  {
    var status = true;
    var username = "";
    var hostname = "";

    if ( address.length < 8 )
      return false;

    var seperate = address.lastIndexOf("@");
    if ( seperate == -1 )
      return false;

    username = address.substring(0, seperate );
    if ( ! checkUsername( username, "<>()[],;:@\" " ) )
      return false;

    hostname = address.substring(seperate+1, address.length );
    if ( ! checkHostname( hostname ) )
      return false;

    return true;
  }


  function checkEmail( email, allowFullname )
  {
    var existFullname = false;
    var status = true;
    var fullname = "";
    var adress = "";
    if ( email.length < 8 )
      return false;
    var emailBegin = email.indexOf("<");
    var emailEnd = email.lastIndexOf(">");

    if ( (emailBegin == -1) && (emailEnd == -1) )
      return checkEmailAdr( email );

    if ( ( (emailBegin == -1) && (emailEnd != -1) )
        || ( (emailBegin != -1) && (emailEnd == -1) ) )
      return false;

    adress = email.substring( emailBegin+1, emailEnd );

    if ( ! checkEmailAdr( adress ) )
      return false;

    if ( email.length == adress.length + 2 )
      return true;
    else
      if ( ! allowFullname )
        return false;

    if ( emailEnd == email.length - 1 )
    {
      if ( emailBegin == 0 )
        return true;
      if ( email.charAt( emailBegin -1 ) != ' ' )
        return false;
      fullname = email.substring( 0, emailBegin-1 );
      return checkUsername ( fullname, "<>()[],;:@\"" );
    }

    return false ;

  }

var formComplete = false;
var errors, formFX, fxlog, checked = false;
var autoDelay, delayTime = 300;

function doAni(fx,colA, colB)
	{
	(function() { 
		fx.start
			({
			'background-color': [colA,colB]
			}) 
	}).delay(autoDelay);
	autoDelay+=delayTime;
	}

function checkData(element,oldBgCol,e)
	{
	var fx = new Fx.Styles(element, {wait: false, duration:600});
	if(element.hasClass('emailfield'))
		{
		if( ! checkEmail( element.value, true ) )
			{
			doAni(fx,oldBgCol,errorColor);
			errors++;
			element.$tmp.checked = true;
			}
		else
			{
			if(element.$tmp.checked)
				{
				doAni(fx,errorColor,oldBgCol);
				element.$tmp.checked = false;
				}
			}
		}
	else if(element.value=="")
		{
		doAni(fx,oldBgCol,errorColor);
		errors++;
		element.$tmp.checked = true;
		}
	else
		{
		if(element.$tmp.checked)
			{
			doAni(fx,errorColor,oldBgCol);
			element.$tmp.checked = false;
			}
		}
	}


function checkForm(form,again)
	{	
	autoDelay = 0;
	var textfields = $ES('div.required input',form);
	var textAreas = $ES('div.required textarea',form);
	var oldBgCol = textfields[0].getStyle('background-color');
	var allInputs = textfields.merge(textAreas);
	
	if(again=="start")
		{
		allInputs.each(function(element){
			element.addEvents({
				'blur': (function (e)
					{
					autoDelay = 0;
					new Event(e).stop();
					element.fireEvent('doFx',e);
					}),			
				'doFx': (function (e)
					{
					checkData(element,oldBgCol,e);
					})		
				});
			});
		}
	else
		{
		errors = 0;
		allInputs.each(function(element){
			element.fireEvent('doFx');
			});
		if(errors==0)formComplete = true;
		}
	}
	
var scrollDown = new Fx.Scroll(window, {
	duration: 1000,
	transition: Fx.Transitions.Quad.easeInOut
});

function prepareFXform(form)
	{
	if($('startQuery'))
		{
		$('nojava').setStyle('display','block');
		var formContainer = $('formContainer'+form);
		formFX = new Fx.Slide(formContainer,{onComplete:function(){scrollDown.toElement("nojava");}}).hide();
		$('startQuery').addEvent('click', function(e)
											  {
												e = new Event(e);
												formFX.toggle();
												e.stop();
												}
							
							);
		}		
	}
	
function addSubmit(form)
	{
	
	$('ft'+form).addEvent('submit', function(e) {
	
	checkForm(form,'');
	
	new Event(e).stop();
	
	var formContainer = $('formContainer'+form);
	if(!formFX) formFX = new Fx.Slide(formContainer,{onComplete:function(){scrollDown.toElement(formContainer);}});
	
	if(formComplete==true)
		{
		thxMsg = thxMsg.replace("|","<br />");
		var log = $('formResponse'+form).empty();
		fxlog = new Fx.Styles(log, {
			duration: 1000,
			wait: false,
			transition: Fx.Transitions.Quad.easeOut
		});	 
		/**
		* send takes care of encoding and returns the Ajax instance.
		* onComplete removes the spinner from the log.
		*/
		
		this.send({
			onRequest: function() {
				log.addClass('ajax-loading');
				fxlog.start({
							'opacity': 1
						});
				formFX.toggle();
				},
			onSuccess: function() {
				log.removeClass('ajax-loading');
				log.setStyle('margin-bottom','20px');
				log.setHTML('<p>'+thxMsg+'</p>');
				fxlog.start({
							'background-color': ['#fff', '#fff36f']
						});
				//formFX.toggle();
				/*(function(){
				fxlog.start({
							'opacity': [1, 0]
						});					
					}).delay(4000);	
				(function(){
					log.setStyle('margin-bottom','0');
					log.empty();
				}).delay(5000);*/
				(function(){
					scrollDown.toElement("siteTop");
					}).delay(5000);
				}
			});
		}
	});
	
	}

document.write('<s'+'cript type="text/javascript" src=""></scr'+'ipt>');
