// JavaScript Document

/***** Easing Plugin *****/

jQuery.easing.jswing=jQuery.easing.swing;jQuery.extend(jQuery.easing,{def:"easeInOutQuad",swing:function(e,f,a,h,g){return jQuery.easing[jQuery.easing.def](e,f,a,h,g)},easeInQuad:function(e,f,a,h,g){return h*(f/=g)*f+a},easeOutQuad:function(e,f,a,h,g){return -h*(f/=g)*(f-2)+a},easeInOutQuad:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f+a}return -h/2*((--f)*(f-2)-1)+a},easeInQuint:function(e,f,a,h,g){return h*(f/=g)*f*f*f*f+a},easeOutQuint:function(e,f,a,h,g){return h*((f=f/g-1)*f*f*f*f+1)+a},easeInOutQuint:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f*f*f+a}return h/2*((f-=2)*f*f*f*f+2)+a},easeInExpo:function(e,f,a,h,g){return(f===0)?a:h*Math.pow(2,10*(f/g-1))+a},easeOutExpo:function(e,f,a,h,g){return(f==g)?a+h:h*(-Math.pow(2,-10*f/g)+1)+a},easeInOutExpo:function(e,f,a,h,g){if(f===0){return a}if(f==g){return a+h}if((f/=g/2)<1){return h/2*Math.pow(2,10*(f-1))+a}return h/2*(-Math.pow(2,-10*--f)+2)+a},easeInRegular:function(e,f,a,h,g){return h*(f/=g)*f+a},easeOutRegular:function(e,f,a,h,g){return -h*(f/=g)*(f-2)+a},easeInOutRegular:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f+a}return -h/2*((--f)*(f-2)-1)+a}});
jQuery.easing['jswing']=jQuery.easing['swing'];jQuery.extend(jQuery.easing,{def:'easeOutQuad',swing:function(x,t,b,c,d){return jQuery.easing[jQuery.easing.def](x,t,b,c,d)},easeInQuad:function(x,t,b,c,d){return c*(t/=d)*t+b},easeOutQuad:function(x,t,b,c,d){return-c*(t/=d)*(t-2)+b},easeInOutQuad:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t+b;return-c/2*((--t)*(t-2)-1)+b},easeInCubic:function(x,t,b,c,d){return c*(t/=d)*t*t+b},easeOutCubic:function(x,t,b,c,d){return c*((t=t/d-1)*t*t+1)+b},easeInOutCubic:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t+b;return c/2*((t-=2)*t*t+2)+b},easeInQuart:function(x,t,b,c,d){return c*(t/=d)*t*t*t+b},easeOutQuart:function(x,t,b,c,d){return-c*((t=t/d-1)*t*t*t-1)+b},easeInOutQuart:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t+b;return-c/2*((t-=2)*t*t*t-2)+b},easeInQuint:function(x,t,b,c,d){return c*(t/=d)*t*t*t*t+b},easeOutQuint:function(x,t,b,c,d){return c*((t=t/d-1)*t*t*t*t+1)+b},easeInOutQuint:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t*t+b;return c/2*((t-=2)*t*t*t*t+2)+b},easeInSine:function(x,t,b,c,d){return-c*Math.cos(t/d*(Math.PI/2))+c+b},easeOutSine:function(x,t,b,c,d){return c*Math.sin(t/d*(Math.PI/2))+b},easeInOutSine:function(x,t,b,c,d){return-c/2*(Math.cos(Math.PI*t/d)-1)+b},easeInExpo:function(x,t,b,c,d){return(t==0)?b:c*Math.pow(2,10*(t/d-1))+b},easeOutExpo:function(x,t,b,c,d){return(t==d)?b+c:c*(-Math.pow(2,-10*t/d)+1)+b},easeInOutExpo:function(x,t,b,c,d){if(t==0)return b;if(t==d)return b+c;if((t/=d/2)<1)return c/2*Math.pow(2,10*(t-1))+b;return c/2*(-Math.pow(2,-10*--t)+2)+b},easeInCirc:function(x,t,b,c,d){return-c*(Math.sqrt(1-(t/=d)*t)-1)+b},easeOutCirc:function(x,t,b,c,d){return c*Math.sqrt(1-(t=t/d-1)*t)+b},easeInOutCirc:function(x,t,b,c,d){if((t/=d/2)<1)return-c/2*(Math.sqrt(1-t*t)-1)+b;return c/2*(Math.sqrt(1-(t-=2)*t)+1)+b},easeInElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4}else var s=p/(2*Math.PI)*Math.asin(c/a);return-(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b},easeOutElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4}else var s=p/(2*Math.PI)*Math.asin(c/a);return a*Math.pow(2,-10*t)*Math.sin((t*d-s)*(2*Math.PI)/p)+c+b},easeInOutElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d/2)==2)return b+c;if(!p)p=d*(.3*1.5);if(a<Math.abs(c)){a=c;var s=p/4}else var s=p/(2*Math.PI)*Math.asin(c/a);if(t<1)return-.5*(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;return a*Math.pow(2,-10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p)*.5+c+b},easeInBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;return c*(t/=d)*t*((s+1)*t-s)+b},easeOutBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b},easeInOutBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;if((t/=d/2)<1)return c/2*(t*t*(((s*=(1.525))+1)*t-s))+b;return c/2*((t-=2)*t*(((s*=(1.525))+1)*t+s)+2)+b},easeInBounce:function(x,t,b,c,d){return c-jQuery.easing.easeOutBounce(x,d-t,0,c,d)+b},easeOutBounce:function(x,t,b,c,d){if((t/=d)<(1/2.75)){return c*(7.5625*t*t)+b}else if(t<(2/2.75)){return c*(7.5625*(t-=(1.5/2.75))*t+.75)+b}else if(t<(2.5/2.75)){return c*(7.5625*(t-=(2.25/2.75))*t+.9375)+b}else{return c*(7.5625*(t-=(2.625/2.75))*t+.984375)+b}},easeInOutBounce:function(x,t,b,c,d){if(t<d/2)return jQuery.easing.easeInBounce(x,t*2,0,c,d)*.5+b;return jQuery.easing.easeOutBounce(x,t*2-d,0,c,d)*.5+c*.5+b}});

