/*
Javascript-Bibliothek für www.LexisNexis.de

Änderungen:
 - 16.09.03: Neue Funktion chkfrm zum Überprüfen von Formulardaten

*/

/* Warenkorb: Eingabe-Überprüfung */
function wk_chkfrm(frm, reqfields) {
	for(i=0; i<frm.elements.length; i++ )
	{
		el = frm.elements[i];
		isAnzahl = el.name && el.name.substr(0, 6) == "Anzahl";
		isVPE = el.name && el.name.substr(0, 3) == "VPE";
		if( !isAnzahl && !isVPE )
			continue;
		var eingabe = parseInt(el.value);
		if( eingabe == NaN || !eingabe )
		{
			alert("Bitte geben Sie eine Zahl ein.");
			el.focus();
			return false;
			break;
		}
		// Find article nr
		artnr_start = el.name.indexOf('[');
		artnr_end = el.name.indexOf(']');
		artnr = el.name.substr(artnr_start+1, artnr_end - artnr_start -1);
		// Find minimum order count
		if( isAnzahl )
			anzfield = 'Anzahl';
		else
			anzfield = 'MinVPE';
		minanz = parseInt(frm.elements[anzfield+'['+artnr+']'].value);
		if (eingabe < minanz)
		{
			if( isAnzahl )
			{
				alert("Die Mindestbestellung für diesen Artikel beträgt "+minanz+" Stück.");
			}
			else
			{
				alert("Die Mindestbestellung für diesen Artikel beträgt "+minanz+" Verpackungseinheiten.");
			}
			el.value = minanz;
			el.focus();
			return false;
			break;
		}
	}
	return chkfrm(frm, reqfields);
}

/* Navigations-Bilder bei "Maus-Drüber" umschalten */
function toggleimg (imgname, highlight) {
	for (i=0; i<document.images.length; i++) {
		if (document.images[i].name == imgname) {
			oldsrc = document.images[i].src;
			break;
		}
	}
	newsrc = oldsrc.substring(0, oldsrc.length-5) + highlight + oldsrc.substring(oldsrc.length-4, oldsrc.length)
	document.images[i].src = newsrc;
}


/* Generelle Funktion für Popup-Fenster */
function popup (url, w, h) {
	if (!w) w = 300;
	if (!h) h = w / 4 * 3;
	var posx = Math.round((screen.width - w) / 2);
	var posy = Math.round((screen.height - h) / 2);
	// Eindeutigen Fensternamen erstellen aus Dateiname ohne Erweiterung
	var windowname = url;
	if (windowname.indexOf('?') > -1)
		windowname = windowname.substring(0, windowname.indexOf('?'));
	var filename_start = windowname.lastIndexOf('/')+1;
	windowname = windowname.substring(filename_start);
	var filename_end = windowname.indexOf('.');
	if ( filename_end > -1 )
		windowname = windowname.substring(0, filename_end);
	// Fenster öffnen...
	windowname = goodfilename(windowname);
	fenster = window.open(url, windowname, 'width='+w+',height='+h+',screenX='+posx+',screenY='+posy+',resizable=Yes,scrollbars=Yes,status=yes,dependant=yes')
	// ... und fokussieren
	fenster.focus();
	return fenster;
}


/* Fenster anzeigen zum Artikel in den Warenkorb legen */
/* nur noch für ikk-medien, bkk-medien */
function kaufen (frm) {
	var Menge = parseInt(frm.Anzahl.value);
	if (Menge < parseInt(frm.MinAnz.value) || Menge==NaN || !Menge) {
		alert("Die Mindestbestellung für dieses Produkt beträgt "+frm.MinAnz.value+" Stück.");
		frm.Anzahl.value = frm.MinAnz.value;
		frm.Anzahl.focus();
		return false;
	}
	adresse = "inwklegen.php?ArtikelNr="+frm.ArtikelNr.value+"&Anzahl="+frm.Anzahl.value+"&MinAnz="+frm.MinAnz.value+"&vb="+frm.vb.value
	popup (adresse, 400, 170);
	return false;
}


/* Fenster mit Druckversion einer Produktbeschreibung öffnen */
function produkt_ausdrucken (ArtikelNr) {
	url = "/actions/drucken?ArtikelNr="+ArtikelNr
	popup(url, 700);
	return false;
}


