String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g, '').replace(/\s+/g, ' '); 
}

function onlyMyEntry(o, e, myStr){
	var key;
	var keychar;
	
	if (window.event)
	   key = window.event.keyCode;
	else if (e)
	   key = e.which;
	else
	   return true;
	keychar = String.fromCharCode(key);
	
	if (o.value.charAt(0) == ",") {
		o.value = "";
	}
	if (o.value.charAt(0) == "-") {
		o.value = "";
	}

	if (o.value.charAt(o.value.length - 1) == "," && keychar == ",") {
		return false;
	}
	if (o.value.charAt(o.value.length - 1) == "-" && keychar == "-") {
		return false;
	}
	if (o.value.charAt(o.value.length - 1) == "-" && keychar == ",") {
		return false;
	}
	if (o.value.charAt(o.value.length - 1) == "," && keychar == "-") {
		return false;
	}
	
	// control keys
	if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) )
	   return true;
	// my entries
	else if (((myStr).indexOf(keychar) > -1))
	   return true;
	else
	   return false;
}
function getAbsoluteLeft( elementId ) {
  if ( typeof elementId != 'object'  ) {
    elementId = document.getElementById( elementId );
  }
  var currentLeft = 0;
  if ( elementId  ) {
    while ( elementId.offsetParent !== null  ) {
      currentLeft += elementId.offsetLeft;
      elementId = elementId.offsetParent;
    }
    currentLeft += elementId.offsetLeft;
  }
  return currentLeft;
}
function getAbsoluteTop( elementId ) {
  if ( typeof elementId != 'object'  ) {
    elementId = document.getElementById( elementId );
  }
  var currentTop = 0;
  if ( elementId  ) {
    while ( elementId.offsetParent !== null  ) {
      currentTop += elementId.offsetTop;
      elementId = elementId.offsetParent;
    }
    currentTop += elementId.offsetTop;
  }
  return currentTop;
}
function appendOptionLast(list, value, text, title) {
	var elOptNew = document.createElement('option');
	elOptNew.value = value;
	elOptNew.text = text;
	elOptNew.title = title;
	try {
		if (text.indexOf("----") > -1) elOptNew.disabled = true;
		list.add(elOptNew, null); 
	} catch(ex) {
    	list.add(elOptNew);
	}
}
function getListOptions(list, value) {
//value: boolean; true for value and false for text
	var i, temp, listoptions="";
	for (i=0; i<list.options.length; i++) {
		temp = value ? list.options[i].value : list.options[i].text;
		if (listoptions) {
			listoptions += "@#@" + temp;
		} else {
			listoptions += temp;
		}
	}
	return listoptions;
}
function getListTitle(list) {
	var i, temp, listoptions="";
	for (i=0; i<list.options.length; i++) {
		temp = list.options[i].title;
		if (listoptions) {
			listoptions += "@#@" + temp;
		} else {
			listoptions += temp;
		}
	}
	return listoptions;
}
function copyListOptions(fromList, toList) {
	var values = getListOptions(fromList, true).split("@#@");
	var texts = getListOptions(fromList, false).split("@#@");
	var titles = getListTitle(fromList).split("@#@");
	for (var i = 0; i < values.length; i ++) {
		appendOptionLast(toList, values[i], texts[i], titles[i]);
	}
}