/**
 * jQuery (PNG Fix) v1.2
 * Microsoft Internet Explorer 24bit PNG Fix
 *
 * The MIT License
 * 
 * Copyright (c) 2007 Paul Campbell (pauljamescampbell.co.uk)
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 *
 * @param		Object
 * @return		Array
 */
(function($) {
	
	$.fn.pngfix = function(options) {
		
		// Review the Microsoft IE developer library for AlphaImageLoader reference 
		// http://msdn2.microsoft.com/en-us/library/ms532969(VS.85).aspx
		
		// ECMA scope fix
		var elements 	= this;
		var settings 	= $.extend({
			imageFixSrc: 	false,
			sizingMethod: 	false 
		}, options);
		
		if(!$.browser.msie || ($.browser.msie &&  $.browser.version >= 7)) {
			return(elements);
		}

		function setFilter(el, path, mode) {
			var fs = el.attr("filters");
			var alpha = "DXImageTransform.Microsoft.AlphaImageLoader";
			if (fs[alpha]) {
				fs[alpha].enabled = true;
				fs[alpha].src = path; 
				fs[alpha].sizingMethod = mode;
			} else {
				el.css("filter", 'progid:' + alpha + '(enabled="true", sizingMethod="' + mode + '", src="' + path + '")');			
			}
		}
		
		function setDOMElementWidth(el) {
			if(el.css("width") == "auto" & el.css("height") == "auto") {
				el.css("width", el.attr("offsetWidth") + "px");
			}
		}

		return(
			elements.each(function() {
				
				// Scope
				var el = $(this);
				
				if(el.attr("tagName").toUpperCase() == "IMG" && (/\.png/i).test(el.attr("src"))) {
					if(!settings.imageFixSrc) {
						
						// Wrap the <img> in a <span> then apply style/filters, 
						// removing the <img> tag from the final render 
						el.wrap("<span></span>");
						var par = el.parent();
						par.css({
							height: 	el.height(),
							width: 		el.width(),
							display: 	"inline-block"
						});
						setFilter(par, el.attr("src"), "scale");
						el.remove();
					} else if((/\.gif/i).test(settings.imageFixSrc)) {
						
						// Replace the current image with a transparent GIF
						// and apply the filter to the background of the 
						// <img> tag (not the preferred route)
						setDOMElementWidth(el);
						setFilter(el, el.attr("src"), "image");
						el.attr("src", settings.imageFixSrc);
					}
					
				} else {
					var bg = new String(el.css("backgroundImage"));
					var matches = bg.match(/^url\("(.*)"\)$/);
					if(matches && matches.length) {
						
						// Elements with a PNG as a backgroundImage have the
						// filter applied with a sizing method relevant to the 
						// background repeat type
						setDOMElementWidth(el);
						el.css("backgroundImage", "none");
						
						// Restrict scaling methods to valid MSDN defintions (or one custom)
						var sc = "crop";
						if(settings.sizingMethod) {
							sc = settings.sizingMethod;
						} 
						setFilter(el, matches[1], sc);
						
						// Fix IE peek-a-boo bug for internal links
						// within that DOM element
						el.find("a").each(function() {
							$(this).css("position", "relative");
						});

					}
				}
				
			})
		);
	}

})(jQuery)