/* Formulardaten überprüfen, Pflichtfelder als Kommagtrennte Liste übergeben! */
function chkfrm(frm, reqfields, PasswordCheckField)
{
	var fields = reqfields.split(",");
	var ok=true, f, i, isradio, isselect, radiochecked, errorMsg="";
	for( i=0; i<fields.length; i++ )
	{
		f = frm.elements[fields[i]];
		if( !f )
		{
			continue;
		}
		radiochecked = false;

		isradio = (parseInt(f.length) > 0) && (f[0].type == 'radio'); // Radio-Button ?
		if( isradio )
		{
			for( j=0; j<f.length; j++ )
			{
				if( f[j].checked )
				{
					radiochecked = true;
					break;
				}
			}
			ok = radiochecked;
			if( !ok )
			{
				errorMsg = "Bitte wählen Sie eine Option im Feld '"+getPrettyInputName( f[0].name )+"' aus!";
				f = f[0];
				break;
			}
			continue;
		}

		isselect = f.type.toLowerCase().indexOf('select') > -1; // Dropdown ?
		if( isselect )
		{
			ok = (f.value != '')
			if( !ok )
			{
				errorMsg = "Bitte wählen Sie eine Option im Feld '"+getPrettyInputName( f.name )+"' aus!";
				break;
			}
			continue;
		}

		var ftype = f.type.toLowerCase();
		if( ftype == "text" || ftype == "password" || ftype == "textarea" )
		{ // Text-Input
			if( f.value.length == 0 )
			{
				errorMsg = "Bitte füllen Sie alle gekennzeichneten Felder aus.";
				ok = false;
				break;
			}
			if( f.name.toLowerCase().indexOf("email") > -1 )
			{
				f.value = trim(f.value);
				ok = valid_email( f.value );
				if( !ok )
				{
					errorMsg = "Die eingegebene E-Mail-Adresse\n'" + f.value + "'\nscheint syntaktisch falsch zu sein.";
					break;
				}
			}
		}

		else if( ftype == "checkbox" )
		{ // Checkbox
			if( !f.checked )
			{
				if( f.name.toLowerCase().indexOf('agb') > -1 )
				{
					errorMsg = "Sie müssen die AGBs akzeptieren.";
				}
				// Special case VPE confirmation
				else if( f.name == 'confirm_vpe' )
				{
					errorMsg = 'Bitte bestätigen Sie den Hinweis zu den Verpackungseinheiten.';
				}
				else
				{
					errorMsg = "Bitte klicken Sie das Feld '"+getPrettyInputName( f.name )+"' an.";
				}
				ok = false;
				break;
			}
		}

	}
	if( ok && PasswordCheckField )
	{
		// Validate complexity of first password. If repeated input is present, check also for sameness.
		ok = chkPassword(frm.elements[PasswordCheckField], frm.elements[PasswordCheckField+'_repeat']);
	}
	if( !ok && f )
	{
		f.focus();
	}
	if( errorMsg.length > 0 )
	{
		// Dialog mit Fehlermeldung
		alert( errorMsg );
	}
	return ok;
}


/* Syntax-Check einer Email-Adresse */
function valid_email(Email)
{
	var ok = false;                                // Ergebnis-Variable
	var len = Email.length;                        // Länge der Adresse
	var p1 = Email.indexOf("@");                   // Position des @
	var atpos = p1 > 0 && p1 < len - 3;                // @ existiert nicht am Anfang und nicht am Ende?
	var server = Email.substr(p1+1, len)
	var p2 = server.lastIndexOf(".");              // Position des . (TLD-Trenner)
	var dotpos = p2 >= 2 && p2 > server.length-6 && p2 < server.length-2;                    // . existiert an gültiger Stelle?
	var goodchars = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_+.@";    // Erlaubte Zeichen
	var chars = true;                              // Zeichen alle ok
	for (i=0; i<len; i++) {
		if (goodchars.indexOf(Email.charAt(i)) == -1) {
			chars = false;
			break;
		}
	}
	ok = atpos && chars && dotpos;
	return ok;
}


// Layer einblenden
function show_layer(id) {
	document.getElementById(id).style.display = "block";
}

// Layer ausblenden
function hide_layer(id) {
	document.getElementById(id).style.display = "none";
}

// Layer ein- / ausblenden
function toggle_layer(id) {
	str = document.getElementById(id).style.display;
	if (str == "") str = "none";
	if (str == "none") show_layer(id);
	else hide_layer(id);
}


/**
 * Klasse eines Elements ändern
 *
 * @param doc.element the element to change
 * @param boolean change to class_cur?
 * @param string id for current highlighted
 * @param string class for not highlighted
 * @param string class for current highlighted
 */
function changeclass( element, over, id_cur, class_norm, class_cur )
{
	if( !element )   { return; }
	if( !id_cur )    { id_cur     = 'menu_item_cur' }
	if( !class_norm ){ class_norm = 'menu_item' }
	if( !class_cur ) { class_cur  = class_norm+'_cur' }

	if( over || element.id == id_cur )
	{
		element.className = class_cur;
	}
	else
	{
		element.className = class_norm;
	}
}


