

document._INIT= [];
var rxMail= /^[0-9a-z][0-9a-z\.\-_]{0,}[0-9a-z]{0,}@[0-9a-z][0-9a-z\.\-_]*[0-9a-z]\.[a-z]{2,}$/i;
var rxDefault= /\bdefaultvalue:([^:]+):/i;
var rxHover= /\bmousehover:([^:]+):/i;

function initAll() {
	for (var i= 0; i< document._INIT.length; i++) 
		document._INIT[i]();
	
	var inp= $A(document.getElementsByTagName('input'));
	inp= inp.concat($A(document.getElementsByTagName('textarea')));
	inp= inp.concat($A(document.getElementsByTagName('li')));
	inp= inp.concat($A(document.getElementsByTagName('ul')));
	inp= inp.concat($A(document.getElementsByTagName('a')));
	
	for (var i= 0; i< inp.length; i++)
		_defaultValue(inp[i]);
	
	initHovers();
}

var _defaultValue= function(e) {
	if (e.className.match(rxDefault)) {
		var sDefault= RegExp.$1;
		e.className= e.className.replace(rxDefault, '');
		var inpD= document.getElementsByName(e.name);
		if (inpD) inpD= inpD[0];
		else {
			var p= e.parentNode;
			inpD= document.createElement('input');
			inpD.name= e.name+ '_default';
			inpD.value= sDefault;
			p.appendChild(inpD);
		}
		e.def= sDefault;
		var f= function(b) {
			$CSS(this, 'ondefault', false);
			if (b && e.value== e.def)
				e.value= '';
			else if (!b && e.value== '') {
				e.value= e.def;
				$CSS(this, 'ondefault', true);
			}
		};
		$OBS(e, 'focus', f.b(e, true));
		$OBS(e, 'blur', f.b(e, false));
		f.apply(e, [false]);
		
	}
	if (e.className.match(rxHover)) {
		var sClass= RegExp.$1;
		$OBS(e, 'mouseover', function() {
			$CSS(this, sClass, true);
		}.b(e));
		$OBS(e, 'mouseout', function() {
			$CSS(this, sClass, false);
		}.b(e));
	}
}


function appendInit(fct) {
	document._INIT.push(fct);
}


function initHovers() {
	var as= document.getElementsByClassName('hoverbtt');
	var x= [];
	
}


function initShipmentOption() {
	var el= document.getElementsByName('shipment');
	for (var i= 0; i< el.length; i++)
		if (el[i].checked) {
			changeShipmentType(el[i].value);
			break;
		}
		
}


function changeShipmentType(iMode) {
	if (iMode== "1")
		show('f_deliver');
	else
		hide('f_deliver');
}



function initTicketsView() {
	var iT= parseInt($('ticket_amount').value);
	for (var i= 0; i< iT; i++) {
		
		// -- setup select
		var select= $('amount_'+ i);
		for (var j= 0; j<= 10; j++) {
			var opt= document.createElement('option');
			opt.value= j;
			opt.innerHTML= j;
			select.appendChild(opt);
		}
		
		select.onchange= updatePrice.b(null, i, select, iT, _cumulateTotal, true);
	}
}

function updatePrice(i, select, iT, f, bTotal) {
	var price= parseFloat($('price_'+ i).innerHTML.replace(/[^0-9,\.]/g, '').replace(/,/, '.'));
	var flag_booking_fee = ($('booking_fee_'+i) ? ($('booking_fee_'+i).value =='true') : false);
	
	if (isNaN(select.value))
		select.value= "0";
	if (!iT) 
		iT= parseInt($('ticket_amount').value);
	var total= $('total_'+ i);
	total.innerHTML= (price* select.value).toFixed(2)+ ' &euro;';
	
	if(flag_booking_fee) _cumulateBookingFee();
	
	f(iT, bTotal);
}

