var gMouseXY;

YAHOO.util.Event.onDOMReady(function() {
	YAHOO.util.Event.on (document.body, 'mousemove', function(e){
	  gMouseXY = YAHOO.util.Event.getXY(e);
	})
});

function typeSearch( 	sUrl,
											sTextSearchUrl )
{
	var oSearchForm = document.getElementById( "searchform" );
	oSearchForm.elements["searchurl"].value = sTextSearchUrl;
	var sSearch = oSearchForm.elements["searchbox"].value;
	makeRequest( sUrl + "&s=" + sSearch, "results" );
}

function textSearch()
{
	var oSearchForm = document.getElementById( "searchform" );
	var sUrl = oSearchForm.elements["searchurl"].value;
	var sSearch = oSearchForm.elements["searchbox"].value;
	if( window.mytimeout ) 
		window.clearTimeout( window.mytimeout );
						
	window.mytimeout = window.setTimeout(function(){ makeRequest( sUrl + "&s=" + sSearch, "results" ) }, 500 );
}

function showVoteResults( VoteInFavour, 
													VoteAgainst,
													VoteAbstention,
													VoteNonVote,
													VoteCount, 
													PerPossibleVotes )
{
	var VoteResults = "<div id='voteresultbox'><div id='left'><ul>" + 
		"<li><span class='subscript'>in favour</span><span style='color:#006478'>" + VoteInFavour + "</span></li>" + 
		"<li><span class='subscript'>against</span><span style='color:#2B2B2B'>" + VoteAgainst + "</span></li>";

	VoteResults += "<li><span class='subscript'>total</span>" + VoteCount + "</li>";
		
	VoteResults += "</ul></div><div id='right'><ul>";		
	if ( VoteNonVote > 0 )	
		VoteResults += "<li><span class='subscript'>non-vote</span><span style='color:#750000'>" + VoteNonVote + "</span></li>"; 

	VoteResults += "<li><span class='subscript'>abstention</span><span style='color:#737373'>" + VoteAbstention + "</span></li>";

	if ( VoteNonVote == 0 )	
		VoteResults += "<li><span class='subscript'>non-vote</span>" + VoteNonVote + "</li>"; 
			
	if ( PerPossibleVotes != -1 )
		VoteResults += "<li><span class='subscript'>turnout</span>" + PerPossibleVotes + "<span class='percentage'>%</span></li>";
		
	VoteResults += "</ul></div></div>";
	
	var Element = document.getElementById( "longlayertext" );
	Element.innerHTML = VoteResults;

	setLayerVisibleOffset( "longlayer", 10, 10 );
}

function hideVoteResults()
{
	setLayerHidden( "longlayer" );
}

function showThemeResults(	PerVoteInFavour, 
														PreVoteAgainst,
														PerVoteAbstention,
														PerVoteNonVote )
{
	var VoteResults = "<div id='voteresultbox'><div id='left'><ul>" + 
		"<li><span class='subscript'>in favour</span><span style='color:#006478'>" + PerVoteInFavour + "</span><span class='percentage'>%</span></li>" + 
		"<li><span class='subscript'>against</span><span style='color:#2B2B2B'>" + PreVoteAgainst + "</span><span class='percentage'>%</span></li>" + 
		"</ul></div><div id='right'><ul>" + 
		"<li><span class='subscript'>abstention</span><span style='color:#737373'>" + PerVoteAbstention + "</span><span class='percentage'>%</span></li>" +
		"<li><span class='subscript'>non-vote</span><span style='color:#750000'>" + PerVoteNonVote + "</span></span><span class='percentage'>%</span></li>" + 
		"</ul></div></div>";
	
	var Element = document.getElementById( "shortlayertext" );
	Element.innerHTML = VoteResults;

	setLayerVisibleOffset( "shortlayer", 10, 10 );
}

function hideThemeResults()
{
	setLayerHidden( "shortlayer" );
}


