/*
-------------------------------------------------------------------
Margin

Name space: MarginTools
(not using "Margin" to ensure not using a reserved word)
*/

var MarginTools = {

	el : null,
	TogglerButtons : null,
	Current : -1,
	Opening : false,
	ToolDesc : '&nbsp;',
	Locked : false,
	Mode : 'rollover',//click|rollover accordion can work form onclick or onmouseover

	SetTitleStyles : function()
	{
		for(var i=0; i<MarginTools.TogglerButtons.length; i++)
		{
			if(i != MarginTools.Current)
			{
				MarginTools.TogglerButtons[i].getElement('H3').removeClass('Accordian-Control-Active');
				MarginTools.TogglerButtons[i].parentNode.style.backgroundPosition = '0 -50px';
			}
			else
			{
				MarginTools.TogglerButtons[i].getElement('H3').addClass('Accordian-Control-Active');
				MarginTools.TogglerButtons[i].parentNode.style.backgroundPosition = '0 -1px';
			}
		}
	},

	SetTools : function(el)
	{
		el.Group.Nav.each(function(A,Ai) { A.removeClass('On'); });
		el.addClass('On');
		el.Group.getElement('.Tools-Items').style.marginLeft = (el.i == 0)? '0':'-'+(el.i*(193 + 100))+'px';//193 for width, 100 for margin right
		MarginTools.ToolDesc = $('Tools-'+(el.id.substring(10,el.id.length))).getElement('.Desc').innerHTML;
		if(!el.Group.Active)
			MarginTools.Activate(el.Group);
	},
	
	UnsetTools : function(el)
	{
		el.Nav.each(function(A,Ai) { A.removeClass('On'); });
		MarginTools.ToolDesc = '&nbsp;';
		el.NavDesc.innerHTML = MarginTools.ToolDesc;
	},
	
	ButtonOver : function(el)
	{
		el.addClass('Over');//for WinIE6
		el.Group.NavDesc.innerHTML = $('Tools-'+(el.id.substring(10,el.id.length))).getElement('.Desc').innerHTML;
	},
	
	ButtonOut : function(el)
	{
		el.removeClass('Over');//for WinIE6
		el.Group.NavDesc.innerHTML = MarginTools.ToolDesc;
	},
	
	Activate : function(el)
	{
		el.Active = true;
		el.Slider.slideIn();
		el.getElement('.Tools-Items').fade('in');
		if(MarginTools.Current >= 0)
			MarginTools.TogglerButtons[MarginTools.Current].fireEvent('click');
	},
	
	Deactivate : function()
	{
		MarginTools.el.getElements('.Tools').each(function(el,i) {
			el.Active = false;
			el.Slider.slideOut();
			el.getElement('.Tools-Items').fade('out');
			MarginTools.UnsetTools(el);
		});
	}
}

var MarginTools_Rating = {

	Labels : new Array(
		'Poor page',
		'So so page',
		'Good page',
		'Very good page',
		'Excellent page'
	),

	SetLabel : function(el,i) {
		$(el.parentNode.Label).innerHTML = (i > -1)? MarginTools_Rating.Labels[i]:'&nbsp;';
	},

	Hilite : function(el) {
		var Spans = el.parentNode.getElements('span');
		var On = true;
		MarginTools_Rating.SetLabel(el,el.childNodes[0].value-1);
		for(var i=0; i<Spans.length; i++)
		{
			Spans[i].className = On? 'On':'';
			if(Spans[i] == el)
				On = false;
		}
	},

	HiliteDrop : function(el) {
		var Spans = el.parentNode.getElements('span');
		for(var i=Spans.length-1; i>-1; i--)
		{
			if(i>el.parentNode.Amt)
				Spans[i].className = '';
			else
				Spans[i].className = 'On';
		}
		MarginTools_Rating.SetLabel(el,el.parentNode.Amt);
	},

	SetAmt : function(el) {
		el.parentNode.Amt = el.childNodes[0].value-1;
		var Inputs = el.parentNode.getElements('input');
		for(var i=0; i<Inputs.length; i++)
			el.childNodes[0].checked = (el.parentNode.Amt-1 == i)? true:false;
		MarginTools_Rating.SetLabel(el,el.parentNode.Amt);
	}
}

