﻿// dpg = dependgroup
// dc = dclass
// dcs = dclassset
// dv = defaultval
// sd = sdesc

var extmode = true;

var groupmap = new Hash();
var groupindex = new Hash();

var gr_class = null;

var resultlist = new Hash();

var savedData = null;

var resulttemplate = { name:'', value:''};

var colorType = "matt";

var dynObj = new Hash();
var dynVal = new Hash();

var blockStore = new Hash();

var PrintWindow;
var selGrp = 0;
var selectedRA = 0;
var actSte = '';
var imgslot = 0;

var data_type = "";
var data_type_l_htd;
var data_type_l_f;
var data_type_l_mtbr;
var data_type_l_cross;
var data_type_l_crossr;
var data_type_l_crossn;
var data_type_l_rr;
var data_type_l_sb;

var data;
var data_l_f;
var data_l_htd;
var data_l_mtbr;
var data_l_cross;
var data_l_crossr;
var data_l_crossn;
var data_l_rr;
var data_l_sb;

var isLoaded_mtb_ht = true;
var isLoaded_mtb_htd = false;
var isLoaded_mtb_f = false;
var isLoaded_mtb_r = false;
var isLoaded_cross = false;
var isLoaded_crossr = false;
var isLoaded_crossn = false;
var isLoaded_rr = false;
var isLoaded_sb = false;

var optContToggled = false;

var lastSelCntId = "";

var openD = function( site ){
	//console.log( site );
	actSte = site;
	var lnk = "";
	if(actSte=="mtb_ht") lnk = "data/MTB.js";
	if(actSte=="mtb_htd") lnk = "data/MTB_disc.js";
	if(actSte=="mtb_f") lnk = "data/MTB_F.js";
	if(actSte=="mtb_r") lnk = "data/MTB_R.js";
	if(actSte=="cross") lnk = "data/CROSS.js";
	if(actSte=="crossr") lnk = "data/CROSSRohloff.js";
	if(actSte=="crossn") lnk = "data/CROSSNexus.js";
	if(actSte=="rr") lnk = "data/RR.js";
	if(actSte=="sb") lnk = "data/SB.js";
	selGrp = 0;
	loadScript( lnk );
}

var loadScript = function( url ){
	//console.log( "loadScript: " + url );
	setInActive();
	
	if ( savedData == null ){
		$('openbikeid').value = '';
		$('stitle').value = '';
		$('sdesc').value = '';
		$('shash').value = '';	
		$('h_id').innerHTML = "";	
	}
	
	var isload = false;
	if( url == 'data/MTB.js' & isLoaded_mtb_ht == true ) isload = true;
	if( url == 'data/MTB_disc.js' & isLoaded_mtb_htd == true ) isload = true;
	if( url == 'data/MTB_F.js' & isLoaded_mtb_f == true ) isload = true;
	if( url == 'data/MTB_R.js' & isLoaded_mtb_r == true ) isload = true;
	if( url == 'data/RR.js' & isLoaded_rr == true ) isload = true;
	if( url == 'data/CROSS.js' & isLoaded_cross == true ) isload = true;
	if( url == 'data/CROSSRohloff.js' & isLoaded_crossr == true ) isload = true;
	if( url == 'data/CROSSNexus.js' & isLoaded_crossn == true ) isload = true;
	if( url == 'data/SB.js' & isLoaded_sb == true ) isload = true;
	if( isload == true ){
		setData();
	} else {
		//console.log("load data");
		var dd = new Date().getTime();
		url = url + "?f=" + dd;
		new Ajax.Request( url, {
			method: 'get',
			evalJS: true,
			onComplete: dataLoaded
		});		
	}
}

var dataLoaded = function( response ){
	//console.log( "dataloaded: " + actSte );
	eval( response.responseText );
	data.clear();
	if( actSte == "mtb_ht" ){
		data = data_ht.clone();	
		data_type = data_type_ht;	
		isLoaded_mtb_ht = true;
	}
	if( actSte == "mtb_htd" ){
		data = data_htd.clone();	
		data_type = data_type_htd;	
		data_type_l_htd = data_type_htd;
		data_l_htd = data_htd.clone();	
		isLoaded_mtb_htd = true;
	}
	if( actSte == "mtb_f" ){
		data = data_f.clone();	
		data_type = data_type_f;
		data_type_l_f = data_type_f;
		data_l_f = data_f.clone();	
		isLoaded_mtb_f = true;	
	}
	if( actSte == "mtb_r" ){
		data = data_mtbr.clone();	
		data_type = data_type_mtbr;
		data_type_l_mtbr = data_type_mtbr;
		data_l_mtbr = data_mtbr.clone();	
		isLoaded_mtb_r = true;	
	}
	if( actSte == "cross" ){
		data = data_cross.clone();	
		data_type = data_type_cross;
		data_type_l_cross = data_type_cross;
		data_l_cross = data_cross.clone();	
		isLoaded_cross = true;	
	}
	if( actSte == "crossr" ){
		data = data_crossr.clone();	
		data_type = data_type_crossr;
		data_type_l_crossr = data_type_crossr;
		data_l_crossr = data_crossr.clone();	
		isLoaded_crossr = true;	
	}
	if( actSte == "crossn" ){
		data = data_crossn.clone();	
		data_type = data_type_crossn;
		data_type_l_crossn = data_type_crossn;
		data_l_crossn = data_crossn.clone();	
		isLoaded_crossn = true;	
	}
	if( actSte == "rr" ){
		data = data_rr.clone();	
		data_type = data_type_rr;
		data_type_l_rr = data_type_rr;
		data_l_rr = data_rr.clone();	
		isLoaded_rr = true;	
	}
	if( actSte == "sb" ){
		data = data_sb.clone();	
		data_type = data_type_sb;
		data_type_l_sb = data_type_sb;
		data_l_sb = data_sb.clone();	
		isLoaded_sb = true;	
	}
	
	initData();	
};

