/**
 * @author SBarclay
 */

var slideCover 						= false,
_single_portfolio_scripts_loaded 	= false,
_page_portfolio_scripts_loaded 		= false,
_clients_Scripts_loaded 			= false,
$mainContent     					= $("#content_ajax_wrapper"),
$ajaxSpinner     					= $("#ajax-loader"),
$searchInput     					= $("#s"),
$allLinks        					= $("a"),
$el									,
URL 								= '',
siteURL 							= "http://" + top.location.host.toString(),
_old_nested_selected				= -1;
_nestedIsOpen 						= false,
_nestedStory						= false,
_subNestedIsOpen 					= false;

var _currentParentNum 				= -1;
var _nestedNum 						= -1;
var _subNestedNum 					= -1;
var _clickTriggered 				= false;
var _buttons;
_headerActivated					= false;




function hashizeLinks() {
	$("a[href^='" + siteURL + "']").each( function() {
		$el = $(this);

		/*
		 * Hack for IE, which seemed to apply the hash tag to the link weird
		 if ($.browser.msie) {
		 $el.attr("href", "#/" + this.pathname)
		 .attr("rel", "internal");
		 } else {
		 */
		
		// console.log("$el.attr('target')" + $el.attr("target"));
		if(!$el.attr("target")){
			$el.attr("href", "#" + this.pathname).attr("rel", "internal");
		}
		//            }
	});
	
};

function handleChange(event) {

	if (typeof window.stop_Int == 'function') {
		window.clearInterval(intval);
	} else {

	}

	$mainContent.stop(true).fadeTo(500, 0, function() {
		if (event.value === "/") {
			window.location = _base + '/#/projects/';
			return false;

		} else if (event.value) {

			$("#nested li li h3").removeClass("accordion_selected");
			if(SWFAddress.getPathNames()[0] == "our_story"){
				// console.log("OUR STORY CHECKA");
				$("#nested li h3").removeClass("accordion_selected");
			}
			$('a[href*="'+SWFAddress.getPath()+'"]').parent("h3").addClass("accordion_selected");

			var _nested_selected = $('#nested li:has( h3 > a[href*="'+SWFAddress.getPath()+'"])').index();
			var _nested_sub_selected = $('#nested li li:has( h3 > a[href*="'+SWFAddress.getPath()+'"])').index();

			// console.log("_clickTriggered= " + _clickTriggered);
			
			switch (SWFAddress.getPathNames()[0]) {

				case "projects":

					_currentParentNum 				= -1;
					_nestedNum 						= -1;
					_subNestedNum 					= -1;

					if(_clickTriggered == false) {
						accordionAction(false);

						// $('a[title="Projects"]').parent().addClass("accordion_selected");
					}
					resetForNonSingleProjects();

					break; 
				case "Projects":

					if (_nested_selected > -1) {

						_currentParentNum 				= 0;
						_nestedNum 						= _nested_selected;
						_subNestedNum 					= _nested_sub_selected;
						
						accordionAction(true);
						
						// console.log("XXX Projects 0 _nestedIsOpen= " + _nestedIsOpen);
						if (!_nestedIsOpen) {
							// console.log("XXX Projects 1");
							updateAccordion(true, true, true);
						} else if (_nestedIsOpen) {
							// console.log("XXX Projects 2");
							if (!_subNestedIsOpen || _old_nested_selected != _nested_selected) {
								// console.log("XXX Projects 3");
								updateAccordion(false, true, true);
							} else {
								// console.log("XXX Projects 4");
								updateAccordion(false, false, true);
							}

						}
						// $('a[title="Projects"]').parent().addClass("accordion_selected");
						_nestedIsOpen = true;
						_subNestedIsOpen = true;
						_old_nested_selected =_nested_selected;
						// console.log("XXX Projects 00 _nestedIsOpen= " + _nestedIsOpen);
					}

					break;

				case "clientspage":
					_currentParentNum 				= 2;
					_nestedNum 						= -1;
					_subNestedNum 					= -1;
					if(_clickTriggered == false) {
						accordionAction(false);
					}
					resetForNonSingleProjects();
					break;
					
				case "contact":
					_currentParentNum 				= 3;
					_nestedNum 						= -1;
					_subNestedNum 					= -1;
					if(_clickTriggered == false) {
						accordionAction(false);
					}
					resetForNonSingleProjects();
					break;

				case "our_story":
					_currentParentNum 				= 1;
					_nestedNum 						= 1;
					_subNestedNum 					= -1;
					// if(_clickTriggered == false) {
						// console.log("_clickTriggered STORY")
						accordionAction(true);

						if(!_nestedStory) {
							// console.log("XXX _nestedStory 1");
							updateAccordion(true, true, true);
						} else if(_nestedStory) {
							// console.log("XXX _nestedStory 2");
							updateAccordion(false, false, true);
						}
						_nestedStory = true;
					// }
					resetForNonSingleProjects();
					break;


				default:
					var _isSandbox = (_currentParentNum === 4) ? true:false;
					_currentParentNum 				= 4;
					_nestedNum 						= -1;
					_subNestedNum 					= -1;
					if(_clickTriggered == false) {
						accordionAction(_isSandbox);
					}
					resetForNonSingleProjects();
					break;
			}
			
			if(SWFAddress.getPathNames()[0] !="our_story"){
			// console.log("OUR STORY");
				_nestedStory = false;
			
			}
			
			_clickTriggered = false;
				
			$ajaxSpinner.fadeIn();
			$mainContent.empty().load(_base + event.value, function() {
				var _path = _base + event.value;
				getContentClassName(_path);
			});
		}

		var current = location.protocol + '//' + location.hostname + location.pathname;

		if (_base + '/' != current) {
			var diff = current.replace(_base, '');
			location = _base + '/#' + diff;
		}

	});
	// REBIND NAV...
	
}

