  <!--
//============================================================================
// Check auf zuviele Tickets
    var MAXTICKET = 20;
    var submitcount=0;   // keine doppelte Uebertragung
//============================================================================
    function reset() 
    {
      var ele = document.order.elements;
      ele.Bezahlung.value = "t";  // Standard: Ueberweisung
      ele.Name.value="";
      ele.EMail.value="";
    }
//============================================================================
// Diese Funktion traegt nur die Daten in das Formular ein

    
    function Bestell(SysID, ClientID, Event, EventNumber, ShowNumber, ShowDate, ShowTime, BlockNo, Block, PG, Reduction, Preis, Currency, MaxTickets)
    {
     var ele = document.order.elements;
     var aktdate = new Date();
     var showtag;
     var showmon;
     var showyear;
     var showtmp;
//                                                            vv  Tage Versandgeb. Berechnung....  
     var versand = new Date(aktdate.getTime() + 1000*60*60*24*10);
     var showdatum = new Date(ShowDate);
 
     do
	 {
	   Check = prompt("Bitte geben Sie die gewünschte Anzahl der Karten ein","2");
       if (isNaN(Check) == true) 
	     return;
     } while ((Number(Check) > MaxTickets) || (Number(Check) < 0))
     ele.Tickets.value = Number(Check);
     ele.SysID.value = SysID;
     ele.ClientID.value = ClientID;
     ele.EventName.value = Event;
     ele.EventNumber.value = EventNumber;
     ele.ShowNumber.value = ShowNumber;
     ele.ShowDate.value = ShowDate;
     showtmp = ShowDate;
     showyear = showtmp.substr(6,4);
     showmon = showtmp.substr(3,2);
     showtag = showtmp.substr(0,2);
     showdatum = new Date(showyear,eval(showmon-1),showtag);
     ele.ShowTime.value = ShowTime;
     ele.Block.value = Block;
     ele.BlockNumber.value = BlockNo;
     ele.PriceGroup.value = PG;
     ele.Reduction.value = Reduction;
     ele.TicketPrice.value = Preis;
     ele.Currency.value = Currency;
     ele.MaxTickets.value = MaxTickets;
     if (versand > showdatum)
     {
         ele.Price.value = eval(ele.Tickets.value * Preis + 7.50) + " "+Currency;
     }
     else
     {
         ele.Price.value = eval(ele.Tickets.value * Preis) + " "+Currency;
     }
 //    ele.Name.value = aktdate.getDate() + aktdate.getMonth() + aktdate.getYear();
     ele.Name.value = aktdate.getDate();
//     ele.Strasse.value = showyear + showmon + showtag;
     ele.Strasse.value = showdatum.getDate() + showdatum.getMonth() + showdatum.getYear();
     ele.Currency.value = Currency;
     ele.Name.focus();
     location.href="#STEP3";
    }
//============================================================================
    function warnMsg()
    {
       //  alert("Field protection");
       document.order.elements.Name.focus();
       return;
    }
//============================================================================
     function calcPrice()
     {
       var ele = document.order.elements;
       if (Number(ele.MaxTickets.value) < Number(ele.Tickets.value))
       {
         ele.Tickets.value = ele.MaxTickets.value;
       }
       if (true)
       {
            ele.Price.value = eval(ele.Tickets.value * ele.TicketPrice.value + 7.50) + " "+ele.Currency.value;
       }
     }

//============================================================================
    function isaPosNum(s) 
    {
      return (parseInt(s) > 0)
    }
//============================================================================
// select_item Constructor, used to retrive the selected item from the dropdown 
// control on a form.
// name: 		form element name
// value:  		the value of the options that was selected
// return value:	selected item
//============================================================================
   function select_item(name, value) 
   {  
     this.name = name;
     this.value = value;
   }
//============================================================================

    function get_selection_value(select_object) 
    {
      contents = new select_item();
      for (var i=0;i<select_object.options.length;i++)
      {
        if(select_object.options[i].selected == true) 
        {
          contents.name = select_object.options[i].text;
          contents.value = select_object.options[i].value;
        }      
      }
      return(contents.value)
    } 

//============================================================================
    function get_selection_name(select_object) 
    {
      contents = new select_item();
      for (var i=0;i<select_object.options.length;i++)
      {
        if(select_object.options[i].selected == true) 
        {
          contents.name = select_object.options[i].text;
          contents.value = select_object.options[i].value;
        }      
      }
      return(contents.name)
    } 
