Array.prototype.clean = function(deleteValue) {
  for (var i = 0; i < this.length; i++) {
    if (this[i] == deleteValue) {         
      this.splice(i, 1);
      i--;
    }
  }
  return this;
};
var offset;
var brink = {
	currentPage : 'home',
	bg_img : '',
	bg_array : '',
	bg_index : 0,
	nextPage : '',
	nextLink : '',
	overlay : false,
	loader : '',
	transDiv : '',
	homePage : '',
	savedPages : new Array(),
	segments : '',
	queue: new Array(),
	locked: false, // locked is to prevent the fast clicking glitch. It just locks nav clicks until animation is over.
	navigate : function(ref)
	{
		if(brink.locked == false)
			brink._navigate(ref.rel,ref.href);
	},
	_navigate : function(rel,href,fromExternal)
	{
		brink.locked = true;
		
		if($("#colorbox").css("display") != "none") { 
			$().colorbox.close();
			return false;
		}
		
		var bypass = false;
			
		brink.nextPage = rel;
		brink.nextLink = href;

		brink.queue.push({rel:rel, href:href});

		$.address.value(rel);

		if(rel == brink.currentPage)
		{
			brink.launch({rel:rel,href:$.address.baseURL()+"/"+rel});
			return false;
		}
		if(fromExternal == true && brink.segments.length >= 2)
		{
			var split = $.address.value().split('/');
			split.shift();
			brink.currentPage = split.shift();

			
			brink.nav_config(brink.currentPage);
			
			brink.launch({rel:brink.currentPage,href:$.address.baseURL()+ "/"+ brink.currentPage + "/" + split.join('/')});
			
			
			return false;
		}	
		brink.nav_config(rel);
			
		$(".back_button").fadeOut('fast');
				
		switch(rel)
		{
			case "" :
			case "home" : brink.setTitle("Marketing Agency"); break;
			case "about" : brink.setTitle("About"); break;
			case "solutions" : brink.setTitle("Marketing Solutions"); break;
			case "portfolio" : 
			
				if(fromExternal && brink.segments.length > 2)
				{
					brink.currentPage = brink.segments[1];
					brink.launch({rel:brink.segments[2],href:$.address.baseURL()+"/"+brink.segments[1]+"/"+brink.segments[2]});
					bypass = true;
				}
				
				brink.setTitle("Portfolio");
				
			break;
			case "labs" : brink.setTitle("Labs"); break;
			case "contact" : brink.setTitle("Contact"); break;
			case "login" : 
				brink.setTitle("Client Login and Support.");

			 break;
		}
		
		if(!bypass)
		{
			if(brink.currentPage != 'home' && brink.currentPage != '')
				brink.outro();	
			else
				brink.intro();
		}
	},
	outro : function()
	{
		$("#parent").append(brink.transDiv);
		$(brink.transDiv).css({top:"0px",left:"195px",width:"780px",height:"100%",backgroundColor:'#000'});
		$(brink.transDiv).fadeIn(250,function()
		{
			if(brink.overlay)
			{
				brink.savedPages[brink.currentPage+brink.overlay] = $("#parent .content").detach();
				brink.overlay = false;	
			}
			else
				brink.savedPages[brink.currentPage] = $("#parent .content").detach();
				
			$("#parent").append(brink.homePage);
			
			var pos = $("#home ."+brink.currentPage).position();
			var width = $("#home ."+brink.currentPage).width();
			var height = $("#home ."+brink.currentPage).height();
			
			$(brink.transDiv).animate({left:(pos.left+196)+"px",width:width+"px"},300,'easeOutSine',function()
			{
				$(brink.transDiv).animate({top:pos.top+"px",height:height+"px"},300,'easeOutSine',function(){
				
					$(brink.transDiv).fadeOut('fast',function(){ brink.intro(); });
					$("#home ."+brink.currentPage+" > *").fadeIn('fast');
				});
			});
			
		});
	},
	intro : function()
	{
		brink.currentPage = brink.nextPage;
		if(brink.currentPage != "home" && brink.currentPage != "")
		{
			$("#parent").append(brink.transDiv);
			$("#home ."+brink.currentPage+" > *").fadeOut(500);
			setTimeout(function(){
				$("#home ."+brink.currentPage).append(brink.loader);
				if(brink.savedPages[brink.currentPage])
				{
					 loadPage(brink.savedPages[brink.currentPage]);
				}
				else
				{
					$.post(brink.nextLink,{ajax : 'true'},loadPage);
				}
			},500);
		}
		else
			brink.locked = false;
				
		function loadPage(data)
		{
			var pos = $("#home ."+brink.currentPage).position();
				var width = $("#home ."+brink.currentPage).width();
				var height = $("#home ."+brink.currentPage).height();
				$(brink.loader).detach();
				$(brink.transDiv).css({top:pos.top+"px",left:(pos.left+196)+"px",width:width+"px",height:height+"px",display:'none'});
				$(brink.transDiv).fadeIn(250,function(){
					$(brink.transDiv).animate({top:'-1px',height:"100%"},300,'easeOutSine',function(){
						$(brink.transDiv).animate({left:'196px',width:'779px'},300,'easeOutSine',function()
							{ 
								brink.locked = false;
								brink.homePage = $("#home").detach();
								$("#parent").append(data); $(brink.transDiv).fadeOut(1000,function(){ if(brink.currentPage != "home"){$(".back_button").fadeIn('fast'); brink.cycleBG();} });
								//Initiate js for pages
								brink.js_init(brink.currentPage);
							});
					});
				});
		}
	},
	launch : function(ref,primary)
	{
		brink.nextPage = brink.currentPage;
		brink.nextLink = ref.href;

		if(primary == true)
		{
			brink.overlay = false;
			$.address.value(ref.rel);
		}
		else
		{
			brink.overlay = ref.rel;
			var split = ref.href.slice(7);
			
			split = split.split("/");
			
			split.shift(); // take off the http, and split the URL by / into an array, take off the domain
			var appendage = split.join('/'); // join each member of the array with the slash to buid a current URL
			$.address.value("/" + appendage);
		}		
		
		$("#parent").append(brink.transDiv);
		$(brink.transDiv).css({top:"0px",left:"195px",width:"780px",height:"100%",backgroundColor:'#000'});
		$(".back_button").fadeOut('fast');
		$(brink.transDiv).fadeIn('fast',function(){ loadPage(ref.href); });
																						
		function loadPage(page)
		{
			// "solutions" hack - dk 20101229
			// Solutions subpages need to load /solutions view and cue brink.solution() on load
			var solutionSubPage = page.match(/solutions\/(\w+)/);
			if (solutionSubPage)
			{
				//page = page.replace(solutionSubPage[0], 'solutions')
			}
			
			$.post(page,{ajax : 'true'},function(data)
			{
				brink.locked = false;
				$(brink.transDiv).append(brink.loader);
				$("#parent .content").replaceWith(data);
				//Initiate js for pages
				brink.js_init(brink.currentPage);
				$(brink.transDiv).fadeOut('slow',function(){ 
					$("#parent").remove(brink.transDiv);
					$(".back_button").fadeIn('fast');
					
					// Solutions hack (see above)
					if (solutionSubPage) 
					{
						brink.solution( {href:page+'/'+solutionSubPage[1], rel:solutionSubPage[1]} );
					}
				});
				brink.nextLink = brink.currentPage;
			});																		
		}
	},
	portfolio : function(ref)
	{
		
		
	},
	portfolio_scroll : function(direction)
	{
		var position = $("#portfolio_index .items").css('margin-left');
		position = Number(position.substr(0,position.length - 2));

		if(direction == "left")
		{
			if(position < 10)
			{
				$("#portfolio_index .items").animate({marginLeft:(position + 770)+"px"},400,'easeOutSine');
				$(".scroll_right").fadeIn('fast');	
			}
			if(position + 770 >= 10)
				$(".scroll_left").fadeOut('fast');
		}
		else
		{
			if((position - 13) - 770 > $("#portfolio_index .items").width() * -1)
			{
				$("#portfolio_index .items").animate({marginLeft:(position - 770)+"px"},400,'easeOutSine');
				$(".scroll_left").fadeIn('fast');
			}
			if((position - 13) - 770 - 770 <= $("#portfolio_index .items").width() * -1)
				$(".scroll_right").fadeOut('fast');
		}
	},
	
	
	// Load solution subpage
	solution : function(ref) 
	{
		if (ref) {
			var split = ref.href.slice(7);
			split = split.split("/");
			split.shift(); // take off the http, and split the URL by / into an array, take off the domain
			var appendage = split.join('/'); // join each member of the array with the slash to buid a current URL
			$.address.value("/" + appendage);
			//brink.queue.push({rel:'solutions/'+ref.rel, href:ref.href}); // this only creates problems

		
			// Is solutions index visible? Fadeout
			if ($('#solutions #solutions_index:visible').length)
			{
				$('#solutions #solutions_index:visible').fadeOut('fast', function(){
					$('#solutions #'+ref.rel).fadeIn('fast');
					$('#solutions .side_tools:hidden').fadeIn('fast');
				});
			} else {
				$('#solutions .solutions_subpage:visible').fadeOut('fast', function(){
					$('#solutions #'+ref.rel).fadeIn('fast');
					$('#solutions .side_tools:hidden').fadeIn('fast');
				});		
			}
		
			// Add/Remove current class to solution nav links
			$('#solution_nav a').removeClass('current');
			$('#solution_nav a[rel='+ref.rel+']').addClass('current');
		
			// Cue Flash
			if ($.flash.available) {
				if ($.browser.msie) {
					$('#solutions_gears')[0].activateGear( ref.rel );
				} else {
					$('#solutions_gears embed')[0].activateGear( ref.rel );
				}
			}
		} else {
			$.address.value("/solutions");
			$('#solutions .side_tools:visible').fadeOut('fast');
			$('#solutions .solutions_subpage:visible').fadeOut('fast', function(){
				$('#solutions #solutions_index').fadeIn('fast');
			});		
		}
		
	},
	
	nav_config : function(pg)
	{
		if(pg == "")
			pg = "home";
		$("#navigation li a").removeClass('current');
		$("#navigation li a[rel='"+pg+"']").addClass('current');
	},
	js_init : function(pg)
	{
		if(pg == "portfolio" || pg == "all")
		{
			$("#portfolio_index ul li").hover(
				  function()
				  {
					 var targ = $(this).find('.portfolio_over');
					 $(targ).css('display','block');
					 $(targ).animate({marginTop:'-46px'},250,'easeInSine'); 
				  }
			  ,
				  function()
				  {
					 var targ = $(this).find('.portfolio_over');
					$(targ).animate({marginTop:'0px'},250,'easeOutSine',function(){ $(targ).css('display','none'); });
				  }
			  );
		}
		if(pg == "home" || pg == "all")
		{		
			var img = $("<img style=\"display:none\">");
			$(img).load(function(){ $(".portfolio_image").append($(this)); $(this).fadeIn('slow'); });
			$.post('/portfolio/featured_image',{ feature_id: $("#feature_txt").html() },function(data) { $(img).attr('src',data.src); $(img).attr('alt',data.alt); },"json");
		}
		if(pg == "contact" || pg == "all")
		{
			var contact_form_options = {
		
				url:	'/ajax/contact',
				type:	'POST',
				dataType:	'json',
				beforeSubmit : function(arr, form, opt)
				{
					var form = form[0]; 
					if(!form.name.value || (!form.email.value && !form.phone.value) || !form.message.value)
					{
						alert("We need your name, message, and at least one way to contact you!");
						return false;
					}
				},
				success:	function(res)
				{
					if(res.results == 'error')
					{
						alert("Something must have messed up. Try again and if that doesn't work, give us a call!");
					}
					else
					{
						$("#contact_success").html(res.message);
						$("#contact_form").hide('fast',function(){ $("#contact_success").show('fast'); });
					}
				}	
			};
			
			$('#contact_form').ajaxForm(contact_form_options); 	
		}
		$("a.gallery[rel='colorbox']").colorbox(
			{
				title: $(this).attr('title'), 
				href: $(this).attr('href'),
				maxWidth: function(){
					return ($(window).width() * 0.98);
				},
				maxHeight: function(){
					return ($(window).height() * 0.98);
				}
			}	
			);
		$("a.flash[rel='colorbox']").colorbox(
			{
				title: $(this).attr('title'), 
				href: $(this).attr('href'),
				iframe: true,
				
				innerWidth: function(){
					return jQuery.url.setUrl($(this).attr('href')).param("width");
				},
				innerHeight: function(){
					return jQuery.url.setUrl($(this).attr('href')).param("height");
				},
				maxWidth: function(){
					return ($(window).width() * 0.98);
				},
				maxHeight: function(){
					return ($(window).height() * 0.98);
				},
				onComplete: function(){
				}			
			}	
			);
			
		homeResize();
	},
	setTitle : function(val)
	{
		$.address.title(val + " | BRINK | NYC DC LA AZ");	
	},
	back : function()
	{
		if(!brink.overlay)
		{
			if(brink.queue.length > 1)
			{
				brink.queue.pop();
				var n = brink.queue.pop();
				brink._navigate(n.rel,n.href);
			}
			else
				brink._navigate("home","/home");
		}
		else
		{
			brink.launch({rel:brink.nextPage,href:brink.nextLink},true);
		}
	},
	loadBackgrounds : function()
	{
		$.post('/ajax/backgrounds',{ },function(data){
												brink.bg_array = data;
												brink.cycleBG();
												},"json");
		
	},
	cycleBG : function()
	{
		var url = brink.bg_array[brink.bg_index];
		brink.bg_img = $("<img style=\"display:none;\">");
		$(brink.bg_img).load(function(){ $("#background").fadeOut('slow',function(){ $("#background").css('background-image','url('+url+')').css('position','fixed'); $("#background").fadeIn('slow'); }); });
		$(brink.bg_img).attr('src',url);
		
		brink.bg_index++;
		if(brink.bg_index > brink.bg_array.length)
			brink.bg_index = 0;
		debug.log(url);
	}
};