function showMapCountrySeats( CountryName,
															Total,
															EPP,
															SD,
															ALDE,
															ECR,
															GreensEFA,
															GUENGL,
															EFD,
															NA	)
{
	var CountryBox = "<div id='mapcountrybox'><h1>" + CountryName + "</h1><div id='left'><ul>" + 
		"<li><span class='subscript'>total</span>" + Total + "</li>" + 
		"<li><span class='subscript'>EPP</span>" + EPP + "</li>" +
		"<li><span class='subscript'>S&D</span>" + SD + "</li>" +
		"<li><span class='subscript'>ALDE</span>" + ALDE + "</li>" +
		"<li><span class='subscript'>ECR</span>" + ECR + "</li>" +
		"</ul></div><div id='left'><ul>" + 
		"<li><span class='subscript'>Greens/EFA</span>" + GreensEFA + "</li>" +
		"<li><span class='subscript'>GUE/NGL</span>" + GUENGL + "</li>" +
		"<li><span class='subscript'>EFD</span>" + EFD + "</li>" +
		"<li><span class='subscript'>NA</span>" + NA + "</li>" +
		"</ul></div></div>";

	var Element = document.getElementById( "shortlayertext" );
	Element.innerHTML = CountryBox;
	
	setLayerVisibleOffset( "shortlayer", 5, 5 );
}

function hideMapCountrySeats()
{
	setLayerHidden( "shortlayer" );
}

function showMapCountryNoSeats( CountryName,
																Total )
{
	var CountryBox = "<div id='mapcountryseats'><h1>" + CountryName + "</h1><div id='left'><ul>" + 
		"<li><span class='subscript'>total</span>" + Total + "</li></ul></div></div>";

	var Element = document.getElementById( "shortlayertext" );
	Element.innerHTML = CountryBox;
	
	setLayerVisibleOffset( "shortlayer", 5, 5 );
}

function hideMapCountryNoSeats()
{
	setLayerHidden( "shortlayer" );
}

function showMapCountryPer( CountryName,
														VoteType,
														PerInFavour,
														PerAgainst,
														PerAbstention,
														PerTurnout )
{
	var CountryBox = "<div id='mapcountrybox'><h1>" + CountryName + "</h1><ul>";

	Colour = VoteType == 0 ? "style='color:#750000'" : "";
	CountryBox += "<li " + Colour + "><span class='subscript'>in favour</span>" + PerInFavour + "<span class='subscript'>%</span></li>";

	Colour = VoteType == 1 ? "style='color:#750000'" : "";
	CountryBox += "<li " + Colour + "><span class='subscript'>against</span>" + PerAgainst + "<span class='subscript'>%</span></li>";

	Colour = VoteType == 2 ? "style='color:#750000'" : "";
	CountryBox += "<li " + Colour + "><span class='subscript'>abstention</span>" + PerAbstention + "<span class='subscript'>%</span></li>";
	
	if ( PerTurnout != -1 )
	{
		Colour = VoteType == 3 ? "style='color:#750000'" : "";
		CountryBox += "<li " + Colour + "><span class='subscript'>turnout</span>" + PerTurnout + "<span class='subscript'>%</span></li>";
	}
	
	CountryBox += "</ul></div>";
		
	var Element = document.getElementById( "shortlayertext" );
	Element.innerHTML = CountryBox;
	
	setLayerVisibleOffset( "shortlayer", 5, 5 );
}

function hideMapCountryPer()
{
	setLayerHidden( "shortlayer" );
}

function showMapCountryNoPer( CountryName )
{
	var CountryBox = "<div id='mapcountrybox'><h1>" + CountryName + "</h1>No votes registered</div>";
		
	var Element = document.getElementById( "shortlayertext" );
	Element.innerHTML = CountryBox;
	
	setLayerVisibleOffset( "shortlayer", 5, 5 );
}

function hideMapCountryNoPer()
{
	setLayerHidden( "shortlayer" );
}

function showAdvancedLink( 	oElement,
														Layer,
														DetailLink )
{			
	makeRequest( DetailLink, Layer + "text" );
	var aXYPos = YAHOO.util.Dom.getXY( oElement );
	var iHeight = oElement.offsetHeight;
	
	if ( iHeight == 0 )
		iHeight = 12;
	
	setLayerVisibleXY( Layer, aXYPos[0] + 20, aXYPos[1] + iHeight ); 	
}

function hideAdvancedLink( Layer )
{
	cancelRequest();
	setLayerHidden( Layer );
}

function IsCharAlphaNumeric(c) 
{
  return ( ((c >= 'a') && (c <= 'z')) ||
           ((c >= 'A') && (c <= 'Z')) ||
           ((c >= '0') && (c <= '9')) ||
           (c == '.') );
}

function IsStringAlphaNumeric(s) 
{
  for (var i = 0; i < s.length; i++) {
    if (!IsCharAlphaNumeric(s.charAt(i)))
      return false;
  }
  return true;
}

function IsStringEmail( s ) 
{
	var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
	if(s.match(emailExp)){
		return true;
	}else{
		return false;
	}
}