//============================================================================
    function CheckForm()
	{
      var ele = document.order.elements;
      if (!(isaPosNum(ele.EventNumber.value)))
	  {
	    alert("Die Veranstaltungsnummer wurde nicht übernommen. Bitte noch einmal die Karten auswählen!");
        return (false);	
      }
	  if (!(isaPosNum(ele.ShowNumber.value)))
	  {
	    alert("Die Vorstellungsnummer wurde nicht übernommen. Bitte noch einmal die Karten auswählen!");
        return (false);	
      }
	  if ("" == ele.Name.value)
	  {
	    alert("Bitte geben Sie Ihren Namen ein.");
        ele.Name.focus();
        return (false);	
      }
	  if ("" == ele.Strasse.value)
	  {
	    alert("Bitte geben Sie Ihre Strasse ein.");
        ele.Strasse.focus();
        return (false);	
      }
	  if ("" == ele.PLZ.value)
	  {
	    alert("Bitte geben Sie Ihre PLZ ein.");
        ele.PLZ.focus();
        return (false);	
      }
	  if ("" == ele.Ort.value)
	  {
	    alert("Bitte geben Sie Ihren Ort ein.");
        ele.Ort.focus();
        return (false);	
      }
	  if ("" == ele.EMail.value)
	  {
	    alert("Bitte geben Sie Ihre EMail-Adresse ein.");
        ele.EMail.focus();
        return (false);	
      }
      if ((ele.EMail.value.indexOf ("@") == -1) || (ele.EMail.value.indexOf (".") == -1) || (ele.EMail.value.indexOf(" ")!=-1) || (ele.EMail.value.length<6)) 
      {
	    alert("EMail-Adresse muß im Format user@host.com sein");
        ele.EMail.focus();
        return (false);	
      } 
      
      if (parseInt(ele.Tickets.value)>MAXTICKET)
      {
	    alert("Maximale Anzahl Karten ist "+MAXTICKET+"!");
        ele.Tickets.focus();
        return (false);
      }
      if (0 == parseInt(ele.Tickets.value))
      {
	    alert("Mindestens 1 Karte muss gebucht werden!");
        ele.Tickets.focus();
        return (false);
      }
      if ("c" == ele.Bezahlung.value)
      {
        currCard = get_selection_value(document.order.cardType);
        return validateCard(ele.cardNumber.value,currCard,ele.cardMonth.value,ele.cardYear.value);
      }
      if ("l" == ele.Bezahlung.value)
      {
	    if ("" == ele.bankName.value)
	    {
	      alert("Bitte geben Sie den Banknamen ein.");
          ele.bankName.focus();
          return (false);	
        }
	    if (!(isaPosNum(ele.bankNumber.value)))
	    {
	      alert("Bitte geben Sie die BLZ ein.");
          ele.bankNumber.focus();
          return (false);	
        }
	    if (ele.bankNumber.value.length != 8)
	    {
	      alert("BLZ muss aus 8-stellig sein.");
          ele.bankNumber.focus();
          return (false);	
        }
	    if (!(isaPosNum(ele.bankAccount.value)))
	    {
	      alert("Bitte geben Sie die Kontonummer ein.");
          ele.bankAccount.focus();
          return (false);	
        }

      }
      if (submitcount == 0)
      {
        submitcount++;
        return true;
      }
      else 
      {
        alert("This form has already been submitted.  Thanks!");
        return false;
      }
    }

//============================================================================
/*
There are three functions in this set for credit card validation.
The main function is:

validateCard(cardNumber,cardType,cardMonth,cardYear)
	parameters:
		all paramaters are string values.
		Month & Year come from the select input fields in the form, so they are defined.
		cardType can be:
			'a' for American Express
			'd' for Diners
			'm' for MasterCard
			'v' for Visa
			'k' for DanksCard
	description:
		This function will check string length, valid characters, specific credit card prefixes and test
		the Mod 10 (LUHN Formula) for validating possible credit card numbers.  This function can only
		authorize that the given card data is potentially valid.  You would still need to run actual
		card validation routines to verify the actual account.
	returns:
		this function returns true if the card number could be valid for the card type and expiration date.
		false otherwise.	

supporting functions:

mod10( cardNumber )
	parameters:
		this function takes the text string card number and runs the Mod 10 formula on its respective digits.
	description:
		Mod 10 is the check digit formula for the supported cards these functions attempt to validate.
	returns:
		this function returns true if the number passes the check digit test.
		false otherwise.

expired( cardMonth, cardYear )
	parameters:
		this function takes the text string values given by the html form.
	description:
		this function basically will check to make sure todays date is less than the expiration date the user inputs.
		this function is not locked into using 2 digit dates.
	returns:
		this fucntion returns true if the card is expired.
		false otherwise.

*/

