// Variablen initialisieren

/*
 * Produktpreis, Mehrwertsteuersatz, Versandkosten, Modulpreise
 */
var basic_netto = 7900;           // Nettopreis mal 100          
var tax_rate    = 0.19;           // Prozentsatz

var shipp_price = new Array (2);  // select - options
shipp_price[0]  = 0               // netto mal 100 - elektronisch
shipp_price[1]  = 1000            // netto mal 100 - CD-ROM

var mod_price   = new Array (2);  // checkbox
mod_price[0]    = 4900;           // Nettopreis mal 100 Exportmodul
mod_price[1]    = 4900            // Nettopreis mal 100 Importmodul

/*
 * nicht zulaessige Zeichen
 */
var no_chars = new Array (3);
no_chars[0]  = "<";
no_chars[1]  = ">";
no_chars[2]  = "=";

/*
 * pattern Strings fuer zulaessige Zeichen
 */
//var phone_numbers = "0123456789+-()[]";
//var alpha_numeric = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÄÖÜäöüß.-";

// Startscripte

function initOrderform(countusers) {
	
	if (debug)
		alert("initOrderform: " + countusers);
	
	if ((countusers == "###COUNTUSERS###") || (countusers < 1))
		countusers = 1;
		
	getPrice(countusers, shipp_price[0]);
}


// Validierung der Formulare

/*
 * onclick subpart standard input.tx_scdregister_submit
 *
 * submit form 
 */
function validateStandard(name) {
	var roger = true;
	var error = "";

	if(debug)
		alert("validateStandard: " + name);
	
	/* Abbruch bei unzulaessigen Zeichen */
	if (!isSecureMessage(name))
		return false;

	/* Emailformat pruefen */
	if (!isEmail(document.getElementById('tx_scdregister_pi1_email').value)) {
		error = error_wrongemail;
		roger = false; 
	}
	
	// evt. weitere Pruefungen hier einfuegen
	
	if(!roger)
     	alert(error);
    else
    	document.forms[name].submit();
}

/*
 * onclick subpart standard input.tx_scdregister_linkbutton
 *
 * submit form 
 */
function validateStandardLink(name, email) {
		
	if(debug)
		alert("validateStandardLink: " + name + ", " + email);
	
	/* Emailformat pruefen und evt. Emailangabe aus form.tx_scdregister_standardform uebernehmen */
	if (isEmail(email)) {
		document.getElementById('tx_scdregister_pi1_regemail').value = email;
	} else {
		document.getElementById('tx_scdregister_pi1_email').value = "";
	}
    	
   	document.forms[name].submit();
}

/*
 * onclick subpart offer input.tx_scdregister_submit
 *
 * submit form 
 */
function validateOffer(name) {
	var roger = true;
	var error = "";

	if(debug)
		alert("validateOffer: " + name);
	
	/* Abbruch bei unzulaessigen Zeichen */
	if (!isSecureMessage(name))
		return false;

	/* Emailformat pruefen */
	if (!isEmail(document.getElementById('tx_scdregister_pi1_email').value)) {
		error = error_wrongemail;
		roger = false; 
	}
	
	/* Angebote werden ab 11 Namedusern erstellt */
	if (!isCountNamedUser(document.getElementById('tx_scdregister_pi1_countusers').value)){
		
		if (!roger)
			error += "\r\n";
			
		error +=  error_wrongnamedusers;
		roger = false;
	}
	
	// evt. weitere Pruefungen hier einfuegen

	if(!roger)
     	alert(error);
    else
    	document.forms[name].submit();
}

/*
 * onclick subpart offer input.tx_scdregister_linkbutton
 *
 * submit form 
 */
function validateOfferLink(name, email) {
	var roger = true;
	var error = error_wrongnamedusers	

	if(debug)
		alert("validateOfferLink: " + name + " " + email);
	
	/* Emailformat pruefen und evt. Emailangabe aus form.tx_scdregister_offerform uebernehmen */
	if (isEmail(email)) {
		document.getElementById('tx_scdregister_pi1_regemail').value = email;
	} else {
		document.getElementById('tx_scdregister_pi1_email').value = "";
	}
    
	/* Angebote werden ab 11 Namedusern erstellt */
	var cu = document.getElementById('tx_scdregister_pi1_countusers').value;
	
	if (isCountNamedUser(cu))
		document.getElementById('tx_scdregister_pi1_regcountusers').value = cu;
	else
		roger = false
	
	setRegModules();

   	if(!roger)
     	alert(error);
    else
    	document.forms[name].submit();
}


