function persistScrollPosition() {
	if(document.getElementById("cms_scrollPosition"))
		document.getElementById("cms_scrollPosition").value = getScrollY();
}

function getScrollY() {
/*	if (typeof window.pageYOffset != 'undefined') return pageYOffset
	else if (document.documentElement) return document.documentElement.scrollTop
	else if (document.body) return document.body.scrollTop
	else return 0;
*/
	if (typeof window.pageYOffset != 'undefined') return pageYOffset + 5
	else if (document.documentElement) return document.getElementById('scrollContent').scrollTop
	else if (document.body) return document.body.scrollTop + 10
	else return 7;
}

function persistOpenerScrollPosition() {
	window.opener.document.getElementById("cms_scrollPosition").value = getOpenerScrollY();
}

function getOpenerScrollY() {
	if (typeof window.opener.pageYOffset != 'undefined') return pageYOffset
	else if (window.opener.document.documentElement) return window.opener.document.documentElement.scrollTop
	else if (window.opener.document.body) return window.opener.document.body.scrollTop
	else return 0;
}

function popupManager(name, url, width, height, scrolling){
	var t = 100;
	persistScrollPosition();
	if(scrolling == true)
		window.open(url, name, "width=" + width + ", height=" + height + ",location=no, menubar=no, status=no, toolbar=no, scrollbars=yes");
	else
		window.open(url, name, "width=" + width + ", height=" + height + ",location=no, menubar=no, status=no, toolbar=no, scrollbars=yes");
}

function setStatus(sender){
	document.getElementById('cms_editform').cms_status.value = sender.value;
	document.getElementById('cms_editformSubmit').value = 'reload';
	try{
		document.getElementById('cms_editform').onsubmit();
	}catch(e)
	{}
	try{
		document.getElementById('cms_editform').submit();
	}
	catch(e)
	{}
}

function setFeatureStartEnd(){
	document.getElementById('cms_editform').cms_featureStart.value = 
		document.getElementById("cms_FeatureStartyear").options[ document.getElementById("cms_FeatureStartyear").selectedIndex ].value + "-" + 
		document.getElementById("cms_FeatureStartmonth").options[ document.getElementById("cms_FeatureStartmonth").selectedIndex ].value;
	document.getElementById('cms_editform').cms_featureEnd.value =
		document.getElementById("cms_FeatureEndyear").options[ document.getElementById("cms_FeatureEndyear").selectedIndex ].value + "-" + 
		document.getElementById("cms_FeatureEndmonth").options[ document.getElementById("cms_FeatureEndmonth").selectedIndex ].value;

	document.getElementById('cms_editformSubmit').value = 'reload';
	try{
		document.getElementById('cms_editform').onsubmit();
	}catch(e)
	{}
	try{
		document.getElementById('cms_editform').submit();
	}
	catch(e)
	{}
}

function askForSettingStatus(sender){
	if(confirm("You are not allowed to put this item online - if you press OK an email will be sent to the responsible editor to ask for publication."))
		setStatus(sender);
}

function save(){
//	persistScrollPosition();
//	document.getElementById('cms_editform').cms_editformSubmit.value = 'submit';
	document.getElementById('cms_editformSubmit').value = 'submit';
	try{
		document.getElementById('cms_editform').onsubmit();
	}
	catch(e){}
	document.getElementById('cms_editform').submit();
}

function cancel(){
	document.getElementById('cms_editform').cms_editformCancel.value = true;
	document.getElementById('cms_editform').submit();
}

function closeAndReloadOpener(){
	window.opener.document.getElementById('cms_editformSubmit').value = 'reload';
	try{
		window.opener.document.getElementById('cms_editform').onsubmit();
	}catch(e)
	{}
	try{
		window.opener.document.getElementById('cms_editform').submit();
	}
	catch(e)
	{}
	window.close();
}

function closeAndAlert(message){
	alert(message);
	window.close();
}

function showEvent(id){
	if(!id){
		if(hilitedEvent < eventsArray.length - 1)
			id = hilitedEvent + 1;
		else
			id = 0;
	}
	if(eventsArray.length && id >= 0 && id < eventsArray.length){
		for(var e in eventsArray){
			if(e != id)
				eventsArray[e].style.display = "none";
			else
				eventsArray[e].style.display = "";
		}
		hilitedEvent = id;
	}
}		
	