function _cumulateBookingFee() {
	var iCount = 0;
	var iT= $('ticket_amount')? parseInt($('ticket_amount').value): 0;
	var iF;
	
	for (var i= 0; i< iT; i++) {
		if ( $('booking_fee_'+i).value == 'true') iCount += parseInt($('amount_'+i).value);
	}
	
	iF = parseFloat($('booking_fee_price').innerHTML.replace(/[^0-9,\.]/g, '').replace(/,/, '.'));
	if (isNaN(iF)) iF = 0;
	if (isNaN(iCount)) iCount = 0;
	
	$('booking_fee_amount').innerHTML = iCount;
	$('booking_fee_total').innerHTML = parseFloat(iF * iCount).toFixed(2) + ' &euro;';
}

function _cumulateTotal(iTX, bTotal) {
	
	var iT= $('ticket_amount')? parseInt($('ticket_amount').value): 0;
	var iC= ($('coupon_amount'))? parseInt($('coupon_amount').value): 0;
	var iCU= ($('ok_coupon_amount'))? parseInt($('ok_coupon_amount').value): 0;
	
	var iF= 0;
	for (var i= 0; i< iT; i++) iF+= parseFloat($('total_'+ i).innerHTML.replace(/[^0-9,\.]/g, '').replace(/,/, '.'));
	for (var i= 0; i< iC; i++) iF+= parseFloat($('c_total_'+ i).innerHTML.replace(/[^0-9,\.]/g, '').replace(/,/, '.'));
	for (var i= 0; i< iCU; i++) iF-= parseFloat($('cu_total_'+ i).innerHTML.replace(/[^0-9,\.]/g, '').replace(/,/, '.'));
	
	if (iF< 0) iF= 0.0;
	
	if (bTotal) {
		var booking_fee = 0;
		if ($('booking_fee_total') != null) booking_fee = parseFloat($('booking_fee_total').innerHTML.replace(/[^0-9,\.]/g, '').replace(/,/, '.'));	
		$('total').innerHTML= (iF + booking_fee).toFixed(2) + ' &euro;';
	}
}


function _cumulateTotalWithEnv(iTX, bTotal) { // -- versand & bezahlung
	
	var iT= $('ticket_amount')? parseInt($('ticket_amount').value): 0;
	var iC= ($('coupon_amount'))? parseInt($('coupon_amount').value): 0;
	var iCU= ($('ok_coupon_amount'))? parseInt($('ok_coupon_amount').value): 0;
	
	var iF= 0;
	for (var i= 0; i< iT; i++) iF+= parseFloat($('total_'+ i).innerHTML.replace(/[^0-9,\.]/g, '').replace(/,/, '.'));
	for (var i= 0; i< iC; i++) iF+= parseFloat($('c_total_'+ i).innerHTML.replace(/[^0-9,\.]/g, '').replace(/,/, '.'));
	for (var i= 0; i< iCU; i++) iF-= parseFloat($('cu_total_'+ i).innerHTML.replace(/[^0-9,\.]/g, '').replace(/,/, '.'));
	
	if (iF< 0) iF= 0.0;
	
	if (bTotal) {
		var booking_fee = 0;
		if ($('booking_fee_total') != null) booking_fee = parseFloat($('booking_fee_total').innerHTML.replace(/[^0-9,\.]/g, '').replace(/,/, '.'));	
		$('total').innerHTML= (iF + booking_fee).toFixed(2) + ' &euro;';
	}
}




function _getInput(n) {
	var inp= document.getElementsByName(n);
	if (inp) inp= inp[0];
	return inp;
}

function _getInputsForm() {
    var a = $A( arguments );
    var form = a.shift(), inputs = a, res = {};
    if ( !( form.getElementsByName instanceof Function ) ) form = document.getElementById( form );
    for (var i= 0; i< inputs.length; i++) {
        if ( form[ inputs[i] ] == undefined ) alert( inputs[i] );
        res[ inputs[i] ] = ( form[ inputs[i] ] == undefined ? null : form[ inputs[i] ] );
    }
    return res;
}

function _getInputs() {
	var a= [];
	for (var i= 0; i< arguments.length; i++)
		a.push(_getInput(arguments[i]));
	return a;
}