var setData = function(){
	if( actSte == "mtb_ht" ){
		data = data_ht.clone();
		data_type = data_type_ht;	
	}
	if( actSte == "mtb_htd" ){
		data = data_l_htd.clone();
		data_type = data_type_l_htd;	
	}
	if( actSte == "mtb_f" ){
		data = data_l_f.clone();
		data_type = data_type_l_f;	
	}
	if( actSte == "mtb_r" ){
		data = data_l_mtbr.clone();	
		data_type = data_type_l_mtbr;		
	}
	if( actSte == "cross" ){
		data = data_l_cross.clone();	
		data_type = data_type_l_cross;		
	}
	if( actSte == "crossr" ){
		data = data_l_crossr.clone();	
		data_type = data_type_l_crossr;		
	}
	if( actSte == "crossn" ){
		data = data_l_crossn.clone();	
		data_type = data_type_l_crossn;		
	}
	if( actSte == "rr" ){
		data = data_l_rr.clone();	
		data_type = data_type_l_rr;		
	}
	if( actSte == "sb" ){
		data = data_l_sb.clone();	
		data_type = data_type_l_sb;		
	}
	initData();	
}


var setActive = function(){
	
}

var setInActive = function(){
	var elems = $$('.h1');

	elems.each(function(s, index) {
	  s.addClassName('h1_inactive');
	});

}


var wload = function(){
	//if($('d_mtb')) $('d_mtb').observe('click', openMTB_ht );
	if($('d_mtb')) $('d_mtb').observe('click', function(){ openD( "mtb_ht" ) } );	
	if($('d_mtbd')) $('d_mtbd').observe('click', function(){ openD( "mtb_htd" ) } );	
	if($('d_mtb_f')) $('d_mtb_f').observe('click', function(){ openD( "mtb_f" ) } );	
	if($('d_mtb_r')) $('d_mtb_r').observe('click', function(){ openD( "mtb_r" ) } );	
	if($('d_cross')) $('d_cross').observe('click', function(){ openD( "cross" ) } );
	if($('d_cross_r')) $('d_cross_r').observe('click', function(){ openD( "crossr" ) } );
	if($('d_cross_n')) $('d_cross_n').observe('click', function(){ openD( "crossn" ) } );
	if($('d_rr')) $('d_rr').observe('click', function(){ openD( "rr" ) } );
	if($('d_sb')) $('d_sb').observe('click', function(){ openD( "sb" ) } );
	$('openbike').observe('click', openBike );	
	$('btn_print').observe('click', printData );	
	data = data_ht.clone();
	data_type = data_type_ht;
	actSte = "mtb_ht";
	
	if( getURLParam('bike') != ''){
		var loadBike = getURLParam('bike');
		loadData( loadBike );
	} else {
		initData();
	}
	
	addRootBlock();
	toogleContainer('e_type_sel');
	
	if( getURLParam('enableSave') == 'true'){
		$('btn_save').show();
		$('btn_load').show();
		$('saveflds').show();
		$('openbike').show();
		$('btn_save').observe('click', saveData );	
		$('btn_load').observe('click', loadBikeList );	
	}else{
		$('btn_load').hide();
		$('btn_save').hide();		
		$('saveflds').hide();
		$('openbike').hide();
	}
	
}

var printData_org = function(){
	PrintWindow = window.open('bmc_print3.html', "Printpage", "width=800,height=600,left=100,top=200");
	PrintWindow.focus();
	window.setTimeout("_printData()", 2000);
}

var _printData_org = function(  ){
	var elem = PrintWindow.document.getElementById('content');
	elem.innerHTML = $('result_groups_tab').innerHTML;
	PrintWindow.print();
}

