function focusOn(objname, x, y, s) {
	var x0 = 170;
	var y0 = 250;
	var g = document.getElementById(objname);
	g.style.position = "absolute";
	g.style.left = x + x0 + "px";
	g.style.top = y + y0 + "px";
	g.style.visibility = "visible";
	g.innerHTML = '<img src="/img/focus.gif" width="11" height="11"/> ' + '<b>' + s + '</b>';
}

function focusOff(objname) {
	document.getElementById(objname).style.visibility = "hidden"; 
}

function submitForm(formname) {
	var formobj = getElementObj(formname);
	if (formobj) formobj.submit();
}

function submit_form_advanced(formname, action, target) {
	var formobj = getElementObj(formname);
	if (formobj) {
		if (action) { formobj.action=action; }
		if (target) { formobj.target=target; }
		formobj.submit();
	}
}

function preloadImages(images) {
	if (images) {
		for (i=0; i<images.length; i++) {
			var img = new Image();
			img.src = images[i];
		}
	}
}

function prj_toggleAll(check) {
    if (document.getElementById) {
	value = null;
	if (check.checked)
	    value = "checked";
	items = ["fields_prjId", "fields_acronym", "fields_title", "fields_cr", "fields_prjType", "fields_fa", "fields_prjCall", "fields_url", "fields_acqDate", "fields_startDate", "fields_endDate", "fields_sapCode", "fields_prjAbstract", "fields_keywords", "fields_funding", "fields_partners", "fields_prjManager", "fields_rp", "fields_note", "fields_prjDimension"];
	for (i=0; i<items.length; i++) {
	    obj = document.getElementById(items[i]);
	    if (obj) { obj.checked = value; }
	}
    }
}

function toggleAll(checkItems) {
    if (checkItems) {
	for(i=1; i<checkItems.length; i++) {
	    checkItems[i].checked=checkItems[0].checked;
	}
    }
}

/**
   * taken from cocoon main.js
   * so must be working fine
   */
function toggle(id) {
    var element = document.getElementById(id);
    with (element.style) {
        if ( display == "none" ){
            display = ""
        } else{
            display = "none"
        }
    }
    var text = document.getElementById(id + "-switch").firstChild;
    if (text.nodeValue == "[show]") {
        text.nodeValue = "[hide]";
    } else {
        text.nodeValue = "[show]";
    }
}

function toggleswitch(id, imgid, imgon, imgoff) {
	var sobj = getElementObj(id);
	var imgobj = getElementObj(imgid);
	if (sobj) {
		var imgdisp = "";
		if (sobj.style.display == "none") {
			sobj.style.display = "";
			imgdisp = imgon;
		} else {
			sobj.style.display = "none";
			imgdisp = imgoff;
		}
		if (imgobj) {
			imgobj.src=imgdisp;
		}
	}
}

function toggleSwitchOff(id, imgid, imgon, imgoff) {
	var sobj = getElementObj(id);
	var imgobj = getElementObj(imgid);
	if (sobj) {
		var imgdisp = "";
   		sobj.style.display = "none";
   		imgdisp = imgoff;
		if (imgobj) {
			imgobj.src=imgdisp;
		}
	}
}


function toggleSwitchOn(id, imgid, imgon, imgoff) {
	var sobj = getElementObj(id);
	var imgobj = getElementObj(imgid);
	if (sobj) {
		var imgdisp = "";
   		sobj.style.display = "";
   		imgdisp = imgon;
		if (imgobj) {
			imgobj.src=imgdisp;
		}
	}
}



function toggleswitches(ids, imgid, imgon, imgoff) {
	var sobj = getElementObj(ids[0]);
	var imgobj = getElementObj(imgid);
	var dispStyle = "";
	if (sobj) {
		var imgdisp = "";		
		if (sobj.style.display == "none") {
			dispStyle = "";			
			imgdisp = imgon;
		} else {
			dispStyle = "none";
			imgdisp = imgoff;
		}
	}
	for (i=0; i < ids.length; i++) {
		var sobj = getElementObj(ids[i]);
		if (sobj) { sobj.style.display = dispStyle; }
	}
  	if (imgobj) { imgobj.src=imgdisp; }
}

function toggleSwitchAll(ids, imgid, imgon, imgoff) {
	var sobj = getElementObj(ids[0]);
	var imgobj = getElementObj(imgid);
	var dispStyle = "";
	if (sobj) {
		var imgdisp = "";		
		if (sobj.style.display == "none") {
			dispStyle = "";			
			imgdisp = imgon;
		} else {
			dispStyle = "none";
			imgdisp = imgoff;
		}
	};

	for (i=0; i < ids.length; i++) {
		var sobj = getElementObj(ids[i]);
		if (sobj) {
			sobj.style.display = dispStyle;
		};
	};

  	if (imgobj) {
  		imgobj.src=imgdisp;
  	};
	resizeWindowToContents();
}