/**
 * öffnet oder schliesst ein Clickopen-Menu (Sidebox)
 * @param string id des Menus
 */
function toggle_submenu( id, imgpath )
{
	if( imgpath == '' || imgpath == undefined )
		imgpath = '/images/symbole/';
	if( document.getElementById( 'submenu_'+id ).className == 'click_open' )
	{
		document.getElementById( 'submenu_'+id ).className = 'click_close';
		document.getElementById( 'imgmenu_'+id ).src = imgpath + 'expand.gif';
		return false;
	}
	else
	{
		document.getElementById( 'submenu_'+id ).className = 'click_open';
		document.getElementById( 'imgmenu_'+id ).src = imgpath + 'collapse.gif';
		return false;
	}
}


/**
 * Wählt eine Option in einem <select> anhand eines value-Strings aus
 *
 * @param pointer <select>-Element
 * @param string Wert der ausgewählt werden soll
 */
function select_option(element, value) {
	var i;
	for (i=0; i<element.options.length; i++) {
		if (element.options[i].value == value) {
			element.options.selectedIndex = i;
			element.handleEvent(Event.CHANGE); // TODO: Testen!
			return true;
			break;
		}
	}
	return false;
}




// Ersetzen von möglicherweise inkompatiblen Zeichen in Dateinamen,
// die auch in URLs verwendet werden
function goodfilename(filename) {
	badchars = new Array  ("Ä",  "ä",  "Ö",  "ö",  "Ü",  "ü",  "ß",  " ", "?", "&", "-", "#");
	goodchars = new Array ("Ae", "ae", "Oe", "oe", "Ue", "ue", "ss", "_", "_", "_", "_", "");
	for (j=0; j<badchars.length; j++) {
		while (filename.indexOf( badchars[j] ) > -1 )
			filename = filename.replace(badchars[j], goodchars[j]);
	}
	filename = filename.toLowerCase();
	return filename;
}


/**
 * source: http://www.quirksmode.org/js/findpos.html
 */
function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

/**
 * source: http://www.quirksmode.org/js/findpos.html
 */
function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}


/**
 * Inhalt aus eckigen Klammern [] zurückliefern
 */
function getPrettyInputName( name )
{
	var pos1 = name.indexOf( '[' );
	var pos2 = name.indexOf( ']' )
	if( pos1 > -1 && pos2 > -1 )
	{
		name = name.substring( pos1+1, pos2 );
	}
	// Check for prefix ln_ (used in strafrecht-online.de)
	if( name.indexOf( 'ln_' ) == 0 )
	{
		name = name.substr(3,1).toUpperCase() + name.substr( 4, name.length );
	}
	return name;
}


/**
 * Cross browser event handling for IE5+, NS6+ an Mozilla/Gecko
 * @author Scott Andrew
 */
function addEvent( elm, evType, fn, useCapture )
{
	if( elm.addEventListener )
	{ // Standard & Mozilla way:
		elm.addEventListener( evType, fn, useCapture );
		return true;
	}
	else if( elm.attachEvent )
	{ // IE way:
		var r = elm.attachEvent( 'on'+evType, fn );
		return r;
	}
	else
	{ // "dirty" way (IE Mac for example):
		// Will overwrite any previous handler! :((
		elm['on'+evType] = fn;
		return false;
	}
}

/**
 * Enable/disable form controls of a specific type
 * Useful for disabling a submit button in an form.onsubmit event 
 */
function toggle_inputstate( frm, type, enable )
{
	for(i=0; i<frm.elements.length; i++)
	{
		ftype = frm.elements[i].type;
		ftype = ftype.toLowerCase();
		if( ftype == type )
			frm.elements[i].disabled = !enable;
	}
}
function abciframe(widgeturl)
{
	var widgetbox = document.getElementById("abcwidget");
	var normalbox = document.getElementById("hide4abcwidget");
	var iframeobj = document.getElementById("abciframe");
	if( widgeturl == '' || widgeturl == undefined)
	{
		normalbox.style.display = "block";
		widgetbox.style.display = "none";
		iframeobj.src='about:blank';
	}
	else
	{
		widgetbox.style.display = "block";
		iframeobj.src=widgeturl;
		normalbox.style.display = "none";
	}
}


/**
 * Check if password input is complex enough and repeated input matches the first one
 * Used by chkfrm()
 */ 
