/*
 * Project:     zdk-portal
 *
 * Copyright:   Copyright (c) 2007
 * Company:     SecureNet GmbH
 * Created:     Sep 09, 2007
 * Author:      Florian Lindauer, fl@securenet.de (fl)
 * Version:     1.0
 *
 * SVN-Info:    $Revision:: 860    $ by $Author:: ks    $
 *              $LastChangedDate:: 2009-07-07 19:13:54 #$
 */

/***********************************************************************************************************************
 * NONE-Prototype.js based ZDK js stuff
 **********************************************************************************************************************/

/**
 * Get DOM element by id in different ways.
 */
function getElementById(id)
{
  return(document.getElementById ? document.getElementById(id) 
                                 : (document.all ? document.all[id] 
                                                 : (document.layers ? document.layers[id] 
                                                                    : null)));
}

/**
 * Code called after loading a page
 */
function onLoad()
{
  checkToplink();
}

/** Switch style.display to 'block' or 'none' */
function toggleDisplay(id, switchOn)
{
  var obj = getElementById(id);
  if (obj)
  { 
    obj.style.display = (switchOn ? "block" : "none");
    return true;
  }
  return false;
}

/** Switch style.visibility to 'visible' or 'hidden' */
function toggleVisibility(id, switchOn)
{
  var obj = getElementById(id);
  if (obj)
  { 
    obj.style.visibility = (switchOn ? "visible" : "hidden");
    return true;
  }
  return false;
}

/** Switch on / show spinner div */
function spinnerOn() 
{
  return toggleVisibility("spinner", true);
}

/** Switch off / hide spinner div */
function spinnerOff() 
{
  return toggleVisibility("spinner", false);
}

function clearFieldById(field_id) 
{
  getElementById(field_id).value = '';
}

function deselectSelectbox(field_id) 
{
  var selbox = getElementById(field_id);
  selbox.selectedIndex = -1;
}

function deleteIfChecked(del_field_id, check_field)
{
  if (check_field.checked)
    getElementById(del_field_id).value = '';
}

function checkToplink()
{
  showToplink(longPage());
}

function showToplink(show)
{
  toggleDisplay("box_toplink", show);
}

function longPage()
{
  //alert("longPage: " + getYPosition('box_footer') + " - " + getYPosition('menu_anchor') + " < " + getClientHeight());
  var diff = getYPosition('box_footer') - getYPosition('menu_anchor');
  return diff > getClientHeight();
}

function getClientHeight() {
  if(typeof(window.innerHeight) == 'number' ) 
  { //Non-IE
    return window.innerHeight;
  } 
  else if(document.documentElement && (document.documentElement.clientHeight)) 
  { //IE 6+ in 'standards compliant mode'
    return document.documentElement.clientHeight;
  } 
  else if(document.body && (document.body.clientHeight)) 
  { //IE 4 compatible
    return document.body.clientHeight;
  }
  else
  {
    return 768;
  }
}

function getYPosition(elementID)
{
  var offset = 0;
  var elem = getElementById(elementID);
  while (elem != null) 
  {
    offset += elem.offsetTop;
    elem = elem.offsetParent; 
  }
  return offset;
}

/**
 * Toggle friend request checkbox in message send form. 
 */
function setFriendRequestMessage(isChecked)
{
  if (document.forms['sendMessageForm'] && document.forms['sendMessageForm']['friendRequest'])
  {
    var checkBox = document.forms['sendMessageForm']['friendRequest'];
    checkBox.checked=isChecked;
  }
}

/**
 * Set selects of an input/textare value, selStart starts with 0.
 */
function setSelRange(inputEl, selStart, selEnd) {
  if (inputEl.setSelectionRange)
  {
    inputEl.focus();
    inputEl.setSelectionRange(selStart, selEnd);
  }
  else if (inputEl.createTextRange)
  {
    var range = inputEl.createTextRange();
    range.collapse(true);
    range.moveEnd('character', selEnd);
    range.moveStart('character', selStart);
    range.select();
  }
} 

/**
 * Function for adding a Filter to an Input Field
 * @param  : [filterType  ] Type of filter 0=>Alpha, 1=>Num, 2=>AlphaNum
 * @param  : [evt         ] The Event Object
 * @param  : [allowDecimal] To allow Decimal Point set this to true
 * @param  : [allowCustom ] Custom Characters that are to be allowed
 */
function filterInput(filterType, evt, allowDecimal, allowCustom)
{
  var keyCode, chracter, inputField, filter = '';
  var alpha = 'abcdefghijklmnopqrstuvwxyz����ABCDEFGHIJKLMNOPQRSTUVWXYZ���';
  var num   = '0123456789';

  // Get the Key Code of the Key pressed if possible else - allow
  if (window.event)
  {
    keyCode = window.event.keyCode;
    evt = window.event;
  }
  else if (evt)
  {
    keyCode = evt.which;
  }
  else
  {
    return true;
  }

  // Setup the allowed Character Set
  if (filterType == 0)
  {
    filter = alpha;
  }
  else if(filterType == 1)
  {
    filter = num;
  }
  else if (filterType == 2)
  {
    filter = alpha + num;
  }
  if (allowCustom)
  {
    filter += allowCustom;
  }
  if(filter == '')
  {
    return true;
  }

  // Get the Element that triggered the Event
  inputField = evt.srcElement ? evt.srcElement : evt.target || evt.currentTarget;

  // If the Key Pressed is a CTRL key like Esc, Enter etc - allow
  if((keyCode==null) || (keyCode==0) || (keyCode==8) || (keyCode==9) || (keyCode==13) || (keyCode==27) )
  {
    return true;
  }

  // Get the Pressed Character
  chracter = String.fromCharCode(keyCode);

  // If the Character is a number - allow
  if((filter.indexOf(chracter) > -1))
  {
    return true;
  }

  // Else if Decimal Point is allowed and the Character is '.' - allow
  else if(filterType == 1 && allowDecimal
          && (chracter == '.' || chracter == ',')
          && inputField.value.indexOf(chracter) == -1)
  {
    return true;
  }
  else
  {
    return false;
  }
}

// -- eof --------------------------------------------------------------------------------------------------------------