var printData = function(){
	PrintWindow = window.open('bmc_print3.html', "Printpage", "width=800,height=600,left=100,top=200,scrollbars=yes");
	PrintWindow.focus();
	var out = {};
	resultlist.get( "fa" ).val = resultlist.get( "fa" ).val.replace(/\"/g,'');
	out.val = Object.clone( resultlist );
	out.type = actSte;
	
	
	
	//console.log('printData: ' + Object.toJSON( out ));
	new Ajax.Request('save3.php', {
	  	method: 'post',
		evalJSON: true,
		sanitizeJSON: true,
		parameters: { 
			'savedata':  Object.toJSON( out ), 
			'title': "print",
			'sdesc': "",
			'key': ""
		},
		onSuccess: function(transport) {
			_printData( transport.responseText );
		},
		onError: function(transport) {
		}
	});
}

var _printData = function( id ){
	var elem = PrintWindow.document.getElementById('content');
	elem.innerHTML = $('result_groups_tab').innerHTML;
	PrintWindow.document.getElementById('type_c').innerHTML = data_type;
	PrintWindow.document.getElementById('id_c').innerHTML = id;
	PrintWindow.print();
}

var saveData = function(){
	var out = {};
	out.type = actSte;
	out.title = $('stitle').value;
	out.val = Object.clone( resultlist );
	//console.log(actSte);
	new Ajax.Request('save3.php', {
	  	method: 'post',
		evalJSON: true,
		sanitizeJSON: true,
		parameters: { 
			'savedata':  Object.toJSON( out ), 
			'title': $('stitle').value,
			'sdesc': $('sdesc').value,
			'key': $('shash').value
		},
		onSuccess: function(transport) {
			$('h_id').innerHTML = transport.responseText;
			loadBikeList();
		},
		onError: function(transport) {
		}
	});
}


var saveAktionData = function(){
	openModalWindow( "mw_aktion" );
}


var loadBikeList = function(){
	openModalWindow( 'modalWindow_LoadBike' );
	
	new Ajax.Request('load_list.php', {
	  	method: 'get',
		evalJSON: true,
		sanitizeJSON: true,
		onSuccess: function(transport) {
			var obj = savedData = transport.responseText.evalJSON();
			$('modalWindow_LoadBike').update('');
			obj.each( function(oo){
					$('modalWindow_LoadBike').insert( '<div class="link" onclick="loadData(\'' + oo.skey + '\')"> ' + oo.title + ' (' + oo.skey + ')</div>')
				}
			);
		}
	});
}


var openBike = function(){
	if( $('openbikeid').value != '' ){
		loadData( $('openbikeid').value );		
	}
}


var loadData = function( bikeid ){
	closeModalWindow( 'modalWindow_LoadBike' );
	openModalWindow( 'modalWindow' );
	var dd = new Date().getTime();
	
	new Ajax.Request('load3.php?dd=' + dd, {
	  	method: 'get',
		evalJSON: true,
		sanitizeJSON: true,
		parameters: { 'bikeid': bikeid },
		onSuccess: function(transport) {
			savedData = transport.responseText.evalJSON().bike.val;
			actSte = transport.responseText.evalJSON().bike.type;
			$('bike_title').innerHTML = transport.responseText.evalJSON().bike.title;
			$('bike_desc').innerHTML = transport.responseText.evalJSON().desc;
			$('h_id').innerHTML = transport.responseText.evalJSON().key;

			$('shash').value = transport.responseText.evalJSON().key;
			$('sdesc').value = transport.responseText.evalJSON().desc;
			
			$('stitle').value = transport.responseText.evalJSON().bike.title;
			closeModalWindow( 'modalWindow');
			
			if( actSte == "mtb_ht" ) openD( "mtb_ht" );
			if( actSte == "mtb_htd" ) openD( "mtb_htd" );
			if( actSte == "mtb_f" ) openD( "mtb_f" );
			if( actSte == "mtb_r" ) openD( "mtb_r" );
			if( actSte == "cross" ) openD( "cross" );
			if( actSte == "crossr" ) openD( "crossr" );
			if( actSte == "crossn" ) openD( "crossn" );
			if( actSte == "rr" ) openD( "rr" );
			if( actSte == "sb" ) openD( "sb" );
		}
	});
}


var setNewIndex = function( id, checkname, dclass  ){
	
	//console.log( "id: " + id + " / cname: " + checkname + " / dclass: " + dclass );
	var obj = groupmap.get( id ).vl;
	var index = 0;
	var ret ='';
	obj.each( function(pair){
		if( id == "fa" ){
			if ( pair.name.substring(0, 4) == checkname.substring(0, 4) ){
				if ( pair.dcs != '' ){
					if ( pair.dcs == dclass ){	
						//pair.name = checkname;
						ret = index;
					}					
				}else{
					//pair.name = checkname;
					ret = index;					
				}
			}
		} else {
			if ( pair.name == checkname ){
				if ( pair.dcs != '' ){
					if ( pair.dcs == dclass ){	
						ret = index;
					}					
				}else{
					ret = index;					
				}
			}
		}
		index +=1;
		} 
	);
	return ret;
}


var initData = function(){
	
	//console.log( "initData" );
	
	groupmap = new Hash();
	groupindex = new Hash();
	resultlist = new Hash();
	
	//console.log( "now initDefaultValues" );
	initDefaultValues();
	//lastSelCntId = "";
	$('left_cont').update("");
	$('left_cont_1').update("");
	$('left_cont_2').update("");
	$('result_groups').update('');
	//$('seldetails').update('');
	//addRootBlockCnt();
	
	$('left_cont_opt_co').update('');
	$('result_type').innerHTML = data_type;
	
	//$(  'cont_type_sel_c').toggle();
	
	//console.log( "now addGroupContainer" );
	addGroupContainer( $('left_cont_2') , "left_cont_opti" , "Optionen" );		
		//$(  'left_cont_opti_c').toggle();
		$(  'left_cont_opti_cnt').toggle();
		$(  'left_cont_opti_co').toggle();
		if( optContToggled == false ){
			$(  'left_cont_opt_co').toggle();		
			optContToggled = true;
		}

	$( "left_cont_opti" ).observe('click', function(event){ 
		$(  'left_cont_opti_e').toggle();
		//$(  'left_cont_opti_c').toggle();
		//$(  'left_cont_opti_cnt').toggle();
		$(  'left_cont_opti_co').toggle();
		$(  'left_cont_opt_co').toggle();
	 });


	//console.log( "now groupmap" );
	groupmap.each( function(pair) {
		//console.log( "now groupmap - " +pair.key );
		var tarray = pair.value;
		var sid = pair.key;
		var dg = pair.value.dpg;

		resultlist.set( sid, {} );
		var rle = resultlist.get( sid );
		rle.name = tarray.tn;
		rle.id = sid;
		
		if ( extmode == true ){
			if( tarray.co == "1" ){
				addGroupContainer( $('left_cont_1') , sid , tarray.tn );
			} else {
				addGroupContainer( $('left_cont_opt_co') , sid , tarray.tn, tarray.co );		
			}
		} else {
			addGroupContainer( $('left_cont') , sid , tarray.tn );		
		}
		addResultContainer( $('result_groups') , sid , tarray.tn );
		
		$( sid + '_co').hide();
		//$( sid +'_c').hide();
		$( sid +'_cnt').hide();
		$( sid ).observe('click', function(event){ toogleContainer( sid ); });

		var table = new Element('table', {  'class':'tabcont_m' });
		var tbody = new Element('tbody');
		
		tarray.vl.each(function(s, index ) {
			if (s != undefined ){
				addRow( tbody, s, index, sid, dg );	
			}		
		});	
		table.update( tbody );
		$( sid + '_cnth' ).update( "&nbsp; " + tarray.tn );
		$( sid + '_c' ).update( table );
		setTableHighlight( sid, sid + '_' + groupindex.get( sid ));
	});
	var classindex = setSavedData();
	updateVals();
	hideRhRows();
	hideFARows();
	var setid = showRhRows( groupmap.get('ra').vl[classindex].dc, 'rh' );
	var setid = showRhRows( groupmap.get('ra').vl[classindex].dc , 'fa' );
	
	//console.log( "now initColorObservation" );
	initColorObservation();
}

var addRootBlock = function(){
	//console.log("addRootBlock");
	createBlock($('cont_type_sel') , "e_type_sel" , "1. Typ" );
	//$(  'e_type_sel_c').innerHTML = "123";
	addRootBlockCnt();
}

var addRootBlockCnt = function(){
	//console.log("addRootBlock");
	var table = new Element('table', { "id":"stype",  'class':'tabcont_m' });
	var tbody = new Element('tbody');
	//row.observe('click', rowClicked );
	table.update( tbody );
	addSimpleRow( "MTB Hardtail", "", tbody, function(){ openD( "mtb_ht" ) } );
	addSimpleRow( "MTB Hardtail Disc", "", tbody, function(){ openD( "mtb_htd" ) } );
	addSimpleRow( "MTB Fully", "", tbody, function(){ openD( "mtb_f" ) } );
	addSimpleRow( "MTB Rohloff", "", tbody, function(){ openD( "mtb_r" ) } );
	addSimpleRow( "Crossrad / Trekking", "", tbody, function(){ openD( "cross" ) } );
	addSimpleRow( "Crossrad / Trekking Rohloff", "", tbody, function(){ openD( "crossr" ) } );
	addSimpleRow( "Crossrad / Trekking Nexus", "", tbody, function(){ openD( "crossn" ) } );
	addSimpleRow( "Rennrad", "", tbody, function(){ openD( "rr" ) } );
	addSimpleRow( "Speedbike", "", tbody, function(){ openD( "sb" ) } );
	$(  'e_type_sel_cnth').insert( "&nbsp; 1. Typ" );
	$(  'e_type_sel_c').insert( table );
}


var addSimpleRow = function( str, desc, elem, cb ){
	var row = new Element('tr' , {"class": "" });
	elem.insert( row );
	
	var td1 = new Element('td', {  'class':'col1' });	
	var d1 =  new Element('div', {  'class':'name' });
	d1.insert( str );	
	
	var d2 =  new Element('div', {  'class':'sdesc' });
	desc = replaceUmlaute( desc );
	d2.update( desc );
	td1.insert( d1 );
	td1.insert( d2 );
	row.insert( td1 );
	if( cb != undefined ) row.observe('click', function(){ simpleRowClicked( row, cb) } );
}

var simpleRowClicked = function( erow, cb ){
	var elems = $('stype').select( '[class="selected"]');
	if(elems[0] != undefined ) elems[0].removeClassName('selected');
	$( erow ).addClassName('selected');
	cb();
}

var createBlock = function( eaddto, id, txt ){
	addGroupContainer( eaddto, id, txt );	
	
	blockStore.set( id , {});
	var bl = blockStore.get( id );
	bl.collapsed = false;
	$(  'e_type_sel_e').show();
	$(  'e_type_sel_co').hide();
	//$(  'e_type_sel_c').hide();
	$(  'e_type_sel_cnt').hide();
	
	/*
	$( "e_type_sel" ).observe('click', function(event){ 
		$(  'e_type_sel_e').toggle();
		$(  'e_type_sel_c').toggle();
		$(  'e_type_sel_co').toggle();
		if (bl.collapsed == false ) { bl.collapsed = true } else { bl.collapsed = false };
	});
	*/
	$( "e_type_sel" ).observe('click', function(event){ toogleContainer( "e_type_sel" ); });
	
}

var setSavedData = function(){

	var tindex = 0;
	
	if ( savedData != null ){
		var tclass = '';

		resultlist = new Hash();

		(Object.keys( savedData )).each( function(val) {
			resultlist.set( val, savedData[val] );
			var ii = setNewIndex( val, savedData[val].val, tclass );
			
			if ( val == 'ra' ){
				tclass = groupmap.get( val ).vl[ii].dc;
				tindex = ii;
			}
			setGroupDings( val, ii, val + '_' + ii,  tclass );
		});		
	}
	savedData = null;
	return tindex;
}

var addExtraContainer = function(){
	// add color container
	var sid = "col";
	addGroupContainer( $('left_cont') , "col" , 'Extras' );
	addResultContainer( $('result_groups') , 'col_0' , 'Extras' );
	addResultContainer( $('result_groups') , 'col_1' , '' );
	addResultContainer( $('result_groups') , 'col_2' , '' );
	addResultContainer( $('result_groups') , 'col_3' , '' );
	addResultContainer( $('result_groups') , 'col_4' , '' );
	$( "col" + '_co').hide();
	$( "col" +'_c').hide();
	$( "col" ).observe('click', function(event){ toogleContainer( "col" ); });
	var table = new Element('table', {  'class':'tabcont' });	
	addExtraRow( table, 1, "col", 'col_1', '', '0,00', '' );
	addExtraRow( table, 2, "col", 'col_2', '', '0,00', '' );
	addExtraRow( table, 3, "col", 'col_3', '', '0,00', '' );
	addExtraRow( table, 4, "col", 'col_4', '', '0,00', '' );
	$( "col" + '_c' ).update( table );
	setColorTableHighlight( sid, sid + '_' + '1' );
	
}

var initDefaultValues = function(){
	//console.dir( data );
	data.each(function(s, index ) {
		if( s.id != undefined){
			//console.dir( s );
			groupmap.set( s.id, s );
			groupindex.set( s.id, s.dv );
			//console.log( "replace" );
			s.tn = replaceUmlaute( s.tn );
			//console.log( "initDefaultValues loop ende" );			
		}
	});
	//console.log( "initDefaultValues" );
}

var replaceUmlaute = function( str ){

	if( str.indexOf('ä') != -1 ){
		str = str.replace(/ä/g,'&auml;');
	}
	if( str.indexOf('ü') != -1 ){
		str = str.replace(/ü/g,'&uuml;');
	}
	if( str.indexOf('ö') != -1 ){
		str = str.replace(/ö/g,'&ouml;');
	}

	if( str.indexOf('Ä') != -1 ){
		str = str.replace(/Ä/g,'&Auml;');
	}
	if( str.indexOf('Ü') != -1 ){
		str = str.replace(/Ü/g,'&Uuml;');
	}
	if( str.indexOf('Ö') != -1 ){
		str = str.replace(/Ö/g,'&Ouml;');
	}
	return str;
}

var updateVals = function(){
	var update = true;
	groupmap.each( function(pair) {
		//console.log( "updateVals -> " + pair.key );
		if ( resultlist.get(pair.key) == null ){
		} else {
			$( (pair.key) + "_t").innerHTML = resultlist.get(pair.key).val ;
		}
		
		if ( pair.key == 'gr') {
			//console.log( "updateVals gr-> " + (pair.value).vl[ groupindex.get( (pair.key) ) ].pr );
			$( (pair.key) + "_val").innerHTML = (pair.value).vl[ groupindex.get( (pair.key) ) ].pr + " &euro;";
			resultlist.get( pair.key ).pr = (pair.value).vl[ groupindex.get( (pair.key) ) ].pr;
		}else{
			if( pair.value.dpg == 'yes'){
				var gpr= '';
				if ( selGrp == 1 | selGrp == 0 ){
					gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].p1;				
				}else if ( selGrp == 2 ){
					gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].p2;					
				}else if ( selGrp == 3 ){
					gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].p3;					
				}else if ( selGrp == 4 ){
					gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].p4;					
				}else if ( selGrp == 5 ){
					gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].p5;					
				}else if ( selGrp == 6 ){
					gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].p6;					
				}else if ( selGrp == 7 ){
					gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].p7;					
				}else if ( selGrp == 8 ){
					gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].p8;					
				}else if ( selGrp == 9 ){
					gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].p9;					
				}else if ( selGrp == 10 ){
					gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].p10;					
				}else if ( selGrp == 11 ){
					gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].p11;					
				}else if ( selGrp == 12 ){
					gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].p12;					
				}else if ( selGrp == 13 ){
					gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].p13;					
				}
			}else{
				var gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].pr;								
			}
			
			if ( pair.key == 'sw') {
				//console.log( "gpr: " + gpr );
				//console.dir(pair);		
			}
			//console.log( "gpr: " + gpr );
			if( gpr != undefined ){
				if( gpr.indexOf('-') == -1 ){
					$( (pair.key) + "_val").innerHTML = "+ " + gpr + " &euro;";
				} else {
					$( (pair.key) + "_val").innerHTML = "" + gpr + " &euro;";				
				}
				resultlist.get( pair.key ).pr = gpr;				
			} else {
				update=false;
			}
		}
	});
	if (update){
		sumAll();
		updateDependContainer();		
	}
}
/*
var updateDependContainer = function(){
	dynObj.each( function(pair) {
		if ( selGrp == 1 | selGrp == 0 ){
			pair.value.innerHTML = dynVal.get( pair.key ).p1;				
		}else if ( selGrp == 2 ){
			pair.value.innerHTML = dynVal.get( pair.key ).p2;				
		}else if ( selGrp == 3 ){
			pair.value.innerHTML = dynVal.get( pair.key ).p3;				
		}else if ( selGrp == 4 ){
			pair.value.innerHTML = dynVal.get( pair.key ).p4;				
		}else if ( selGrp == 5 ){
			pair.value.innerHTML = dynVal.get( pair.key ).p5;				
		}else if ( selGrp == 6 ){
			pair.value.innerHTML = dynVal.get( pair.key ).p6;				
		}else if ( selGrp == 7 ){
			pair.value.innerHTML = dynVal.get( pair.key ).p7;				
		}else if ( selGrp == 8 ){
			pair.value.innerHTML = dynVal.get( pair.key ).p8;				
		}else if ( selGrp == 9 ){
			pair.value.innerHTML = dynVal.get( pair.key ).p9;				
		}else if ( selGrp == 10 ){
			pair.value.innerHTML = dynVal.get( pair.key ).p10;				
		}else if ( selGrp == 11 ){
			pair.value.innerHTML = dynVal.get( pair.key ).p11;				
		}else if ( selGrp == 12 ){
			pair.value.innerHTML = dynVal.get( pair.key ).p12;				
		}else if ( selGrp == 13 ){
			pair.value.innerHTML = dynVal.get( pair.key ).p13;				
		}
	} );
}
*/
var updateDependContainer = function(){
	//console.log("updateDependContainer");
	//console.dir(dynObj);
	
	dynObj.each( function(pair) {
		//console.log("upd:" + pair.key  );
		//console.dir(dynVal.get( pair.key ));
		if ( selGrp == 1 | selGrp == 0 ){
			setPriceAndToggleRow( dynVal.get( pair.key ).p1, pair );
		}else if ( selGrp == 2 ){
			setPriceAndToggleRow( dynVal.get( pair.key ).p2, pair );
		}else if ( selGrp == 3 ){
			setPriceAndToggleRow( dynVal.get( pair.key ).p3, pair );
		}else if ( selGrp == 4 ){
			setPriceAndToggleRow( dynVal.get( pair.key ).p4, pair );
		}else if ( selGrp == 5 ){
			setPriceAndToggleRow( dynVal.get( pair.key ).p5, pair );
		}else if ( selGrp == 6 ){
			setPriceAndToggleRow( dynVal.get( pair.key ).p6, pair );
		}else if ( selGrp == 7 ) {
			setPriceAndToggleRow( dynVal.get( pair.key ).p7, pair );
		}else if ( selGrp == 8 ){
			setPriceAndToggleRow( dynVal.get( pair.key ).p8, pair );
		}else if ( selGrp == 9 ){
			setPriceAndToggleRow( dynVal.get( pair.key ).p9, pair );
		}else if ( selGrp == 10 ){
			setPriceAndToggleRow( dynVal.get( pair.key ).p10, pair );
		}else if ( selGrp == 11 ){
			setPriceAndToggleRow( dynVal.get( pair.key ).p11, pair );
		}else if ( selGrp == 12 ){
			setPriceAndToggleRow( dynVal.get( pair.key ).p12, pair );
		}else if ( selGrp == 13 ){
			setPriceAndToggleRow( dynVal.get( pair.key ).p13, pair );
		}
	} );
}

