function hide_mine(elmnt) {
        if( !is_ie ) return;
        var a = elmnt.getElementsByTagName("div");
        var div = a[0];
        elmnt.style.zIndex = 1;
        div.style.display = "none";
}

function show_mine(elmnt) {
        if( !is_ie ) return;
         var a = elmnt.getElementsByTagName("div");
        var div = a[0];
        elmnt.style.zIndex = 100;
        div.style.display = "block";
}

function switch_tab(name,hide) {
        if(document.getElementById('tab-'+name) == null) return;

         if(hide === undefined) window.location.hash = name;


         // "Alten" Tab zurücksetzen
         if(activetab != "" && document.getElementById('tabheader-'+activetab) != null) {
                 document.getElementById('tabheader-'+activetab).className = "tab-item";
                 document.getElementById('tab-'+activetab).style.display = "none";
         }

         document.getElementById('tab-'+name).style.display="";
         document.getElementById('tabheader-'+name).className = "tab-item-active";

         //alert(document.getElementById('tabheader-'+name).className);

         activetab = name;




         return;
}

function switch_tab2(name,hide) {
        if(document.getElementById('tab-'+name) == null) return;

         if(hide === undefined) window.location.hash = name;


         // "Alten" Tab zurücksetzen
         if(activetab != "" && document.getElementById('tabheader-'+activetab) != null) {
                 document.getElementById('tabheader-'+activetab).className = "";
                 document.getElementById('tab-'+activetab).style.display = "none";
         }

         document.getElementById('tab-'+name).style.display="";
         document.getElementById('tabheader-'+name).className = "current";

         //alert(document.getElementById('tabheader-'+name).className);

         activetab = name;




         return;
}

function toggle_showhide(elem) {
         var c = $(elem);

         //if(c.style.display=='none') Effect.SlideDown(elem);
         //else Effect.SlideUp(elem);

         if(c.style.display=='none') c.appear();
         else c.hide();

         return;
}