$(document).ready(function()
{
	brink.transDiv = $('<div class="transition"></div>');
	brink.loader = $("<img>");
	$(brink.loader).attr('src','/media/images/common/loader.gif');
	brink.loader = $('<div class="loader"></div>').append(brink.loader);
	
	brink.js_init('all');
	brink.nav_config();
	
	brink.loadBackgrounds();

	$.address.externalChange(function(event)
		{
			brink.segments = event.path.split("/").clean("");
			
			var path = {
				rel: brink.segments.join('/'),
				href: $.address.baseURL() + event.path
			};
			brink._navigate(brink.segments.join('/'),$.address.baseURL() + "/" + brink.segments.join('/'),true);
			brink.locked = false;
			return false;
		}
	);

	$('#parent').live("touchstart MozTouchDown", function(e){
		swipe.curx = e.originalEvent.touches[0].pageX;
		swipe.cury = e.originalEvent.touches[0].pageY;
		swipe.timestamp = e.timeStamp;
	}).live("touchmove", function(e){
		swipe.checkSwipe(e);
		if(gob.current != 'bio' && gob.current != 'featured')
		{
			e.preventDefault();
		}
	});
});

var swipe = {
	curx: null,
	cury: null,
	timestamp: 0,
	moving: false,
	checkSwipe: function(e){
		if(parseInt(swipe.timestamp) > 0 && !swipe.moving && (parseInt(e.timeStamp) - parseInt(swipe.timestamp)) <= 300)
		{
			var x = Math.abs(parseInt(e.originalEvent.touches[0].pageX) - parseInt(swipe.curx));
			var y = Math.abs(parseInt(e.originalEvent.touches[0].pageY) - parseInt(swipe.cury));
			var dir = null;

			if(x >= 80)
			{
				if((parseInt(e.originalEvent.touches[0].pageX) - parseInt(swipe.curx)) > 0)
					dir = 'left';
				else
					dir = 'right';
			}

			if(y >= 80)
			{
				if((parseInt(e.originalEvent.touches[0].pageY) - parseInt(swipe.cury)) > 0)
					dir = 'up';
				else
					dir = 'down';
			}

			if(dir)
			{
				swipe.moving = true;

				if(dir == 'down')
				{
					alert('down');
					swipe.moving = false;
				}
				else if(dir == 'up')
				{
					alert('up');
					swipe.moving = false;
				}
				else if(dir == 'left')
				{
					alert('left');
					swipe.moving = false;
				}
				else if(dir == 'right')
				{
					alert('right');
					swipe.moving = false;
				}
			}
		}
	}
};