var setPriceAndToggleRow = function( price , pair ){
	pair.value.innerHTML = price;
	var domid = pair.key;
	//if( dynVal.get( pair.key ).p2 == "" ){$(pair.key ).hide()} else {$(pair.key ).show()} ;
	if( price == undefined ){
		if($(domid ) != undefined ) $(domid ).hide();
	} else {
		if( price == "" ){
			if($( domid ) != undefined ) $( domid ).hide();
		} else {
			if($( domid ) != undefined ) $( domid ).show();
		};
	};
	
}

var toogleContainer = function( id ){
	//console.log( "toggle: " + id );

	//toogleContainer('e_type_sel');

	if( lastSelCntId != "" ){
		//$( lastSelCntId + '_c').toggle();
		if( $( lastSelCntId + '_cnt') != null ){
			$( lastSelCntId + '_cnt').toggle();
			$( lastSelCntId + '_e').toggle();
			$( lastSelCntId + '_co').toggle(); 					
		}
	}
	
	//$( id + '_c').toggle();
	$( id + '_cnt').toggle();
	$( id + '_e').toggle();
	$( id + '_co').toggle(); 
	
	lastSelCntId = id;
}

var addRow = function( table, s, index, sid, dg ){
	var dclass;
	if(s.dcs == '' ){
		if(s.dc == '' ){
			dclass = 'all';
		}else{
			dclass = s.dc;	
		}
	}else{
		dclass = s.dcs;	
	}
	//console.log("s.pr:" + s.pr);
//	if(s.pr != undefined ) {
		var row = new Element('tr' , {  'id':sid + "_" + index , "class": dclass });
		row.observe('click', rowClicked );

		var td1 = new Element('td', {  'class':'col1' });	
		if ( s.ic != undefined ){
			if ( s.ic != "" ){
				var div_icon = new Element('div', {  'class':'icon' });
				var icon =  new Element('img', {  'src':s.ic });
				div_icon.update( icon );	
				td1.update( div_icon );
			}else {
			}
		}	

		s.name = replaceUmlaute( s.name );
		var d1 =  new Element('div', {  'class':'name' });
		d1.insert( s.name );	

		var d2 =  new Element('div', {  'class':'sdesc' });
		s.sd = replaceUmlaute( s.sd );

		d2.update( s.sd );
		td1.insert( d1 );
		td1.insert( d2 );
		row.insert( td1 );

		var td2 = new Element('td', {  'class':'preis' });

		td2.update( s.pr );
		row.insert( td2 );
		table.insert(row);

		if( dg == 'yes'){
			dynObj.set(sid + '_' + index, td2 );
			dynVal.set(sid + '_' + index, s );				
		}		
//	}

}

