function $(el) {return document.getElementById(el);}
$ = function(id) 
{
	if(el = document.getElementById(id))
	{
		return el;
	} 
	else 
	{
		return false;
	}
}

function getIEV()
{
	var rv = false;
	if (navigator.appName == 'Microsoft Internet Explorer')
	{
		var ua = navigator.userAgent;
		var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
		if (re.exec(ua) != null)
		rv = parseFloat(RegExp.$1);
	}
	return rv;
}

function remove_obj(obj)
{
	obj.parentNode.removeChild(obj);
}

function get_pos(pobj)
{
	var ret = new Array();
	ret['w']=pobj.offsetWidth;
	ret['h']=pobj.offsetHeight;
	var x=0, y=0;
	while(pobj.nodeName != 'BODY')
	{
		x+=pobj.offsetLeft;
		y+=pobj.offsetTop;
		pobj=pobj.offsetParent;
	}
	ret['x']=x;
	ret['y']=y;
	return ret;
}


var progress_disp_in = false;
function show_progress_inobj(obj)
{
	if(!progress_disp_in)
	{
		var obj_p = get_pos(obj);
		var progressbin = document.createElement('DIV');
		progressbin.className = 'float_progress';
		progressbin.id = 'floatprogressin';
		document.body.appendChild(progressbin);
		
		var obj_center_x = obj_p['x']+Math.round(obj_p['w']/2);
		var obj_center_y = obj_p['y']+Math.round(obj_p['h']/2);
		
		progressbin.style.left = obj_center_x-Math.round(progressbin.offsetWidth/2)+'px';
		progressbin.style.top = obj_center_y-Math.round(progressbin.offsetHeight/2)+'px';
		
		progress_disp_in = true;
	}
}

function hide_progress_inobj()
{
	if($('floatprogressin'))
	{
		remove_obj($('floatprogressin'));
		progress_disp_in = false;
	}
}

var hint, m = false;
function showhint(hint, e)
{
	if(m)
	{
		var event = (window.event) ? window.event : e;
		if(document.body.offsetWidth<=(document.body.scrollLeft+event.clientX+$('hint').offsetWidth))
		{
			var left_pos = document.body.offsetWidth-$('hint').offsetWidth;
		}
		else
		{
			var left_pos = document.body.scrollLeft+event.clientX;
		}
		$('hint').style.left = left_pos;
		$('hint').style.top = document.body.scrollTop+event.clientY+20;
		$('hinttext').innerHTML = hint;
	}
	else
	{	
		
		var obj = document.createElement('DIV');
		obj.className = 'hint_body';
		obj.style.opacity = '0.0';
		obj.id = 'hint';
		document.body.appendChild(obj);	
		var objt = document.createElement('DIV');
		objt.className = 'hint_text';
		objt.id = 'hinttext';
		obj.appendChild(objt);	
		m = true;
		var event = (window.event) ? window.event : e;
		if(document.body.offsetWidth<=(document.body.scrollLeft+event.clientX+$('hint').offsetWidth))
		{
			var left_pos = document.body.offsetWidth-$('hint').offsetWidth;
		}
		else
		{
			var left_pos = document.body.scrollLeft+event.clientX;
		}
		obj.style.left = left_pos;
		obj.style.top = document.body.scrollTop+event.clientY+16;
		objt.innerHTML = hint;
	}
	hintviewer(true);
}

//=====================SHOW HINT ENGINE==========================//
var hint, m = false;
var showhint_tmr;
function showhint(hint, e, rule_to_show, mp)
{
	if(rule_to_show)
	{
		if(getIEV())
		{
			var event_x = mp['x'];
			var event_y = mp['y'];
		}
		else
		{
			var event = (window.event) ? window.event : e;
			var event_x = event.clientX;
			var event_y = event.clientY;
		}
	}
	else
	{
		var event = (window.event) ? window.event : e;
		var event_x = event.clientX;
		var event_y = event.clientY;
	}

	if(rule_to_show)
	{	
		if(m)
		{
			if(document.body.offsetWidth<=(document.body.scrollLeft+event_x+$('hint').offsetWidth))
			{
				var left_pos = document.body.offsetWidth-$('hint').offsetWidth;
			}
			else
			{
				var left_pos = document.body.scrollLeft+event_x;
			}
			$('hint').style.left = left_pos;
			$('hint').style.top = document.body.scrollTop+event_y+20;
			$('hinttext').innerHTML = hint;
		}
		else
		{	
			if($("hint")){$("hint").parentNode.removeChild($("hint"));}
			if(hint_timer){clearTimeout(hint_timer); hint_timer = false;}
			var obj = document.createElement('DIV');
			obj.className = 'hint_body';
			obj.style.opacity = '0.0';
			obj.style.filter = 'alpha(opacity=0)';
			obj.id = 'hint';
			document.body.appendChild(obj);	
			var objt = document.createElement('DIV');
			objt.className = 'hint_text';
			objt.id = 'hinttext';
			obj.appendChild(objt);	
			m = true;
			var event = (window.event) ? window.event : e;
			if(document.body.offsetWidth<=(document.body.scrollLeft+event_x+$('hint').offsetWidth))
			{
				var left_pos = document.body.offsetWidth-$('hint').offsetWidth;
			}
			else
			{
				var left_pos = document.body.scrollLeft+event_x;
			}
			obj.style.left = left_pos;
			obj.style.top = document.body.scrollTop+event_y+16;
			objt.innerHTML = hint;
			if(!hint_timer){hintviewer(true);}
		}
	}
	else
	{
		var mouse_pos = new Array();
		mouse_pos['x'] = event_x;
		mouse_pos['y'] = event_y;
		showhint_tmr = setTimeout(function(){showhint(hint, e, true, mouse_pos);}, 250);
	}
}
var hint_timer;
var hint_start_opacity = 0;
function hintviewer(mode)
{
	var obj = $("hint");
	if(obj)
	{
		if(mode)
		{
			if(hint_start_opacity<=1.0)
			{
				hint_start_opacity += 0.1;
				hint_timer = setTimeout(function()
				{
					obj.style.opacity = hint_start_opacity; 
					obj.style.filter = 'alpha(opacity='+(hint_start_opacity*100)+')';
					hintviewer(mode);
				}, 30);
			}
			else
			{
				if(hint_timer){clearTimeout(hint_timer); hint_timer = false;}
			}
		}
		else
		{
			if(hint_start_opacity>=0.0)
			{
				hint_start_opacity -= 0.1;
				hint_timer = setTimeout(function()
				{
					obj.style.opacity = hint_start_opacity;
					obj.style.filter = 'alpha(opacity='+(hint_start_opacity*100)+')';
					hintviewer(mode);
				}, 30);
			}
			else
			{
				obj.parentNode.removeChild(obj);
				m = false;
				if(hint_timer){clearTimeout(hint_timer); hint_timer = false;}
			}
		}
	}
} 
function hidehint()
{
	if(showhint_tmr){clearTimeout(showhint_tmr);}
	var obj = $("hint");
	if(obj)
	{
		m = false;
		if(hint_timer){clearTimeout(hint_timer); hint_timer = false;}
		hintviewer(false);
	}
}
//=====================SHOW HINT ENGINE==========================//