function toggleSwitchAllShort(ids, imgid) {
	var imgon = '/img/icons/icon_on.gif';
	var imgoff = '/img/icons/icon_off.gif';
	var sobj = getElementObj(ids[0]);
	var imgobj = getElementObj(imgid);
	var dispStyle = "";
	if (sobj) {
		var imgdisp = "";		
		if (sobj.style.display == "none") {
			dispStyle = "";			
			imgdisp = imgon;
		} else {
			dispStyle = "none";
			imgdisp = imgoff;
		}
	};

	for (i=0; i < ids.length; i++) {
		var sobj = getElementObj(ids[i]);
		if (sobj) {
			sobj.style.display = dispStyle;
		};
	};

  	if (imgobj) {
  		imgobj.src=imgdisp;
  	};
	resizeWindowToContents();
}



function setInnerMsg(objid, msg, spanclass) {
	var obj = getElementObj(objid);
	if (obj) {
		var text = "<span class=\"" + (spanclass ? spanclass : "notifyMsg" + "\">") + msg + "</span>";
		obj.innerHTML=text;
	}
}


today = new Date
weekDayName = new Array ("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday")
monthName = new Array ("January","February","March","April","May","June","July","August","September","October","November","December")

function printDate() {
    document.write("<b>" + weekDayName[today.getDay()]+ ", " + monthName[today.getMonth()] + " " + today.getDate()+ ", " + today.getYear() + "</b>");
}


function openWindow(action, name, width, height) {
  parameter = "toolbar=no, location=no, status=yes, resizable=yes, width="+width+", height="+height+", scrollbars=yes";
  winHandler = window.open(action, name, parameter);
//  winHandler.focus();
  return;
}

function prj_section_select(selectObj) {
    formObj = document.getElementById("sectionSelectForm");
    if (selectObj && formObj) {
	formObj.submit();
    }
}

function pub_section_select(radioObj) {
    if (radioObj) {
	if (radioObj.value == "" || radioObj.value == "dit") {
	    disable("pub_select_rp");
	    disable("pub_select_prsn");
	} else if (radioObj.value == "rp") {
    	    enable("pub_select_rp");
	    disable("pub_select_prsn");
	} else if (radioObj.value == "prsn") {
	    disable("pub_select_rp");
	    enable("pub_select_prsn");
	}
    }
}

function tech_section_select_changed(name) {
    if (document.getElementById) {
	tech_section_select(document.getElementById(name));
    }
}

function tech_section_select(radioObj) {
    if (radioObj) {
	if (radioObj.value == "dit") {
	    enable("period_tech_range");
	    enable("tech_year_from");
	    enable("tech_year_to");
	} else if (radioObj.value == "rp" || radioObj.value == "prsn") {
	    disable("period_tech_range");
	    disable("tech_year_from");
	    disable("tech_year_to");
	    checkit("period_tech_all");
	} else if (radioObj.value == "prsn") {
	    disable("period_tech_range");
	    disable("tech_year_from");
	    disable("tech_year_to");
	    checkit("period_tech_all");
	}
    }
}

function pub_generate_pdf() {
    inputObj = document.getElementById("pdf");
    if (inputObj) {
	inputObj.value = "pdf";
    }
}

function pub_generate_html() {
    inputObj = document.getElementById("pdf");
    if (inputObj) {
	inputObj.value = "";
    }
}

function tech_generate_pdf() {
    inputObj = document.getElementById("tech_pdf");
    if (inputObj) {
	inputObj.value = "pdf";
    }
}

function tech_generate_html() {
    inputObj = document.getElementById("tech_pdf");
    if (inputObj) {
	inputObj.value = "";
    }
}

function submit_generate_pdf(elName) {
    inputObj = document.getElementById(elName);
    if (inputObj) {
	inputObj.value = "pdf";
    }
}

function submit_generate_html(elName) {
    inputObj = document.getElementById(elName);
    if (inputObj) {
	inputObj.value = "";
    }
}

function prj_submit_generate_html(elName) {
    formObj = document.getElementById(elName);
    if (formObj) {
	formObj.action = "project";
    }
}

function prj_submit_generate_pdf(elName) {
    formObj = document.getElementById(elName);
    if (formObj) {
	formObj.action = "projectPDF";
    }
}


function pub_submit(type) {
    pubTypeObj = document.getElementById("pgentype");
    if (pubTypeObj) {
	pubTypeObj.value=type;
    }
    return true;
}