function insert_bbcode(aTag, eTag) {
  if((typeof arguments[2]) == "undefined") {
         var input = document.getElementById('textarea_desc');
  } else {
          var input = document.getElementById(arguments[2]);
  }

  input.focus();
  /* für Internet Explorer */
  if(typeof document.selection != 'undefined') {
    /* Einfügen des Formatierungscodes */
    var range = document.selection.createRange();
    var insText = range.text;
    range.text = aTag + insText + eTag;
    /* Anpassen der Cursorposition */
    range = document.selection.createRange();
    if (insText.length == 0) {
      range.move('character', -eTag.length);
    } else {
      range.moveStart('character', aTag.length + insText.length + eTag.length);
    }
    range.select();
  }
  /* für neuere auf Gecko basierende Browser */
  else if(typeof input.selectionStart != 'undefined')
  {
    /* Einfügen des Formatierungscodes */
    var start = input.selectionStart;
    var end = input.selectionEnd;
    var insText = input.value.substring(start, end);
    input.value = input.value.substr(0, start) + aTag + insText + eTag + input.value.substr(end);
    /* Anpassen der Cursorposition */
    var pos;
    if (insText.length == 0) {
      pos = start + aTag.length;
    } else {
      pos = start + aTag.length + insText.length + eTag.length;
    }
    input.selectionStart = pos;
    input.selectionEnd = pos;
  }
  /* für die übrigen Browser */
  else
  {
    /* Abfrage der Einfügeposition */
    var pos;
    var re = new RegExp('^[0-9]{0,3}$');
    while(!re.test(pos)) {
      pos = prompt("Einfügen an Position (0.." + input.value.length + "):", "0");
    }
    if(pos > input.value.length) {
      pos = input.value.length;
    }
    /* Einfügen des Formatierungscodes */
    var insText = prompt("Bitte geben Sie den zu formatierenden Text ein:");
    input.value = input.value.substr(0, pos) + aTag + insText + eTag + input.value.substr(pos);
  }
}

 function loadData(script,element)
{
  document.getElementById('response_loading').style.visibility = 'visible';
  new Ajax.Updater(element,'character_ajax.php?v='+script+'&ajax=1',
          { method: 'get',
                onSuccess: function() { document.getElementById('response_loading').style.visibility = 'hidden'; }
          }
  );
}

 function postData(script,target_element)
{
  document.getElementById('response_loading').style.visibility = 'visible';
  new Ajax.Request('character_ajax.php',
          { method: 'post',
            parameters: 'v='+script,
            onSuccess: function(transport) { Element.update(target_element,transport.responseText); document.getElementById('response_loading').style.visibility = 'hidden'; }
          }
  );
}

 function description_panels(guildid) {

        if($('descriptionform_'+guildid).visible()) {
                 $('descriptionform_'+guildid).hide();
                 $('description_content_'+guildid).show();
         } else {
                 $('descriptionform_'+guildid).show();
                 $('description_content_'+guildid).hide();
         }

 }

 function description_update(guildid) {

         var dest = 'description_box_'+guildid;
         var x = $('guilddesc_'+guildid).value;
         postData('guild&guildid='+guildid+'&description='+x,dest);



 }

  function update_guild_details(guildid)
  {


    var data = $('guild_form_'+guildid).serialize();

    document.getElementById('response_loading').style.visibility = 'visible';
    new Ajax.Request('character_ajax.php',
      { method: 'post',
        parameters: 'v=guild&guildid='+guildid+'&'+data,
        onSuccess: function(transport)
        {
          if(transport.responseText < 1)
            alert("Details konnten nicht gespeichert werden.");
          else if(transport.responseText == 1)
          {
            $('success_message').style.display = 'table-cell';
            window.setTimeout(function() {$('success_message').style.display = 'none'}, 10000);
          }

          document.getElementById('response_loading').style.visibility = 'hidden';
        }
      }
    ); // Ajax.Request Ende
  }

 function guildaction(source,action,guildid,accountid) {
  // Es gibt drei Listen, l_leaders, l_officers, l_members
  // Bei Erfolg kommen wir in die neue Tabelle

  // var random_number = Math.round(Math.random() * 100);

  var url = 'character_ajax.php?v=guild&'+action+'='+accountid+'&guildid='+guildid;

         new Ajax.Request(url, {
          method: 'get',
           sanitizeJSON: false,
           evalJSON: 'force',
          onSuccess: function(transport) {


             var x = transport.responseText;
             var x2 = transport.responseJSON;

             //var x = eval(transport.responseText);
             if (x2.status == "ok") {

             // Listenelement verschieben
             if(action == "promote" || action == "degrade") {

               // erstelle ein Listenelement
               var target_element = document.createElement("li");
                   target_element.innerHTML = x2.element;

               // Finde die Liste
               var target_list = $('l_'+x2.list);

               // neues Listenelement einfügen
               target_list.appendChild(target_element);
             }
               // alten Eintrag entfernen
               var remove_me = source.parentNode;

               // aus der Liste kicken
               source.parentNode.parentNode.removeChild(remove_me);
             }
            else {
              alert('Fehler bei der Datenübertragung, keine positive Rückmeldung erhalten.\n'+x2.errormessage);
             }
          }
        });
 }

 function toggle_vis(name) {
  if(document.getElementById(name).style.display == "none") document.getElementById(name).style.display = "";
  else document.getElementById(name).style.display = "none";
 }

 function update_panel(val) {
  if(document.getElementById('hero_select_'+val).checked == true) document.getElementById('hero_panel_'+val).style.display = "";
  else document.getElementById('hero_panel_'+val).style.display = "none";
 }

 function parserfor(el) {
  select = document.getElementById(el);
  return select.options[select.options.selectedIndex].value;
 }

 function confirm_delete(charname) {
  return confirm(unescape("Du l%F6schst deinen Charakter "+charname+" und alle damit verbundenen Daten nun unwiderruflich%21"));
 }

 function confirm_delete_a(charname) {
  return confirm(unescape("Du l%F6schst diese R%FCstung von "+charname+" nun unwiderruflich%21"));
 }

function setimage(id) {
  document.getElementById('armor_image').innerHTML = document.getElementById('armor_'+id).innerHTML;
 }



function showClassPanel(id) {
    for(var i = 0;i<=10;i++) {
        if(id != 'class_'+i) {
          $('class_'+i).style.display='none';
        }
    }
    if(!$(id).visible()) Element.show(id);
}


function timedUpdate(script,destination) {
  new Ajax.Request('character_ajax.php?v='+script,
          { method: 'get',
            onSuccess: function(transport) {
                    $(destination).update(transport.responseText);
                 window.setTimeout(function() {$(destination).remove()},3000);
            }
          }
  );
}

function removeComment(charid,msgid) {
  new Ajax.Request('character_ajax.php?v=comment&charid='+charid+'&del='+msgid,
          { method: 'get',
            onSuccess: function(transport) {
                    $('comment-'+msgid).update(transport.responseText);
                 window.setTimeout(function() {$('comment-'+msgid).remove()},3000);
            }
          }
  );
}