var addExtraRow = function( table, index, sid, name, desc, pr, color ){
	var row = new Element('tr' , {  'id':sid + "_" + index });
	var td1 = new Element('td', {  'class':'col1' });
	var d1 =  new Element('input', {  'name':name,'id':'id_' + name, 'size':'50', 'rows':'4' });
	var d2 =  new Element('div', {  'class':'sdesc' });
	d2.update( desc );
	td1.update( d1 );
	d1.observe('change', extraChanged );
	td1.insert( d2 );
	row.update( td1 );

	var td2 = new Element('td', {  'class':'preis' });
	row.insert( td2 );

	table.insert(row);
	
}

var addGroupContainer = function( elem, sid, groupname, type ){
	//console.log( "-> addGroupContainer - " + sid );
	if( $(sid + '_cnt') != undefined ){
		//console.log( "-> addGroupContainer - undefined -  " + sid );	
		$(sid + '_cnt').remove();	
	}
	if(type=="2"){
		var elem_divh1 = new Element('div' , {  'id':sid, 'class':'h1_o' });		
		var elem_span_3 = new Element('span' , {  'class':'gname_o' });
	}else{
		var elem_divh1 = new Element('div' , {  'id':sid, 'class':'h1' });
		var elem_span_3 = new Element('span' , {  'class':'gname' });
	}
	var elem_span_1 = new Element('span' , {  'id':sid + '_e', 'class':'ex' });
	elem_span_1.update('<img src="img/quardat_rot-1.png">');
	var elem_span_2 = new Element('span' , {  'id':sid + '_co', 'class':'ex' });
	elem_span_2.update('<img src="img/viereck_aktiv-1.png">');
	elem_span_3.update( groupname );
	elem_divh1.update( elem_span_1 );
	elem_divh1.insert( elem_span_2 );
	elem_divh1.insert( elem_span_3 );
	
	var elem_cnt = new Element('div' , {  'id':sid + '_cnt', 'class':'' });			
	var elem_cnthead1 = new Element('div' , {  'id':sid + '_cnth', 'class':'cnth' });			
	var elem_div_c = new Element('div' , {  'id':sid + '_c', 'class':'cont' });
	elem_cnt.insert( elem_cnthead1 );
	elem_cnt.insert( elem_div_c );
	$("seldetails").insert( elem_cnt );

	elem.insert( elem_divh1 );
//	$("seldetails").insert( elem_div_c );
	//elem.insert( elem_div_c );
}