function getElementsByClass( searchClass, domNode, tagName) 
{
	if (domNode == null) domNode = document;
	if (tagName == null) tagName = '*';
	var el = new Array();
	var tags = domNode.getElementsByTagName(tagName);
	var tcl = " "+searchClass+" ";
	for(i=0,j=0; i<tags.length; i++) {
		var test = " " + tags[i].className + " ";
		if (test.indexOf(tcl) != -1)
			el[j++] = tags[i];
	}
	
	return el;
}

function toggleLayer( whichLayer )
{
  var elem, vis;
  if( document.getElementById ) // this is the way the standards work
    elem = document.getElementById( whichLayer );
  else if( document.all ) // this is the way old msie versions work
      elem = document.all[whichLayer];
  else if( document.layers ) // this is the way nn4 works
    elem = document.layers[whichLayer];
  vis = elem.style;
  // if the style.display value is blank we try to figure it out here
  if(vis.display==''&&elem.offsetWidth!=undefined&&elem.offsetHeight!=undefined)
    vis.display = (elem.offsetWidth!=0&&elem.offsetHeight!=0)?'block':'none';
  vis.display = (vis.display==''||vis.display=='block')?'none':'block';
}

function cancelElement( elementName )
{ 
	toggleLayer( elementName );
	toggleLayer( elementName + "Edit" );
}

function editElement( elem )
{ 
	var elemForm;
	
	toggleLayer( elem.id );
	toggleLayer( elem.id + "Edit" );
	
	elemForm = document.getElementById( elem.id + "form" );  
	elemForm[0].focus();
}

function editElementByName( elementName )
{ 
	toggleLayer( elementName );
	toggleLayer( elementName + "Edit" );
	
	document.forms[ elementName + "form"][0].focus();
}

function highlightElement( elem )
{ 
	elem.oldColor = elem.style.color;
	elem.style.color = '#cc0000';
}

function normalElement( elem )
{ 
	elem.style.color = elem.oldColor;
}

function editElementHandleEsc( evt, elementName )
{
	evt = (evt) ? evt : event;
	var charCode = (evt.charCode) ? evt.charCode : ((evt.which) ? evt.which : evt.keyCode);

	if ( charCode == 27 )
		cancelElement( elementName );
	
	return true;
}

function editElementHandleEscEnter( evt, elementName ) 
{
	evt = (evt) ? evt : event;
	var target = (evt.target) ? evt.target : evt.srcElement;
	var form = target.form;
	var charCode = (evt.charCode) ? evt.charCode : ((evt.which) ? evt.which : evt.keyCode);
	
	if (charCode == 13)
	{
		form.submit();
		return false;
	}
	
	if ( charCode == 27 )
		cancelElement( elementName );
	
	return true;
}

function setLayerVisible( LayerName )
{
	var Element = document.getElementById( LayerName );
	Element.style.visibility = "visible";
}

function setLayerVisibleIfCookie( LayerName, CookieName )
{
	var value = YAHOO.util.Cookie.get( CookieName ); 

	if ( value != "no" )
	{
		var Element = document.getElementById( LayerName );
		Element.style.visibility = "visible";	
	}

}

function setHelpLayerVisibleIfCookie( LayerName, CookieName )
{
	var value = YAHOO.util.Cookie.get( CookieName ); 
	if ( value != "no" )
		setHelpLayerVisible( LayerName );
}

function setHelpLayerVisible( LayerName )
{
	var XPos = ( document.body.clientWidth / 2 ) - 450;
	var Element = document.getElementById( LayerName );
	Element.style.top = "50px";
	Element.style.left = XPos + "px";	
	Element.style.visibility = "visible";	
}

function setLayerVisibleOffset( LayerName, XOffset, YOffset )
{
	var XPos = gMouseXY[0];
	var YPos = gMouseXY[1];

	var ViewWidth = document.body.clientWidth; 
	var ViewHeight = document.body.clientHeight; 

	var Layer = document.getElementById( LayerName );
	if ( XPos + XOffset > ( ViewWidth - Layer.clientWidth ))
		XPos -= Layer.clientWidth;
	else
		XPos += XOffset;
		
	if ( YPos + YOffset > ( ViewHeight - Layer.clientHeight ))
		YPos -= Layer.clientHeight;
	else
		YPos += YOffset;

	Layer.style.top = YPos + "px";
	Layer.style.left = XPos + "px";	
	Layer.style.visibility = "visible";
}