function removeNewsComment(newsid,msgid) {
  new Ajax.Request('character_ajax.php?v=comment&newsid='+newsid+'&del2='+msgid,
          { method: 'get',
            onSuccess: function(transport) {
                    $('comment-'+msgid).update(transport.responseText);
                 window.setTimeout(function() {$('comment-'+msgid).remove()},3000);
            }
          }
  );
}

function accept_friend(inviteid) {
  new Ajax.Request('character_ajax.php?v=friends&acc='+inviteid,
          { method: 'get',
            onSuccess: function(transport) {
                    $('friendinvite-'+inviteid).update(transport.responseText);
                 window.setTimeout(function() {$('friendinvite-'+inviteid).remove()},3000);
            }
          }
  );
      //        loadData('friends&acc=<?php echo $friend['from_id']; ?>','infopanel_<?php echo $friend['from_id']; ?>');
}


// verkürzt den Inhalt des angegeben Elements so lange, bis eine gültige Zahl rauskommt
function only_numeric (elem) {
  while(isNaN(elem.value))
  {
    elem.value = elem.value.substr(0, elem.value.length -1);
  }
}

function interplay(elem, counterpart_id)
{
  if(elem.checked)
    $(counterpart_id).checked = false;
}

function select_all (id, on_off)
{
	if(on_off != false)
	  on_off = true;
	var select_elem = $(id).options;
	for(i = 0; i < select_elem.length;i++)
		select_elem[i].selected = on_off;
}

var tyria_options = new Array ('Nichts', 'Mission', 'Mission & Bonus', 'Bonus');
var cantha_elona_options = new Array ('Nichts', 'ein Schwert', 'zwei Schwerter', 'drei Schwerter');
var eotn_options = new Array ('Offen', 'Geschafft');
var dungeon_options = new Array ('Offen', 'Geschafft');

function dungeon_change ()
{
  if($('dungeonselect').value != 0)
  {
		$('missionselect').options[0].selected = true;
		change_status('normal', false);
	  change_status('hard', false);
		
		$('status_normal').options.length = 0;
		
		for(i = 0;i<dungeon_options.length;i++)
		{
		  $('status_normal').options[i] = new Option(dungeon_options[i], i);
		}
		
		$('status_hard').options.length = 0;

		for(i = 0;i<dungeon_options.length;i++)
		{
		  $('status_hard').options[i] = new Option(dungeon_options[i], i);
		}
	}
	if($('missionselect').value == 0 && $('dungeonselect').value == 0)
	{
	  change_status('normal', true);
	  change_status('hard', true);
	}
}

function mission_change ()
{
	var selected_value = $('missionselect').value;
	if(selected_value != 0)
	{
		$('dungeonselect').options[0].selected = true;
		change_status('normal', false);
	  change_status('hard', false);
		
		document.getElementById('response_loading').style.visibility = 'visible';
		var using_options = new Array();
		new Ajax.Request('character_ajax.php?v=findmission&mission='+selected_value,
		  { method: 'get',
		    onSuccess: function(transport)
				{
				  switch(transport.responseText)
				  {
				    case '1':
	            using_options = tyria_options;
				    break;
				    case '2':
				    case '3':
				      using_options = cantha_elona_options;
						break;
				    case '4':
				      using_options = eotn_options;
						break;
				  }

	        $('status_normal').options.length = 0;

					for(i = 0;i<using_options.length;i++)
					{
					  $('status_normal').options[i] = new Option(using_options[i], i);
					}

					$('status_hard').options.length = 0;

					for(i = 0;i<using_options.length;i++)
					{
					  $('status_hard').options[i] = new Option(using_options[i], i);
					}
	        document.getElementById('response_loading').style.visibility = 'hidden';
		    }
		  }
	  );
	}
	if(selected_value == 0 && $('dungeonselect').value == 0)
	{
	  change_status('normal', true);
	  change_status('hard', true);
	}
	
}

function change_status (type, disable)
{
	if(!disable)
	{
	  if(($('missionselect').value != 0 || $('dungeonselect').value != 0) && $('use_'+type).checked == true)
	    $('status_'+type).disabled = false;
	}
	else
	{
	  $('status_'+type).disabled = true;
	}
}

