/*---------------------------------------------------+
| WarManagement v2.2		© 2008 clanmods.eu
+----------------------------------------------------+
| email: blacklight@clanmods.eu (bLack)
| web: http://www.clanmods.eu
+----------------------------------------------------+
| Released under the terms & conditions of v2 of the
| GNU General Public License. 
| For details visit http://gnu.org
+----------------------------------------------------+
| Javascript-File - Main-Functions
+----------------------------------------------------*/

function wm_show_hide(img, id) {
	new Effect.toggle(id, "slide", {duration: 2.0});
	var current_status = img.src.indexOf('_on') == -1 ? "_on" : "_off";
	var new_status = current_status == "_on" ? "_off" : "_on";
	img.src = img.src.replace(new_status, current_status);		
}

function game_maps() {
	var war_game = document.getElementsByName("war_game")[0];
	var war_map1 = document.getElementsByName("war_map1")[0];
	var war_map2 = document.getElementsByName("war_map2")[0];
	var choice = 	war_game.options[war_game.selectedIndex].value;
	var dft_msg = 	locale_war_21;
	set_game_maps(war_map1, choice, map_options(false), map_options(true), false, dft_msg);
	set_game_maps(war_map2, choice, map_options(false), map_options(true), true, dft_msg);
}

function set_game_maps(field, choice, options, options_id, sec, def) {
	//INIT
	if(!options[choice]) return; if(!options_id[choice]) return;
	if(!def) def = ''; if(!sec) sec = false;
	field.options.length = 0; if(!def) field.selectedIndex = 0;
	
	//CREATE OPTIONS
	if(options[choice].length != 0) {
		if(choice != "dft" && sec != true) {
			field.options[0] = new Option(locale_war_01, "", false, true);
		} else if(choice != "dft" && sec == true) {
			field.options[0] = new Option(locale_war_02, "", false, true);
		}
		for(var i = 0; i < options[choice].length; i++){
			field.options[(choice != "dft" ? i + 1 : i)] = new Option(options[choice][i], options_id[choice][i], false, (def == options[choice][i]) );
		}
	} else {
		field.options['0'] = new Option(locale_war_03, "", false, true);
	}
}

function insert_player_fields(count, id) {
	var tbody = document.getElementById(id);
	while(tbody.firstChild) { tbody.removeChild(tbody.firstChild);}

	for(var i = 1;i <= count;i++) {
		var options = player_options();
		var	table_row = Builder.node("tr",[
			Builder.node("td", "#" + i),
				Builder.node("td",[
					Builder.node("select", { id: (id == "player_fields" ? "sel_player_"+i : "sel_substitute_"+i), name: (id == "player_fields" ? "war_players_home[]" : "war_substitutes_home[]"), style: "width:180px", className: "textbox"})
				]),
				Builder.node("td",[
					Builder.node("input", { type: "text", name: (id == "player_fields" ? "war_players_opponent[]" : "war_substitutes_opponent[]"), style: "width:180px", className: "textbox"})
				]),
		]);	
		$(id).appendChild(table_row);
		for(var j = 0; j < options.length;j++) {
			$(id == "player_fields" ? "sel_player_"+i : "sel_substitute_"+i).appendChild(options[j]);
		}
		$(id == "player_fields" ? "sel_player_"+i : "sel_substitute_"+i).selectedIndex = 0;
	}

}

function insert_gameserver_info(server_address, server_password){
	var war_server_address = document.getElementsByName("war_server_address")[0];
	var war_server_password = document.getElementsByName("war_server_pass")[0];

	war_server_address.value = server_address;
	war_server_password.value = server_password;
}

