/*
 * Contains functionality used on the deck_boards page
 *
 * DATE			DEVELOPER		COMPANY					ACTION
 * 2008-11-12	Geoff Beaumont	Creative and Brand Ltd.	Created
 */

var Dom = YAHOO.util.Dom,
			Lang = YAHOO.lang,
			Event = YAHOO.util.Event,
			Util = YAHOO.util,
			Connect = Util.Connect,
			Widget = YAHOO.widget,
			CaB = YAHOO.CaB;

YAHOO.util.Event.throwErrors = true;
CaB.noDeckBoards = false;

(function(){
	CaB.initialiseDeckBoards = function(){
		var options = new Util.Element('boards-options');
		var firstButtons = new Util.Element('first-buttons');
		var boardsYes = new Util.Element('boardsYes');
		var boardsNo = new Util.Element('boardsNo');
		var boardsActuallyNo = new Util.Element('boardsActuallyNo');
		var boardsForm = new Util.Element('boards-form');
		
		boardsYes.addListener('click',function(ev){
			Event.preventDefault(ev); // Stop form submitting
			options.setStyle('display','block');
			firstButtons.setStyle('display','none');
		});
		
		boardsNo.addListener('click',function(ev){
			CaB.noDeckBoards = true;
		});
		
		boardsActuallyNo.addListener('click',function(ev){
			CaB.noDeckBoards = true;
		});
		
		boardsForm.addListener('submit',function(ev){
			Event.preventDefault(ev);
			var handler = document.getElementById('h').value;
			var orient = '';
			var deckboard = '';
			var beamsPosts = '';
			
			var orientEls = document.getElementsByName('orient');
			for(var i=0; i < orientEls.length; i++){
				if (orientEls[i].checked) orient = orientEls[i].value;
			}
			orientEls = null;
			
			var deckboardEls = document.getElementsByName('deckboard');
			for(var i=0; i < deckboardEls.length; i++){
				if (deckboardEls[i].checked) deckboard = deckboardEls[i].value;
			}
			deckboardEls = null;
			
			var beamsPostsEls = document.getElementsByName('beams_and_posts');
			for(var i=0; i < beamsPostsEls.length; i++){
				if (beamsPostsEls[i].checked) beamsPosts = beamsPostsEls[i].value;
			}
			beamsPostsEls = null;
			
			// Check whether we should include the no boards flag
			var noBoards = '';
			if(CaB.noDeckBoards)
				noBoards = '&boardsNo=true';
			
			Connect.asyncRequest('POST', '/handler.php', {
				success: function(o){
					CaB.noDeckBoards = false;
					if (o.statusText == 'OK' && o.responseXML != null 
							&& o.responseXML.getElementsByTagName('errors').length != 0
							&& o.responseXML.getElementsByTagName('errors')[0].getAttribute('max_error_level') == 0) {
						var dest = CaB.xmlTextContent(o.responseXML.getElementsByTagName('destination')[0]);
						if(dest != null && dest.length > 0)
							document.location = dest;
					} else if (o.statusText == 'OK' && o.responseXML != null 
							&& o.responseXML.getElementsByTagName('errors').length != 0){
						CaB.displayAlert(CaB.parseErrorsXml(o.responseXML.getElementsByTagName('errors')[0],false,true),'error');
					} else {
						CaB.displayAlert(o.responseText);
					}
				},
				failure: function(o){
					CaB.noDeckBoards = false;
					CaB.displayAlert('Failed to retrieve parts details: ' + o.statusText);
				}
			}, 'h='+handler+'&orient='+orient+'&deckboard='+deckboard+'&beams_and_posts='+beamsPosts+noBoards);
		});
	}
}());

Event.on(window, 'load', CaB.initialiseDeckBoards);
