var window_height;

function init_form( ) {

  // png fix
  if ( typeof(pngfix) == 'function' ) {
    pngfix();
  }

  // focus op het eerste veld
  if ( document.forms[0].length > 0 && document.forms[0].elements.length ) {
    var list = document.forms[0].elements;
    for (i = 0; i < list.length; i++) {
      if ((list[i].type == "text") || (list[i].type == "textarea") || (list[i].type == "password") || (list[i].type.toString().charAt(0) == "s")) {
        list[i].focus();
        break;
      }
    }
  }  

}

function button_cancel() {
  window.close();
}

function button_delete() {
  if ( confirm('Are you sure?') ) {
    document.getElementById('pleasewait_layer').style.height = getPageSizeWithScroll()[1] + 'px';
    document.getElementById('pleasewait_bgimage').style.height = getPageSizeWithScroll()[1] + 'px';
    document.getElementById('pleasewait_layer').style.visibility = 'visible';
    var buttons = document.getElementById('buttondiv');
	  var thatsall = document.getElementById('ThatsAll');
	  buttons.removeChild(thatsall);
    document.getElementById('Delete').value = 'Delete';
    document.getElementById('formulier').submit()
  }
}

function button_retire() {
  if ( confirm('Are you sure?') ) {
    document.getElementById('pleasewait_layer').style.height = getPageSizeWithScroll()[1] + 'px';
    document.getElementById('pleasewait_bgimage').style.height = getPageSizeWithScroll()[1] + 'px';
    document.getElementById('pleasewait_layer').style.visibility = 'visible';
    var buttons = document.getElementById('buttondiv');
	  var thatsall = document.getElementById('ThatsAll');
	  buttons.removeChild(thatsall);
    document.getElementById('Retire').value = 'Retire';
    document.getElementById('formulier').submit()
  }
}

function button_fire() {
  if ( confirm('Are you sure?') ) {
    document.getElementById('pleasewait_layer').style.height = getPageSizeWithScroll()[1] + 'px';
    document.getElementById('pleasewait_bgimage').style.height = getPageSizeWithScroll()[1] + 'px';
    document.getElementById('pleasewait_layer').style.visibility = 'visible';
    var buttons = document.getElementById('buttondiv');
	  var thatsall = document.getElementById('ThatsAll');
	  buttons.removeChild(thatsall);
    document.getElementById('Fire').value = 'Fire';
    document.getElementById('formulier').submit()
  }
}

function button_submit() {
  document.getElementById('pleasewait_layer').style.height = getPageSizeWithScroll()[1] + 'px';
  document.getElementById('pleasewait_bgimage').style.height = getPageSizeWithScroll()[1] + 'px';
  document.getElementById('pleasewait_layer').style.visibility = 'visible';
  document.getElementById('ThatsAll').value = 'ThatsAll';
  document.getElementById('formulier').submit()
}

// van http://codylindley.com/Webdev/295/javascript-get-page-height-with-scroll
function getPageSizeWithScroll(){
	if (window.innerHeight && window.scrollMaxY) {// Firefox
		yWithScroll = window.innerHeight + window.scrollMaxY;
		xWithScroll = window.innerWidth + window.scrollMaxX;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		yWithScroll = document.body.scrollHeight;
		xWithScroll = document.body.scrollWidth;
	} else { // works in Explorer 6 Strict, Mozilla (not FF) and Safari
		yWithScroll = document.body.offsetHeight;
		xWithScroll = document.body.offsetWidth;
	}
	arrayPageSizeWithScroll = new Array(xWithScroll,yWithScroll);
	//alert( 'The height is ' + yWithScroll + ' and the width is ' + xWithScroll );
	return arrayPageSizeWithScroll;
}