function check_maps(destination) {
	var img_path = "../../administration/clan/images/maps/";
	var img_maps = map_images();
	var war_game = document.getElementsByName("war_game")[0];
	var war_map1 = document.getElementsByName("war_map1")[0];
	var war_map2 = document.getElementsByName("war_map2")[0];
	var img_map1 = document.getElementById("img_map1");
	var img_map2 = document.getElementById("img_map2");
	var score_map1 = document.getElementById("score_map1");
	var score_map2 = document.getElementById("score_map2");
	var screen_map1 = document.getElementById("screen_map1");
	var screen_map2 = document.getElementById("screen_map2");
	var score_fields1 = new Array("war_score_a1", "war_score_a2", "war_score_b1", "war_score_b2", "war_screen1", "war_screen2");
	var score_fields2 = new Array("war_score_a3", "war_score_a4", "war_score_b3", "war_score_b4", "war_screen3", "war_screen4");
	
	if(destination == 1) {
		score_map1.innerHTML = war_map1.options[war_map1.selectedIndex].innerHTML;
		screen_map1.innerHTML = war_map1.options[war_map1.selectedIndex].innerHTML;
		for(var i = 0;i < score_fields1.length;i++) {
			document.getElementsByName(score_fields1[i])[0].disabled = war_map1.options[war_map1.selectedIndex].value == 0 ? true : false;
		}
		for(map_id in img_maps) {
			if(map_id == war_map1.options[war_map1.selectedIndex].value){
				if(img_maps[map_id] != '') {
					img_map1.src = img_path + img_maps[map_id];
				} else { 
				 	img_map1.src = img_path + "../no_mapimage.gif";
				}
			}
		}
		if(war_map1.options[war_map1.selectedIndex].value == 0) {
			img_map1.src = img_path + "../no_mapimage.gif";
		}
	} else if(destination == 2) {
		if(war_map2.options[war_map2.selectedIndex].value != "") {
			new Effect.Appear($("score_2nd"), {duration: 2.0});
			new Effect.Appear($("screen_2nd"), {duration: 2.0});
		} else {
			new Effect.Appear($("score_2nd"), {duration: 2.0});
			new Effect.Appear($("screen_2nd"), {duration: 2.0});
		}
		score_map2.innerHTML = war_map2.options[war_map2.selectedIndex].innerHTML;
		screen_map2.innerHTML = war_map2.options[war_map2.selectedIndex].innerHTML;
		for(var i = 0;i < score_fields2.length;i++) {
			document.getElementsByName(score_fields2[i])[0].disabled = war_map2.options[war_map2.selectedIndex].value == 0 ? true : false;
		}
		for(map_id in img_maps) {
			if(map_id == war_map2.options[war_map2.selectedIndex].value){
				if(img_maps[map_id] != '') {
					img_map2.src = img_path + img_maps[map_id];
				} else {
					img_map2.src = img_path + "../no_mapimage.gif";
				}
			}
		}
		if(war_map2.options[war_map2.selectedIndex].value == 0) {
			img_map2.src = img_path + "../no_mapimage.gif";
		}
	}
}

function check_fields() {
	var opponent_name = document.getElementsByName("war_opponent_name")[0];
	var opponent_prefix = document.getElementsByName("war_opponent_prefix")[0];
	var opponent_cperson = document.getElementsByName("war_opponent_cperson")[0];
	var war_game = document.getElementsByName("war_game")[0];
	var war_map1 = document.getElementsByName("war_map1")[0];
	var wartyp = document.getElementsByName("war_wartyp")[0];
	var error =	'';

	if(opponent_name.value == '') error += locale_war_05 + "\n";
//	if(opponent_prefix.value == '') error += locale_war_06 + "\n";
//	if(opponent_cperson.value == '') error += locale_war_07 + "\n";
	if(war_game.options[war_game.selectedIndex].value == 'dft') error += locale_war_08 + "\n";
	if(war_map1.value == 'default' || war_map1.value == '') error += locale_war_09 + "\n";
	if(wartyp.value == 'default' || wartyp.value == '') error += locale_war_20 + "\n";
	if(error != '') { alert(error);	return false;} 
	else return true;
}

function check_fields_gs() {
	var gameserver_name = document.getElementsByName("gs_name")[0];
	var gameserver_ip = document.getElementsByName("gs_ip")[0];
	var gameserver_port = document.getElementsByName("gs_port")[0];
	var gameserver_game = document.getElementsByName("gs_game")[0];
	var gameserver_pw = document.getElementsByName("gs_pw")[0];
	var error = 	'';

	if(gameserver_name.value == '') error += locale_war_10 + "\n";
	if(gameserver_ip.value == '') error += locale_war_11 + "\n";
	if(gameserver_port.value == '') error += locale_war_12 + "\n";
	if(gameserver_game.options[gameserver_game.selectedIndex].value == '') error += locale_war_13 + "\n";
	if(gameserver_pw.value == '') error += locale_war_14 + "\n";
	if(error != '') { alert(error);	return false; } 
	else return true;
}

function action_delete(who, msg) {
	switch(who) {
		default:	alert(locale_war_19); return false;										break;
		case "war": return confirm(locale_war_15 + " \"" + msg + "\" " + locale_war_16);	break;
		case "gs":	return confirm(locale_war_17 + " \"" + msg + "\" " + locale_war_18);	break;
	}
}

function toggle_disabled(radio, no) {
	if(radio && radio.value == "replace") {
		$("replace_" + no).disabled = false;
	} else {
		$("replace_" + no).disabled = true;
	}
}

