/* 
	Author:  Add (c) add.co.nz 2011
*/
    
	var weareadd = {

		global : {
	
			init : function() {
			
				//init 
					weareadd.lib.mailto(".email");
					weareadd.lib.externallinks();
					this.setupnav();
					this.modernizeform( $("#contact_form") );
					/*
					this.placeholder({selector: $("#contact_form input[type=text]")});
					this.placeholder({selector: $("#contact_form textarea")}); 
					*/
			},
			placeholder: function(options){
				var defaults = {
					selector: ".watermark",
					blurClass: "greyout"
				};
				var options = $.extend(defaults, options);
				return $(options.selector).each(function(){
					var prev, elemName = $(this).attr("id");
					inFieldLabel = $("label[for=" + elemName + "]");
					if ($(this).val() != "") {
						inFieldLabel.hide();
					}
					$(this).focus(function(){
						inFieldLabel.hide();
					}).blur(function(){
						if ($(this).val() == "") {
							inFieldLabel.show();
						}
					});
				})
			},
			setupnav : function() {
		
				var $nav = $("#primary ul"),
					$toggler = $("#togglenav");
					
				//toggle function
					function togglevnav(jumptourl) {
		
						if (!$nav.is(":visible")) {
							
							//$nav.slideDown("fast","easeOutBack");
							$nav.slideDown("fast");
							
							$(".pagewrapper").bind("mouseenter",function() {
							
								$nav.slideUp("fast"); 
								
								/*if ($nav.is(":visible")) {
									$(this).unbind("mouseenter");
									$nav.slideUp("fast");
									$toggler.removeClass("highlight");
								}*/
								
							});		
							
						} else {
							$nav.slideUp("fast",function() {
							
								if (jumptourl) {
									location.href = jumptourl;
								}
							
							});
							
							//if (menuvis) {	
								//clearTimeout(menuvis);  

								//var today = new Date();
								//$.cookie("lastvisit",today, {expires:30,path:"/"});								
							//}
						}
					}					
		
				//hide nav on delay
					//if ( !$.cookie("lastvisit") ) {
					//	var menuvis = setTimeout(function() { $toggler.trigger("mouseenter");},4000);
					//} else {
					//	$nav.hide();
					//}
			
				//setup nav vis toggle
					$toggler.bind("mouseenter",function() { 
						$toggler.data("hoverintent",true).addClass("highlight");
						
						setTimeout(function() { 
							if ($toggler.data("hoverintent") ) {
								togglevnav(); 
							}
						},250);
						
					}).bind("mouseleave",function() {
						$toggler.data("hoverintent",false);
					}).bind("click",function(e) {
						e.preventDefault();
					});
					
				//slide up before load
					$nav.find("a").bind("click",function(e) {
						e.preventDefault();
						togglevnav( $(this).attr("href") );						
					});					
				
					
				},
			
			modernizeform : function($form) {
			
				var $forminputs = $form.children("input:not([type=submit]), textarea");
			
				//get the placeholder text from the label. if js is not enabled we dont double up on whats needed
				if ($form.length) {
					$forminputs.each(function() {
						$(this).attr("placeholder", $(this).prev("label").text() );
					});
			
					//html5 form shim
					H5F.setup($form);
						
					$form.children("input[type=submit]").bind("click",function(e) { 
						
						e.preventDefault();
						var isValid = true;

						// has form been validated?
							if ($form.find(".valid").not($(this)).length ===0) {
								$forminputs.eq(0).focus();
								return false;
							}
							
						//check for errors
							$forminputs.each(function() {
								if ( $(this).hasClass("error") || $(this).hasClass("required") ) {
									isValid = false;
									$(this).focus();
								} 
							});

						//submit if clean
							if (isValid) {
								$('input[type="submit"]').attr('disabled','disabled').addClass("submitting");
								
								
								$form.submit();
								
								/*$.ajax({
									type	: "POST",
									url		: $form.attr("action"),
									data	: $form.serialize(),
									success	: function() {	
										
									}

									
								}); */
								
								
								/* move to ajax request when ready 
								setTimeout(function() { 
									$("#contactform").slideUp(750,"easeOutExpo",function() {
										$("<p class='thanks'>Thanks for the message, we'll be in touch as soon as possible!</p>").insertBefore($(this));
									});
								},5000);
								*/
							}
					});
				}
			}
			
		},
				
		pages : {
		
			home :  {

				init : function() {
					weareadd.global.init();
					weareadd.lib.enableslides();
				}
			
			},
			
			aboutus : {
			
				init : function() {
					weareadd.global.init();
				}
				
			},
			
			ourwork : {

				init : function() {
					weareadd.global.init();
					//weareadd.lib.accordionhashbang();
				}
			
			},
			
			casestudies : {
			
				init : function() {
					weareadd.global.init();
					//weareadd.lib.accordionhashbang();
					weareadd.lib.enableslides();
				}

			},
			
			ourservices : {
				
				init : function() {				
					weareadd.global.init();
					weareadd.lib.scrollto("a[href='#primary']",true);
					//weareadd.lib.pagehashbang("h3",this.highlightservice);
					
					//fade in top links
						$("#main a[href='#primary']").animate({opacity:0},0);
						
						$("#main section").bind("mouseenter",function() {
							$(this).find("a[href='#primary']").stop().animate({opacity:1},1000);
						})
					
						.bind("mouseleave",function() {
							$(this).find("a[href='#primary']").stop().animate({opacity:0},1000);
						});
					
				},
				
				//callback service for sidebar hashbang
				highlightservice : function(selector, $target) {
					$("#sidebar .active").removeClass("active");
					$("#sidebar a[href='#" + selector + "']").addClass("active");
					$("#main").find(".active").removeClass("active");
					$target.find("h3").addClass("active");
					
				}
				
			}
		
		}, //end pages
		
		lib : {
		
		
			enableslides : function() {
			
				$.getScript('/js/libs/slides.min.jquery.js', function() {
			
					$(".addslides").slides({
						preload: false,
						container: "slides",
						generateNextPrev: true,
						preloadImage: '/images/uploads/ajaxloader.gif',
						generatePagination: false,
						slideSpeed : 750,
						slideEasing : "easeOutExpo",
						autoHeight: true,
						play:5000
					});
					
					/*hide nav buttons
					$(".addslides").bind("mouseenter",function() {
						$(".prev, .next").stop().animate({opacity:1},500);
					})
					
					.bind("mouseleave",function() {
						$(".prev, .next").stop().animate({opacity:0},500);
					});
				
					$(".prev, .next").animate({opacity:0},0);
					*/
					
				});
			
			},		
		
			prephashbanglinks : function() {
				//js enabled - prep links to be hashbang's
				$("#main a[href^='#'], #sidebar a[href^='#']").not("a[href='#primary']").each(function() {
					$(this).attr("href", $(this).attr("href").replace("#","#!/") + "/");
				});				
			
			},
			
			scrollto : function(selector,highlight) {
				
				
				$("#main").delegate(selector,"click",function(e) {
					
					e.preventDefault();
					
					var element = $(this).attr("href"),
						$element = $(element);
						
					$("html,body").animate({scrollTop: $element.offset().top}, 750, "easeOutExpo");	
					
				});

			},
			
			pagehashbang : function(pagetitleobj,callback) {
			
				var doctitle = document.title;
				
				weareadd.lib.prephashbanglinks();
			
				$(window).bind( 'hashchange', function(e) {
				
					e.preventDefault();
					
					var urlfragment = $.param.fragment();
						url = "#" + $.param.fragment().match(/([A-Za-z0-9-]+)/g);
					
					if (urlfragment) {
					
						var $element = $(url),
							offSet = $element.offset().top;
						
						if ($element) {
						
							$("html,body").animate({scrollTop: offSet}, 750, "easeOutExpo");
							
							if (callback) {
								callback(urlfragment,$element);
							}
							
							if (pagetitleobj) {
								document.title = $element.find(pagetitleobj).text() +" | " + doctitle;	
							}
						}
					}
				});
				
				$(window).trigger( 'hashchange' );
			
			},
			
			accordionhashbang : function() {
			
				var doctitle = document.title;
			
				weareadd.lib.prephashbanglinks();
			
				$(window).bind( 'hashchange', function(e) {
				
					e.preventDefault();
					var urlfragment = $.param.fragment();
						url = "#" + $.param.fragment().match(/([A-Za-z0-9-]+)/g);
					
					if (urlfragment) {
						
						var $sections = $("#main section .bdy"),
							$section = $(url),
							$inviewcontent = $("#main .accordion section .bdy:visible"),
							$toviewcontent = $section.children(".bdy"),
							//what's visible and hidden
								inview = $sections.index( $inviewcontent ),
								toview = $sections.index( $toviewcontent ),							
								offSet = 0,
							//animation options
								easing = "easeOutExpo",
								easeingspeed = 950;
							
							if ($section.length) {
								
								if (inview === -1) {	inview=toview; }
								
									if (inview >= toview) {
										offSet = $section.offset().top;
									} else {
										offSet = ($section.offset().top - ($inviewcontent.parent("section").height() - $inviewcontent.prev("header").height() ));
									}
							
								//don't slide if its the first
								if ($section.index() !== $inviewcontent.parent().index()) {
									$inviewcontent.slideUp(650, easing).prev("header").find(".togglevis").show();
									$toviewcontent.slideDown(easeingspeed, easing).prev("header").find(".togglevis").hide();
									
								} else {
									$inviewcontent.not($toviewcontent).hide();
								}
								
								$("html,body").animate({scrollTop: offSet}, easeingspeed, easing);
								document.title = $section.find(".projtitle").text() +" | " + doctitle;								
							}
					 } else {
						$("html,body").animate({scrollTop: 0}, 950, "easeOutExpo");
						
						$("#main .accordion section .bdy").hide().eq(0).show().prev("header").find(".togglevis").hide();
					}			
					
				});
		  
				$(window).trigger( 'hashchange' );	

			},
					
			mailto : function(options) {
			
				var defaults = {
					selector: ".email"
				};
	
				var options = $.extend(defaults, options);		
				
					return $(options.selector).each(function () {
						var email = $(this).html().replace(/\s*\(.+\)\s*/, "@");
						
						$(this).before('<a href="mailto:' + email + '" rel="nofollow" class="email" title="Email ' + email + '">' + email + '</a>').remove();
					});
			
			},
			
			externallinks: function (passedoptions) {
				
					var defaults = {
						selector: "a[rel=external]"
					};
					
					var options = $.extend(defaults, passedoptions);
					
					if (options.selector.length > 0) {
						$("body").delegate(options.selector,"click",function(e) {
								e.preventDefault();
								var targetUrl = $(this).attr("href");
								window.open(targetUrl);
						});
					}
				}
		
		} //end lib
		
	}; //end weareadd


	
