var deck;
var decksize;
var deckhash;
var decktitle;
var cardlist;
var cardlist_sideboard;
var library;
var hand_size;

function add_random_card() {
	if(library.length <= 0) {
		alert(lng__keine_weiteren);
		return false;
	}
	
	var list = document.getElementById('starthand_karten');
	var i = Math.floor(Math.random()*library.length);
	var card = library[i];
	library.splice(i, 1); //remove card
	
	var div = document.createElement('div');
	var a = document.createElement('a');
	a.href = 'http://www.mtg-forum.de/autocard.php?lng='+encodeURIComponent(nk_cardlink_lng)+'&karte='+encodeURIComponent(card);
	a.target = '_blank';
	a.appendChild(document.createTextNode(card));
	setupCardLinkEvents(a);
	div.appendChild(a);
	list.appendChild(div);

	return true;
}

function draw_cards() {
	var list = document.getElementById('starthand_karten');
	while(list.hasChildNodes()) list.removeChild(list.firstChild);

	library = [];
	for(var i = 0; i < deck.length; i++) {
		for(var j = deck[i][1]; j > 0; j--)
			library.push(deck[i][0]);
	}
	
	for(var i = 0; i < hand_size; i++) {
		if(!add_random_card())
			break;
	} 
}

function mulligan() {
	hand_size--;

	if(hand_size > 0)
		draw_cards();
	else 
		alert('Kein weiterer Mulligan möglich!');
}

function generate_hand() {
	hand_size = 7;
	draw_cards();
}

function findSWF(movieName) {
	  if (navigator.appName.indexOf("Microsoft")!= -1) {
	    return window["ie_" + movieName];
	  } else {
	    return document[movieName];
	  }
}

function ccs_filter(button, colors_url) {
	var chart = findSWF("chart");		
	chart.reload(colors_url+'&show='+encodeURIComponent(document.getElementById('ccs_filter_type').value));	
}

var type_details_toggle_on = false;
function type_details_toggle(button, types_url) {
	var chart = findSWF("chart_2");
	
	type_details_toggle_on = !type_details_toggle_on;
	if(type_details_toggle_on) {
		chart.reload(types_url+'&detail=1');
		button.value = lng__weniger_details;
	} else {
		chart.reload(types_url);
		button.value = lng__mehr_details;
	}			
}

var colors_colorless_toggle_on = false;
function colors_colorless_toggle(button, colors_url) {
	var chart = findSWF("chart_3");
	
	colors_colorless_toggle_on = !colors_colorless_toggle_on;
	if(colors_colorless_toggle_on) {
		chart.reload(colors_url+'&colorless=1');
		button.value = lng__farblos_verstecken;
	} else {
		chart.reload(colors_url);
		button.value = lng__farblos_zeigen;
	}			
}

var current_highlight;
function highlightRows(className) {
	var highlighted = YAHOO.util.Dom.getElementsByClassName('highlight', 'tr', 'cards');
	for(var i = 0; i < highlighted.length; i++) {
		YAHOO.util.Dom.removeClass(highlighted[i], 'highlight');
	}

	if(current_highlight != className) {
		current_highlight = className;
		
		var to_highlight = YAHOO.util.Dom.getElementsByClassName(className, 'tr', 'cards');
		for(var i = 0; i < to_highlight.length; i++) {
			YAHOO.util.Dom.addClass(to_highlight[i], 'highlight');
		}
	} else {
		current_highlight = null;
	}
}

//this is really ugly, but we need to post data to an iframe somehow...
function initSaveFrame() {	
	var form = document.createElement('form');
	form.method = 'post';
	form.target = 'saveFrame';
	form.action = 'http://www.mtg-forum.de/index.php?autocom=deck_save&hash='+deckhash;
	form.style.display = 'none';
	document.body.appendChild(form);
	
	var title = document.createElement('input');
	title.name = 'title';
	title.type = 'hidden';
	title.value = decktitle;
	form.appendChild(title);
	
	var deck_c = document.createElement('textarea');
	deck_c.name = 'cardlist';
	deck_c.value = cardlist;
	form.appendChild(deck_c);
	
	var deck_s = document.createElement('textarea');
	deck_s.name = 'cardlist_sideboard';
	deck_s.value = cardlist_sideboard;
	form.appendChild(deck_s);
	
	form.submit();
	document.body.removeChild(form);
}

function makeOption(value, text) {
	var option = document.createElement('option');
	option.value = value;
	option.appendChild(document.createTextNode(text));
	return option;
}

function setupCodeLayout(e) {
	if(e.value == '') {
		document.getElementById('code_layout_div').style.display = 'none';
	} else {
		document.getElementById('code_layout_div').style.display = 'inline';
		
		while(document.deck.code_layout.childNodes.length > 1)
			document.deck.code_layout.removeChild(document.deck.code_layout.lastChild);
		
		if(e.value == 'bb') {
			document.deck.code_layout.appendChild(makeOption('decktag', 'Nur [deck]-Tag hinzufügen'));
			document.deck.code_layout.appendChild(makeOption('cardlinks', 'Kartennamen verlinken'));
		} else if(e.value == 'html') {
			document.deck.code_layout.appendChild(makeOption('', ''));
		}
	}		
}

function updateCodeType(e) {
	var state = e.value.substr(0, 5) == 'html_';
	document.getElementById('code_html_nl_label').style.display = state? 'inline' : 'none';
}

//function nk_fact(x, max) {
//	if(x <= max) return 1;
//	
//	return x * nk_fact(x - 1, max);
//}
//
//function prob_single(c, a) {
//	return 1 - nk_fact(decksize - a, decksize - a - c)/nk_fact(decksize, decksize - c);
//}
//
//function prob_calc() {
//	var cards = [];
//	var select = document.getElementById('prob_cards');
//	for(var i = 0; i < select.length; i++) {
//		if(select.options[i].selected) {
//			cards.push(deck[select.options[i].value]);
//		}
//	}
//
//	var url = '<?='http://'. $_SERVER['SERVER_NAME'] .'/get_data.php?lng='.urlencode($LNG).'&type=prob'?>&data=';
//
//	for(var c = 7; c <= 7 + parseInt(document.getElementById('prob_turn').value); c++) {
//		var probability = 1;
//		for(var i = 0; i < cards.length; i++) {
//			probability *= prob_single(cards[i][1], c);
//		}
//
//		url += (c+":"+probability+";");
//	}
//
//	var chart = findSWF("prob_chart");
//	if(chart) {
//		chart.reload(url);
//	} else {
//		var so = new SWFObject("open-flash-chart.swf", "prob_chart", "99%", "99%", "9", "#FFFFFF");
//		so.addVariable("data", encodeURIComponent(url));
//		so.addParam("wmode", "transparent");
//		so.addParam("allowScriptAccess", "sameDomain");
//		so.write("prob_result");
//	}
//}