function toggle_page(id) {
	if(id == "lw_nw") {
		if($("nextwars").style.display == "none") {
			new Effect.BlindUp($("lastwars"), {afterFinish: function(){ Effect.BlindDown($("nextwars"))} });
		} else {
			new Effect.BlindUp($("nextwars"), {afterFinish: function(){ Effect.BlindDown($("lastwars"))} });
		}
	} else if(id == "ws_css") {
		if($("war_settings_css").style.display == "none") {
			$("war_settings").hide(); $("war_settings_css").show();
		} else {
			$("war_settings_css").hide(); $("war_settings").show();
		}
	}
}

function autocompleter_add(opp_name, opp_prefix, opp_website, opp_cperson, opp_cperson_email) {
	var opponent_name = document.getElementsByName("war_opponent_name")[0];
	var opponent_prefix = document.getElementsByName("war_opponent_prefix")[0];
	var opponent_website = document.getElementsByName("war_opponent_website")[0];
	var opponent_cperson = document.getElementsByName("war_opponent_cperson")[0];
	var opponent_cperson_email = document.getElementsByName("war_opponent_cperson_email")[0];

//	opponent_name.value = opp_name;
	opponent_prefix.value = opp_prefix;
	opponent_website.value = opp_website;
	opponent_cperson.value = opp_cperson;
	opponent_cperson_email.value = opp_cperson_email;
}



/*-------------------------------------------------------------------------------+
| TABS IN TEXTAREA FOR STYLES-EDITOR
+--------------------------------------------------------------------------------+
| CODE BY PETER JS - http://blogs.pixeldepth.net/Peter/tabs-in-textareas-106.htm
+-------------------------------------------------------------------------------*/
var tab = {key: 9, string: "\t", nl2br: true, tosp: true, watching: {},	results: {},
	$: function(id){
		return document.getElementById(id);
	},
	watch: function(obj){
		if(obj && this.$(obj)){
			this.watching["_" + obj] = this.$(obj);
			this.addEvent(this.$(obj), "keydown", function(evt){
				var sct = tab.$(obj).scrollTop;
				var l = tab.$(obj).value.length;
				var evt = (evt)? evt : ((window.event)? event : null);				
				if(evt){
					var elem = (evt.target)? evt.target : ((evt.srcElement)? evt.srcElement : null);
					if(elem){
						var char_code = (evt.charCode)? evt.charCode : ((evt.which)? evt.which : evt.keyCode);
						if(char_code == tab.key){
							if(tab.$(obj).attachEvent){
								var range = document.selection.createRange();
								range.text = tab.string;
								range.moveStart("character", - 1);
								//range.select();
							} else if(typeof tab.$(obj).selectionStart != "undefined"){
								var start = tab.$(obj).value.substr(0, tab.$(obj).selectionStart);
								var end = tab.$(obj).value.substr(tab.$(obj).selectionStart, l);
								var selection = tab.$(obj).value.replace(start, "").replace(end, "")
								tab.$(obj).value = start + tab.string + selection + end;
								tab.$(obj).setSelectionRange(start.length + 1, start.length + 1);
								tab.$(obj).scrollTop = sct;
							} else { tab.$(obj).value += tab.string; }							
							if(evt.preventDefault){
								evt.preventDefault();
								evt.stopPropagation();
							} else {
								evt.returnValue = false;
								evt.cancelBubble = true;
							}
							return false;
						}
					}
				}
			});
		}
	},
	click: function(obj, fn){
		if(obj && this.$(obj)){
			this.addEvent(this.$(obj), "click", function(){
				tab.results["_" + this.id.split("_")[1]] = tab.parse(tab.watching["_" + this.id.split("_")[1]].value);
				if(fn && fn.constructor == Function){ fn(); }
			});
		}
	},
	get: function(obj){
		if(obj && this.$(obj)){	return this.results["_" + obj];	}
	},
	parse: function(str){
		var str = (str)? str : "";
		if(str.length){
			if(this.tosp){ str = str.replace(/\t/g, "&nbsp;&nbsp;&nbsp;"); }
			if(this.nl2br){	str = str.replace(/\r?\n/g, "<br />"); }	
		}
		return str;
	},
	addEvent: function(obj, type, fn){
		if(obj.attachEvent){
			obj["e" + type + fn] = fn;
			obj[type + fn] = function(){ obj["e" + type + fn](window.event); }
			obj.attachEvent("on" + type, obj[type + fn]);
		} else { obj.addEventListener(type, fn, false); }
	}
};