function initEvents(){
	eventsArray = new Array();
	hilitedEvent = 0;
	var eventsDiv = document.getElementById("events").childNodes;
	for(var e = 0; e < eventsDiv.length; e++){
		if(eventsDiv[e].tagName == "DIV"){
			eventsArray.push(eventsDiv[e]);
			eventsDiv[e].style.display = "none";
		}
	}
	showEvent(0);
	eventUpdater = window.setInterval('showEvent()', 5000);
}

/*==================================================*
 $Id: filterlist.js,v 1.3 2003/10/08 17:13:49 pat Exp $
 Copyright 2003 Patrick Fitzgerald
 http://www.barelyfitz.com/webdesign/articles/filterlist/

 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or
 (at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *==================================================*/

function filterlist(selectobj) {

  //==================================================
  // PARAMETERS
  //==================================================

  // HTML SELECT object
  // For example, set this to document.myform.myselect
  this.selectobj = selectobj;

  // Flags for regexp matching.
  // "i" = ignore case; "" = do not ignore case
  // You can use the set_ignore_case() method to set this
  this.flags = 'i';

  // Which parts of the select list do you want to match?
  this.match_text = true;
  this.match_value = false;

  // You can set the hook variable to a function that
  // is called whenever the select list is filtered.
  // For example:
  // myfilterlist.hook = function() { }

  // Flag for debug alerts
  // Set to true if you are having problems.
  this.show_debug = false;

  //==================================================
  // METHODS
  //==================================================

  //--------------------------------------------------
  this.init = function() {
    // This method initilizes the object.
    // This method is called automatically when you create the object.
    // You should call this again if you alter the selectobj parameter.

    if (!this.selectobj) return this.debug('selectobj not defined');
    if (!this.selectobj.options) return this.debug('selectobj.options not defined');

    // Make a copy of the select list options array
    this.optionscopy = new Array();
    if (this.selectobj && this.selectobj.options) {
      for (var i=0; i < this.selectobj.options.length; i++) {

        // Create a new Option
        this.optionscopy[i] = new Option();

        // Set the text for the Option
        this.optionscopy[i].text = selectobj.options[i].text;

        // Set the value for the Option.
        // If the value wasn't set in the original select list,
        // then use the text.
        if (selectobj.options[i].value) {
          this.optionscopy[i].value = selectobj.options[i].value;
        } else {
          this.optionscopy[i].value = selectobj.options[i].text;
        }

      }
    }
  }

  //--------------------------------------------------
  this.reset = function() {
    // This method resets the select list to the original state.
    // It also unselects all of the options.

    this.set('');
  }


  //--------------------------------------------------
  this.set = function(pattern) {
    // This method removes all of the options from the select list,
    // then adds only the options that match the pattern regexp.
    // It also unselects all of the options.

    var loop=0, index=0, regexp, e;

    if (!this.selectobj) return this.debug('selectobj not defined');
    if (!this.selectobj.options) return this.debug('selectobj.options not defined');

    // Clear the select list so nothing is displayed
    this.selectobj.options.length = 0;

    // Set up the regular expression.
    // If there is an error in the regexp,
    // then return without selecting any items.
    try {

      // Initialize the regexp
      regexp = new RegExp(pattern, this.flags);

    } catch(e) {

      // There was an error creating the regexp.

      // If the user specified a function hook,
      // call it now, then return
      if (typeof this.hook == 'function') {
        this.hook();
      }

      return;
    }

    // Loop through the entire select list and
    // add the matching items to the select list
    for (loop=0; loop < this.optionscopy.length; loop++) {

      // This is the option that we're currently testing
      var option = this.optionscopy[loop];

      // Check if we have a match
      if ((this.match_text && regexp.test(option.text)) ||
          (this.match_value && regexp.test(option.value))) {

        // We have a match, so add this option to the select list
        // and increment the index

        this.selectobj.options[index++] =
          new Option(option.text, option.value, false);

      }
    }

    // If the user specified a function hook,
    // call it now
    if (typeof this.hook == 'function') {
      this.hook();
    }

  }


  //--------------------------------------------------
  this.set_ignore_case = function(value) {
    // This method sets the regexp flags.
    // If value is true, sets the flags to "i".
    // If value is false, sets the flags to "".

    if (value) {
      this.flags = 'i';
    } else {
      this.flags = '';
    }
  }


  //--------------------------------------------------
  this.debug = function(msg) {
    if (this.show_debug) {
      alert('FilterList: ' + msg);
    }
  }


  //==================================================
  // Initialize the object
  //==================================================
  this.init();

}