var addResultContainer = function( elem, sid, groupname ){
	var elem_tr = new Element('tr');
	var elem_td_1 = new Element('td' , { 'class':'result_col1' });
	elem_tr.update( elem_td_1 );
	var elem_span_1 = new Element('span' , { 'id':'result_group_' + sid + '', 'class':'result_desc' });
	var elem_span_2 = new Element('span' , {  'id':sid + '_t', 'class':'result_name' });
	
	if( groupname != '' ){
		elem_span_1.update( '( ' + groupname + ' )');		
	}
	elem_td_1.update( elem_span_2 );
	elem_td_1.insert( '<br>' );
	elem_td_1.insert( elem_span_1 );
	
	var elem_td_2 = new Element('td' , { 'class':'result_col2' });
	elem_tr.insert( elem_td_2 );
	var elem_span_3 = new Element('span' , {  'id':sid + '_val', 'class':'result_preis' });
	elem_td_2.update( elem_span_3 );
	elem.insert( elem_tr,{position:'bottom'} );
}

var setTableHighlight = function( tableid, id ){
	//console.log( "setTableHighlight tableid: " + tableid + " / id: " + id );
	//console.log( "setTableHighlight id: " + id );
	
	if( groupmap.get( tableid ) ){
		groupmap.get( tableid ).vl.each(function(s, index) {
			if (s != undefined ) $( tableid + "_" + index).removeClassName('selected');
		});

		if ( tableid == 'rh'){
			var tmp = id.split('_');
			var group = tmp[0];
			var index = tmp[1];
		} else if (tableid == "ra") {
			setImage( id.split('_')[1] );
		}

		$( id ).addClassName('selected');
		resultlist.get( tableid ).val = $( id ).down('.name').innerHTML;		
	}
}


var setColorTableHighlight = function( tableid, id ){
	$( id ).addClassName('selected');
}


