	function LayoutHorizontal(hStagger, vStagger, hSpace)
	{
		this.getPosition = LO_Horizontal_getPosition;
		this.hStagger = hStagger;
		this.vStagger = vStagger;
		this.hSpace = hSpace;	
		this.name="Horizontal";	
	}
	function LayoutHorizontalT(hStagger, vStagger, hSpace)
	{
		this.getPosition = LO_HorizontalT_getPosition;
		this.hStagger = hStagger;
		this.vStagger = vStagger;
		this.hSpace = hSpace;	
		this.name="HorizontalT";	
	}
	function LO_Horizontal_getPosition(nodeName)
	{
		var gen = nodeName.length - 4;
		var nSib = nodeName.substr(nodeName.length-1, 1)  ;
		var px = (gen -1)* this.hSpace + nSib *  this.hStagger;
		var py = nSib * this.vStagger;
		//alert("bye");
		return {x:px, y:py};	
	}
	function LO_HorizontalT_getPosition(nodeName)
	{
		var gen = nodeName.length - 4;
		var nSib = nodeName.substr(nodeName.length-1, 1)  ;
		var px = (gen)* this.hSpace + nSib *  this.hStagger;
		var py =  50 + nSib * this.vStagger;
		//alert("bye");
		return {x:px, y:py};	
	}
	function LayoutTriangle(hStagger, vStagger, hSpace)
	{
		this.getPosition = LO_Triangle_getPosition;
		this.hStagger = hStagger;
		this.vStagger = vStagger;
		this.hSpace = hSpace;		
		this.name="Triangle";	
	}
	function LO_Triangle_getPosition(nodeName)
	{
		
		var gen = nodeName.length - 4;
		var nSib = nodeName.substr(nodeName.length-1, 1)  ;
		switch (gen % 3)
		{
		case 0:
			px =  (nSib - 1) * this.hStagger; 
			py = nSib * this.vStagger;
			break;
		case 1:
			px = (nSib -1)* this.hStagger + this.hSpace; 
			py = nSib * this.vStagger;
			
			break;
		case 2:
			px =  (nSib - 1) * this.hStagger; 
			py = nSib * this.vStagger  + MAX_CHILD * this.vStagger;
			break;
		}
		return {x:px, y:py};	
	}
