var formChangedAfterAutosave=false;
var autosaveForm=null;
var autosaveMode=null;
var autosavePid=null;
var keepalivePid=null;

function registerChange2() {
  // register a change in a form input value
  registerChange();
  formChangedAfterAutosave = true;
}

function clearAutosave() {
  if (autosavePid) {
    window.clearInterval(autosavePid);
    autosavePid=null;
  }
  if (keepalivePid) {
    window.clearInterval(keepalivePid);
    keepalivePid=null;
  }
}

function startAutosave(frm, mode) {
  clearAutosave();
  if (frm) {
    autosaveForm=frm;
    autosaveMode=mode;
    autosavePid=window.setInterval('autosaveDaemon()', 1000);    
    keepalivePid=window.setInterval('autosaveDaemon(1)', 3600000);    
  }
}

function autosaveDaemon(keepalive) {
  if (!autosaveForm) {
    clearAutosave();
  } else {
    if ((formChanged && formChangedAfterAutosave) || keepalive) {
      formChangedAfterAutosave=false;
      doAutosave(autosaveForm);
    }
  }
}

function doAutosave(frm) {
  // This function autosaves a form's form fields using an XMLHTTPRequest
  // First, gather form contents
  var action = frm.attributes
      ? frm.attributes.getNamedItem("action").nodeValue
      : frm.getAttribute("action");
  var queryParameters = new Array();
  var i,k, el, ed, value;
  for (k=0; k<frm.elements.length; k++) {
    el=frm.elements[k];
    if (typeof(el.name)=='undefined' || el.name==''
        || el.name=='action' || el.name=='returnAction' || el.name=='dummy'
        || el.type=='file' || el.type=='submit' || el.type=='reset') {
      continue;
    }
    if (tinyMCE && el.className=='mceEditor' && (ed=tinyMCE.get(el.name))) {
      value=ed.getContent();
    } else {
      value=getFieldValue(el);
    }
    if (typeof(value)=='array') {
      for(i=0; i<value.length; i++) {
        queryParameters.push(encodeURIComponent(el.name+'[]')+'='+encodeURIComponent(value[i]));
      }
    } else if (typeof(value)!='undefined') {
      queryParameters.push(encodeURIComponent(el.name)+'='+encodeURIComponent(value));
    }
  }
  queryParameters.push('action=autosavecase');
  queryParameters.push('autosaveMode='+autosaveMode);
  postContents=queryParameters.join('&');
  //window.alert(postContents);

  // Now, post to server
  var ua = navigator.userAgent.toLowerCase();
  var request;
  if (window.XMLHttpRequest || !window.ActiveXObject) {
    request = new XMLHttpRequest();
  } else if (ua.indexOf('msie 5') == -1) {
    request = new ActiveXObject("Msxml2.XMLHTTP");
  } else {
    request = new ActiveXObject("Microsoft.XMLHTTP");
  }
  request.open('POST', action, true);
  request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  request.setRequestHeader("Content-length", postContents.length);
  request.setRequestHeader("Connection", "close");
  request.send(postContents);
}

function changeGadget(showGadget) {
	var allGadgets = new Array ('messenger', 'youtube', 'flickr', 'twitter', 'linkedin', 'hyves', 'facebook');
	for (var thisGadget in allGadgets) {
		var elGadget = findObject('gadget'+allGadgets[thisGadget]);
		elGadget.style.display = (allGadgets[thisGadget] == showGadget ? '' : 'none');
	}
	return true;
}

function checkGadgetInput(form) {
	var gadgetmessage = 'Er is iets foutgegaan. Controleer de gegevens aub.';
	if (form.gadgetType.value == 'messenger') {
		var regex = new RegExp(/.*invitee=([a-z0-9]*)@.*/);
		gadgetmessage = 'De ingevulde code is niet correct. Je moet de letterlijke URL of de Embed code van Messenger invullen.';
		var result = form.gadgetMessengerUrl.value.replace(regex, "$1");
	} else if (form.gadgetType.value == 'youtube') {
		var regex = new RegExp(/((^((http\:\/\/)?(www.|[a-z]{2}.)?)youtube.com\/watch\?v=[0-9a-zA-Z-_]{11})|(((http\:\/\/)?(www.|[a-z]{2}.)?))youtube.com\/v\/[0-9a-zA-Z-_]{11}(&hl=[a-z]{2})?(&fs=[01]{1})?(&color1=[0-9a-fx]{8})?(&color2=[0-9a-fx]{8})?(&border=[01]{1})?)/);
		gadgetmessage = 'De ingevulde code is niet correct. Je moet de letterlijke URL of de Embed code van YouTube invullen.';
		var result = form.gadgetYoutubeUrl.value.match(regex);
	} else if (form.gadgetType.value == 'hyves') {
		var regex = new RegExp(/(^[htp:\/]*)?([a-zA-Z0-9-_]*)(\.hyves.*)?/);
		gadgetmessage = 'Dit is niet een goede hyves accountnaam.';
		var result = form.gadgetHyvesUrl.value.replace(regex, "$2");
	} else if (form.gadgetType.value == 'facebook') {
		var regex = new RegExp(/(^.*facebook.com\/people\/)?([a-zA-Z0-9-_\/]*)?/);
		gadgetmessage = 'Dit is niet een goed facebook id. Gebruik de vorm: http://www.facebook.com/people/Jouwnaam/JouwId.';
		var result = form.gadgetFacebookUrl.value.replace(regex, "$2");
	} else if (form.gadgetType.value == 'linkedin') {
		var regex = new RegExp(/((http:\/\/)?(www\.)?(linkedin.com\/in\/)?([0-9a-zA-Z-_]*))/);
		gadgetmessage = 'Dit is niet een goed linkedin id. Gebruik de vorm: http://www.linkedin.com/in/JouwId.';
		var result = form.gadgetLinkedinUrl.value.match(regex);
	} else if (form.gadgetType.value == 'twitter') {
		var regex = new RegExp(/((http:\/\/)?(www\.)?(twitter.com\/)?([0-9a-zA-Z-_]*))/);
		gadgetmessage = 'Dit is niet een goed twitter id. Gebruik de vorm: http://www.twitter.com/JouwId.';
		var result = form.gadgetLinkedinUrl.value.match(regex);
	} else if (form.gadgetType.value == 'flickr') {
		var result = 'top';
	}
	if (result != '' && result != null) {
		return true;
	} else {
		alert(gadgetmessage);
		return false;
	}
}