function accordionAction(bool) {

	// console.log("accordionAction : _clickTriggered = " + _clickTriggered + " bool= " + bool + " _buttons.length= " + _buttons.length);

	// if((_currentParentNum == 0 || _currentParentNum == -1)) {
		// console.log("conditional SET = " + _currentParentNum);
	// }

	var _loopNum = (_currentParentNum == -1) ? 0 : _currentParentNum;
	// console.log("*** LOOP : _currentParentNum = " + _currentParentNum + " _loopNum = " + _loopNum);

	for( i = 0; i < _buttons.length; i++) {
			
		if(i == _loopNum) {
			// console.log("set = " + i);
			$('#accordion').children("li").eq(i).children('h3').stop(true).css({
			"backgroundColor": '#4D4D4F'
			}).addClass("accordion_selected").find('a').stop(true).css({
				"color" : '#FFFFFF'
			});
		} else {

			// console.log("reset = " + i);
			//-- RESET BUTTONS...
			$('#accordion').children("li").eq(i).children('h3').stop(true).css({
			"backgroundColor": '#FFFFFF'
			}).removeClass("accordion_selected").find('a').stop(true).css({
				"color" : '#4D4D4F'
			});
		}

	}

	if(_clickTriggered == false && bool == false || _currentParentNum != 0 && _currentParentNum != 1) {
		// console.log("XXX LOOP 5 _clickTriggered= " + _clickTriggered + " _currentParentNum = " + _currentParentNum);
		updateAccordion(true, true, true);
	}

	bindNavigation();

}

function resetForNonSingleProjects() {
	_nestedIsOpen = false;
	_subNestedIsOpen = false;
	$("body").css({
		"overflow": "auto"
	});
	$("#content").css({
		"width":"815px"
	});
}

function getContentClassName(_path) {

	if ($("#content").hasClass('single_portfolio')) {
		get_single_portfolio_scripts();
	} else if ($("#content").hasClass('page_portfolio')) {
		get_page_portfolio_scripts();
	} else if ($("#content").hasClass('page_clients')) {
		get_page_clients_Scripts();

	} else if ($("#content").hasClass('sandbox')) {

		setTwitterLinksTo_Blank();
		$ajaxSpinner.fadeOut();
		$mainContent.stop(true).fadeTo(500, 1, function() {
				setFBMetaData();
				addthis.toolbox('.addthis_toolbox');
				//setUpSubmit();
				hashizeLinks();
				
		});

	} else {
		$ajaxSpinner.fadeOut();
		$mainContent.stop(true).fadeTo(500, 1, function() {
				setFBMetaData();
				addthis.toolbox('.addthis_toolbox');
				//setUpSubmit();
				hashizeLinks();
		});
	}
}