window.addEvent('domready', function() { 

	MarginTools.el = $('Margin-Content');
	
	/*
	Tools
	*/
	if(!MarginTools.el)
		return false;
	
	MarginTools.el.getElements('.Tools').each(function(el,i) {//partly set up to accomodate multiple tools (".Tools" items), but assumes only one item for now (otherwise prototype MarginTools etc)
		
		el.getElement('.Tools-Items').fade('hide');
		
		el.Active = false;

		el.Slider = new Fx.Slide(el.getElement('.Tools-Content'),{ 
			mode : 'vertical',
			onStart : function(el) { },
			onComplete : function(el) { }
		}).hide();
		
		el.Nav = el.getElements('.Tools-Nav a');

		el.NavDesc = el.getElement('.Tools-Nav-Desc');

		el.Nav.each(function(A,Ai) {
			A.Group = el;
			A.i = Ai;
			A.removeProperty('href');
			A.style.cursor = 'pointer';
			A.onmouseover = function() {
				MarginTools.ButtonOver(this);
			};
			A.onmouseout = function() {
				MarginTools.ButtonOut(this);
			};
			A.onclick = function() {
				MarginTools.SetTools(this);
			};
		});
	});
	//Init
	MarginTools.SetTools($('Tools-Nav-Signup'));


	/*
	Accordion
	*/
	MarginTools.TogglerButtons = $$('#'+MarginTools.el.id+' div.Group-Title');

	MarginTools.TogglerButtons.each(function(H3,i) {
		H3 = H3.getElement('H3');
		H3.style.cursor = 'pointer';
		H3.className = 'Accordian-Control';
		H3.i = i;
	});
	
	MarginTools.el.Accordion = new Accordion($$('#'+MarginTools.el.id+' div.Group-Title'), $$('#'+MarginTools.el.id+' div.Group-Content'), { 

		opacity: false,
		alwaysHide : true,
		show : -1,

		onActive: function(toggler,element) {
			MarginTools.Opening = true;
			MarginTools.Locked = true;
			MarginTools.Deactivate();
			for(var i=0; i<MarginTools.TogglerButtons.length; i++)
			{
				if(MarginTools.TogglerButtons[i] == toggler)
				{
					MarginTools.Current = i;
					break;
				}
			}
		},

		onStart : function(toggler,element) {
			if(!MarginTools.Opening)
				MarginTools.Current = -1;
			MarginTools.Opening = false;
		},

		onComplete: function(toggler,element) {
			MarginTools.SetTitleStyles();
			MarginTools.Locked = false;
		}
	});

	if(MarginTools.Mode == 'rollover')
	{
		//rollover funciton
		$$('#'+MarginTools.el.id+' div.Group-Title').each(function(el,i) {
			el.i = i;
			el.onmouseover = function() { 
				
				if(this.i != MarginTools.Current && !MarginTools.Locked)
					this.fireEvent('click'); 
			}
		});
	}


	/*
	Rating fields
	*/
	$(MarginTools.el.id).getElement('.Field-Rating').Amt = -1;
	$(MarginTools.el.id).getElement('.Field-Rating').Label = $('Tools-Rate-Label');
	
	$$('#'+MarginTools.el.id+' .Field-Rating span').each(function(el,i) {

		el.style.cursor = 'pointer';

		el.onmouseover = function() {
			MarginTools_Rating.Hilite(this);
		};
		
		el.onmouseout = function() {
			MarginTools_Rating.HiliteDrop(this);
		};
		
		el.onclick = function() {
			MarginTools_Rating.SetAmt(this);
		};
	});
	
	return true;
});