function check_findmission_form()
{
	if($('status_normal').value == "" && $('status_hard').value == "")
	{
	  alert("Es muss mindestens ein Missionsstatus-Kriterium ausgewählt sein");
	  return false;
	}
	
	if(($('status_normal').value == "" && $('use_normal').checked == true) || ($('status_hard').value == "" && $('use_hard').checked == true))
	{
	  alert("Für alle ausgewählten Modi muss auch mindestens ein Missionsstatus ausgewählt sein.");
	  return false;
	}
	
	if($('use_normal').checked == false && $('use_hard').checked == false)
	{
	  alert("Es muss mindestens ein Modus ausgewählt sein..");
	  return false;
	}
	
	return true;
	
}

function join_group(groupid)
{
	var charid = $('join_chars').value;
  document.getElementById('response_loading').style.visibility = 'visible';
  new Ajax.Request('character_ajax.php',
    { method: 'post',
      parameters: 'v=group&do=joingroup&groupid='+groupid+'&charid='+charid,
      onSuccess: function(transport)
      {
        if(transport.responseText < 1)
          alert("Der Gruppe konnte wegen eines Fehlers nicht beigetreten werden.");
        else if(transport.responseText == 1)
        {
        	$('ajax_message').innerHTML = 'Du bist der Gruppe beigetreten.';
          $('ajax_message').style.display = 'block';
          $('join_form').hide();
          window.setTimeout(function() {$('ajax_message').style.display = 'none'}, 10000);
        }
        else if(transport.responseText == 2)
        {
        	$('ajax_message').innerHTML = 'Deine Anfrage wurde gespeichert. Sobald der Gruppenanführer dich freigeschaltet hat, bist du Mitglied der Gruppe.';
          $('ajax_message').style.display = 'block';
          $('join_form').hide();
          window.setTimeout(function() {$('ajax_message').style.display = 'none'}, 10000);
        }
        document.getElementById('response_loading').style.visibility = 'hidden';
      }
    }
  ); // Ajax.Request Ende
}

function accept_group_request (id, accept)
{
  document.getElementById('response_loading').style.visibility = 'visible';
  new Ajax.Request('character_ajax.php',
    { method: 'post',
      parameters: 'v=group&do=accept&requestid='+id+'&accept='+accept,
      onSuccess: function(transport)
      {
				var bezeichner = (accept ? 'angenommen' : 'abgelehnt');
        if(transport.responseText < 1)
          alert("Die Anfrage konnte nicht "+bezeichner+" werden.");
				else
				{
				  alert("Der Charakter wurde "+bezeichner+".");
				  $('request-'+id).hide();
				}
        document.getElementById('response_loading').style.visibility = 'hidden';
      }
    }
  ); // Ajax.Request Ende
}

function fill_input (target_id, text)
{
	$(target_id).value = text;
}

function cancel_invitation (invitation_id)
{
  document.getElementById('response_loading').style.visibility = 'visible';
  new Ajax.Request('character_ajax.php',
    { method: 'post',
      parameters: 'v=group&do=cancel_inv&inv_id='+invitation_id,
      onSuccess: function(transport)
      {
				if(transport.responseText == 0)
				{
				  alert("Einladung konnte nicht zurückgenommen werden. Fehlende Rechte oder Programmfehler. ");
				}
				else if(transport.responseText == 1)
				{
				  $('invitation-'+invitation_id).hide();
				}
				else if(transport.responseText == 2)
				{
				  alert("Einladung konnte nicht zurückgenommen werden. Datenbankfehler.");
				}
        document.getElementById('response_loading').style.visibility = 'hidden';
      }
    }
  ); // Ajax.Request Ende
}

function check_group_form ()
{
	var elements = document.forms.mc_group_form.elements;
	for(var i = 0; i < elements.length;i++)
	{
	  var name = elements[i].name;
	  var val = elements[i].value;
	  switch(name)
	  {
	    case 'goal':
	      if(val == "")
	      {
	        alert("Es muss ein Ziel angegeben sein.");
	        return false;
				}
	    break;
	    case 'date':
	      if(!val.match(/\d{1,2}\.\d{1,2}\.\d{4}/))
	      {
	        alert("Das Datum wurde im falschen Format eingegeben.");
	        return false;
				}
	    break;
	    case 'time':
	      if(!val.match(/\d{1,2}\:\d{2}/))
	      {
	        alert("Die Zeit wurde im falschen Format eingegeben.");
	        return false;
				}
	    break;
	    case 'max_size':
	      if(val.NaN || val > 12 || val < 2)
	      {
	        alert("Die maximale Gruppengröße muss zwischen 2 und 12 liegen.");
	        return false;
				}
	    break;
	  }
	}
	return true;
}