function checkNew() {
    var bOK= true, inp = {};

    inp = _getInputsForm( 'x_newclient', 'forename', 'surname', 'street', 'zip', 'city', 'phone', 'mail', 'mail2', 'housenumber' );
    
    for ( s in inp ) {
        inp[s].value = _trim( inp[s].value );
                
        if (inp[s].value.length< 2) {
        	if (inp[s].id=="f_housenumber" && inp[s].value.length >= 1) {
        		$CSS(inp[s], 'invalid', false);
        		continue;
        	}
            $CSS(inp[s], 'invalid', true);
            bOK= false;
        } else
            $CSS(inp[s], 'invalid', false);
    }
    
    if ( ! inp.mail.value.match(rxMail) || inp.mail.value != inp.mail2.value ) {
        $CSS(inp.mail, 'invalid', true);
        $CSS(inp.mail2, 'invalid', true);
        bOK= false;
    }
    
    return bOK;
}


function _trim(s) {
	s= s.replace(/^([^\w]*)/g, '');
	s= s.replace(/([^\w]*)$/g, '');
	return s;
}


function checkAGB() {
	var agb= _getInput('agb');
	var arrow= $('checkagb-hint');
	var b= agb.checked;
	$CSS('checkagb', 'outoforder', !b);
	arrow.style.display= !b? '': 'none';
	return b;
}


function checkOptionsForm() {
	
	// -- check address formular
	if ($('f_check_new').checked) {
		var err= $('f_err_new'); hide(err); var aErr= [];
		
		if ($('f_forename').value== '')
			aErr.push('Vorname');
		
		if ($('f_surname').value== '')
			aErr.push('Nachname');
		
		if ($('f_street').value== '')
			aErr.push('Strasse');
		
		if ($('f_zip').value== '')
			aErr.push('PLZ');
		
		if ($('f_city').value== '')
			aErr.push('Stadt');
		
		if (aErr.length> 0) {
			show(err);
			err.innerHTML= 'Bitte füllen sie '+ (aErr.length> 1? 'folgende Felder': 'folgendes Feld')+ ' aus: "'+ aErr.join('", "')+ '"';
			return false;
		}
		
	}
	
	return checkAGB();
}




function deleteSCItem(id, type) {
	var url= '/Warenkorb-entferne-'+ (type|| 'Ticket')+ '-'+ id+ '.html';
	document.location.href= url;
}



function checkContactForm() {
	var arr= [
		_getInput('name'),
		_getInput('email'),
		_getInput('subject'),
		_getInput('message')
	];
	
	$CSS(arr[0], 'invalid', false);
	$CSS(arr[1], 'invalid', false);
	$CSS(arr[3], 'invalid', false);
	
	var bOK= true;
	
	if (arr[0].value== '') {
		$CSS(arr[0], 'invalid', true);
		bOK= false;
	}
	
	if (arr[1].value== '' || !(arr[1].value.match(rxMail))) {
		$CSS(arr[1], 'invalid', true);
		bOK= false;
	}
	
	if (arr[3].value== '') {
		$CSS(arr[3], 'invalid', true);
		bOK= false;
	}
	
	
	return bOK;
}



function jumpZIP(select) {
	if (select.selectedIndex> 0) {
		$('search_zip').value= select.value;
		$('form_zip').submit();
	}
}







function show(id) {
	var obj= $(id);
	obj.style.display= '';
}

function hide(id) {
	var obj= $(id);
	obj.style.display= 'none';
}





function highlightWords(sWord, sId) {
	var container= $(sId);
    window.xxx = 0;
    if ( isNaN( sWord ) ){
        var rx= new RegExp('(>[^<]*)('+ sWord+ ')', 'ig' );
        
        var s   = new String( container.innerHTML );
        s       = s.replace( rx, function() {
            return arguments[1] + '<b style="background-color: #ddffdd !important; font-style: normal">'+ arguments[2]+ '</b>'
        });
        container.innerHTML= s;
    }
}


