/**
 * Draws a single arrow with an HTML table.
 * 
 * Copyright Zaahid Bateson 2002 all rights reserved.
 * 
 * You may use this script at your own risk, no help may be provided for it.
 */
function Arrow( baseSize,		//Base size of the arrow in pixels (width for an up or down arrow)
				arrowColor,		//arrow's color
				arrowDirection	//direction of arrow, valid directions are "Arrow.UP," "Arrow.DOWN," "Arrow.LEFT" and "Arrow.RIGHT".
			  ) {
	
	var singleArrow = "";	//holds the HTML table
	if ( baseSize % 2 == 0 ) ++baseSize;
	var arrowSize = Math.ceil( baseSize / 2 );	//calculating height of arrow
	
	if ( !arrowColor ) arrowColor = "#ffffff";		//set it to white
	
	var tr        = "<tr style=\"height: 1px;\">";	//single row
	var endtr     = "</tr>";	//end row
	var emptytd   = "<td style=\"width: 1px; background-color: transparent;\" />";		//empty td
	var coloredtd = "<td style=\"width: 1px; background-color: " + arrowColor + ";\" />";
	
	if ( arrowDirection == Arrow.UP ) {		//draw an arrow with the bottom being the large size
		
		singleArrow = "<table style=\"width: " + baseSize + "px; height: " + arrowSize +
				"px; border-style: none;\" cellspacing=\"0\" cellpadding=\"0\">";
		
		for ( var i = 0; i < arrowSize; i++ ) {
			
			var tempi = (i * 2) + 1;
			var temp = (baseSize - tempi) / 2;
			singleArrow += tr;
			
			var emptyArea = "";
			
			for ( var k = 0; k < temp; k++ ) {
				
				emptyArea += emptytd;
			}
			
			if ( emptyArea != "" ) 
				singleArrow += emptyArea;
			
			for ( var k = 0; k < tempi; k++ ) {
				
				singleArrow += coloredtd;
			}
			
			if ( emptyArea != "" )
				singleArrow += emptyArea;
			
			singleArrow += endtr;
			alert( temp );
		}
		
		singleArrow += "</table>";
	}
	
	else if ( arrowDirection == Arrow.DOWN ) {
		
		singleArrow = "<table style=\"width: " + baseSize + "px; height: " + arrowSize +
				"px; border-style: none;\" cellspacing=\"0\" cellpadding=\"0\">";
		
		for ( var i = 0; i < arrowSize; i++ ) {
			
			var temp = baseSize - (i*2);
			singleArrow += tr;
			var emptyArea = "";
			
			for ( var k = 0; k < i; k++ ) {
				
				emptyArea += emptytd;
			}
			
			if ( emptyArea != "" )
				singleArrow += emptyArea;
			
			for ( var k = 0; k < temp; k++ ) {
				
				singleArrow += coloredtd;
			}
			
			if ( emptyArea != "" )
				singleArrow += emptyArea;
			
			singleArrow += endtr;
		}
		
		singleArrow += "</table>";
	}
	
	else if ( arrowDirection == Arrow.LEFT ) {
		
		singleArrow = "<table style=\"width: " + arrowSize + "px; height: " + baseSize +
						"px; border-style: none;\" cellspacing=\"0\" cellpadding=\"0\">";
		
		var isIncrement = true;
		
		for ( var i = 0; i < baseSize; i++ ) {
			
			var baseNum;
			var emptyNum;
			
			singleArrow += tr;
			
			if ( isIncrement ) {
				
				if ( i == arrowSize-1 ) {
					
					isIncrement = false;
				}
				
				emptyNum = arrowSize - ( i + 1 );
				baseNum  = arrowSize - emptyNum;
			}
			
			else {
				
				emptyNum = (i - arrowSize) + 1;
				baseNum  = arrowSize - emptyNum;
			}
			
			for ( var k = 0; k < emptyNum; k++ ) {
				
				singleArrow += emptytd;
			}
			
			for ( var k = 0; k < baseNum; k++ ) {
				
				singleArrow += coloredtd;
			}
			
			singleArrow += endtr;
		}
		
		singleArrow += "</table>";
	}
	
	else if ( arrowDirection == Arrow.RIGHT ) {
		
		singleArrow = "<table style=\"width: " + arrowSize + "px; height: " + baseSize +
						"px; border-style: none;\" cellspacing=\"0\" cellpadding=\"0\">";
		
		var isIncrement = true;
		
		for ( var i = 0; i < baseSize; i++ ) {
			
			var baseNum;
			var emptyNum;
			
			singleArrow += tr;
			
			if ( isIncrement ) {
				
				if ( i == arrowSize-1 ) {
					
					isIncrement = false;
				}
				
				emptyNum = arrowSize - ( i + 1 );
				baseNum  = arrowSize - emptyNum;
			}
			
			else {
				
				emptyNum = (i - arrowSize) + 1;
				baseNum  = arrowSize - emptyNum;
			}
			
			for ( var k = 0; k < baseNum; k++ ) {
				
				singleArrow += coloredtd;
			}
			
			for ( var k = 0; k < emptyNum; k++ ) {
				
				singleArrow += emptytd;
			}			
			
			singleArrow += endtr;
		}
		
		singleArrow += "</table>";
	}
	
	this.toString = function() {
		
		return singleArrow;
	}
}