function setUpSubmit(){
	/*
	 * TODO FIX...
	 *
	 */
	
	// console.log("submit");
	
	$('#searchsubmit').submit( function() {
		// event.preventDefault();
		
		alert('Handler for .submit() called.');
		
		var s = $searchInput.val();
		
		// console.log("SUBMIT : s= " + s);
		
		if (s) {
			var query = '#/?s=' + s;
			
			// console.log("SWFAddress.getBaseURL() + query" + query);
			
			// console.log("SUBMIT = " + SWFAddress.value(query));
			
			SWFAddress.value(query);
			
			
			
		}
		return false;
	});
}


function get_single_portfolio_scripts() {

	$("body").css({
		"overflow": "hidden"
	});
	// $("#content").css({
		// "width":"100%"
	// });
	//-- LOCAL TESTING...
	if (!_single_portfolio_scripts_loaded) {
		$.when(
		$.getScript(_template_directory + '/js/jquery.jmc_resizr.js'),
		$.getScript(_template_directory + '/js/jquery.orbit.js'),
		$.getScript(_template_directory + '/js/voicebox_infinite_scroll.js'),
		$.getScript(_template_directory + '/js/voicebox_mouse_track.js'),
		$.getScript(_template_directory + '/js/jquery.backgroundPosition.js'),
		$.getScript(_template_directory + '/js/voicebox_single_portfolio.js')

		).done( function() {
			onSinglePortfolioComplete();
		}
		);

		/*
		 //-- PRODUCTION/STAGING...
		 $.getScript(_template_directory + '/js/packed/pack_single_portfolio.js', function(){
		 console.log('voicebox_single_portfolio.js == Loaded');
		 onSinglePortfolioComplete()
		 });
		 */

	} else {
		onSinglePortfolioComplete();
	}
}

function onSinglePortfolioComplete() {

	continueProjectInit();
	_single_portfolio_scripts_loaded = true;
	$ajaxSpinner.fadeOut();
	$mainContent.stop(true).fadeTo(500, 1, function() {
			setFBMetaData();
			addthis.toolbox('.addthis_toolbox');
			hashizeLinks();
			
	});
		
}

function get_page_clients_Scripts() {

	if (!_clients_Scripts_loaded) {

		$.getScript(_template_directory + '/js/voicebox_clients.js', function() {
			onClientsComplete();
		});
	} else {
		onClientsComplete();
	}
}

function onClientsComplete() {
	initClients();
	if (!_headerActivated) {
		initHeader();
	}
	_clients_Scripts_loaded = true;
	$ajaxSpinner.fadeOut();
	$mainContent.stop(true).fadeTo(500, 1, function() {
			hashizeLinks();
		
	});
}

function get_page_portfolio_scripts() {

	if (!_page_portfolio_scripts_loaded) {

		//-- LOCAL TESTING...
		$.when(
		$.getScript(_template_directory + '/js/jquery.timers-1.2.js'),
		$.getScript(_template_directory + '/js/voicebox_page_portfolio.js')
		).done( function() {
			onPagePortfolioComplete();
		}
		);
	} else {
		onPagePortfolioComplete();
	}
}

function onPagePortfolioComplete() {
	initProjectsPage();
	if (!_headerActivated) {
		initHeader();
		moveSliderTime = 2500;
	} else {
		moveSliderTime = 500;
	}

	/*
	 IF PROJECTS PAGE, SET TIMER TO SLIDE COVERS...

	 */
	slideCover = true;
	_page_portfolio_scripts_loaded = true;
	$ajaxSpinner.fadeOut();
	$mainContent.stop(true).fadeTo(500, 1, function() {
			hashizeLinks();
			setTimeout("moveSliders()", moveSliderTime);
		
	});
}

function setFBMetaData(){
	
	var url = $("#metaURL").text();
    var title = $("#metaTitle").text();
    var description = $("#metaDescription").html();
    var image = $("#metaThumb").text();
    

      addthis.update('share', 'url', url);
      addthis.update('share', 'title', title);
      // addthis.update('share', 'description', description);
      // addthis.update('share', 'image', image);
	
	
	// console.log("setFBMetaData() xxx");
	$('meta[property*="title"]').attr("content", $("#metaTitle").text());
	$('meta[property*="image"]').attr("content", $("#metaThumb").text());
	$('meta[property*="url"]').attr("content", $("#metaURL").text());
	$('meta[property*="description"]').attr("content", $("#metaDescription").html());
	
	document.title = $("#metaTitle").text();
	// $("title").html($("#metaTitle").text());
	$('meta[name="description"]').attr("content", $("#metaDescription").html());
	
	
	
// 	
}