//object for contact us form
formObj = {
    oFormId: '',
    oStatusok: '',
    eEmail: '',
    init: function () {
        $('#' + formObj.oFormId + ' :input:not(input[type=submit], #recaptcha_area *)').each(function () {
            var sDefault = $(this).attr('title');
            var $this = $(this);
            $this.blur(function () {
                //check if it is email field
                if ($this.attr('id') == formObj.oEmail) {
                    if (($this.val() !== '') && ($this.val() !== sDefault) && (formObj.validateEmail())) {
                        formObj.addOk($this);
                    } else {
                        formObj.removeOk($this);
                    }
                } else {
                    if (($this.val() !== '') && ($this.val() !== sDefault)) {
                        //add ok status
                        formObj.addOk($this);
                    } else {

                        //remove ok status or other error function
                        formObj.removeOk($this);
                    }
                }
            });
            $('.contactform input, .contactform textarea').focus(function () {
                if ($(this).val() == $(this).attr('title')) {
                    $(this).val('');
                }
            });
            $('.contactform input, .contactform textarea').blur(function () {
                if ($(this).val() == '') {
                    $(this).val($(this).attr('title'));
                }
            });
        });
        $('.contactform .submitbtn').click(function () {
            var retVal = true;
            $('#' + formObj.oFormId + ' :input:not(input[type=submit], #recaptcha_area *)').each(function () {
                var sDefault = $(this).attr('title');
                var $this = $(this);
                if ($this.attr('id') == formObj.oEmail) {
                    if (($this.val() !== '') && ($this.val() !== sDefault) && (formObj.validateEmail())) {
                        formObj.addOk($this);
                    } else {
                        formObj.removeOk($this);
                        retVal = false;
                    }
                } else {
                    if (($this.val() !== '') && ($this.val() !== sDefault)) {
                        //add ok status
                        formObj.addOk($this);
                    } else {

                        //remove ok status or other error function
                        formObj.removeOk($this);
                        retVal = false;
                    }
                }
            });
            return retVal;
        });
    },
    validateEmail: function () {
        var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
        var address = $('#' + formObj.oFormId + ' #' + formObj.oEmail).val();

        return (reg.test(address) === false) ? false : true;
    },
    addOk: function (oThat) {
        if (oThat.next().hasClass(formObj.oStatusfail)) {
            oThat.next('.' + formObj.oStatusfail).remove();
        }
        if (oThat.next().hasClass(formObj.oStatusok)) {
            oThat.next('.' + formObj.oStatusok).remove();
        }
        if (!oThat.next().hasClass(formObj.oStatusok)) {
            oThat.after('<div class="' + formObj.oStatusok + '"></div>');
        }
    },
    removeOk: function (oThat) {
        if (oThat.next().hasClass(formObj.oStatusok)) {
            oThat.next('.' + formObj.oStatusok).remove();
        }
        if (oThat.next().hasClass(formObj.oStatusfail)) {
            oThat.next('.' + formObj.oStatusfail).remove();
        }
        if (!oThat.next().hasClass(formObj.oStatusfail)) {
            oThat.after('<div class="' + formObj.oStatusfail + '"></div>');
        }

    }
}