var cc = '';

function checkKey(e)
{

	cc += e.keyCode;

	if(cc.length >= 42)
	{
		if(cc == '676832757978657773133838404037393739666513')
		{
			cc = '';
			$.post('/ajax/logImageRotation',{ },function(data){
				$('#parent').append('<div id="imageRotation">' + data + '</div>');
				setTimeout(function(){
					$('#imageRotation').fadeIn("slow");
				}, 1000);
			});
		}
		else
		{
			cc = ''
		}
	}
	
}

if ($.browser.mozilla) {
    $(document).keypress (checkKey);
} else {
    $(document).keydown (checkKey);
}

$(window).resize(function() 
{
	homeResize();
	//partners_position();
}); 


function homeResize()
{
	offset = $(document).height() - 550;
	//tweets
	var test = Math.round((offset - 50) / 140);
	if(test > 0)
		$(".tweets").eq(1).fadeIn('fast');
	else
		$(".tweets").eq(1).fadeOut('fast');
	if(test > 1)
		$(".tweets").eq(2).fadeIn('fast');
	else
		$(".tweets").eq(2).fadeOut('fast');
}

/*function partners_position()
{
	var ratio = (304/909);
	$('#partner').offset({top: $('#contact').offset().top - 350 * ratio});
}*/

if(window.location.pathname.substr(1).length > 0)
{
	window.location = window.location.protocol + "//" + window.location.hostname + "/#" + window.location.pathname;
}

	
function replaceURLWithHTMLLinks(text) {
    var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/i;
    return text ? text.replace(exp,"<a href='$1'>$1</a>") : text; 
}