function chkPassword( p1, p2 )
{
	if(p1.value.length == 0 && (p2 == undefined || p2.value.length == 0))
	{
		return true;
	}
	var digits = "0123456789";
	var letters = "abcdefghijklmnopqrstuvwxyzäöüßABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ";

	var digits_ok = false
	var letters_ok = false;
	var length_ok = (p1.value.length >= 6);
	var identical_ok = (p2 == undefined) || (p1.value == p2.value);
	var ok = true;
	var msg = "";

	for( i=0; i<p1.value.length; i++ )
	{
		var char = p1.value.charAt( i );
		if( !digits_ok && digits.indexOf( char ) > -1 )
		{
			digits_ok = true;
		}
		if( !letters_ok && letters.indexOf( char ) > -1 )
		{
			letters_ok = true;
		}
	}
	if( !digits_ok )
	{
		msg = "Das Passwort muß mindestens 1 Ziffer enthalten.";
		ok = false;
	}
	if( !letters_ok )
	{
		msg = "Das Passwort muß mindestens 1 Buchstaben enthalten.";
		ok = false;
	}
	if( !length_ok )
	{
		msg = "Das Passwort muß mindestens 6 Zeichen enthalten. Es enthält aber nur "+p1.value.length+".";
		ok = false;
	}
	if( !identical_ok )
	{
		msg = "Das wiederholte Passwort stimmt nicht mit dem ersten überein.";
		ok = false;
	}
	if( !ok )
	{
		alert( "Fehler:\n\n" + msg );
		return false;
	}
	// Success
	return true;
}


function trim (str, charlist) {
    // Strips whitespace from the beginning and end of a string  
    // 
    // version: 812.316
    // discuss at: http://phpjs.org/functions/trim
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: mdsjack (http://www.mdsjack.bo.it)
    // +   improved by: Alexander Ermolaev (http://snippets.dzone.com/user/AlexanderErmolaev)
    // +      input by: Erkekjetter
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: DxGx
    // +   improved by: Steven Levithan (http://blog.stevenlevithan.com)
    // +    tweaked by: Jack
    // +   bugfixed by: Onno Marsman
    // *     example 1: trim('    Kevin van Zonneveld    ');
    // *     returns 1: 'Kevin van Zonneveld'
    // *     example 2: trim('Hello World', 'Hdle');
    // *     returns 2: 'o Wor'
    // *     example 3: trim(16, 1);
    // *     returns 3: 6
    var whitespace, l = 0, i = 0;
    str += '';
    
    if (!charlist) {
        // default list
        whitespace = " \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000";
    } else {
        // preg_quote custom list
        charlist += '';
        whitespace = charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1');
    }
    
    l = str.length;
    for (i = 0; i < l; i++) {
        if (whitespace.indexOf(str.charAt(i)) === -1) {
            str = str.substring(i);
            break;
        }
    }
    
    l = str.length;
    for (i = l - 1; i >= 0; i--) {
        if (whitespace.indexOf(str.charAt(i)) === -1) {
            str = str.substring(0, i + 1);
            break;
        }
    }
    
    return whitespace.indexOf(str.charAt(0)) === -1 ? str : '';
}


function set_prices_module( )
{
	var modules_active = 0;
	var price_module = 0;
	var price_prem = 0;
	var modules_counter
	modules = new Array(1,3,6,7,8,9,10,29,30,31);
	for (var i in modules)
	{
		if(checkbox = document.getElementById("glpa_mod_"+modules[i]))
			if(checkbox.checked == true)
				modules_active++;
			if(checkbox = document.getElementById("glpa_mod_prem_"+modules[i]))
			if(checkbox.checked == true)
			price_prem = parseFloat(price_prem) + parseFloat(document.getElementById("glpa_mod_prem_price_"+modules[i]).firstChild.nodeValue);
	}
	
	
	if(modules_active == 0)
		price_module = 39.80;
	else if(modules_active == 1)
		price_module = 49.80;
	else if(modules_active <= 4)
	{
		price_module = 64;
		modules_counter = 4 - modules_active
	}
	else if(modules_active <= 6)
	{
		price_module = 83;
		modules_counter = 6 - modules_active
	}
	else if(modules_active <= 10)
	{
		price_module = 98;
		modules_counter = 10 - modules_active
	}

	document.getElementById('sub-price-plus').innerHTML = price_module.toFixed(2);
	document.getElementById('sub-price-prem').innerHTML = price_prem.toFixed(2);
	var price_total = price_module + price_prem;
	document.getElementById('total-price-netto').innerHTML = price_total.toFixed(2);
	price_total = price_total * 119 / 100;
	document.getElementById('total-price-brutto').innerHTML = price_total.toFixed(2);
	if(modules_counter > 0)
	{
		document.getElementById('modules-counter').innerHTML = modules_counter;
		document.getElementById('modules-info').style.display = "block";
	}
	else
		document.getElementById('modules-info').style.display = "none";
}
