/***********************************************
* Pop-it menu- � Dynamic Drive (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/

var defaultMenuWidth = "180px"; // set default menu width.

var user_arr = new Array();
var user_id;
var message_id;
var eventX;
var eventY;

var site_url;
var wait_ajax = 0;
var div_id;

var divid_arr = new Array();

var ie5 = document.all && !window.opera;
var ns6 = document.getElementById;

if ( ie5 || ns6 ) {
	document.write('<div id="popitmenu" onMouseover="clearhidemenu();" onMouseout="delayhidemenu(event)" style="z-index: 1000;"></div>');
	document.write('<div id="if_lost_popitmenu"></div>');
}

function iecompattest() {
	return (document.compatMode && document.compatMode.indexOf("CSS")!=-1) ? document.documentElement : document.body;
};
function send_rate( rate, messageid, authorid, loginid, userid, serviceid, isfirst, sk ) {
	var url = site_url + '/top_entry?send_rate=do&rate='+rate+'&messageid='+messageid+'&authorid='+authorid+'&loginid='+loginid+'&userid='+userid+'&serviceid='+serviceid+'&isfirst='+isfirst+'&sk='+sk;
	var myAjax = new Ajax.Request(
		url,
		{
			method: 'get',
			onComplete: delete_array(authorid)
		}
	);
}
function send_rate_2( rate, messageid, authorid, loginid, userid, serviceid, isfirst, sk, divid, siteurl, ret_rate ) {
	if ( "undefined" != typeof divid_arr[divid] ) {
		return;
	}

	if ( "undefined" == typeof ret_rate ) {
		ret_rate = 2;
	}

	var url = siteurl + '/top_entry?send_rate='+ret_rate+'&rate='+rate+'&messageid='+messageid+'&authorid='+authorid+'&loginid='+loginid+'&userid='+userid+'&serviceid='+serviceid+'&isfirst='+isfirst+'&sk='+sk;

	div_id = divid;
	divid_arr[divid] = 1;

	var myAjax = new Ajax.Request(
		url,
		{
			method: 'get',
			onComplete: rate_request
		}
	);
}
function rate_request(originalRequest) {
	if ( "" != originalRequest.responseText ) {
		document.getElementById("rateid_"+div_id).innerHTML = originalRequest.responseText;
	}
}
function delete_array(authorid) {
	delete user_arr[authorid];
}
function show_user( userid, messageid, serviceid, url, isfirst ) {

	if (wait_ajax) {
		return false;
	}

	site_url = url;
	user_id = userid;
	message_id = messageid;

	var html_url = url + '/about?get_user_info=' + userid + '&messageid='+messageid+ '&serviceid='+serviceid+ '&isfirst='+isfirst;

	wait_ajax = 1;

	var myAjax = new Ajax.Request(
		html_url,
		{
			method: 'get',
			onComplete: showmenu_request
		}
	);
}
function userinfo_request( userid, messageid, serviceid, url, isfirst, e ) {

	clearhidemenu();

	eventX = ie5 ? event.clientX : e.clientX;
	eventY = ie5 ? event.clientY : e.clientY;
	
	if ( "undefined" == typeof user_arr[userid] ) {
		show_userinfo = setTimeout("show_user("+userid+","+messageid+","+serviceid+",'"+url+"',"+isfirst+")", 1000);
	} else {
		show_userinfo = setTimeout("showmenu("+userid+")", 1000);
	}
}
function showmenu_request(originalRequest) {
	wait_ajax = 0;
	user_arr[user_id] = originalRequest.responseText;
	showmenu(user_id);
};
function showmenu( userid, optWidth ) {

	if ( !document.all && !document.getElementById ) {
		return;
	}

	clearhidemenu();

	which = user_arr[userid];

	menuobj = ie5 ? document.all.popitmenu : document.getElementById("popitmenu");

	if ( "undefined" == typeof menuobj ) {

		lost_menuobj = ie5 ? document.all.if_lost_popitmenu : document.getElementById("if_lost_popitmenu");
		lost_menuobj.innerHTML = '<div id="popitmenu" onMouseover="clearhidemenu();" onMouseout="dynamichide(event)" style="z-index: 1000;"></div>';
		menuobj = ie5 ? document.all.popitmenu : document.getElementById("popitmenu");
	}
	
	menuobj.innerHTML = which;
	menuobj.style.width = (typeof optWidth != "undefined") ? optWidth : defaultMenuWidth;
	menuobj.contentwidth = menuobj.offsetWidth;
	menuobj.contentheight = menuobj.offsetHeight;

	// Find out how close the mouse is to the corner of the window
	var rightedge = ie5 ? iecompattest().clientWidth-eventX : window.innerWidth-eventX;
	var bottomedge = ie5 ? iecompattest().clientHeight-eventY : window.innerHeight-eventY;
	
	// if the horizontal distance isn't enough to accomodate the width of the context menu
	if ( rightedge < menuobj.contentwidth ) {
		// move the horizontal position of the menu to the left by it's width
		menuobj.style.left = ie5 ? iecompattest().scrollLeft+eventX-menuobj.contentwidth+"px" : window.pageXOffset+eventX-menuobj.contentwidth+"px";
	} else {
		// position the horizontal position of the menu where the mouse was clicked
	}
	
	menuobj.style.left = ie5 ? iecompattest().scrollLeft+eventX+"px" : window.pageXOffset+eventX+"px";

	// same concept with the vertical position
	if ( bottomedge < menuobj.contentheight ) {
		menuobj.style.top = ie5 ? iecompattest().scrollTop+eventY-menuobj.contentheight+"px" : window.pageYOffset+eventY-menuobj.contentheight+"px";
	} else {
		menuobj.style.top = ie5 ? iecompattest().scrollTop+eventY+"px" : window.pageYOffset+eventY+"px";
	}

	menuobj.style.visibility = "visible";
	
	if ( $("all_window_popup") ) {
		$("all_window_popup").style.backgroundColor = document.body.bgColor; 
	}
	
	return true;
}
function contains_ns6(a, b) {
	// Determines if 1 element in contained in another- by Brainjar.com
	while (b.parentNode) {
		if ( (b = b.parentNode) == a ) {
			return true;
		}
	}
	return false;
}
function hidemenu() {
	if (window.menuobj) {
		menuobj.style.visibility = "hidden";
	}
}
function dynamichide(e) {
	if ( ie5 && !menuobj.contains(e.toElement) ) {
		delayhidemenu();
	} else if ( ns6 && (e.currentTarget != e.relatedTarget) && !contains_ns6(e.currentTarget, e.relatedTarget) ) {
		delayhidemenu();
	}
}
function delayhidemenu() {
	delayhide = setTimeout("hidemenu()", 300);
}
function clearhidemenu() {
	if ( window.delayhide ) {
		clearTimeout(delayhide);
	}
}
function clearuserinfo() {
	if ( window.show_userinfo ) {
		clearTimeout(show_userinfo);
	}
	delayhidemenu();	
}

if ( ie5 || ns6 ) {
	document.onclick = hidemenu;
}
