var s = '(S)';
var w = '(W)';
var reqMatrix = {
	'shortcut' : {		    
		'id' :				['NL', 'PL', 'CV', 'SG', 'DL', 'LT', 'SN', 'EZ', 'JD', 'GD', 'AL', 'SM', 'FS', 'AM', 'AW', 'SZ', 'AZ', 'SH', 'AS', 'PI', 'AD', 'RD', 'QR', 'MD' ],
		'ROBY CLUB' :		['x', 'x', '' , '' , 'x', 'x', 'x', 'x', '' , '' , 'x', '' , 'x', 'x', 'x', 'x', 'x', 'x', 'x', '' , 'x', '' , 'x', '' ],
		'ROBY BABY' :		['x', '' , '' , '' , '' , '' , '' , '' , '' , '' , 'x', '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' ],
		'ROBS' :			    ['x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', '' , 'x', 'x'],
		'Entertainment' :	['x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', '' , 'x', 'x'],
		'Kiten' :			['' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , 'x', '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , 'x'],
		'Wellenreiten' :	    ['' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , 'x', '' , '' , '' ]
		},
	'Zielgruppe' : {		
		'title' :	'Ich verreise:',
		'Familie' :			['x', 'x', '' , '' , 'x', 'x', '' , 'x', '' , '' , 'x', '' , 'x', 'x', 'x', 'x', 'x', 'x', '' , '' , 'x', '' , '' , '' ],
		'Singles' :			['x', '' , 'x', 'x', 'x', 'x', 'x', '' , 'x', 'x', '' , 'x', '' , '' , '' ,  w , '' , '' , 'x', '' , '' , 'x', 'x', 'x'],
		'Langzeit' :	        [ w , '' , '' , '' , '' , '' , '' ,  w ,  w , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' ],
		'Paare' :	        ['x', '' , 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', '' , 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x']
		},
	'Sport' : {		
		'title' :	'Im Urlaub möchte ich aktiv sein mit:',
		'Golf' :	    			['x', '' , '' , '' , '' , 'x', 'x', '' , '' , 'x', '' , 'x', 'x',  s ,  s , '' , '' ,  s ,  s ,  s , 'x',  s , 'x', '' ],
		'Wandern' :			['' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , 'x', 'x', 'x', 'x', 'x', 'x', 'x',  s , '' , '' , '' , '' ],
		'Surfen' :			['' , 'x', '' , 'x', 'x', '' , '' , 'x', 'x', '' , 'x', 'x',  s , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , 'x'],
		'Segeln' :			[ s , 'x', 'x', 'x', 'x', 'x', '' , 'x', 'x', '' , 'x', 'x',  s , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , 'x'],
		'Tennis' :			['x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', '' , '' , 'x', 'x', 'x', 'x', '' , 'x', '' ],
		'Biken' :			['' , '' , 'x', 'x', 'x', 'x', 'x', '' , '' , 'x', 'x', '' ,  s ,  s ,  s ,  s , '' ,  s ,  s ,  s , '' , '' , 'x', '' ],
		'Tauchen' :			['' , '' , 'x', 'x', '' , '' , 'x', '' , 'x', '' , 'x', 'x',  s , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , 'x'],
		'Reiten' :			[   , 'x', '' , '' , '' , '' , 'x', '' , '' , 'x', '' , '' , 'x',  s , 'x', '' , '' , 'x',  s ,    , 'x', '' , '' , '' ],
		'Beach-Volleyball' :	[ s , 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x',  s ,  s ,  s , '' , '' , '' , '' , '' , 'x', '' , 'x', 'x'],
		'Bogensport' :		[ s , '' , 'x', 'x', 'x', 'x', '' , '' , '' , 'x', 'x', '' ,  s , '' , 'x', '' , '' , '' , '' , '' , '' , '' , '' , '' ],
		'Ski/Snowboard' :	['' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' ,  w , '' ,  w , 'x ', w ,  w ,  w , '' , '' , '' , '' ],
		'Ski Langlauf' :		['' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' ,  w , '' , '' , 'x',  w ,  w ,  w , '' , '' , '' , '' ],
		'Fußball' :			['x', 'x', 'x', '' , 'x', 'x', 'x', 'x', 'x ','x', 'x', '' , 'x',  s , 'x', '' , '' ,  s ,  s , '' , 'x', '' , 'x', '' ],
		'Wasserski' :		['' , '' , 'x', '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' , '' ],
		'Nordic Walking' :	['' , '' , '' , '' , '' , '' , 'x', '' , '' , 'x', 'x', '' ,  s , 'x', 'x', 'x', '' , 'x', 'x', 'x', 'x', '' , '' , '' ]
		},
	'Freizeit' : {		
		'title' :	'Ich erwarte folgendes Angebot:',
		'Internet*' :		['x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', '' , 'x', 'x'],
		'W-Lan*' :			['x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', '' , 'x', 'x'],
		'WellFit®*' :		['x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', '' , 'x', 'x'],
		'ROBINSONADEN*' :	[ s , 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', '' , '' , '' , '' , '' , '' , '' , 'x', 'x', 'x', '' ],
		'Atelier*' :			['x', '' , '' , '' , 'x', 'x', 'x', 'x', 'x', 'x', 'x', '' , 'x', 'x', 'x',  s , '' , '' , '' , '' , 'x', '' , 'x', 'x'],
		'All inclusive*' :	['' , 'x', 'x', 'x', '' , '' , '' , 'x', '' , 'x', 'x', '' , '' , '' , 'x', '' , '' , '' , '' , '' , '' , '' , '' , '' ]
	}
}


var cfSelection = [];
var reqMatrixElements = [];

// mouse over array
var cfTxt = {
	'az' : ['Club Alpenrose Zürs','Zürs am Arlberg','Österreich'],
	'ad' : ['Club Agadir','Agadir','Marokko'],
	'am' : ['Club Amadé','Kleinarl\nSalzburger Land','Österreich'],
	'aw' : ['Club Ampflwang','Hausrückwald','Östereich'],
	'al' : ['Club Apulia','Apulien','Italien'],
	'as' : ['Club Arosa','Arosa\nGraubünden','Schweiz'],
	'sn' : ['Club Cala Serena','Mallorca','Spanien'],
	'cv' : ['Club Çamyuva','Side','Türkei'],
	'dl' : ['Club Daidalos','Kos','Griechenland'],
	'ez' : ['Club Esquinzo Playa','Fuerteventura','Spanien'],
	'fs' : ['Club Fleesensee','Mecklenburg-\nVorpommern','Deutschland'],
	'jd' : ['Club Jandia Playa','Fuerteventura','Spanien'],
	'lt' : ['Club Lyttos Beach','Kreta','Griechenland'],
	'nl' : ['Club Nobilis','Belek','Türkei'],
	'pl' : ['Club Pamfilya','Side','Türkei'],
	'pi' : ['Club Piz Buin','Klosters\nGraubünden','Schweiz'],
	'rd' : ['Riad Zakaria','Marrakesch','Marokko'],
	'gd' : ['Club Playa Granada','Andalusien','Spanien'],
	'qr' : ['Club Quinta da Ria','Algarve','Portugal'],
	'sz' : ['Club Schlanitzen','Nassfeld Kärnten','Österreich'],
	'sh' : ['Club Schweizerhof','Vulpera Engadin','Schweiz'],
	'sm' : ['Club Soma Bay','Soma Bay<br>Rotes Meer','Ägypten'],
	'md' : ['Club Maldives','','Malediven'],
	'sg' : ['Club Sarigerme Park','Sarigerme','Türkei']
};

var linkMapping = {
	'az' : 374,
	'ad' : 263,
	'am' : 398,
	'aw' : 456,
	'al' : 525,
	'as' : 571,
	'sn' : 626,
	'cv' : 1145,
	'dl' : 691,
	'ez' : 726,
	'fs' : 787,
	'jd' : 867,
	'lt' : 957,
	'nl' : 995,
	'pl' : 296,
	'pi' : 1058,
	'rd' : 2071,
	'gd' : 1112,
	'qr' : 1178,
	'sz' : 1241,
	'sh' : 1291,
	'sm' : 1354,
	'sg' : 927,
	'md' : 2036
};

var matrixHTML = '';
var cols = 5;
var rows = 5;
var cfMatrix = [
				'az','ad','am','aw','al',
				'as','sn','cv','dl','ez',
				'sg','fs',  0 ,'jd','md',
				'rd','lt','nl','pl','pi',
				'gd','qr','sz','sh','sm'];


// form functionality
function chkBoxToggle(id,onoff){
	var chkBox = document.getElementById('cfFormChkBox_'+id);
	var chkImg = document.getElementById('cfFormCheckbox_'+id);
	if(!onoff){
		chkBox.checked=false;
		chkImg.src = 'fileadmin/rob/pics/cf/off.gif';
	} else {
		chkBox.checked=true;
		chkImg.src = 'fileadmin/rob/pics/cf/on.gif';
	}
}

function resetChkBoxes(){
	var chkBoxCt = 0; 
	for(var formElement in reqMatrix){
		if(formElement!='shortcut'){
			var fe = reqMatrix[formElement];
			for(var re in reqMatrix[formElement]){
				if(re!='title'){
					document.getElementById('cfFormCheckbox_'+chkBoxCt).checked=false;
					document.getElementById('cfFormCheckbox_'+chkBoxCt).src='fileadmin/rob/pics/cf/off.gif';
					chkBoxCt++;
				}
			}
		}
	}
	var clubid = reqMatrix['shortcut']['id'];
	for(i=0;i<clubid.length;i++){
		showHideImg(clubid[i],false) // show image
	}
	cfSelection = [];
	dimSelections([' '])
	cfSave();
 }

function getCheckboxIdFromMatrixElement(me){ // returns checkbox id from checkbox form
	var chkBoxId = 0;
	for(var formElement in reqMatrix){
		if(formElement!='shortcut'){
			for(var re in reqMatrix[formElement]){
				if(re!='title'){
					if(re==me){
						return chkBoxId;
					} else {
						chkBoxId++;
					}
				}
			}
		}
	}
}

function filterClubs(mx){
	var selectedClubs = reqMatrix['shortcut']['id'];
	for(i=0;i<mx.length;i++){
		var mx1 = mx[i].split('|')[0];
		var mx2 = mx[i].split('|')[1];
		var rq = reqMatrix[mx1][mx2];
		for(j=0;j<rq.length;j++){
			if(rq[j]==''){
				selectedClubs = removeRecord(selectedClubs,reqMatrix['shortcut']['id'][j])
			}
		}
	}
	return selectedClubs;
}

function showHideImg(shortcut, onoff){
	shortcut = shortcut.toLowerCase();
	var imgLink = 'cf_'+shortcut+'_lnk';
	var imgOpaque = 'cf_'+shortcut+'_hide';
	if(onoff){
		document.getElementById(imgLink).style.width='0';
		document.getElementById(imgLink).style.height='0';
		document.getElementById(imgOpaque).style.width='98px';
		document.getElementById(imgOpaque).style.height='66px'
	} else {
		document.getElementById(imgLink).style.width='98px';
		document.getElementById(imgLink).style.height='66px';
		document.getElementById(imgOpaque).style.width='0';
		document.getElementById(imgOpaque).style.height='0'
	}
}

function dimSelections(idArray){
	var rME = reqMatrixElements; // array of form elements to check
	var idAStr = getArrayAsString(idArray); // array of elements to hide
	for(j=0;j<rME.length;j++){
		var chkboxid = getCheckboxIdFromMatrixElement(rME[j]);
		var hideElementId = 'cfFormDimTxt_'+chkboxid;   // default
		var showElementId = 'cfFormLink_'+chkboxid;     // show form elements
		if(idAStr.indexOf(rME[j])!=-1){ // something to dim
			hideElementId = 'cfFormLink_'+chkboxid;
			showElementId = 'cfFormDimTxt_'+chkboxid;
		}
		document.getElementById(hideElementId).style.display = 'none';
		document.getElementById(showElementId).style.display = 'inline';
	}
}

function getArrayMatches(arr1, arr2){
	var hits = 0;
	for(i=1;i<arr1.length;i++){
		if(arr1[i] != '' && arr2[i] != ''){
			hits++;
		}
	}
	return hits;
}

function getArrayMerged(arr1, arr2){
	var matchArr = [];
	if(arr1.length==0){arr1 = arr2}	// on the first loop arr1 is empty
	for(i=0;i<arr1.length;i++){
		if(arr1[i] != '' && arr2[i] != ''){
			matchArr.push('x');
		} else {
			matchArr.push('');
		}
	}
	return matchArr;
}

function showHideCheckboxes(mx,onoff){
	var cfSArr = []; 			// will be a merged array of all selection's arrays
	var dimChkBoxArr = [' ']; 	// will be an array of all checkboxes to be dimmed
	if(cfSelection.length>0){ 					// something selected?
		for(a=0;a<cfSelection.length;a++){ 		// merging all selection arrays to least common denominator
			var cfS = cfSelection[a].split('|');
			cfS = reqMatrix[cfS[0]][cfS[1]];
			cfSArr = getArrayMerged(cfSArr,cfS);
		}
		for(var formElement in reqMatrix){			// loop to compare matrices
			if(formElement!='shortcut'){
				for(var re in reqMatrix[formElement]){
					if(re!='title'){
						if(getArrayMatches(cfSArr, reqMatrix[formElement][re])==0){ // if arrays don't match remember checkbox to dim
							dimChkBoxArr.push(re)
						}
					}
				}
			}
		}
	}
	dimSelections(dimChkBoxArr);	
}

function selectClubs(cfSelection){
	var selectedClubs = filterClubs(cfSelection);
	var sc = getArrayAsString(selectedClubs);
	var clubid = reqMatrix['shortcut']['id'];
	for(i=0;i<clubid.length;i++){
		if(sc.indexOf(clubid[i])==-1){
			showHideImg(clubid[i],true) // dim image
		} else {
			showHideImg(clubid[i],false) // show image
		}
	}
}

function checkSelection(id,mx){
	if(getArrayAsString(cfSelection).indexOf(mx)==-1){ // current selection was not checked yet
		cfSelection.push(mx); 							// remenber selection
		chkBoxToggle(id,true);							// check checkbox
		showHideCheckboxes(mx,true);					// hide checkboxes to avoid no results
	} else {
		cfSelection = removeRecord(cfSelection,mx);		// forget selection
		chkBoxToggle(id,false)							// uncheck checkbox
		showHideCheckboxes(mx,false);					// show checkboxes again
	}
	selectClubs(cfSelection)
	cfSave(); // remember cf activity and selection}
}

function removeRecord(arrayName,recordName){
	var remArray = [];
	for(ir=0;ir<arrayName.length;ir++){
		if(arrayName[ir]!=recordName){
			remArray.push(arrayName[ir]);
		}
	}
	return remArray;
}

function getArrayAsString(arrayName){
	return arrayName.join('_');
}

function imgPreview(which){
	document.getElementById('cfFormPreview').style.background = 'url(fileadmin/rob/pics/cf/'+which+'_big.jpg) 0 -15px';
}

// bulid image matrix
function drawImageMatrix(){
	var count = 0;
	for (j=0;j<rows;j++){
		matrixHTML += '<div class="cfRow">';
		for (i=0;i<cols;i++){
			m = cfMatrix[count];
			if(m!=0){
				matrixHTML += '<div class="cfClub" id="cf_'+m+'"><span class="cfHide" id="cf_'+m+'_'+'hide"></span>';
				matrixHTML += '<a href="javascript:window.location.href=\'index.php?id='+linkMapping[m]+'\'" target="_top" id="cf_'+m+'_'+'lnk" class="cfClubLnk" onmouseover="document.getElementById(\'cfClubText_'+m+'\').style.display=\'block\';imgPreview(\''+m+'\')" onmouseout="document.getElementById(\'cfClubText_'+m+'\').style.display=\'none\';imgPreview(\'none\')" onclick="this.blur();">';
				matrixHTML += '<div class="cfClubText" id="cfClubText_'+m+'"><div class="cfClubName">'+cfTxt[m][0]+'</div><div class="cfClubRgn">'+cfTxt[m][1]+'</div><div>'+cfTxt[m][2]+'</div></div></a></div>';
			} else {
				matrixHTML += '<span class="cfClub"></span>';
			}
			count++
		}
		matrixHTML += '</div>';
	}
	$('#cfMatrixImages').html(matrixHTML)
}

// build checkbox form
function drawFormElements(){
	var chkBoxId = 0;
	var formHTML = '';
	for(var formElement in reqMatrix){
		if(formElement!='shortcut'){
			var fe = reqMatrix[formElement];
			formHTML += '<div class="cfFormElementHeader">'+fe['title']+'</div>';
			formHTML += '<div class="cfFormElementValues">';
			for(var re in reqMatrix[formElement]){
				if(re!='title'){
					formHTML += '<div class="cfFormElement'+((formElement=='Motivationstyp')?'Xtra':'')+'">';
					formHTML += '<a href="javascript:checkSelection('+chkBoxId+',\''+formElement+'|'+re+'\');" class="cfFormElementCheckLnk" id="cfFormLink_'+chkBoxId+'" onclick="this.blur()"><img src="fileadmin/rob/pics/cf/off.gif" class="cfFormChkBox" id="cfFormCheckbox_'+chkBoxId+'" />&nbsp;&nbsp;'+re+'</a>';
					formHTML += '<span class="cfFormElementDimTxt" id="cfFormDimTxt_'+chkBoxId+'" style="display:none;" title="Auswahl mit dieser Kombination nicht m&ouml;glich"><img src="fileadmin/rob/pics/cf/dimmed.gif" class="cfFormChkBox" id="cfFormCheckbox_'+chkBoxId+'" />&nbsp;&nbsp;&nbsp;'+re+'</span><input type="checkbox" class="cfFormChkBox" id="cfFormChkBox_'+chkBoxId+'" name="cfFormChkBox_'+chkBoxId+'" style="display:none" /></div>';
					reqMatrixElements[chkBoxId] = re;
					chkBoxId++;
				}
			}
			formHTML += '</div>';
		}
	}
	formHTML += '<div class="cfFormElementValues" id="cfFormResetBtn"><a href="javascript:resetChkBoxes()" class="cfFormElementCheckLnk" onclick="this.blur()">Einstellungen zurücksetzen <span class="cfBtnArrow">&raquo;</span></a></div>';
	$('#cfForm').html(formHTML)
}

function cfLoad(){
	var wn = top.window.name;
	var sel = [];
	if (wn.indexOf('clubfinder') == 0) {
		if (wn.split('clubfinder:')[1]) {
			sel = wn.split('clubfinder:')[1]
		}
	} else {
		sel = []
	}
	return sel;
}

function cfSave(){
	top.window.name = 'clubfinder:'+cfSelection;
}

function cfHTML(){
	var ret = '<div id="cfMainWrap"></div><iframe id="cfMainIframe" frameborder="0"></iframe>';
	ret += '<div id="cfMain">';
		ret += '<div id="cfCloseLink"><a href="javascript:cfHide()" title="Clubfinder minimieren">X</a></div>';
		ret += '<div id="cfLeft">';
			ret += '<div id="cfDescription">';
				ret += '<div class="mainHeadline">';
					ret += '<div class="introHeadline" id="introFindenSieIhrenWunschClub">Finden Sie Ihren Wunsch-Club</div>';
					ret += '<div id="cfHeadline"></div>';
				ret += '</div>';
				ret += '<div class="conCenterText">Urlaub so individuell wie Sie! Segeln, wandern - oder einfach nur die Seele baumeln lassen? In der rechten Spalte haben Sie die Möglichkeit, die für Sie wichtigsten Kritierieneinfach auszuwählen. Wir zeigen Ihnen dann auf Grund Ihrer Wahl, Ihren ganz persönlichen ROBINSON CLUB.</div>';
			ret += '</div>';
			ret += '<div id="cfMatrix">';
				ret += '<div id="cfMatrixHeadline">Ihre Wunsch-Club Auswahl</div>';
				ret += '<div id="cfMatrixImages"></div>';
			ret += '</div>';
		ret += '</div>';
		ret += '<div id="cfRight">';
			ret += '<div id="cfFormPreview"></div>';
			ret += '<div id="cfFormHeader">Finden Sie Ihren Wunsch-Club</div>';
			ret += '<div id="cfForm"></div>';
		ret += '</div>';
	ret += '</div>';
	return ret;
}

function cfBuild(){
	$('body').prepend(cfHTML());
	drawImageMatrix();
	drawFormElements();
	
	var cfMainWidth = $('#cfMain').width() + parseInt($('#cfMain').css('paddingLeft')) + parseInt($('#cfMain').css('paddingRight'));
	var cfMainHeight = $('#cfMain').height() + parseInt($('#cfMain').css('paddingTop')) + parseInt($('#cfMain').css('paddingBottom'));
	$('#cfMainWrap').css('width', cfMainWidth + 30);
	$('#cfMainWrap').css('height', cfMainHeight + 30);
	$('#cfMainIframe').css('width', cfMainWidth + 30);
	$('#cfMainIframe').css('height', cfMainHeight + 30);
	//1723
	$.get('index.php', {id:1911, type:100, color:cc, no_cache:1}, function(data) {
		$('#cfHeadline').html(data);
	});
	
	cfSelection = cfLoad();
	if(cfSelection.length > 0){
		if(cfSelection.length > 1){
			cfSelection = cfSelection.split(',');
		} else {
			cfSelection.push(cfSelection);
		}
		for(s=0;s<cfSelection.length;s++){ 
			var id = getCheckboxIdFromMatrixElement(cfSelection[s].split('|')[1]);
			chkBoxToggle(id,true);
			showHideCheckboxes(cfSelection[s],true);
		}
		selectClubs(cfSelection);
	}
}

function cfShow() {
	$('#cfMain').show(500);
	$('#cfMainWrap').show(500);
	$('#cfMainIframe').show(500, function() {
		if(document.all) {
			$('#cfMainIframe').css('opacity', '0.80');
		}
	});
}

function cfHide() {
	$('#cfMain').hide(500);
	$('#cfMainWrap').hide(500);
	$('#cfMainIframe').hide(500);
}