var sumAll = function(){
	//console.log("sumAll: " + selGrp );
	var sum = 0;
	groupmap.each( function(pair) {
		//sum = sum + parseInt((pair.value).vl[ groupindex.get( (pair.key) ) ].pr );		
		if( pair.value.dpg == 'yes'){
			if ( selGrp == 1 | selGrp == 0 ){
				var gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].p1;				
			}else if ( selGrp == 2 ){
				var gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].p2;					
			}else if ( selGrp == 3 ){
				var gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].p3;					
			}else if ( selGrp == 4 ){
				var gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].p4;					
			}else if ( selGrp == 5 ){
				var gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].p5;					
			}else if ( selGrp == 6 ){
				var gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].p6;					
			}else if ( selGrp == 7 ){
				var gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].p7;					
			}else if ( selGrp == 8 ){
				var gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].p8;					
			}else if ( selGrp == 9 ){
				var gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].p9;					
			}else if ( selGrp == 10 ){
				//console.log("##### 10 ");
				var gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].p10;					
			}else if ( selGrp == 11 ){
				//console.log("##### 11 ");
				var gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].p11;					
			}else if ( selGrp == 12 ){
				//console.log("##### 12 ");
				var gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].p12;					
			}else if ( selGrp == 13 ){
				//console.log("##### 13 ");
				var gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].p13;					
			}
		}else{
			var gpr = (pair.value).vl[ groupindex.get( (pair.key) ) ].pr;								
		}
		sum = sum + parseInt(gpr);
	});
	$( 'summe' ).innerHTML = "" + sum + ",00 &euro;";
}


var rowClicked = function( event ){
	var id = Event.element(event).up('tr').getAttribute('id');
	var dclass = Event.element(event).up('tr').readAttribute('class');
	var tmp = id.split('_');
	var group = tmp[0];
	var index = tmp[1];
	//console.log( "rc group->" + group + "/ index->" + index );
	//resultlist.get( group ).val = Event.element(event).up('tr').down('.name').innerHTML;
	
	var str = Event.element(event).up('tr').down('.name').innerHTML;
	resultlist.get( group ).val = str.replace(/\"/g,'');
	//resultlist.get( group ).val = str;
	//console.log( resultlist.get( group ).val );
	
	var out = {};
	out.val = Object.clone( resultlist );
	//out.type = actSte;
	//console.log('printData: ' + Object.toJSON( out ));
	
	
	setGroupDings_onclick( group, index, id, dclass );
	updateVals();
}


var setGroupDings = function( group, index, id, dclass ){
	//console.log("setGroupDings: " + index );
	if ( group == 'gr'){
		selGrp = index + 1;
	}
	setTableHighlight( group, id );
	groupindex.set( group, index );
	
	if ( group == 'ra'){
		gr_class = groupmap.get( group ).vl[ index ].dc;
		hideRhRows();
		hideFARows();
		var setid = showRhRows( dclass, 'rh');
		groupindex.set( 'rh', setid.split('_')[1] );
		var setid = showRhRows( dclass, 'fa');
		initColorObservation();
	}
}

var setGroupDings_onclick = function( group, index, id, dclass ){
	
	//console.log( "setGroupDings_onclick: class-> " + dclass + " / index -> " + index  + " / id -> " + id +" / group: " + group );
	
	//if ( group == 'gr') selGrp = 1 + parseInt( index );
	//console.dir(groupmap);
	if ( group == 'gr') {
		selGrp = 1 + parseInt( index );
		groupmap.each( function(pair) {
			//console.log(pair.value.id);
			if(pair.value.id != "gr"){
				var newid =null;
				var cc = 0;
				if( pair.value.dpg == 'yes'){
					
					if(pair.value.id == "ga"){
						//console.log( "selGrp " + selGrp );
					}
					pair.value.vl.each( function(arr) {
						if ( selGrp == 1 | selGrp == 0 ){
							var gpr = arr.p1;				
						}else{
							var gpr = arr["p"+selGrp ];					
						}
						if(pair.value.id == "ga"){
							//console.log( "gpr=" + gpr );
						}
						if( gpr == "0.00" |  gpr == "0" ){
							if( newid == null) newid = cc;
						} 
						cc=cc+1;
					});
				}
				//console.log( "setGroupDings_onclick: setid-> " + setid );
				//console.log( "setGroupDings_onclick: id-> " + pair.value.id + "_" + newid  );
				if( newid == null) newid = 0;
				groupindex.set( pair.value.id, newid );
				setTableHighlight( pair.value.id, pair.value.id + "_" + newid );				
			}
		});
		
	}
	//console.log( "setGroupDings_onclick -> " + selGrp );
	setTableHighlight( group, id );
	groupindex.set( group, index );
	
	if ( group == 'ra'){
		if ( selectedRA != index ){
			selectedRA = index;
			gr_class = groupmap.get( group ).vl[ index ].dc;
			hideRhRows();
			hideFARows();
			var setid = showRhRows( dclass, 'rh');
			groupindex.set( 'rh', setid.split('_')[1] );
			setTableHighlight( 'rh', setid);
			var setid = showRhRows( dclass, 'fa');
			setTableHighlight( 'fa', setid);
			initColorObservation();
		}
	}
}

var setDefaultRow = function(){
}

var hideRhRows = function(){
	var elem_rows = $$('#rh_c tr');
	elem_rows.each( function( item ) {
		item.hide();
	} );
}

var hideFARows = function(){
	var elem_rows = $$('#fa_c tr');
	elem_rows.each( function( item ) {
		resetColorObservation( item );
		item.hide();
	} );
}


var showRhRows = function( dclass, type ){
	
	var elem_rows = $$('#' + type + '_c .' + dclass);
	var id;
	elem_rows.each( function( item ) {
		item.show();
		initColorObservation( item );
		if( id == null) id = item.readAttribute('id');			
	} );
	return id;
}



var setImage = function( index ){
	//alert('setimage');
	var p = groupmap.get('ra').vl[index].lk ;
	if( p == undefined ) p = "bike_blank.jpg";
	//console.log("setImage: " + p);
	$('bikeimage').setAttribute('src', 'bimg/' + p );
/*
	if( groupmap.get('ra').vl[index].lk2 ){
		$('bi_lnks').innerHTML = "<span id='img_0'>1</span> - <span id='img_1'>2</span>";
		$('img_0').observe('click', function(){ openImage( index, 0 ) } );	
		$('img_1').observe('click', function(){ openImage( index, 1 ) } );	
	} else {
		$('bi_lnks').innerHTML = "";
	}
	*/
}

/*
var openImage = function ( index, slot ){
	imgslot = slot;
	//alert( index + " - " + slot + " - " + groupmap.get('ra').vl[index].lk2 );
	if( slot == 0) $('bikeimage').setAttribute('src', 'bimg/' + groupmap.get('ra').vl[index].lk );
	if( slot == 1) $('bikeimage').setAttribute('src', 'bimg/' + groupmap.get('ra').vl[index].lk2 );	
}*/


var extraChanged = function( event ){
	var id = Event.element(event).up('tr').getAttribute('id');
	var tmp = id.split('_');
	var group = tmp[0];
	var index = tmp[1];
	$( '' + id + "_t").innerHTML = $('id_' + id ).getValue();
}

var lacktyp_action = "";
var lacktyp_action_desc = "";

var initColorObservation = function( item ){
	if ( item != undefined ){
		
		if ( $( item.down( 'div.sdesc' ).down('input#colorSelectButton_m') ) != null ){
			lightbox.prototype.initializeButton( $( item.down( 'div.sdesc' ).down('input#colorSelectButton_m') ), 'ral_table.php' );			
		}
		if ( $( item.down( 'div.sdesc' ).down('input#colorSelectButton_g') ) != null ){
			lightbox.prototype.initializeButton( $( item.down( 'div.sdesc' ).down('input#colorSelectButton_g') ), 'ral_table.php' );			
		}
		if ( $( item.down( 'div.sdesc' ).down('input#colorSelectButton_t') ) != null ){
			lightbox.prototype.initializeButton( $( item.down( 'div.sdesc' ).down('input#colorSelectButton_t') ), 'ral_table.php' );			
		}
		
	}
}

var resetColorObservation = function( item ){
	if ( item != undefined ){
		
		if ( $( item.down( 'div.sdesc' ).down('input#colorSelectButton_m') ) != null ){
			lightbox.prototype.killObservers( $( item.down( 'div.sdesc' ).down('input#colorSelectButton_m') ) );			
		}
		if ( $( item.down( 'div.sdesc' ).down('input#colorSelectButton_g') ) != null ){
			lightbox.prototype.killObservers( $( item.down( 'div.sdesc' ).down('input#colorSelectButton_g') ) );			
		}
		if ( $( item.down( 'div.sdesc' ).down('input#colorSelectButton_t') ) != null ){
			lightbox.prototype.killObservers( $( item.down( 'div.sdesc' ).down('input#colorSelectButton_t') ) );			
		}
		
	}
}

var initColorSelect = function( lt, lt_desc ){

	lacktyp_action = lt;
	lacktyp_action_desc = lt_desc;
	
	var elem_colors = $$('.colorSelect');
	elem_colors.each( function( item ) {
		item.observe('click', colorClicked );
	} );
}

var colorClicked = function( event ){
	if (Prototype.Browser.IE){
		var id = Event.element(event).next('td').down('strong').innerHTML;			
	} else {
		if (Event.element(event).up('td') != undefined ){
			var id = Event.element(event).up('td').next('td').down('strong').innerHTML;				
		}
	}
	var lacktyp = "";

	if ( id != null ){
		if ( lacktyp_action == 'colorSelectButton_m'){
			lacktyp = "Matt";
			//lacktyp_action_desc.innerHTML = lacktyp + ": " +  id;
			lacktyp_action_desc.innerHTML =  id;
		}
		if ( lacktyp_action == 'colorSelectButton_g'){
			lacktyp = "Gl&auml;nzend";
			//lacktyp_action_desc.innerHTML = lacktyp + ": " + id + "";
			lacktyp_action_desc.innerHTML =  id;
		}
		if ( lacktyp_action == 'colorSelectButton_t'){
			lacktyp = "Metallic";
			//lacktyp_action_desc.innerHTML = lacktyp + ": " + id;
			lacktyp_action_desc.innerHTML =  id;
		}
		resultlist.get( 'fa' ).val = lacktyp + ": " +  id;
		//console.log("color: " + resultlist.get( 'fa' ).val);
		lightbox.prototype.deactivate();
		updateVals();		
	}
}

var closeLighbox = function(){
	lightbox.prototype.deactivate();
}


var colorTypeClicked = function( event ){
	var id = Event.element(event).getAttribute('value');	
	colorType = id;
}


var getURLParam = function(strParamName){
  var strReturn = "";
  var strHref = window.location.href;
  if ( strHref.indexOf("?") > -1 ){
    var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
    var aQueryString = strQueryString.split("&");
    for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
      if ( aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1 ){
        var aParam = aQueryString[iParam].split("=");
        strReturn = aParam[1];
        break;
      }
    }
  }
  return unescape(strReturn);
}