function form_submit_method(formid, mvalue, action, target) {
	var formobj = getElementObj(formid);
	var methodobj = getElementObj('method');
	if (formobj && methodobj) {		
		methodobj.value=mvalue;
		if (action) { formobj.action = action; }
		if (target) { formobj.target = target; }
		formobj.submit();
	}
}

// ----------- basic ----- 
//TODO:
function getElementObj(name) {
    if (document && document.getElementById) { return document.getElementById(name); } 
    return null;
}

function getInputboxValue(name) {
    obj = getElementObj(name);
    if (obj != null) { return obj.value; }
    return "";
}




function disable(elem) {
    var obj = getElementObj(elem);
    if (obj) { obj.disabled = "true"; }
}

function disableGroup(elems) {
    if (elems) {
        for (i=0; i < elems.length; i++) { disable(elems[i]); }
    }
}

function enable(elem) {
    var obj = getElementObj(elem);
    if (obj) { obj.disabled = null; }
}

function enableGroup(elems) {
    if (elems) {
        for (i=0; i < elems.length; i++) { enable(elems[i]); }
    }
}

function uncheckGroup(elems) {
    if (elems) {
        for (i=0; i < elems.length; i++) { uncheckit(elems[i]); }
    }
}

function uncheckit(elem) {
    var obj = getElementObj(elem);
    if (obj) { obj.checked = null; }
}

function checkit(elem) {
    var obj = getElementObj(elem);
    if (obj) { obj.checked = "checked"; }
}

function isCheckedAny(elems) {
    for (i=0; i < elems.length; i++) {
        if (isChecked(elems[i])) { return true; }
    }
    return false;
}

function isChecked(name) {
    obj = getElementObj(name);
    if (obj && obj.checked) { return true; }
    return false;
}


/* set value of input*/
function _input_setValue(elem, newValue) {
    var obj = getElementObj(elem);
    if (obj) { obj.value = newValue; }
}

function _input_isEmptyAny(elems) {
    if (elems) {
        for (i=0; i<elems.length; i++) {
            if (_input_getValue(elems[i] == "")) { return true; }
        }
    }
    return false;
}

/* get value of input*/
function _input_getValue(elem) {
    var obj = getElementObj(elem);
    if (obj) { return obj.value; }
    return "";
}


/* "select" element functions */
function _select_isEmptyAny(elems) {
    if (elems) {
        for (i=0; i<elems.length; i++) {
            if (_select_getSelectedValue(elems[i]) == "") return true;
        }
    }
    return false;
}

function _select_getSelectedValue(selId) {
  var obj = getElementObj(selId);
  if (obj && obj.options[obj.selectedIndex]) {
    return obj.options[obj.selectedIndex].value;
  }
  return "";
}

function _select_getSelectedText(selId) {
  var obj = getElementObj(selId);
  if (obj && obj.options[obj.selectedIndex]) {
    return obj.options[obj.selectedIndex].text;
  }
  return "";
}


function _select_getSelectedOption(selId)
{
  var mySelect = getElementObj(selId);
  if (mySelect && mySelect.options && mySelect.options.length > mySelect.selectedIndex && mySelect.selectedIndex >= 0) {
    return mySelect.options[mySelect.selectedIndex];
  }
  return null;
}

function _select_selectOption(selName, opValue) {
  var mySelect = getElementObj(selName);
  if (mySelect) {
    for (cnt=0; cnt < mySelect.options.length; cnt++) {
      if ((mySelect.options[cnt] != null) &&
          (mySelect.options[cnt].value == opValue))
        mySelect.options[cnt].selected = true;
    }
  }
}

function _select_addOption(selId, opName, opValue, sort)
{
  var mySelect = document.getElementById(selId);
  if (mySelect) {
    for (cnt=0; cnt < mySelect.options.length; cnt++) {
      if ((mySelect.options[cnt] != null) && (mySelect.options[cnt].value == opValue))
        return;
    }
    var option = new Option(opName, opValue);
    mySelect.options[mySelect.options.length]=option;
	if (sort) {
		_select_sortOptions(mySelect)
	}
  }
}

function _select_delOption(form_id, sel_name, op_value)
{
  var mySelect = null;
  if (document.getElementById(sel_name) && document.getElementById(sel_name).options) {
    mySelect = document.getElementById(sel_name);
  } else if (document.forms[form_id].elements[sel_name] && document.forms[form_id].elements[sel_name].options) {
    mySelect = document.forms[form_id].elements[sel_name];
  }
  if (mySelect) {
    var len = mySelect.options.length;
    for (cnt=0; cnt<len; cnt++) {
      if ((mySelect.options[cnt] != null) &&
          (mySelect.options[cnt].value == op_value))
        mySelect.options[cnt] = null;
    }
  }
}