function getFlashMovie(movieName) {
	
	if ($.flash.available) {
		return $('#'+movieName+' embed')[0];
		//return ($.browser.msie) ? window[movieName] : document[movieName];
	} else { return false; } 
}


// To enable logging via debug.log()
window.debug=(function(){var i=this,b=Array.prototype.slice,d=i.console,h={},f,g,m=9,c=["error","warn","info","debug","log"],l="assert clear count dir dirxml exception group groupCollapsed groupEnd profile profileEnd table time timeEnd trace".split(" "),j=l.length,a=[];while(--j>=0){(function(n){h[n]=function(){m!==0&&d&&d[n]&&d[n].apply(d,arguments)}})(l[j])}j=c.length;while(--j>=0){(function(n,o){h[o]=function(){var q=b.call(arguments),p=[o].concat(q);a.push(p);e(p);if(!d||!k(n)){return}d.firebug?d[o].apply(i,q):d[o]?d[o](q):d.log(q)}})(j,c[j])}function e(n){if(f&&(g||!d||!d.log)){f.apply(i,n)}}h.setLevel=function(n){m=typeof n==="number"?n:9};function k(n){return m>0?m>n:c.length+m<=n}h.setCallback=function(){var o=b.call(arguments),n=a.length,p=n;f=o.shift()||null;g=typeof o[0]==="boolean"?o.shift():false;p-=typeof o[0]==="number"?o.shift():n;while(p<n){e(a[p++])}};return h})();