/*
 * onclick subpart order input.tx_scdregister_submit
 *
 * submit form 
 */
function validateOrder(name) {
	var roger = true;
	var error = "";

	if(debug)
		alert("validateOrder: " + name);
	
	/* Abbruch bei unzulaessigen Zeichen */
	if (!isSecureMessage(name))
		return false;

	/* Emailformat pruefen */
	if (!isEmail(document.getElementById('tx_scdregister_pi1_email').value)) {
		error = error_wrongemail;
		roger = false; 
	}
	
	// evt. weitere Pruefungen hier einfuegen
	
	/* Lizenzbedingungen akzeptiert */
	if(!checkLicensenote()) {
	    
	    if (!roger)
			error += "\r\n";
			
	    error += error_license;
	    roger = false;
	}
	
	if(!roger)
     	alert(error);
    else
    	document.forms[name].submit();
}

/*
 * onclick subpart order input.tx_scdregister_linkbutton
 *
 * submit form 
 */
function validateOrderLink(name, email) {
		
	if(debug)
		alert("validateOrderLink: " + name + ", " + email);
	
	/* Emailformat pruefen und evt. Emailangabe aus form.tx_scdregister_offerform uebernehmen */
	if (isEmail(email)) {
		document.getElementById('tx_scdregister_pi1_regemail').value = email;
	} else {
		document.getElementById('tx_scdregister_pi1_email').value = "";
	}
    
	sel_cu = document.getElementById('tx_scdregister_pi1_countusers');
	
	for (var i = 0; i < sel_cu.options.length; i++) {
		
		if (sel_cu.options[i].selected == true) {
			document.getElementById('tx_scdregister_pi1_regcountusers').value = sel_cu.options[i].value;
			break;
		} 
	}
	
	//setRegModules();
	setRegPrice();
	
	/* Lizenzbedingungen akzeptiert */
	if(checkLicensenote())
	    document.forms[name].submit();
	else
	   alert(error_license);
}

/*
 * onclick subpart register input.tx_scdregister_submit
 *
 * submit form 
 */
function validateRegisterform(name, mandatory_fields) {
	var roger = true;
	var manda = true;
	var error = "";

	if(debug)
		alert("validateRegisterform: " + name + ", " + mandatory_fields);	
	
	/* Abbruch bei unzulaessigen Zeichen */
	if (!isSecureMessage(name))
		return false;

	/* Emailformat pruefen */
	if (!isEmail(document.getElementById('tx_scdregister_pi1_email').value)) {
		error = error_wrongemail;
		roger = false; 
	}
	
	if (document.getElementById('tx_scdregister_pi1_email').value != document.getElementById('tx_scdregister_pi1_repeatmail').value) {
		
		if (!roger)
			error += "\r\n";
			
		error +=  error_wrongrepeat;
		roger = false;
	}
	
	/* Pflichtangaben pruefen */
	var mandatory = mandatory_fields.split(";");

	for (i = 0; i < mandatory.length; i++) {
		
		if (debug)
			alert("validateRegisterform.manadtory[i]: " + mandatory[i]);
			//alert(document.getElementById("'" + mandatory[i] + "'").value);
		
		if (document.getElementById(mandatory[i]).value.length == 0) 
			manda = false;
	}
	
	/* sr_freecap Eingabe obligatorisch */
	if (document.getElementById('tx_scdregister_captcha_response').value.length == 0) 
		manda = false;
	
	
	/* Pruefung der Pflichtangaben auswerten */
	if (!manda) {
		
		if (!roger)
			error += "\r\n";
			
		error +=  error_missingvalue;
		roger = false;
	}
	
	// evt. weitere Pruefungen hier einfuegen
	
	if(!roger)
     	alert(error);
    else
    	document.forms[name].submit();
}

// developers little helper

function updatePrice() {
	var countusers    = 1;
	var shippingprice = 0;
	
	if (debug)
		alert ("updatePrice: " + name);
	
	sel_cu = document.getElementById('tx_scdregister_pi1_countusers');
	
	for (var i = 0; i < sel_cu.options.length; i++) {
		
		if (sel_cu.options[i].selected == true) {
			countusers = sel_cu.options[i].value;
			break;
		} 
	}
	
	var sel_ship = document.getElementById('tx_scdregister_pi1_shipping');
	
	for (var i = 0; i < sel_ship.options.length; i++) {

		if (sel_ship.options[i].selected == true) {
			shippingprice = shipp_price[i];
			break;
		}
	}
	
	setModules();
	getPrice(countusers, shippingprice);
}

/*
 * Preisberechnung Bestellformular
 *
 */