Arrow.UP    = 0x1;
Arrow.DOWN  = 0x2;
Arrow.LEFT  = 0x4;
Arrow.RIGHT = 0x8;

/** ** ** ** Menu functions ** ** ** */

var menuArr = new Array();

function hideAll( except ) {
	
	for ( var i = 0; i < menuArr.length; i++ ) {
		
		if ( i != except )
			hide( menuArr[i] );
	}
}

function show( menuNumber ) {
	
	hideAll( menuNumber );
	menuArr[menuNumber].style.visibility = 'visible';
}

function hide( menu ) {
	
	menu.style.visibility = 'hidden';
}

function MenuRow( menuNum, 
				  tTitle, 
				  tLink, 
				  tooltip, 
				  tStyle, 
				  tClass, 
				  linkStyle, 
				  linkClass, 
				  jsMouseOverStyle, 
				  jsMouseOutStyle ) {
	
	this.toString = function() {
		
		var temp = "<tr><td";
		
		if ( tStyle ) {
			
			temp += " style=\"" + tStyle + "\"";
		}
		
		if ( tClass ) {
			
			temp += " class=\"" + tClass + "\"";
		}
		
		if ( jsMouseOverStyle ) {
			
			temp += " onmouseover=\"" + jsMouseOverStyle + "\"";
		}
		
		if ( jsMouseOutStyle ) {
			
			temp += " onmouseout=\"" + jsMouseOutStyle + "\"";
		}
		
		temp += "><a href=\"" + tLink + "\"";
		
		if ( tooltip ) {
			
			temp += " title=\"" + tooltip + "\"";
		}
		
		if ( linkStyle ) {
			
			temp += " style=\"" + linkStyle + "\"";
		}
		
		if ( linkClass ) {
			
			temp += " class=\"" + linkClass + "\"";
		}
		
		temp += " onfocus=\"if ( menuArr[" + menuNum + "].timer ) clearTimeout( menuArr[" + menuNum + "].timer ); show( " + menuNum + " );";
		
		if ( jsMouseOverStyle ) {
			
			temp += jsMouseOverStyle;
		}
		
		temp +=  "\" onblur=\"menuArr[" + menuNum + "].timer = setTimeout( 'hide( menuArr[" + menuNum + "] );', 200 );";
		
		if ( jsMouseOutStyle ) {
			
			temp += jsMouseOutStyle;
		}
		
		temp += "\">" + tTitle + "</a></td></tr>";
		
		return temp;
		
	} 
}

function makeMenu( id, tStyle, tClass, width, height, menuRowObjArray, isNotDown ) {
	
	if ( !isNotDown )
		document.write( "<br />" );
	
	document.write( "<div id=\"" + id + "\" style=\"visibility: hidden; position: absolute;" );
	
	if ( height ) {
		
		document.write( " height: " + height + "px;" );
	}
	
	if ( width ) {
		
		document.write( " width: " + width + "px;" );
	}
	
	document.write( "\">");
	document.write( "<table");
	
	if ( tStyle ) {
		
		document.write( " style=\"" + tStyle + "\"" );
	}
	
	if ( tClass ) {
		
		document.write( " class=\"" + tClass + "\"" );
	}
	
	document.write( ">" );
	
	for ( var i = 0; i < menuRowObjArray.length; i++ ) {
		
		document.write( menuRowObjArray[i] );
	}
	
	document.write( "</table>" );
	document.write( "</div>" );
	
	menuArr[menuArr.length] = document.getElementById( id );
}
