String.prototype.trim=function(){
	return this.replace(/^\s*|\s*$/g,'');
};

function fillTextarea(id, text){
	if(this.onBlur){
		if(this.innerHTML == "")
			this.innerHTML == text;
	}
	if(this.onFocus){
		if(this.innerHTML == text){
			this.innerHTML == "";
		}
	}
	return true;
}

function getMap(map, theme){  
	new Ajax.Request('classes/ajaxhandler.php', {
		parameters: {"ajaxparam": "maps", "map": map, "bookingtype": theme},
		method: 'post',
		onComplete: function(transport) {
		  $('map').innerHTML = transport.responseText;
		}
	});
}

var latest_map = "full";

function mapSwitch(mapid){  
	$(latest_map).className = "hidden";
	$(mapid).className = "";
	
	latest_map = mapid;
}

function selectArea(areaValue)
{
  var options = $("area_sel").options;
  
  for (var i = 0; i < options.length; i++)
  {
    if ($("area_sel").options[i].value == areaValue)
    {
      $("area_sel").options.selectedIndex = i;
    }
  }
  
  preSelect('ordinary');
}

function preSelect(theme)
{
  if (theme == "ordinary")
  {
    getRows($("area_sel").options[$("area_sel").selectedIndex].value, theme);
  }
  else
  {
    getNums("", "family");
    //getMap(3, "family");
  }
}

function getRows(area, theme)
{	
  //setting map
  //getMap(area, theme);
  
	if ($("rowSelector").disabled == true && area != 3)
	{
		$("rowSelector").disabled = false;
	}
	
	new Ajax.Request('classes/ajaxhandler.php', {
		parameters: {"ajaxparam": "getRows", "area": area, "theme": theme},
		method: 'post',
		onCreate: function(){highLight("rowSelector");},
		onComplete: function(transport){
		  $("row").innerHTML = transport.responseText;
		  var numPar = $("rowSelector").options[$("rowSelector").selectedIndex].value;
		  getNums(numPar, "ordinary");
		}
	});
}

function getNums(row, theme)
{  
	new Ajax.Request('classes/ajaxhandler.php', {
		parameters: {"ajaxparam": "getNums", "row": row, "theme": theme},
		method: 'post',
		onCreate: function(){highLight("numSelector");},
		onComplete: function(transport) {
		  $('num').innerHTML = transport.responseText;
		}
	});
}

function highLight(id){
	new Effect.Highlight(id, {delay: .1, duration: 4, startColor:'#00f', endColor:'#0f0'});
}

function addNewRow(lastnumID, theme)
{
	var lastnum = $(lastnumID).value;
	$(lastnumID).value = parseInt(lastnum) +1;
	
	//var current = $("participants_table").innerHTML; 
	new Ajax.Request('classes/ajaxhandler.php', {
		parameters: {"ajaxparam": "addNewRow", "lastnum": lastnum, "theme": theme},
		method: 'post',
	  onComplete: function(transport) {
	      $("next"+lastnum).innerHTML = transport.responseText;
	  }
	});
	
}

function removeElements(form, noElementsText, sureText, mode)
{
  if (mode == 1)
  {
    if (confirm(sureText) === true)
    {
      var array = $(form).getInputs("checkbox");
      
      for(var i = 0; i < array.length; i++)
      {
        if (array[i].id != "" && $F(array[i]) != null)
        {
          $("row"+$F(array[i])).remove();
        }
      }
    }
  }
  else
  {
    var array = $(form).getInputs("checkbox");
      
    for(var i = 0; i < array.length; i++)
    {
      if (array[i].id != "" && $F(array[i]) != null)
      {
        $("row"+$F(array[i])).remove();
      }
    }
  }
}

function isEmpty(s){
  return ((s == null) || (s.length == 0));
}

function isDigit (c){
  return ((c >= "0") && (c <= "9"));
}

function isInteger (s)
{
  var i;

  if (isEmpty(s))
  if (isInteger.arguments.length == 1) return 0;
  else return (isInteger.arguments[1] == true);

  for (i = 0; i < s.length; i++)
  {
     var c = s.charAt(i);

     if (!isDigit(c)) return false;
  }

  return true;
}

function validateInt(input)
{
  switch (isInteger(input))
  {
     case true:
      return true;
     break;
     case false:
      return false;
     break;
  }
}

function countNums(num)
{
  var arr = num.toArray();
  return arr.size();
}