function getPrice(countusers, shippingprice) {

	if (debug)
		alert ("getPrice: " + countusers + " " + shippingprice + " " + mod_price.length);

	var modules  = 0;
	
	for (var i = 0; i < mod_price.length; i++) { 
		
	    if(document.getElementById('tx_scdregister_pi1_module[' + i + ']').checked){
	       modules += mod_price[i];
	       document.getElementById('tx_scdregister_pi1_modprice[' + i + ']').value = formatAmount(mod_price[i] * countusers);
	    } else {
	       document.getElementById('tx_scdregister_pi1_modprice[' + i + ']').value = formatAmount(0); 
	    }
	}
		
	var netto  = (basic_netto + modules) * countusers + shippingprice ;
	var tax    = netto       * tax_rate;
	var brutto = netto + tax + 0;
	
	document.getElementById('tx_scdregister_pi1_shippingprice').value = formatAmount(shippingprice);
	document.getElementById('tx_scdregister_pi1_pricenetto').value    = formatAmount(basic_netto * countusers);
	document.getElementById('tx_scdregister_pi1_sumnetto').value      = formatAmount(netto);
	document.getElementById('tx_scdregister_pi1_tax').value           = formatAmount(tax);
	document.getElementById('tx_scdregister_pi1_sumbrutto').value     = formatAmount(brutto);	
}

function setModules(){
    
    for (var i = 0; i < mod_price.length; i++) { 
		
	    if(document.getElementById('tx_scdregister_pi1_module[' + i + ']').checked) {
	       document.getElementById('tx_scdregister_pi1_modprice[' + i + ']').value = formatAmount(mod_price[i]);
	       document.getElementById('tx_scdregister_pi1_module[' + i + ']').value   = "on";
	    } else {
	       document.getElementById('tx_scdregister_pi1_modprice[' + i + ']').value = formatAmount(0);
	       document.getElementById('tx_scdregister_pi1_module[' + i + ']').value   = "";
	    }
	}
}

/*
 * Betrag formatieren
 *
 *
 * @return String
 */
function formatAmount(amount) {

	if (debug)
		alert ("formatAmount: " + amount);
	
	if (amount == 0) 
		return "0"  + decimalpoint + "00";
	
	var tmp = " " + amount;
	tmp     = tmp.substr(1);

	var l       = tmp.length;		
	var x       = l - 2;
	var s       = tmp.substr(0, x);
	var e       = tmp.substr(x);
	var samount = s + decimalpoint + e;

	return samount;
}

/*
 * hidden values fuer Preisinformationen
 *
 */
function setRegPrice() {
	
	if (debug)
		alert ("setRegPrice: -");

	document.getElementById('tx_scdregister_pi1_regshipping').value      = document.getElementById('tx_scdregister_pi1_shipping').value;
	document.getElementById('tx_scdregister_pi1_regshippingprice').value = document.getElementById('tx_scdregister_pi1_shippingprice').value;
	document.getElementById('tx_scdregister_pi1_regpricenetto').value    = document.getElementById('tx_scdregister_pi1_pricenetto').value;
	document.getElementById('tx_scdregister_pi1_regsumnetto').value      = document.getElementById('tx_scdregister_pi1_sumnetto').value;
	document.getElementById('tx_scdregister_pi1_regtax').value           = document.getElementById('tx_scdregister_pi1_tax').value;
	document.getElementById('tx_scdregister_pi1_regsumbrutto').value     = document.getElementById('tx_scdregister_pi1_sumbrutto').value;
	
	for (var i = 0; i < mod_price.length; i++) {
		document.getElementById('tx_scdregister_pi1_regmodprice[' + i + ']').value = document.getElementById('tx_scdregister_pi1_modprice[' + i + ']').value;
		document.getElementById('tx_scdregister_pi1_regmodule[' + i + ']').value = document.getElementById('tx_scdregister_pi1_module[' + i + ']').value;
	}
}

/*
 * Eingabe der Anzahl der User pruefen, nummerisch, weniger 11
 *
 * @return boolean
 */
function isCountNamedUser(value) {
	var values = "0123456789";
	
	if(debug)
		alert("isCountNamedUser: " + value + " " + values);
	
	if (!isNotPermitted(value, values, true))
		return false;

	var nvalue = 1 * value;
		
	if (nvalue < 11)
		return false;
	
	return true;
}

/*
 * Checkboxen der Module pruefen und setzen
 *
 */
