/*
 * Javascript Functions
 * Mootools functions. Requires the Mootools Javascript Framework (www.mootools.net)
 * @Author Tony Collings
 * @Date July 2009
 * @Version 1.0
 *
 */


var sLoadingAnimation = '<img class="ajax-preloader" src="css/img/ajax-loader.gif" alt="" border="0" />';
var bSelectBoxesDisabled; // Boolean flag set if IE6 and z-index is toggled and SELECT boxes are present. IE6 & SELECT Bug

// AJAX Wrapper function.... 
function gogogadgetAJAX(sURL,sElementToInject){
	var oElementToInject = $(sElementToInject);
	//var objAJAX; // AJAX object
	oElementToInject.set('html',sLoadingAnimation);
	oXHR = new Request.HTML({ 

		onRequest: function(){
				//
		},
		onStateChange: function(){
				//
		}, 
		onSuccess: function(sHTML) {
			
			// IE6 SELECT BOX BUG FIX
			// Remove Select Boxes for IE6 ONLY. IE6 + z-index = problem. 
			var oBrowserName = BrowserDetect.browser;
			var oBrowserVersion = BrowserDetect.version;
			if(oBrowserName == 'Explorer' && oBrowserVersion <= 6){
				// Grab ALL Select Boxes
				var arrElementArray = $$('select');
				fixIE6SelectBox(arrElementArray,false);
				bSelectBoxesDisabled = true; 
			}
		
		
			if(oElementToInject){
				oElementToInject.set('html', '');
				oElementToInject.adopt(sHTML);
			} else {
				alert('We\'re sorry, there seems to have been a technical issue in getting the content you have requested. Please refresh the page and try again. ');	
			}
		},
		onFailure: function() {
			if(oElementToInject){
				oElementToInject.set('html', '<span class="ajaxError">Please accept our apologies, but we have been unable to process this <a href="http://en.wikipedia.org/wiki/Ajax_(programming)" title="AJAX" target="_blank"><acroynm title="(A)synchronous (J)avaScript (A)nd (X)ML"><strong>AJAX</strong></acroynm></a> request. Please close this window and try again. </span>');
			} else {
				alert('We\'re sorry, there seems to have been a technical issue in getting the content you have requested. Please refresh the page and try again. Thank you for your patience');	
			}
		}
	});
	oXHR.post(""+sURL+"")
	
}


// Passes in an array of elements (should all be select boxes) and true/false to toggle on/off
function fixIE6SelectBox(arrElementArray,toggle){
	if(toggle){
		// Show Elements	
		arrElementArray.each(function(el) {
			el.setStyle('display','block');
		});
	}else{
		// Hide Elements
		arrElementArray.each(function(el) {
			el.setStyle('display','none');
		});
	}
}
 
// Applies an onfocus/onblur effect to form borders. Input : array
function fnFancyBorders(arrFormElements,sFocusColor,sBlurColor){
	var oFX;
	arrFormElements.each(function(oElement,index,oFX) {
	oElement.setStyles({border:'1px solid '+sBlurColor});
	oElement.addEvents({
			'focus' : function() {
					if($type(this.oFX) == 'object') this.oFX.cancel();
					oElement.setStyles({'border-width':'1px','border-style':'solid'});
					this.oFX = new Fx.Tween(oElement,  {property: 'border-color', duration: 600/*, transition: Fx.Transitions.Back.easeOut*/}).start(sBlurColor,sFocusColor);
					
			}, 
			'blur' : function() {
					if($type(this.oFX) == 'object') this.oFX.cancel();
					oElement.setStyles({'border-width':'1px','border-style':'solid'});
					this.oFX = new Fx.Tween(oElement,  {property: 'border-color', duration: 600/*, transition: Fx.Transitions.Back.easeOut*/}).start(sFocusColor,sBlurColor);
			}
		}); 
	});
}


function fnPreloadImages(aImages){
	if(aImages.length > 0){
		aImages.each(function(oImage, iIndex){
			oImage.setStyles({'visibility':'hidden','opacity':0});
			// Create preloader element and inject.
			var oPreloaderIcon = new Element('img', {
				'class': 'ajax-preloader',
				'src': 'css/img/ajax-loader.gif'
			});
			oPreloaderIcon.inject(oImage,'before');
			var oPreloadImage = Asset.image(oImage.getProperty('src'), {
				onload: function(){
					oPreloaderIcon.destroy();
					oImage.setStyles({'visibility':'visible','opacity':0});
					var oFadeFX = new Fx.Tween(oImage, {property: 'opacity', duration: 1500, transition: Fx.Transitions.Quart.easeInOut}).start(1);
				}
			});
			
		});
	}else{
		return; 	
	}
}

function fnInstallPDF_XPI(oEvent){
	var oParameters = {
		"PDF Plugin for Firefox": { 
			URL: oEvent.target.href,
			IconURL: '',
			Hash: oEvent.target.getAttribute("rel"),
			toString: function () { return this.URL; }
		}
	};
	InstallTrigger.install(oParameters); // This is Gecko based ONLY JS. 
	return false;
}