// Taken from lightbox implementation found at http://www.huddletogether.com/projects/lightbox/
function getScroll(){
	var yPos;
	if (self.pageYOffset) {
		yPos = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){
		yPos = document.documentElement.scrollTop; 
	} else if (document.body) {
		yPos = document.body.scrollTop;
	}
	return yPos;
}

function openModalWindow( id ) {
        var div = $( id );
        var bgDiv = $('modalBackgroundDiv');

        var docDim = Element.getDimensions(document.body);
        var wDim = getBrowserWindowSize();
        var dDim = Element.getDimensions(div);
        if (docDim.height > wDim.height) {
            wDim.height = docDim.height;
        }

        bgDiv.style.width = wDim.width + 'px';
        bgDiv.style.height = wDim.height + 'px';

        Element.show(div);
        Element.show(bgDiv);
}

function closeModalWindow( id ) {
    Element.hide( id );
    Element.hide('modalBackgroundDiv');
}

function getBrowserWindowSize() {
    var winW = 630, winH = 460;

    if (parseInt(navigator.appVersion)>3) {
        if (navigator.appName=="Netscape") {
            winW = window.innerWidth;
            winH = window.innerHeight;
        }
        if (navigator.appName.indexOf("Microsoft")!=-1) {
            winW = document.body.offsetWidth;
            winH = document.body.offsetHeight;
        }
    }

    var rval = {
        width: winW,
        height: winH
    };

    return rval;
}