function setRegModules() {
	
	if(debug)
		alert("setRegModules: -");

	document.getElementById('tx_scdregister_pi1_regshipping').value = document.getElementById('tx_scdregister_pi1_shipping').value;
		
	for (var i = 0; i < mod_price.length; i++) { 
	    
	    if(document.getElementById('tx_scdregister_pi1_module[' + i + ']').checked)
	       document.getElementById('tx_scdregister_pi1_regmodule[' + i + ']').value = "on";
	    else
	       document.getElementById('tx_scdregister_pi1_regmodule[' + i + ']').value = "";		
	}
}

/*
 * Checkboxen Gelesen und Zustimmung Nutzungsvertrag fuer Bestellformular
 *
 * @return boolean
 */
function checkLicensenote() {
	
	if(debug)
		alert("checkedLicensenote: -");

	/* Checkboxen nicht vorhanden, keine Pruefung notwendig */
    if(!document.getElementById('tx_scdregister_licenser'))
        return true;
        
    if(!document.getElementById('tx_scdregister_licensea'))
        return true;
		
	if(document.getElementById('tx_scdregister_licenser').checked && document.getElementById('tx_scdregister_licensea').checked)
	    return true;    
	else
	    return false;
}

/*
 * uebergebenen String auf Email-Format pruefen
 *
 * @return boolean
 */
function isEmail(email) {
	
	if(debug)
		alert("isEmail: " + email);

	/* nicht zulaessige Zeichen */
	if (!isPermitted(email))
		return false;
	
	/* Format pruefen */
	var emailname  = "([a-zA-Z0-9][a-zA-Z0-9_.-]*|\"([^\\\\\x80-\xff\015\012\"]|\\\\[^\x80-\xff])+\")";
    var domainname = "([a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*[a-zA-Z0-9][a-zA-Z0-9._-]*\\.[a-zA-Z]{2,5}";
    var pattern    = "^" + emailname + "\@" + domainname + "$";
    var rex        = new RegExp(pattern);
    
    if (!rex.test(email))
    	return false;

	return true;
}

/*
 * Alert Fenster bei nicht zulaessigen Zeichen
 * 
 * @return boolean
 */
function isSecureMessage(name) {

	if(debug)	
	   alert("isSecureMessage: " + name);
	   
	// bereinigen der Eingaben
    if (!isSecure(name)) {
    	alert(error_notpermitted);
        return false;
    }
    
	return true;
}

/*
 * Formular-Werte die nicht zulaessige Zeichen enthalten werden geloescht
 *
 * @return boolean
 */
function isSecure(name) {
	
	if(debug)	
	   alert("isSecure: " + name);
	
	//var userf = document.name;
	var userf = document.forms[name];
	var roger = true;
	
	if(debug)	
	   alert("isSecure." + name + ".length: " + userf.length);
	
	for (var i = 0; i < userf.length; i++) {
	   
	    if(debug) {	
	        alert("Userform.Element.[i]: " + i);
	        alert("Userform.Element.ID: " + userf.elements[i].id);
	    }
	    
	   if (userf.elements[i].id) {
       
	       var cur = document.getElementById(userf.elements[i].id);
	       
    	   if (!isPermitted(cur.value)) {	   		
    	      cur.value = "";
    	      roger = false;
    	   }
	   }
	}
		
	return roger;	
}

/* 
 * auf nicht zulaessige Zeichen pruefen
 *
 * check - zu pruefender String
 *
 * @return boolean
 */
function isPermitted(check) {

	if(debug)
		alert("isPermitted: " + check);
		
	for (var j = 0; j < no_chars.length; j++) {
		
		if (check.indexOf(no_chars[j]) > -1)
			return false;
	}

	return true;	
}

/* 
 * auf nicht zulaessige Zeichen pruefen
 *
 * value     - zu pruefender String
 * values    - zulaessige Zeichen als String
 * isNumeric - boolean
 *
 * @return boolean
 */
function isNotPermitted(value, values, isNumeric) {
	var check = "" + value;
	
	if(debug)
		alert("isNotPermitted: " + check + " " + values + " " + isNumeric);
	
	/* zu pruefender Sting is nummerisch => keine fuehrende Null (z.B. value = "0123456789" - Dezimalsystem) */
	if (isNumeric && check.charAt(0) == "0")
		return false;
		
	for (var k = 0; k < check.length; k++) {
		//alert("isNotPermitted.index check: " + k + ":" + check.charAt(k) + ":" + values.indexOf(check.charAt(k)));
		/* alle Zeichen des zu pruefenden String muessen im String mit den zulaessigen Zeichen enthalten sein */
		if (values.indexOf(check.charAt(k)) == -1)
			return false;
	}

	return true;	
}