function submitInformation(form, notFilled, invalidEmail, notNum, moreToDel, noStays, noPersons, allPersonsMarked)
{
  var placering=0;
  var error = 0;
  var array = $(form).getInputs("text");
  var delCheck = $(form).getInputs("checkbox");
  
  if ($("lastnum").value == 0)
  {
    alert(noPersons);
    return false;
  }
  
  //checking email... This check must be the first in line
  if ($("email") == "" && error == 0)
  {
    error = 1;
    alert(invalidEmail);
    $("email").focus(); 
    return false;
  } 
  else
  {
    var email = $("email").value.toLowerCase();
    var placering = email.indexOf("@");
    var tegn = email.indexOf(" ");
    
    if(tegn != -1)
    {
      alert (invalidEmail);
      error = 1;
      $("email").focus(); 
      return false;
    } 
    else
    {
      if (email.indexOf("Ã¦")!=-1 || email.indexOf("Ã¸")!=-1 || email.indexOf("Ã¥")!=-1 ||
        email.indexOf("Ã†")!=-1 || email.indexOf("Ã˜")!=-1 || email.indexOf("Ã…")!=-1 ||
        email.indexOf(";")!=-1 || email.indexOf(",")!=-1)
      {
        error = 1;
        alert (invalidEmail);
        $("email").focus(); 
        return false;
      }
      else
      {
        if (placering < 1 || email.length <= (placering+1))
        {
          error = 1;
          alert (invalidEmail);
          $("email").focus(); 
          return false;
        }
      }
    }
  }
  
  for(var i = 0; i < array.length; i++)
  {
    //Checking text fields for emptiness
    if ($F(array[i]).trim() == "" && error == 0 && array[i].id != "email" && array[i].id != "mob")
    {
      error = 1;
      alert(notFilled);
      array[i].focus();
      return false;   
    } 
    
    //checking cellphone field for traces of letters, emptiness or wrong number of ciphers 
    if (array[i].id == "mob" && (countNums($F(array[i])) != 8 || !validateInt($F(array[i])) || $F(array[i]).trim() == ""))
    {
      error = 1;
      alert(notNum);
      array[i].focus();
      return false;  
    }
  }
  
  //checking stays. If noone sleeps on the spot we give them a warning... No sleep the whole weekend! tsk... tsk..
 
  var nights = $$('.night');
  var nightCounter = 0;
  var counted = 0;
  var countToThree = 1;
  var expected = (nights.length / 3);
  
  for (var n = 0; n < nights.length; n++)
  {
    if ($F(nights[n]) != null && counted == 0){
      nightCounter++;
      counted = 1;
    }
    
    if (countToThree == 3)
    {
      countToThree = 1;
      counted = 0;
    }
    else
    {
      countToThree++;
    }
  }
  
  //for testing
  //alert(nightCounter+ " <-> " +expected);
  
  if (nightCounter != expected)
  {
    alert(noStays);
    error = 1;
    return false;
  }
  
  
  
  var delCounter = 0;
  //checking for marked persons
  for(var i = 1; i < delCheck.length; i++)
  {
    if (delCheck[i].id != "" && $F(delCheck[i]) != null)
    {
      delCounter++;
    }
  }
  
  if (delCounter > 0){
    if (delCounter == $('lastnum').value)
    {
      alert(allPersonsMarked);
      error = 1;
      return false;
    } 
    else
    {
      if (confirm(moreToDel) === true)
      {
        //HER SKAL DER IKKE HARDCODES TEKST I FUNKTIONEN, MEN HAR IKKE TID TIL ANDET!!!
        removeElements(form, "Der er ikke markeret nogen personer. MarkÃ©r mindst en for at slette den!", "", 0);
      }
    }
  }
  
  if (error == 0)
  {
   $(form).submit();
   //alert("submit");
  }
}

function acceptConfirmation(state)
{
		$("confi_btn").disabled = state;
}

function fireAction(form, number, what, spot)
{
  var submitForm = false;
  var idName = 'action'+number;
  
  switch(what)
  {
    case "approve":
      $(idName).value = "approve";
      if (confirm("Vil du godkende plads "+spot))
      {
        submitForm = true;
      }
    break;
    
    case "empty":
      $(idName).value = "empty";
      if (confirm("Er du sikker på at du vil tømme plads "+spot))
      {
        submitForm = true;
      }
    break;
    
    //free is a special case, because it does not have to change the action value.
    case "free":
      if (confirm("Er du sikker på at du vil frigøre plads "+spot))
      {
        submitForm = true;
      }
    break;
    
    case "deny":
      if (confirm("Er du sikker på at du vil tømme plads"+spot+" for en 'ulovlig' reservation?"))
      {
        submitForm = true;
      }
      $(idName).value = "deny";
    break;
  }
    
  
  if (submitForm == true)
  {
    $(form).submit();
  }
}

function clearSession()
{
	if (confirm("Er du sikker på at du vil starte en ny reservation? Den gamle reservation vil blive slettet."))
	{
		document.getElementById('clearForm').submit();
	}
}
 
function countdown(timestamp)
{
	var timestring = "";
	var now = new Date().getTime();
	var then = new Date(timestamp*1000);
	var diff = new Date(then - now);
	
	var h = diff.getHours();
	var m = diff.getMinutes();
	var s = diff.getSeconds();
	
	// add a zero in front of numbers<10
	h=checkTime(h);
	m=checkTime(m);
	s=checkTime(s);
	
	if (h == 00 && m == 00 && s == 00)
		timestring = "00:00:00";
	else if (m < 10 & h < 1)
	{
		timestring = "<span>"+h+":"+m+":"+s+"</span>";
	} else {
		timestring = h+":"+m+":"+s;
	}
	
	document.getElementById('countdown').innerHTML = timestring;
	if (timestring != "00:00:00") 
	t=setTimeout('countdown('+timestamp+')',500);
}

function checkTime(i)
{
	if (i<10)
	{
		i="0" + i;
	}
	return i;
}