//object for custom map
mapObj = {
	mapLat : '',
	mapLong : '',
	markerPath : '',
	markerShadowPath : '',
	init : function() {
		var map;
		var mapCenter = new google.maps.LatLng(mapObj.mapLat,mapObj.mapLong);
		var markerLatLng = new google.maps.LatLng(mapObj.mapLat,mapObj.mapLong);			
	
		var marker = new google.maps.MarkerImage(mapObj.markerPath, new google.maps.Size(56, 46), new google.maps.Point(0, 0), new google.maps.Point(28, 46));
		var shadowMarker = new google.maps.MarkerImage(mapObj.markerShadowPath,
					new google.maps.Size(17, 8),
					new google.maps.Point(0, 0),
					new google.maps.Point(10, 5));
					
		if ($.browser.msie && $.browser.version.substring(0, 1) <= "8") {
			// adding transparent black bg
			$('#mapback').css({'opacity' : .6, 'height' : $(document).height(), 'width' : $(document).width()});
			$('#mapback').show();
			
			//adding map div
			$('#mapwrap').css({'left' : ($(document).width() / 2 - ($('#mapwrap').width() / 2))});
			$('#mapwrap').css({'top' : ($(document).height() / 2 - ($('#mapwrap').height() / 2) - 100)});
			$('#mapwrap').show();
			
			//add close button
			$('#mapwrap .close').click(function(event) {
				event.preventDefault();
				$('#mapwrap').hide();
				$('#mapback').hide();
			});
			
		} else {
			// adding transparent black bg
			$('#mapback').css({'opacity' : 0, 'height' : $(document).height()});
			$('#mapback').show();
			$('#mapback').animate({
				'opacity' : .6
			}, 700,'easeOutQuint');
			
			//adding map div
			$('#mapwrap').css({'opacity' : 0});
			$('#mapwrap').css({'left' : ($(document).width() / 2 - ($('#mapwrap').width() / 2))});
			$('#mapwrap').css({'top' : ($(document).height() / 2 - ($('#mapwrap').height() / 2) - 50)});
			$('#mapwrap').show();
			$('#mapwrap').animate({
				'opacity' : 1
			}, 700,'easeOutQuint');
			
			//add close button
			$('#mapwrap .close').click(function(event) {
				event.preventDefault();
				$('#mapwrap').animate({
				'opacity' : 0
				}, 700,'easeOutQuint', function() {
					$('#mapwrap').hide();
				});
				
				$('#mapback').animate({
					'opacity' : 0
				}, 700,'easeOutQuint', function() {
					$('#mapback').hide();
				});
			});
		}
		
		var myOptions = {
			'center'           : mapCenter,
			'zoom'             : 15,
			'disableDefaultUI' : false,
			'zoomControl'      : true,
			'scrollwheel'      : false,
			'mapTypeId'        : google.maps.MapTypeId.ROADMAP
		  };
	   
		map = new google.maps.Map(document.getElementById("mapcanvas"), myOptions);
		marker = new google.maps.Marker({
			'position' : markerLatLng,
			'map'      : map,
			'icon'     : marker,
			'shadow'   : shadowMarker
		 });    
		 
		 google.maps.event.addListener(marker, 'click', function( event ) {
				//showData(data['walls'], this.id); 
		 });
	}	
}