function mod10( cardNumber ) { // LUHN Formula for validation of credit card numbers.
	var ar = new Array( cardNumber.length );
	var i = 0,sum = 0;
	for( i = 0; i < cardNumber.length; ++i ) {
		ar[i] = parseInt(cardNumber.charAt(i));
	}
	for( i = ar.length -2; i >= 0; i-=2 ) {  // you have to start from the right, and work back.
		ar[i] *= 2;							 // every second digit starting with the right most (check digit)
		if( ar[i] > 9 ) ar[i]-=9;			 // will be doubled, and summed with the skipped digits.
	}										 // if the double digit is > 9, add those individual digits together 
	for( i = 0; i < ar.length; ++i ) {
		sum += ar[i];						 // if the sum is divisible by 10 mod10 succeeds
	}
	return (((sum%10)==0)?true:false);	  	
}

//============================================================================
function expired( month, year ) 
{
    if (year <30)
      year += 2000;
    else
      year += 1900;
	var now = new Date();							// this function is designed to be Y2K compliant.
	var expiresIn = new Date(year,month,0,0,0);		// create an expired on date object with valid thru expiration date
	expiresIn.setMonth(expiresIn.getMonth()+1);		// adjust the month, to first day, hour, minute & second of expired month
	if( now.getTime() < expiresIn.getTime() ) 
      return false;
	return true;									// then we get the miliseconds, and do a long integer comparison
}

//============================================================================
function validateCard(cardNumber, cardType, cardMonth, cardYear) 
{
	if( cardNumber.length == 0 ) {						//most of these checks are self explanitory
		alert("Kreditkartennummer ist ungültig.");
		return false;				
	}
	for( var i = 0; i < cardNumber.length; ++i ) {		// make sure the number is all digits.. (by design)
		var c = cardNumber.charAt(i);
		if( c < '0' || c > '9' ) {
			alert("Bitte eine gültige Kreditkartennummer (nur Nummern) eingeben.");
			return false;
		}
	}
	var length = cardNumber.length;			//perform card specific length and prefix tests
	switch( cardType ) {
		case 'n':
           alert("Bitte eine Kreditkarte auswählen.");
           return;
           break;
		case 'a':
			if( length != 15 ) {
				alert("Bitte eine gültige AmericanExpress Kreditkartennummer eingeben.");
				return;
			}
			var prefix = parseInt( cardNumber.substring(0,2));
			if( prefix != 34 && prefix != 37 ) {
				alert("Bitte eine gültige AmericanExpress Kreditkartennummer eingeben.");
				return;
			}
			break;
		case 'd':
			if( length != 14 ) {
				alert("Bitte eine gültige Diners Kreditkartennummer eingeben.");
				return;
			}
			break;
		case 'm':
			if( length != 16 ) {
				alert("Bitte eine gültige EuroCard/MasterCard Kreditkartennummer eingeben.");
				return;
			}
			var prefix = parseInt( cardNumber.substring(0,2));
			if( prefix < 51 || prefix > 55) {
				alert("Bitte eine gültige EuroCard/MasterCard Kreditkartennummer eingeben.");
				return;
			}
			break;
		case 'v':
			if( length != 16 && length != 13 ) {
				alert("Bitte eine gültige Visa Kreditkartennummer eingeben.");
				return;
			}
			var prefix = parseInt( cardNumber.substring(0,1));
			if( prefix != 4 ) {
				alert("Bitte eine gültige Visa Kreditkartennummer eingeben.");
				return;
			}
			break;
		case 'k':
			if( length != 16 ) {
				alert("Bitte eine gültige Dankort Kreditkartennummer eingeben.");
				return;
			}
			var prefix = parseInt( cardNumber.substring(0,2));
			if( prefix < 51 || prefix > 55) {
				alert("Bitte eine gültige Dankort Kreditkartennummer eingeben.");
				return;
			}
			break;
	}
	if( !mod10( cardNumber ) ) {                             		// run the check digit algorithm
		alert("Bitte eine gültige Kreditkartennummer eingeben.");
		return false;
	}
	if( expired( cardMonth, cardYear ) ) {							// check if entered date is already expired.
		alert("Die Kreditkarte ist nicht mehr gültig.");
		return false;
	}
	
	return true; // at this point card has not been proven to be invalid
  }
//============================================================================
  function useCredcard()
  {
      var ele = document.order.elements;
      ele.Bezahlung.value = "c";
  }
//============================================================================
  function useScheck()
  {
      var ele = document.order.elements;
      ele.Bezahlung.value = "s";
  }
//============================================================================
  function useTransfer()
  {
      var ele = document.order.elements;
      ele.Bezahlung.value = "t";
  }
//============================================================================
  function useLastschrift()
  {
      var ele = document.order.elements;
      ele.Bezahlung.value = "l";
  }
//============================================================================
  //-->