function setLayerVisibleOffsetH( LayerName, XOffset, YOffset )
{
	var YPos = gMouseXY[1] + YOffset;
	var XPos = ( document.body.clientWidth / 2 ) + XOffset;
	var Element = document.getElementById( LayerName );
	Element.style.top = YPos + "px";
	Element.style.left = XPos + "px";		
	Element.style.visibility = "visible";
}

function setLayerVisibleHY( LayerName, XOffset, YPos )
{
	var XPos = ( document.body.clientWidth / 2 ) + XOffset;
	var Element = document.getElementById( LayerName );
	Element.style.top = YPos + "px";
	Element.style.left = XPos + "px";		
	Element.style.visibility = "visible";
}

function setLayerVisibleXY( LayerName, XPos, YPos )
{
	var Element = document.getElementById( LayerName );
	Element.style.top = YPos + "px";
	Element.style.left = XPos + "px";		
	Element.style.visibility = "visible";
}

function setLayerVisibleTextOffset( LayerName, XOffset, YOffset, TargetLayer, Text )
{
	var Element = document.getElementById( TargetLayer );
	Element.innerHTML = Text;
	setLayerVisibleOffset( LayerName, XOffset, YOffset );
}

function setLayerHidden( LayerName )
{
	var Element = document.getElementById( LayerName );
	Element.style.visibility = "hidden";
}

function setLayerHiddenWithCookie( LayerName, CookieName )
{
	YAHOO.util.Cookie.set( CookieName, "no", { expires: new Date("January 12, 2025") }); 
	var Element = document.getElementById( LayerName );
	Element.style.visibility = "hidden";
}

function clearError( searchClass, domNode, tagName )
{
	var elements = getElementsByClass( searchClass, domNode, tagName );
	
	for( i=0; i < elements.length; i++ ) {
		elements[i].innerHTML = '';
	}	
}

function submitEnter( myField, myEvent )
{
	var keycode;
	if ( window.event ) 
		keycode = window.event.keyCode;
	else 
		if (myEvent) 
			keycode = myEvent.which;
		else 
			return true;
	
	if (keycode == 13)
	{
		myField.form.submit();
		return false;
	}
	else
	{
		return true;
	}
}

var gPrevCommentId = -1;

function commmentShow( ClickedCommentId, SubmittedCommentId )
{
	if ( gPrevCommentId == -1 )
	{
		LinkName = ( SubmittedCommentId == 0 ? "new" : "reply" );

		CommentDiv = document.getElementById( SubmittedCommentId  );
		CommentForm = CommentDiv.innerHTML;
		CommentDiv.innerHTML = "<a href='javascript:void(0)' onclick='commmentShow( 0, 0 )'>" + LinkName + "</a>";
	}
	else
	{
		LinkName = ( gPrevCommentId == 0 ? "new" : "reply" );
		
		CommentDiv = document.getElementById( gPrevCommentId );
		CommentForm = CommentDiv.innerHTML;
		CommentDiv.innerHTML = "<a href='javascript:void(0)' onclick='commmentShow( " + gPrevCommentId + ", 0 )'>" + LinkName + "</a>";
	}
			
	gPrevCommentId = ClickedCommentId;

	CommentDiv = document.getElementById( ClickedCommentId );
	CommentDiv.innerHTML = CommentForm;
	document.reportcommentForm.CommentId.value = ClickedCommentId;
	clearError( "error", document.reportcommentForm, "td")
}

/*********************************************************************
 * No onMouseOut event if the mouse pointer hovers a child element 
 * *** Please do not remove this header. ***
 * This code is working on my IE7, IE6, FireFox, Opera and Safari
 * 
 * Usage: 
 * <div onMouseOut="fixOnMouseOut(this, event, 'JavaScript Code');"> 
 *		So many childs 
 *	</div>
 *
 * @Author Hamid Alipour Codehead @ webmaster-forums.code-head.com		
**/
function is_child_of(parent, child) {
	if( child != null ) {			
		while( child.parentNode ) {
			if( (child = child.parentNode) == parent ) {
				return true;
			}
		}
	}
	return false;
}
function fixOnMouseOut(element, event, JavaScript_code) {
	var current_mouse_target = null;
	if( event.toElement ) {				
		current_mouse_target 			 = event.toElement;
	} else if( event.relatedTarget ) {				
		current_mouse_target 			 = event.relatedTarget;
	}

	if ( !current_mouse_target )
		return;

	if( current_mouse_target.id != 'detaillayer' && !is_child_of(element, current_mouse_target) && element != current_mouse_target ) {
		eval(JavaScript_code);
	}
}