var has_decay;
function update_form_content() {

	var request;
	if ( document.getElementById('home_team_id').options[ document.getElementById('home_team_id').selectedIndex ].value && document.getElementById('guest_team_id').options[ document.getElementById('guest_team_id').selectedIndex ].value ) {

		if (window.XMLHttpRequest){ 
			request = new XMLHttpRequest(); 
		} else if(window.ActiveXObject){ 
			request = new ActiveXObject("Microsoft.XMLHTTP"); 
		}
		
		request.onreadystatechange = function(	 ) {
			if (request.readyState == 4) {
				if (request.status == 200) {
					process_new_form_content();
				}	
			}
		}

		var url = igorurl + '/game/get.form.content.pl?home_team_id=' + document.getElementById('home_team_id').options[ document.getElementById('home_team_id').selectedIndex ].value + '&guest_team_id=' + document.getElementById('guest_team_id').options[ document.getElementById('guest_team_id').selectedIndex ].value + '&date=' + document.getElementById('date').value + ' ' + document.getElementById('time').value ;
		// document.getElementById('home_winnings').value = url;
		request.open("GET", url, true);
		request.send(null);

	}

	function process_new_form_content() {
		document.getElementById('add_action').options.length = 1;
		document.getElementById('add_victim').options.length = 1;
		document.getElementById('add_player').options.length = 1;

    has_decay = new Object();

		var players = request.responseXML.getElementsByTagName('player');

		for ( var i=0; i < players.length; i++ ) {
      if ( players[i].getElementsByTagName('decay')[0].firstChild.data == 1 ) {
        has_decay[ players[i].getElementsByTagName('id')[0].firstChild.data ] = 1;
      }
			var newoption1 = document.createElement('option');
			newoption1.value = players[i].getElementsByTagName('id')[0].firstChild.data;
			newoption1.text	= players[i].getElementsByTagName('name')[0].firstChild.data;
      try {
			  document.getElementById('add_action').add( newoption1, document.getElementById('add_action').options[1] );
      } catch(e) {}
      try {
			  document.getElementById('add_action').add( newoption1 );
      } catch(e) {}
			var newoption2 = document.createElement('option');
			newoption2.value = players[i].getElementsByTagName('id')[0].firstChild.data;
			newoption2.text	= players[i].getElementsByTagName('name')[0].firstChild.data;
      try {
			  document.getElementById('add_victim').add( newoption2, document.getElementById('add_victim').options[1] );
      } catch(e) {}
      try {
			  document.getElementById('add_victim').add( newoption2 );
      } catch(e) {}
			var newoption3 = document.createElement('option');
			newoption3.value = players[i].getElementsByTagName('id')[0].firstChild.data;
			newoption3.text	= players[i].getElementsByTagName('name')[0].firstChild.data;
      try {
			  document.getElementById('add_player').add( newoption3, document.getElementById('add_player').options[1] );
      } catch(e) {}
      try {
			  document.getElementById('add_player').add( newoption3 );
      } catch(e) {}
		}

    // nu nog starplayers en mercenaries, maar die volgens straks

		document.getElementById('inducement_for_team').options.length = 1;

		var newoption = document.createElement('option');
		newoption.value = document.getElementById('guest_team_id').options[ document.getElementById('guest_team_id').selectedIndex ].value;
		newoption.text	= document.getElementById('guest_team_id').options[ document.getElementById('guest_team_id').selectedIndex ].text;
    try {
		  document.getElementById('inducement_for_team').add( newoption, document.getElementById('inducement_for_team').options[1] );
    } catch(e) {}
    try {
		  document.getElementById('inducement_for_team').add( newoption );
    } catch(e) {}
		var newoption = document.createElement('option');
		newoption.value = document.getElementById('home_team_id').options[ document.getElementById('home_team_id').selectedIndex ].value;
		newoption.text	= document.getElementById('home_team_id').options[ document.getElementById('home_team_id').selectedIndex ].text;
    try {
		  document.getElementById('inducement_for_team').add( newoption, document.getElementById('inducement_for_team').options[1] );
    } catch(e) {}
    try {
		  document.getElementById('inducement_for_team').add( newoption );
    } catch(e) {}

		document.getElementById('starplayer_id').options.length = 1;
		var starplayers = request.responseXML.getElementsByTagName('starplayer');
    var starplayers_by_id = new Object();

		for ( var i=0; i < starplayers.length; i++ ) {
      starplayers_by_id[starplayers[i].getElementsByTagName('id')[0].firstChild.data] = starplayers[i].getElementsByTagName('name')[0].firstChild.data;
			var newoption = document.createElement('option');
			newoption.value = starplayers[i].getElementsByTagName('id')[0].firstChild.data;
			newoption.text	= starplayers[i].getElementsByTagName('name')[0].firstChild.data;
      try {
			  document.getElementById('starplayer_id').add( newoption, document.getElementById('starplayer_id').options[1] );
      } catch(e) {}
      try {
			  document.getElementById('starplayer_id').add( newoption );
      } catch(e) {}
		}

		document.getElementById('mercenary_id').options.length = 1;
		var mercenaries = request.responseXML.getElementsByTagName('mercenary');
    var mercenaries_by_id = new Object();

		for ( var i=0; i < mercenaries.length; i++ ) {
      mercenaries_by_id[mercenaries[i].getElementsByTagName('id')[0].firstChild.data] = 'Mercenary ' + mercenaries[i].getElementsByTagName('name')[0].firstChild.data;
			var newoption = document.createElement('option');
			newoption.value = mercenaries[i].getElementsByTagName('id')[0].firstChild.data;
			newoption.text	= mercenaries[i].getElementsByTagName('name')[0].firstChild.data;
      try {
			  document.getElementById('mercenary_id').add( newoption, document.getElementById('mercenary_id').options[1] );
      } catch(e) {}
      try {
			  document.getElementById('mercenary_id').add( newoption );
      } catch(e) {}
		}

    // starplayers en mercenaries voor actions
    var inducements_so_far = document.getElementsByName('inducement');
		for ( var i=0; i < inducements_so_far.length; i++ ) {
      var value = inducements_so_far[i].value;
      if ( players[i].getElementsByTagName('decay')[0].firstChild.data == 1 ) {
        has_decay[ ( value.search(/^starplayer/) != -1 ? 'S' : 'M' ) + players[i].getElementsByTagName('id')[0].firstChild.data ] = 1;
      }
      if ( value.search(/^starplayer/) != -1 ) {
        value = value.replace(/starplayer#\d+#(?:Yes|No|Y|N)#0?#0?#(\d+)#/, "$1");
    		var newoption1 = document.createElement('option');
    		newoption1.value = 'S' + value;
    		newoption1.text	= starplayers_by_id[value];
        try {
    		  document.getElementById('add_action').add( newoption1, document.getElementById('add_action').options[1] );
        } catch(e) {}
        try {
    		  document.getElementById('add_action').add( newoption1 );
        } catch(e) {}
    		var newoption2 = document.createElement('option');
    		newoption2.value = 'S' + value;
    		newoption2.text	= starplayers_by_id[value];
        try {
    		  document.getElementById('add_victim').add( newoption2, document.getElementById('add_victim').options[1] );
        } catch(e) {}
        try {
    		  document.getElementById('add_victim').add( newoption2 );
        } catch(e) {}
    		var newoption3 = document.createElement('option');
    		newoption3.value = 'S' + value;
    		newoption3.text	= starplayers_by_id[value];
        try {
    		  document.getElementById('add_player').add( newoption3, document.getElementById('add_player').options[1] );
        } catch(e) {}
        try {
    		  document.getElementById('add_player').add( newoption3 );
        } catch(e) {}
      } else if ( value.search(/^mercenary/) != -1 ) {
        value = value.replace(/mercenary#\d+#[YesNo]+#(\d+)#\d*#0?#/, "$1");
    		var newoption1 = document.createElement('option');
    		newoption1.value = 'M' + value;
    		newoption1.text	= mercenaries_by_id[value];
        try {
    		  document.getElementById('add_action').add( newoption1, document.getElementById('add_action').options[1] );
        } catch(e) {}
        try {
    		  document.getElementById('add_action').add( newoption1 );
        } catch(e) {}
    		var newoption2 = document.createElement('option');
    		newoption2.value = 'M' + value;
    		newoption2.text	= mercenaries_by_id[value];
        try {
    		  document.getElementById('add_victim').add( newoption2, document.getElementById('add_victim').options[1] );
        } catch(e) {}
        try {
    		  document.getElementById('add_victim').add( newoption2 );
        } catch(e) {}
    		var newoption3 = document.createElement('option');
    		newoption3.value = 'M' + value;
    		newoption3.text	= mercenaries_by_id[value];
        try {
    		  document.getElementById('add_player').add( newoption3, document.getElementById('add_player').options[1] );
        } catch(e) {}
        try {
    		  document.getElementById('add_player').add( newoption3 );
        } catch(e) {}
      }
    }    

	}

}

function add_gameaction() {

  var type = document.getElementById('add_action_type').options[ document.getElementById('add_action_type').selectedIndex ].value;

  if ( type ) {

    var player_id; var description;
    if ( type == 'casualty' ) {
      if ( document.getElementById('add_victim').options[ document.getElementById('add_victim').selectedIndex ].value ) {
        player_id = document.getElementById('add_player').options[ document.getElementById('add_player').selectedIndex ].value + '#' + document.getElementById('add_victim').options[ document.getElementById('add_victim').selectedIndex ].value + '#' + document.getElementById('add_event').options[ document.getElementById('add_event').selectedIndex ].value + '#' + document.getElementById('add_type_1').options[ document.getElementById('add_type_1').selectedIndex ].value + '#' + document.getElementById('add_type_2').options[ document.getElementById('add_type_2').selectedIndex ].value + '#' + document.getElementById('add_cured').options[ document.getElementById('add_cured').selectedIndex ].value;
        victim_name = document.getElementById('add_victim').options[ document.getElementById('add_victim').selectedIndex ].text;
        player_name = document.getElementById('add_player').options[ document.getElementById('add_player').selectedIndex ].text;
        event_value = document.getElementById('add_event').options[ document.getElementById('add_event').selectedIndex ].value;
        description = victim_name;
        if ( event_value == 'referee' ) {
          description = description + '  was sent of by the referee';
        } else {
          wound_type = document.getElementById('add_type_1').options[ document.getElementById('add_type_1').selectedIndex ].value;
          switch ( wound_type ) {
          case 'badly_hurt':
            description = description + ' was ' + wound_type.replace(/_/g, ' ');
            break;
          case 'seriously_injured':
            description = description + ' was ' + wound_type.replace(/_/g, ' ');
            break;
          case 'dead':
            description = description + ' was KILLED';
            break;
          default:
            description = description + ' got a' +  ( wound_type.search(/^[aeiouy]/i) != -1 ? 'n' : '' ) + ' ' + wound_type.replace(/_/g, ' ');
            break;
          }
          wound_type_2 = document.getElementById('add_type_2').options[ document.getElementById('add_type_2').selectedIndex ].value;
          if ( wound_type_2 ) {
            switch ( wound_type_2 ) {
            case 'badly_hurt':
              description = description + ' and was ' + wound_type_2.replace(/_/g, ' ');
              break;
            case 'seriously_injured':
              description = description + ' and was ' + wound_type_2.replace(/_/g, ' ');
              break;
            case 'dead':
              description = description + ' and was KILLED';
              break;
            default:
              description = description + ' and got a' +  ( wound_type_2.search(/^[aeiouy]/i) != -1 ? 'n' : '' ) + ' ' + wound_type_2.replace(/_/g, ' ');
              break;
            }
          }
          description = description +  ' when he';
          switch ( event_value ) {
          case 'player':
            description = description + ' was hit by ' + player_name + '';
            break;
          case 'starplayer':
            description = description + ' was hit by ' + player_name + '';
            break;
          case 'mercenary':
            description = description + ' was hit by ' + player_name + '';
            break;
          case 'public':
            if ( player_name ) {
              description = description + ' was pushed into the public by ' + player_name + '';
            } else {
              description = description + ' was beaten up by the public';
            }
            break;
          case 'foul':
            description = description + ' was fouled';
            if ( player_name ) {
              description = description + ' by ' + player_name + '';
            }
            description = description + '';
            break;
          case 'throw_a_rock':
            description = description + ' was hit by a rock';
            break;
          case 'pitch_invasion':
            description = description + ' was beaten up during a pitch invasion';
            break;
          case 'wizard':
            description = description + ' was hit by a wizard spell';
            break;
          case 'dodge':
            description = description + ' failed to dodge';
            break;
          case 'leap':
            description = description + ' failed to leap';
            break;
          case 'go_for_it':
            description = description + ' failed to go for it';
            break;
          case 'eaten':
            description = description + ' was eaten';
            if ( player_name ) {
              description = description + ' by ' + player_name;
            }
            description = description + '';
            break;
          case 'hit_by_thrown_player':
            if ( player_name ) {
              description = description + ' hit by the flying ' + player_name + '';
            } else {
              description = description + ' hit by a flying player';
            }
            break;
          case 'teleport':
            description = description + ' teleported';
            break;
          case 'exploding_box':
            description = description + ' opened an exploding box';
            break;
          case 'failed_to_land':
            description = description + ' failed to land';
            break;
          }
          cure = document.getElementById('add_cured').options[ document.getElementById('add_cured').selectedIndex ].value;
          switch ( cure ) {
          case 'no':
            break;
          case 'no_change':
            description = description + '. The Apothecary couldn\'t do anything';
            break;
          case 'regenerate':
            description = description + '. He then regenerated';
            break;
          case 'dead':
            if ( wound_type == 'dead' ) {
              description = description + '. The Apothecary couldn\'t do anything';
            } else {
              description = description + '. The Apothecary then managed to KILL him';
            }
            break;
          default:
            description = description + '. The Apothecary managed to change this into a ' + cure.replace(/_/g, ' ');
            break;
          }
        }
      }
    } else {
      player_id = document.getElementById('add_action').options[ document.getElementById('add_action').selectedIndex ].value;
			var player_name = document.getElementById('add_action').options[ document.getElementById('add_action').selectedIndex ].text;
      description = type.substring(0,1).toUpperCase() + type.substring(1, type.length) + ' by ' + player_name;
      if ( type == 'mvp' ) {
        description = 'Most Valuable Player was ' + player_name;
      }
    }

    if ( player_id ) {
      
    	var gameaction_div = document.createElement('div');
    	gameaction_div.id = type + 's_so_far_' + player_id;
   
    	gameaction_div.innerHTML = document.getElementById('actions_so_far_template').innerHTML
   
    	gameaction_div.innerHTML = gameaction_div.innerHTML.replace( /--clientigor_type--/g, type );
    	gameaction_div.innerHTML = gameaction_div.innerHTML.replace( /--clientigor_player_id--/g, player_id );
    	gameaction_div.innerHTML = gameaction_div.innerHTML.replace( /--clientigor_description--/g, description );
    	document.getElementById( type + 's_so_far_div' ).appendChild(gameaction_div);

  	}
    
	}
	
}

function remove_gameaction ( type, which ) {
	var gameaction_div = document.getElementById( type + 's_so_far_' + which );
	document.getElementById( type + 's_so_far_div' ).removeChild(gameaction_div);
}

var inducementcount = 1;
function add_inducement() {

  var type = document.getElementById('new_inducement').options[ document.getElementById('new_inducement').selectedIndex ].value;
  var team = document.getElementById('inducement_for_team').options[ document.getElementById('inducement_for_team').selectedIndex ].value;

  if ( type && team ) {

    var team_id = document.getElementById('inducement_for_team').options[ document.getElementById('inducement_for_team').selectedIndex ].value;
    var team_name = document.getElementById('inducement_for_team').options[ document.getElementById('inducement_for_team').selectedIndex ].text;

    var inducementvalue = type + '#' + team_id + '#' + ( document.getElementById('inducement_is_free').checked ? 'Y' : 'N' );
    var inducementdescription = team_name + ': ' + document.getElementById('new_inducement').options[ document.getElementById('new_inducement').selectedIndex ].text + ' ';

    inducementvalue = inducementvalue + '#';
    if ( type == 'mercenary' ) {
      if ( document.getElementById('mercenary_id').selectedIndex != 0 ) {
        inducementvalue = inducementvalue + document.getElementById('mercenary_id').options[ document.getElementById('mercenary_id').selectedIndex ].value;
        inducementvalue = inducementvalue + '#' + document.getElementById('mercenary_nr_of_skills').value;
        inducementdescription = inducementdescription + document.getElementById('mercenary_id').options[ document.getElementById('mercenary_id').selectedIndex ].text;
        if ( document.getElementById('mercenary_nr_of_skills').value ) {
          inducementdescription = inducementdescription + ' with ' + document.getElementById('mercenary_nr_of_skills').value + ' extra skills';
        }
      } else {
        return;
      }
    } else {
      inducementvalue = inducementvalue + '#';
    }

    inducementvalue = inducementvalue + '#';
    if ( type == 'starplayer' ) {
      if ( document.getElementById('starplayer_id').selectedIndex != 0 ) {
        inducementvalue = inducementvalue + document.getElementById('starplayer_id').options[ document.getElementById('starplayer_id').selectedIndex ].value;
        inducementdescription = inducementdescription + document.getElementById('starplayer_id').options[ document.getElementById('starplayer_id').selectedIndex ].text;
      } else {
        return;
      }
    }

    inducementvalue = inducementvalue + '#';
    if ( type == 'special_play_card' ) {
      if ( document.getElementById('special_play_card_type').selectedIndex != 0 ) {
        inducementvalue = inducementvalue + document.getElementById('special_play_card_type').options[ document.getElementById('special_play_card_type').selectedIndex ].value;
        inducementdescription = inducementdescription + ' from the ' + document.getElementById('special_play_card_type').options[ document.getElementById('special_play_card_type').selectedIndex ].text + ' deck';
      } else {
        return;
      }
    }

    inducementdescription = inducementdescription + ( document.getElementById('inducement_is_free').checked ? ' (free)' : '' );

		var inducement_div = document.createElement('div');

    inducementcount++;
		inducement_div.id = 'inducements_so_far_new_' + inducementcount;
 
		inducement_div.innerHTML = document.getElementById('inducements_so_far_template').innerHTML
 
		inducement_div.innerHTML = inducement_div.innerHTML.replace( /--clientigor_type--/g, type );
		inducement_div.innerHTML = inducement_div.innerHTML.replace( /--clientigor_team--/g, team );
		inducement_div.innerHTML = inducement_div.innerHTML.replace( /--clientigor_value--/g, inducementvalue );
		inducement_div.innerHTML = inducement_div.innerHTML.replace( /--clientigor_description--/g, inducementdescription );
		inducement_div.innerHTML = inducement_div.innerHTML.replace( /--clientigor_fieldname--/g, 'inducement' );
		inducement_div.innerHTML = inducement_div.innerHTML.replace( /--clientigor_id--/g, 'new_' + inducementcount );
 
		document.getElementById( 'inducements_so_far_div' ).appendChild(inducement_div);

	}
	
  update_form_content();

}

function remove_inducement ( which ) {
	var inducement_div = document.getElementById( 'inducements_so_far_' + which );
	document.getElementById('inducements_so_far_div').removeChild(inducement_div);
}

