/*jslint browser: true */
/*global $, $$, Asset, DynamicTextarea, Element, Fx, Shadowbox, window */

(function() {
// start namespace

	var is_ie/*@cc_on = {
		version : parseFloat(navigator.appVersion.match(/MSIE (.+?);/)[1])
	}@*/;
	
	if (is_ie && (is_ie.version < 7)) {
		try{
			document.execCommand('BackgroundImageCache', false, true);
		}catch(e){}
	}
	
	window.addEvent('domready', function(){
	
		// no js for IE 5
		if (is_ie && (is_ie.version < 6)) {return false;}

		// flag js support
		$$('body')[0].addClass('js');
		
		// shadowbox
		var iframe = $('page');
		if (!iframe) {
			Shadowbox.init();
		}
		
		// easing like sunday morning
		Fx.implement({
			options: {
				transition: 'cubic:out'
			}
		});
		
		// navigation
		var strHash = '#'+window.location.toString().split('#')[1];
		if (strHash == '#undefined') {
			strHash = '#home';
		}
		var arNav = $$('#nav-main a');
		if (arNav[0]) {
			var smoothScroll; 
			smoothScroll = new Fx.SmoothScroll();
		}
		
		/* revolver */
		var revolver = $$('.revolver')[0];
		
		var revItems,revLen,revWidgets,revPrev,revNext,revPause,revLeft,revList,revItem,revSize,revLast,revLinks;
		function revolve() {
			if (revPause === true) {
				return false;
			}
			if (revLeft == -revLast) {
				revLeft = 0;
			} else {
				revLeft -= revSize;
			}
			revList.tween(revLeft+'px');
		}
		if (revolver) {
			revItems = revolver.getElements('li');
			revLen = revItems.length;
			if (revLen > 1 && revLen < 5) {
				revWidgets = new Element('p', {'class': 'revolver-widgets'});
				revPrev = new Element('a', {
			    'href': '#_',
			    'id': 'revolver-previous',
			    'class': 'revolver-inactive',
			    'html': 'previous',
			    'events': {
		        'click': function(e){
							e = e.preventDefault();
							if (revPause === false || revLeft === 0) {
								return false;
							}
							revLeft += revSize;
							revList.tween(revLeft+'px');
		        }
			    }
				}).inject(revWidgets);
				revItems.each(function(objElm,i){
					i = i+1;
					var strClass = '';
					if (i == 1) {
						strClass = 'revolver-current';
					}
					var revLink;
					revLink = new Element('a', {
				    'href': '#_',
				    'id': 'revolver-'+i,
				    'class': strClass,
				    'html': i,
				    'events': {
			        'click': function(e){
								e = e.preventDefault();
								if (revPause === false) {
									return false;
								}
								var strId = this.get('id');
								switch(strId) {
									case 'revolver-1':
										if (revLeft === 0) {
											return false;
										}
										revLeft = 0;
										revList.tween(revLeft+'px');
									  break;
									case 'revolver-2':
										revLeft = -revSize;
										revList.tween(revLeft+'px');
									  break;
									case 'revolver-3':
										revLeft = -(revSize*2);
										revList.tween(revLeft+'px');
									  break;
									case 'revolver-4':
										if (revLeft == -revLast) {
											return false;
										}
										revLeft = -revLast;
										revList.tween(revLeft+'px');
									  break;
								}
			        }
			      }
					}).inject(revWidgets);
				});
				revNext = new Element('a', {
			    'href': '#_',
			    'id': 'revolver-next',
			    'html': 'next',
			    'events': {
		        'click': function(e){
							e = e.preventDefault();
							if (revPause === false || revLeft == -revLast) {
								return false;
							}
							revLeft -= revSize;
							revList.tween(revLeft+'px');
		        }
			    }
				}).inject(revWidgets);
				revWidgets.inject(revolver);
				revPause = false;
				revLeft = 0;
				revList = revolver.getElement('ul');
				revItem = revItems[0];
				revSize = revItem.getSize();
				revSize = revSize.x;
				revLast = revSize*(revLen-1);
				revLinks = $$('.revolver-widgets a');
				revLen = revLinks.length;
				revList.set('tween', {
					property: 'left',
					duration: revSize,
					wait: false,
					onStart: function() {
						var n = Math.abs(revLeft/revSize)+1;
						var _revLinks = revLinks;
						for (var i=0; i<revLen; i++) {
							_revLinks[i].removeClass('revolver-current');
						}
						_revLinks[n].addClass('revolver-current');
						if (n == 1) {
							revPrev.addClass('revolver-inactive');
						} else {
							revPrev.removeClass('revolver-inactive');
						}
						if (n == (revLen-2)) {
							revNext.addClass('revolver-inactive');
						} else {
							revNext.removeClass('revolver-inactive');
						}
					}
				});
				revolver.addEvents({
					'mouseover' : function() {
						revPause = true;
					},
					'mouseout' : function() {
						revPause = false;
					}
				});
				if (revolver.hasClass('revolver-auto')) {
					setInterval(revolve,6000);
				}
			}
		}

		// case studies
		var arCaseStudies = $$('.case-studies li');
		if (arCaseStudies[0]) {
			arCaseStudies.each(function(objElm){
				var objLink = objElm.getElement('a');
				var strHref = objLink.get('href');
				var strTitle =  objLink.get('title');
				objElm.addEvents({
					'click' : function(e) {
						e = e.preventDefault();
						Shadowbox.open({
				        content: strHref,
				        player: 'iframe',
				        title: strTitle,
				        height: 440,
				        width: 725
				    });
					},
					'mouseover' : function() {
						objElm.addClass('case-study-hover');
					},
					'mouseout' : function() {
						objElm.removeClass('case-study-hover');
					}
				});
			});
		}
		
		//contact form
		var objTubby = $('tubby');
		if (objTubby) {
			var objLoading;
			objLoading = new Asset.image('/_format/img/ajax-loader-alt.gif');
			var arRequired = objTubby.getElements('.required');
			var objJammy = $('jammy');
			var objVerify = $('verifytext');
			var objTitle = objTubby.getPrevious('h3');
			var objRE = /^[\w-\.\']{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,}$/;
			var objShim = new Element('span').inject(objTubby,'after');
			var bEmail,bFocus,bValid,objLabel,strId,strLabel,strElm,strErr,daddy;
			objTubby.set('send', {
				url: '/_function/pl/tubby.cgi', 
				method: 'post',
				onRequest: function(){
					objShim.addClass('loading');
				},
				onSuccess: function(responseText){
					objShim.removeClass('loading');
					daddy = objVerify.getParent();
					if (responseText == 'The word verification code does not match the text on the image. Please go back and try again.' || responseText == 'No file found for verification.') {
						daddy.addClass('error');
						objJammy.src = '/_function/pl/jammy.cgi?randomnumber?'+Date();
						objVerify.set('value','').focus();
					} else {
						daddy.removeClass('error');
						objTubby.fade('out');
						objTitle.set('text','Thanks! Someone will be in touch as soon as possible');
					}
				}
			});
			objTubby.addEvents({
				'submit': function(e) {
					e.preventDefault();
					bEmail = true;
					bFocus = false;
					bValid = true;
					// check required
					arRequired.each(function(objElm,i){
						daddy = objElm.getParent();
						objLabel = daddy.getElement('label');
						strElm = objElm.get('value');
						strId = objElm.get('id');
						switch(strId) {
							case 'email':
								strLabel = 'Email address';
								strErr = 'You need to enter a valid email address:';
								bEmail = objRE.test(strElm);
							  break;
							case 'message':
								strLabel = 'Your message:';
								strErr = 'You need to enter a message:';
							  break;
							case 'verifytext':
								strLabel = 'Please re-type the text from the image';
								strErr = 'Please re-type the text from the image';
							  break;
						}
						objLabel.set('text',strLabel);
						daddy.removeClass('error');
						if (bEmail === false && strId == 'email') {
							bValid = false;
							daddy.addClass('error');
							objLabel.set('text',strErr);
							if (bFocus === false) {
								objElm.focus();
								bFocus = true;
							}
						} else if (strElm === '') {
							bValid = false;
							daddy.addClass('error');
							objLabel.set('text',strErr);
							if (bFocus === false) {
								objElm.focus();
								bFocus = true;
							}
						}
					});
					// check captcha
					if (bValid === false) {
						return false;
					}
					this.send();
				}
			});
		}
		
		var objMessage = $('message');
		if (objMessage) {
			var dynamicInput;
			dynamicInput = new DynamicTextarea(objMessage);
		}
		
		var arBespokeLinks = $$('.content-bespoke p a');
		if (arBespokeLinks[0]) {
			var intBespokeLinks = arBespokeLinks.length;
			for (var i=0; i<intBespokeLinks; i++) {
				var strBespokeLink = arBespokeLinks[i].get('text');
				strBespokeLink = '<span>'+strBespokeLink+'</span>';
				arBespokeLinks[i].set('html',strBespokeLink);
			}
		}
		
		var arContentLinks = $$('.content-main p a');
		if (arContentLinks[0]) {
			var intContentLinks = arContentLinks.length;
			var objContentLink;
			for (var n=0; n<intContentLinks; n++) {
				objContentLink = arContentLinks[n];
				var strContentLink = objContentLink.href;
				if (strContentLink.indexOf('youtube.com/watch?v=') != -1) {
					strContentLink = strContentLink.split('v=')[1];
					strContentLink = strContentLink.split('&')[0];
					strContentLink = 'http://www.youtube.com/v/'+strContentLink+'&autoplay=1';
					objContentLink.href = strContentLink;
					Shadowbox.setup(objContentLink,{
						width:  405,
						height: 340,
						player: 'swf'
					});
				}
			}
		}

	});
	
// end namespace
})();

