/**
* Misc JavaScript methods for www.svenskagravar.se
* @author Martin Oom
*/

DIGITS = new Array('0','1','2','3','4','5','6','7','8','9');

/**
* Check if the pressed key is valid
*/
function CheckValidChars(AKeyCode,AValidChars) {

	if (IsReturnKey(AKeyCode))
		return true;

  var CharOK = false;
  for (i = 0; i < AValidChars.length; i++) {
    if (String.fromCharCode(AKeyCode) == AValidChars[i]) {
      CharOK = true;
      break;
    }
  }
  /*if (CharOK == false)
    Event.returnValue = false;*/
  return (CharOK);
}

/**
* Checks that a key code is numeric, ie 0..9
*/
function CheckNumeric(AKeyCode) {
	return CheckValidChars(AKeyCode,DIGITS);
}

/**
* Checks if a key code is the return key, ie 13
*/
function IsReturnKey(AKeyCode) {
  return (AKeyCode == 13);
}

function getLoadingMask() {
  var elem = getElement('loading-mask');
  if (!elem) {
    var doc = currentDocument();
    elem = DIV({'id': 'loading-mask', 'style': 'display: none;'});
    appendChildNodes(doc.body, elem);
  }
  return elem;
}

// preload the loading-indicator image
img = new Image(); 
img.src = "./images/large-loading.gif";

function getLoadingIndicator() {
  var elem = getElement('loading-indicator');
  if (!elem) {
    var doc = currentDocument();
    elem = DIV({'id': 'loading-indicator', 'style': 'display: none;'});
    elem.innerHTML =
      '<img src="./images/large-loading.gif" width="32" height="32" style="margin-right:8px;float:left;vertical-align:top;" />' +
	    'Söker gravsatta<br />' +
	    '<span id="loading-msg">Var vänlig vänta...</span>';
    appendChildNodes(doc.body, elem);
  }
  return elem;
}

/**
* Shows the loading indicator
*/
function showLoading() {
	vpPos = getViewportPosition();
	//alert('width = ' + size.w + '; height = ' + size.h);
	//alert('x = ' + pos.x + '; y = ' + pos.y);
	elem = getLoadingMask();
	if (elem) {
		elem.style.visibility = 'visible';
		elem.style.display = 'block';
		setElementPosition(elem,vpPos);
	}

	elem = getLoadingIndicator();
	if (elem) {
		elem.style.visibility = 'visible';
		elem.style.display = 'block';
		pos = getElementPosition(elem);
		pos.x += vpPos.x;
		pos.y += vpPos.y;
		setElementPosition(elem,pos);
	}
}

/**
* Hides the loading indicator
*/
function hideLoading() {
	elem = document.getElementById('loading-mask');
	if (elem) {
		elem.style.visibility = 'hidden';
		elem.style.display = 'none';
	}

	elem = document.getElementById('loading-indicator');
	if (elem) {
		elem.style.visibility = 'hidden';
		elem.style.display = 'none';
	}
}

/**
*
*/
function toggleDecPanel() {
  var pnl = document.getElementById('pnlDeceased');
  var lnk = document.getElementById('lnkToggleDecPanel');

  if (pnl.style.display == 'none') {
    pnl.style.display = '';
    //lnk.style.display = 'none';
    lnk.innerHTML = 'Dölj gravsatta &laquo;';
  } else {
    pnl.style.display = 'none';
    //lnk.style.display = 'none';
    lnk.innerHTML = 'Visa alla gravsatta i denna grav &raquo;';
  }
}

/**
* Clear search fields
*/
function clearSearchFields() {
  var cmb = document.getElementById('cmbDistrikt');
  cmb.selectedIndex = 0;

  var edt = document.getElementById('edtForNamn');
  edt.value = '';
  var cmb = document.getElementById('cmbFornamnSelType');
  if (cmb)
		cmb.selectedIndex = 0;

  var edt = document.getElementById('edtEfterNamn');
  edt.value = '';
  var cmb = document.getElementById('cmbEfterNamnSelType');
  if (cmb)
		cmb.selectedIndex = 0;

  var edt = document.getElementById('edtFodelseDatum');
  edt.value = '';
  var edt = document.getElementById('edtDodsDatum');
  edt.value = '';

  var cmb = document.getElementById('cmbSort');
  cmb.selectedIndex = 0;
  var cmb = document.getElementById('cmbSortDirection');
  cmb.selectedIndex = 0;
}

/**
* set a cookie value
*/
function setCookie(AName,AValue) {
	document.cookie = AName + '=' + AValue + '; path=/';
}

function setSearchMode(AMode) {
	switch (AMode) {
		case 'norm':
			removeElementClass('pnlSearchForm', 'advanced');
			getElement('edtSearchMode').value = 'norm';
			setCookie('mode','norm');
			getElement('cmbFornamnSelType').disabled = true;
			getElement('cmbEfterNamnSelType').disabled = true;
			getElement('lnkSearchMode').innerHTML = 'Avancerad sökning &raquo;';
			break;
		case 'adv':
			addElementClass('pnlSearchForm', 'advanced');
			getElement('edtSearchMode').value = 'adv';
			setCookie('mode','adv');
			getElement('cmbFornamnSelType').disabled = false;
			getElement('cmbEfterNamnSelType').disabled = false;
			getElement('lnkSearchMode').innerHTML = 'Förenklad sökning »';
			break;
	}
}

function getSearchMode() {
	if (getElement('edtSearchMode').value == 'adv')
		return 'adv';
	else
		return 'norm';
}

function toggleSearchMode() {
	if (getSearchMode() == 'adv')
		setSearchMode('norm');
	else
		setSearchMode('adv');
	return true;
}