function moveSliders() {

	$(".slideCover").each( function(i) {
		$(this).stop().delay(150 * i).animate({
			left: 250
		}, 1500, 'easeInOutExpo');
	});
}

function updateAccordion(pBool, nBool, sBool) {

	// LOVELY HACK...
	// _buttons.removeAttr("style");
	// _buttons.children('a').removeAttr("style");

	// console.log("_currentParentNum" + _currentParentNum);


	if (pBool) {
		parentAccordion.pr(0, _currentParentNum);
	}

	if (nBool) {
		nestedAccordion.pr(0, _nestedNum);
	}

	if (sBool) {
		superNestedAccordion.pr(0, _subNestedNum);
	}

}

function bindNavigation() {
	
	// console.log("bindNavigation");
	
	/*
	 * SET TOP NAV TO HAVE ANIMATED ROLLOVERS...
	 */
	_buttons.unbind().bind('click',onClick).bind('mouseenter', onMouseEnter).bind('mouseleave', onMouseLeave);
	
	}
	
function onClick() {
	// console.log("click");
	_buttons.unbind();
	// event.preventDefault();
	_clickTriggered = true;

	var _this = $(this);
	
	// console.log("CLICK : _currentParentNum == " + _this.parent().index());
	
	if(_this.parent().index() == 0) {
		// console.log("click : _currentParentNum == 0");
		_currentParentNum = -1;
	} else {

		_currentParentNum = _this.parent().index();
	}

	accordionAction(false);
	window.location = _this.children("h3 a").attr("href");
	
}

function onMouseEnter () {
	// console.log("onMouseEnter");
	var _this = $(this);
	if (_this.hasClass("accordion_selected")) {
	} else {
		_this.stop(true).animate({
			backgroundColor: '#4D4D4F'
		}, 150);

		_this.find('a').stop(true).animate({
			color: '#fff'
		}, 150);
	}
}

function onMouseLeave() {
	// console.log("onMouseLeave");
	var _this = $(this);
	if (_this.hasClass("accordion_selected")) {
	} else {
		_this.stop(true).animate({
			backgroundColor: 'white'
		}, {
			duration: 150,
			complete: function() {
				// _this.removeAttr("style");
				// _this.removeAttr("class");
			}
		});
		_this.find('a').stop(true).animate({
			color: '#4D4D4F'
		}, {
			duration: 500,
			complete: function() {
				// _this.removeAttr("style");
				// _this.removeAttr("class");
			}
		});
	}
}		

function setTwitterLinksTo_Blank() {

	/*
	 * MAKE TWITTER URLS LAUNCH IN _BLANK WINDOWS
	 */
	$(".twitter-item a").unbind();
	$(".twitter-item a").bind({
		click: function(event) {
			event.preventDefault();
			window.open($(this).attr("href"));
		}
	});
}

function initHeader() {
	/*
	 * FADE IN CONTENT...
	 */
	$("#header").stop().delay(500).animate({
		left: 0
	}, 1000, 'easeInOutQuad');

	/*
	 * -- TAKE LINKS AND ADD #'s
	 */
	hashizeLinks();
	bindNavigation();
	_headerActivated = true;
};

$( function() {

	var hasManyRecentWork = $("#scroller").hasClass('scroller');
	var hasManyAdditionalWork = $("#scroller_additionalWork").hasClass('scroller_additionalWork');

	SWFAddress.addEventListener(SWFAddressEvent.CHANGE, handleChange);

	parentAccordion = new TINY.accordion.accordion_slider("parentAccordion");
	parentAccordion.init("accordion", "h3", 1, -1, "accordion_selected");

	nestedAccordion = new TINY.accordion.accordion_slider("nestedAccordion");
	nestedAccordion.init("nested", "h3", 1, -1, "accordion_selected");

	superNestedAccordion = new TINY.accordion.accordion_slider("superNestedAccordion");
	superNestedAccordion.init("superNested", "h3", 1, -1, "accordion_selected");

	if(hasManyRecentWork) {
		TINY.scroller.init(
		'scroll',
		'scrollcontent',
		'scrollbar',
		'scroller',
		'buttonclick');
	}

	if(hasManyAdditionalWork) {
		TINY.scroller.init(
		'scroll_additionalWork',
		'scrollcontent_additionalWork',
		'scrollbar_additionalWork',
		'scroller_additionalWork',
		'buttonclick_additionalWork');
	}
	
	_buttons = $('#accordion').children("li").children('h3');
	
	initHeader();

});