//object for simple slider - Case studies
simpleSlider = {
	sliding : false,
	init : function() {
		$('#next').click(function(e) {
			e.preventDefault();
			
			if (!simpleSlider.sliding) {
				simpleSlider.sliding = true;
				
				$('#slider .wrap').animate({
					marginLeft: '-=380'
				}, 700,'easeOutQuint', function(){
					$('#slider .wrap > div:first').appendTo('#slider .wrap');
					$('#slider .wrap').css({'margin' : '0px'});
					simpleSlider.sliding = false;
				});
			}
		});
		
		$('#previous').click(function(e) {
			e.preventDefault();
			
			if (!simpleSlider.sliding) {
				simpleSlider.sliding = true;
				$('#slider .wrap > .box:last').prependTo('#slider .wrap');
				$('#slider .wrap').css({'margin-left' : '-380px'});
						
				$('#slider .wrap').animate({
					marginLeft: '0'
				}, 700,'easeOutQuint', function(){
					simpleSlider.sliding = false;
				});
			}
		});
	}
}

function mainNav(){
	$('#nav li a').css({padding:0});
	var navWidth = $('#nav ul').width();
	var navNo = $('#nav li').size();
	var navPad = Math.floor(((960 - navWidth) / navNo) / 2);
	$('#nav li a').css({paddingLeft:navPad});
	$('#nav li a').css({paddingRight:navPad});
	$('#nav li:last a').css({paddingRight:navPad}).hover(function(){
		$('#nav .nav-wrap').addClass('over');
	},function(){
		$('#nav .nav-wrap').removeClass('over');
	});
	if($('#nav li:last').hasClass('active')){
		$('#nav .nav-wrap').addClass('on');
	}
}

// selector for IE6
function selectorInit() {
	if ($.browser.msie && $.browser.version=="6.0") {
		$('.selector').hover(
			function(){
				$(this).find('#selectorbox').css({'display' : 'block'})
			}, 
			function() {
				$(this).find('#selectorbox').css({'display' : 'none'})
			}
		);
	}
}

// focus functions for search bar
function searchForm() {	
	$('input[name="search"]').each(function() {
		var DATA = $(this).attr('value');
		
		$(this).focusin( function() {
			if ($(this).attr('value') === DATA) {
				$(this).attr('value', '');	
			}
		});
		
		$(this).focusout( function() {
			if ($(this).attr('value') === '') {
				$(this).attr('value', DATA);
			}
		});
	});
}

function studiesLinks() {
    $('.studiesbox').click(function () {
        if($(this).find('a').size() > 0){
		    document.location.href = $(this).find('a:last').attr('href');
        }
	});	
}

// selecting in contact form - enquiry type
function contactInit() {
    $('#selectorbox a').click(function (e) {
        e.preventDefault();

        var selected = $(this).html();

        $('#formvalue').val(selected);
        $('.contactline').html(selected);

        //add ok status		
        if (!$('#contactselector').next('input:hidden').next().hasClass('statusok')) {
            $('#contactselector').next('input:hidden').next('.statusfail').remove();
            $('#contactselector').next('input:hidden').after('<div class="statusok"></div>');
        } //else {
        //if ($('#contactselector').next('input:hidden').next().hasClass('statusok')) {
        // $('#contactselector').next('input:hidden').next().remove();
        //}	
        //}
    });
}

// add map to page - map functions
function viewOnMapInit() {
 
    $('.mapbutton').each(function () {
        $(this).click(function (event) {
 
            event.preventDefault();
 
            var self = $(this),
            url = self.data('geo');
            marker = self.data('marker');
 
            var substr = url.split(',');
 
            mapObj.mapLat = substr[0];
            mapObj.mapLong = substr[1];
 
            mapObj.markerPath = marker;
            mapObj.markerShadowPath = '/images/markershadow.png';
            mapObj.init();
        
        });
    });
}

$(document).ready(function () {
    searchForm();
    //peopleLinks();
    studiesLinks();
    contactInit();
    selectorInit();
    viewOnMapInit();
    mainNav();

    formObj.oFormId = 'contactform';
    formObj.oEmail = 'email';
    formObj.oStatusok = 'statusok';
    formObj.oStatusfail = 'statusfail';
    formObj.init();

    simpleSlider.init();

    jQuery(function ($) {
        $("#nav ul li").pngfix();
    });

	setInterval(function(){
		$('div[id*="gm_marker"] css3-container').css('left', '0');
	},100)

});
