// Encode an URL utf8 style.
function urlEncode(s) {
	return encodeURIComponent( s ).replace( /\%20/g, '+' ).replace( /!/g, '%21' ).replace( /'/g, '%27' ).replace( /\(/g, '%28' ).replace( /\)/g, '%29' ).replace( /\*/g, '%2A' ).replace( /\~/g, '%7E' );
}
// ----------------------------------------------------------------------------------------------------	
  
// Decode an utf8 style URL.  
function urlDecode(s) {
	return decodeURIComponent( s.replace( /\+/g, '%20' ).replace( /\%21/g, '!' ).replace( /\%27/g, "'" ).replace( /\%28/g, '(' ).replace( /\%29/g, ')' ).replace( /\%2A/g, '*' ).replace( /\%7E/g, '~' ) );
}
// ----------------------------------------------------------------------------------------------------	

// Add an event to the obj given.
// eventname refers to the event trigger, without the "on", like click or mouseover
// funcName refers to the function callback when event is triggered
function addEvent(obj, eventName, funcName) {
	if( obj.attachEvent ) {
		obj.attachEvent("on" + eventName, funcName);
	} else if( obj.addEventListener ) {
		obj.addEventListener(eventName, funcName, true);
	}else {
		obj["on" + eventName] = funcName;
	}
}
// ----------------------------------------------------------------------------------------------------	

// Removes an event from an object.
function removeEvent(obj, eventName, funcName){
	if( obj.detachEvent ) {
		obj.detachEvent("on" + eventName, funcName);
	} else if( obj.removeEventListener ) {
		obj.removeEventListener(eventName, funcName, true);
	} else {
		obj["on" + eventName] = null;
	}
}
// ----------------------------------------------------------------------------------------------------	

// Stop an event from bubbling up the event DOM
function stopEvent(evt){
	evt || window.event;
	if (evt.stopPropagation){
		evt.stopPropagation();
		evt.preventDefault();
	}else if(typeof evt.cancelBubble != "undefined"){
		evt.cancelBubble = true;
		evt.returnValue = false;
	}
	return false;
}
// ----------------------------------------------------------------------------------------------------

function IsUndefined(varable){
	return ('undefined' == typeof(varable)) ? true : false; 
}	