function getFlashMovieObject(movieName) {
  // This function returns a reference to the specified Flash movie
  // The object is such that methods added from within the Flash movie
  // with 'addCallback()' are available
  var isIE = navigator.appName.indexOf("Microsoft") != -1;
  var flashMovie=null;
  if(document.embeds[movieName]) {
    flashMovie=document.embeds[movieName];
  } else if(window.document[movieName]) {
    flashMovie=window.document[movieName];
  } else if(window[movieName]) {
    flashMovie=window[movieName];
  } else if(document[movieName]) {
    flashMovie=document[movieName];
  } else if (document.getElementById(movieName)) {
    flashMovie=document.getElementById[movieName];
  } else {
    flashMovie=null;
  }
  if (flashMovie && flashMovie.length!=undefined) {
    flashMovie=flashMovie[1];
  }
  return flashMovie;
}

function removeFlashMovieObject(id) {
  // This function removes a Flash movie object, leaving the alternative
  // content included in the object
  // For simplicity, it removes all OBJECT/PARAM tags in the parent node
  var el=document.getElementById(id);
  if (el && el.parentNode && el.parentNode.innerHTML) {
    el.parentNode.innerHTML=el.parentNode.innerHTML.replace(
        /<\/?(object|param)[^>]*>/, '');
  }
}

function removeFlashMovieTransparency(id) {
  // This function removes the wmode=transparent tag of a Flash movie object,
  // For simplicity, it removes this tag everywhere in the parent node
  var el=document.getElementById(id);
  if (el && el.parentNode && el.parentNode.innerHTML) {
    el.parentNode.innerHTML=el.parentNode.innerHTML.replace(
        '<param name="wmode" value="transparent">', '');
  }
}

function setPrice() {
	var totalTickets = findObject('orderTickets').value;
	var totalSeats = findObject('orderSeats').value;
	var totalTables = findObject('orderTables').value;
	var totalPrice = findObject('totalPrice');
	var totalVat = findObject('totalVat');
	var totalPriceVat = findObject('totalPriceVat');
	totalPricePass = Number(totalTickets * ticketPrice + totalSeats * seatPrice + totalTables * tablePrice);
	totalPrice.innerHTML = totalPricePass.toFixed(2).replace(/\./, ',');
	totalVatPass = Number(totalTickets * ticketPrice * (ticketVat == 'low' ? vatLow : vatHigh)/100)
						 + Number(totalSeats * seatPrice * (seatVat == 'low' ? vatLow : vatHigh)/100)
						 + Number(totalTables * tablePrice * (tableVat == 'low' ? vatLow : vatHigh)/100);
	totalVat.innerHTML = totalVatPass.toFixed(2).replace(/\./, ',');
	totalPriceVatPass = Number(totalPricePass) + Number(totalVatPass);
	totalPriceVat.innerHTML = totalPriceVatPass.toFixed(2).replace(/\./, ',');
}

function setPrice2() {
	var totalPrice = findObject('totalPrice');
	var totalVat = findObject('totalVat');
	var totalPriceVat = findObject('totalPriceVat');
	totalPricePass = Number(totalTickets * ticketPrice + totalSeats * seatPrice + totalTables * tablePrice);
	totalPrice.innerHTML = totalPricePass.toFixed(2).replace(/\./, ',');
	totalVatPass = Number(totalTickets * ticketPrice * (ticketVat == 'low' ? vatLow : vatHigh)/100)
						 + Number(totalSeats * seatPrice * (seatVat == 'low' ? vatLow : vatHigh)/100)
						 + Number(totalTables * tablePrice * (tableVat == 'low' ? vatLow : vatHigh)/100);
	totalVat.innerHTML = totalVatPass.toFixed(2).replace(/\./, ',');
	totalPriceVatPass = Number(totalPricePass) + Number(totalVatPass);
	totalPriceVat.innerHTML = totalPriceVatPass.toFixed(2).replace(/\./, ',');
}

function getPageNavigationList(pageNr, pageCount) {
  var pageNavigationList=new Array();
  var p1=Math.max(2, Math.min(pageNr-3, pageCount-7));
  var p2=Math.min(pageCount-1, Math.max(pageNr+3, 8));
  pageNavigationList.push(1);
  if (p1>2) {
    pageNavigationList.push('...');
  }
  for(var p=p1; p<=p2; p++) {
    pageNavigationList.push(p);
  }
  if (p2<pageCount-1) {
    pageNavigationList.push('...');
  }
  pageNavigationList.push(pageCount);  
  return pageNavigationList;
}

window.onbeforeunload=notePartialReload;