function _select_delOptions(selId) {
  var mySelect = getElementObj(selId);
  if (mySelect) {
    var len = mySelect.options.length;
    for (cnt=0; cnt < len; cnt++) {
      mySelect.options[0] = null;
    }
  }
}

function _select_moveOption(idFrom, idTo, sort) {
	var seloption = _select_getSelectedOption(idFrom);
	if (seloption) {
		_select_addOption(idTo, seloption.text, seloption.value, sort);
		_select_delOption(null, idFrom, seloption.value);
	}
}

function _select_moveOptions(idFrom, idTo, sort) {	
	var seloption = _select_getSelectedOption(idFrom);	
	while (seloption) {
		seloption = _select_getSelectedOption(idFrom);	
    	if (seloption) {
    		_select_addOption(idTo, seloption.text, seloption.value, sort);
    		_select_delOption(null, idFrom, seloption.value);
    	}
	}
	
}


function _select_sortOptions(mySelect) {
	if (mySelect && mySelect.options) {
		var o = new Array();
		for (var i=0; i<mySelect.options.length; i++) {
			o[o.length] = new Option( mySelect.options[i].text, mySelect.options[i].value, mySelect.options[i].defaultSelected, mySelect.options[i].selected);
		}
		if (o.length==0) { return; }
		o = o.sort( 
			function(a,b) { 
				if ((a.text+"") < (b.text+"")) { return -1; }
				if ((a.text+"") > (b.text+"")) { return 1; }
				return 0;
			}
		);
	
		for (var i=0; i<o.length; i++) {
			mySelect.options[i] = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);
		}
	}
}

function _select_sortOptionsByValue(mySelect) {
	if (mySelect && mySelect.options) {
		var o = new Array();
		for (var i=0; i<mySelect.options.length; i++) {
			o[o.length] = new Option( mySelect.options[i].text, mySelect.options[i].value, mySelect.options[i].defaultSelected, mySelect.options[i].selected);
		}
		if (o.length==0) { return; }
		o = o.sort( 
			function(a,b) { 
				if ((a.value+"") < (b.value+"")) { return -1; }
				if ((a.value+"") > (b.value+"")) { return 1; }
				return 0;
			}
		);
	
		for (var i=0; i<o.length; i++) {
			mySelect.options[i] = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);
		}
	}
}


/* window stuff */
function resize(containerId) {
    // for Gecko
    if ( typeof( self.sizeToContent ) == 'function' ) {
        self.sizeToContent();
        //self.scrollbars.visible = false;
        // give some more space ... to prevent 'fli(pp/ck)ing'
        self.resizeBy( 10, 50 );
        return;
    }
    
    // for IE, Opera
    if (containerId && document.getElementById && typeof(document.getElementById(containerId)) != 'undefined' ) {
    
        // get content size
        var newWidth  = document.getElementById(containerId).offsetWidth;
        var newHeight = document.getElementById(containerId).offsetHeight;
        
        // set size to contentsize
        // plus some offset for scrollbars, borders, statusbar, menus ...
        self.resizeTo( newWidth + 45, newHeight + 75 );
    }
}

/* window stuff */
function resizeWindowToContents() {
	
	if (self.sizeToContent) {
		self.sizeToContent() 
	} else {
		self.resizeTo(document.body.offsetWidth+28, document.body.offsetHeight+60);        
	}

}

/***********************
 * input validation *
 ***********************/
function _iv_isUFloatValue(value) {
    //TODO
}

/*
 * works w/ _eh_checkUFloatInput()
 *  - ex.: onKeyUp="_iv_formatUFloat(this);"
 */
function _iv_formatUFloat(elemObj) {
    if (elemObj) {
        elemObj.value = elemObj.value.replace(",",".");
    }
}


/***********************
 * event handlers *
 ***********************/
 
/****************
 * works w/ _iv_formatUFloat()
 *  - ex.: onKeyPress="return _eh_checkUFloatInput(event);"
 */
function _eh_checkUFloatInput(e) {        
    var key = window.event ? e.keyCode : e.which;
	var keychar = String.fromCharCode(key);
    
    var targ;
	if (!e) var e = window.event;
	if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;
    
    if (targ && (keychar=='.' || keychar==',') && targ.value.indexOf('.') != -1) { return false; }
    
	reg = /\d/;    
	return reg.test(keychar) || (keychar == '.') || (keychar == ',') || (key == 8) || (key == 0);
}

/****************
 *
 */
function _eh_checkUIntInput(e) {
    var key = window.event ? e.keyCode : e.which;
	var keychar = String.fromCharCode(key);
	reg = /\d/;
	return reg.test(keychar) || (key == 8) || (key == 0);
}



