// JavaScript Document
/* <![CDATA[ */
function form_init() {
	//alert("INIT");
	
	
	var submitted = false
	var searchform = document.getElementById('simpSearchForm');
	


	/// CHECK FOR BLANK TEXT FIELD
	if (searchform) {
		searchform.onsubmit = function() {
			//alert("###"+searchform.ssUserText.value+"####");
			if(this.ssUserText.value == '') {
				alert('You have not entered a valid search word or phrase, please enter one or more search words.');
				return false;
			}
			else {
				/// ONLY ALLOW ONE PRESSING OF SUBMIT BUTTON THEN DISPLAY 'FORM SUBMITTED' MSG
				if(!submitted) submitted = true;
				else alert ('Search has been submitted, please wait.');
				return true;
			}
		}
	}

}


	var Pubs = {};
		
		var Pubs = {

			serverRelativeSiteRoot : "",
					
			init : function() {
				//Apply action events to all results
				Pubs.addItemActionEvents($("content"));
				if (serverRelativeSiteRoot) Pubs.serverRelativeSiteRoot = serverRelativeSiteRoot;

				//Apply expand code to search pubs button when in browse mode
				if ($('browseActivateSearch')) {
					$('browseActivateSearch').observe('click', function(event) {
						$('browseSearch').show();
						$('browseActivateSearch').hide();
						event.stop();
					});
				}
			},
			
			//Assign itemAction call to all order, change order and remove buttons under root
			addItemActionEvents : function(root) {
				if (root) {
					root.select('.fmOrderButton, .fmChangeOrderButton, .fmRemoveButton').each(
						function(item){ 
							item.observe('click', Pubs.itemAction); 
						});
				};
			},
			
			//AJAX call to modify basket and insert updated basket HTML
			itemAction : function(event) {
				event.stop();
				var element = event.element();
				var result = element.up('.result');
				var quantity = "";
				var ajaxMethod = "";
				var postContent = "";
				var ajaxUrl = Pubs.serverRelativeSiteRoot + 'publications/SP_L2_AJAX_PUBLICATIONSBASKET';				
						
				if (element.tagName == 'A' || element.tagName == 'a') {
					ajaxMethod = 'get';
					ajaxUrl = ajaxUrl + element.href.substr(element.href.lastIndexOf('?'));
					
				} else {
					ajaxMethod = 'post';
	
					postContent = element.form.serialize();
			
					//Validation - check user has a quantity selected
					var quantity = element.form.fmOrderQuantity
				}

				if (quantity && quantity.selectedIndex == 0) {
					alert('Please select a quantity to order...');
				} else {
					//Replace button clicked with ajax loader
					var loader = new Element('div').addClassName('ajax-loader').update("Loading...");
					Element.replace(element, loader);
					
					new Ajax.Request(ajaxUrl, {
						method: ajaxMethod,
						postBody: postContent,
						onSuccess: function(transport) {
							//Convert response text into DOM elements
							var basketTransport = new Element('div').update(transport.responseText);

							//Extract basket div by class
							var basket = basketTransport.down('.basket');
						
							//if we don't have the basket we might have the 'your-order' finish page basket
							if (!basket) {
								var basket = basketTransport.down('#your-order');
							};

							//Extract result divs contents
							if (result) {
								var resultContent = basketTransport.down('.result').innerHTML;
							};
						
							//Insert the new basket div into the basketWrapper
							$('basketWrapper').update(basket);
	
							//Insert the new result divs contents into the existing result
							if (result) {							
								result.update(resultContent);	
							};

							//Reapply itemAction JS events to new result contents & basket
							Pubs.addItemActionEvents(result);
	
							//HACKY - reapply corners code to basket (better to call orig code in acc.css)
							$$('#basketWrapper .corners').each(function(el) {
							 el.innerHTML = '<div class="content"><div class="t"></div>' + el.innerHTML + '</div><div class="b"><div>&nbsp;</div></div>';
							 });

							Pubs.addItemActionEvents($('basketWrapper'));

							//Fade effect the new item
							$('newAdded').setStyle({'background' : '#FCE78B'});
							colorFade("newAdded", 'background', 'FCE78B' , 'FFFFFF', 50, 15, 500);
 
						},
						onFailure: function() {
							alert('An issue has occured with your order. Please try again later.');
						}
					});		
				}
				
				
				event.stop();
				
			},
		
			//Test to see if session cookie has been set - if not generate and display an error
			testCookie : function() {
				var sessionCookie = document.cookie.indexOf('acc_session_id');
				var contentClass = $('content').className;

				//Only test if not order submitted or canceled
				if (contentClass.indexOf("finishOrder") == -1 && contentClass.indexOf("finishCancel") == -1) {
					if (sessionCookie == -1) {

						//Cookie may not have been set yet - so test by adding and reading a temp cookie
						document.cookie = "acc_cookie_test=123";
						if (document.cookie.indexOf('acc_cookie_test') == -1) {
							var noCookie = new Element('p').addClassName('error').update('You appear to have cookies disabled. You will need to have cookies enabled for this site to be able to complete an order.');								
							$('content').insert ({top : noCookie });
						}
					}
				}
					
			}
		};
		
		Event.observe(document, 'dom:loaded', 
			function() { 
				Pubs.init();
				Pubs.testCookie();
				form_init();
			}
		);
	
/* ]]> */
