// M E T H O D IT DRAWER-STYLE NAVIGATION JS

//// VARS
var drawerOpen=false;


//// JQUERY INIT.
$(document).ready(function() {
	
	resizeNav();
	refreshNav();
	resetNav();
	initDrawerLinks();

});

////RESIZE WINDOW HANDLER
$(window).resize(function(){
	resizeNav();
	refreshNav();
});

//// DEVICE ORIENTATION CHANGES
window.onorientationchange=function(){
	resizeNav();
	refreshNav();
};


//// FUNCTIONS 

////resizes the nav bar's height to fit the window
function resizeNav(){
	
var docH;

(is_iOS()) ? docH=$('body').height() : docH=$(window).height();
	
$('#siteNav').css({'height': docH});
$('#drawerContent').css({'height': docH});
$('#siteNavWrapper').css({'height': docH});
		
}

////refreshes the size of the drawer's wrapper
function refreshNav(){
	$('#siteNavWrapper').css({
		'width': getDrawerWidth()
	});
}

////resets drawer to start position
function resetNav(){
	$('#siteNavWrapper').css({
		'right': -getContentWidth()
	});
}

////set up links on drawer handle
function initDrawerLinks(){
	
	//deep linking
	$('#siteNavButtons a').address();
	
	//open
	$('#siteNavButtons a').click(function(){
		clickDrawerLink($(this));
		return false;
	});
	
	//close
	$('#drawerCloseBtn').click(function(){
		if(drawerOpen){
			resetNavLinkState();
			closeDrawer();
		}
		return false;
	});
	
	//language switch links	
	$('#drawerContent .language .langSwitch li.active a').live('click', function(){
		return false;
	});
}


////open drawer
function openDrawer(){
	
	$('#siteNavWrapper').animate(
		{
		'right': 0
		}, getContentWidth()*1.5, 'easeOutSine', function(){drawerOpen=true;}	
	);

}

////close drawer
function closeDrawer(status,content,name){
	
$('#siteNavWrapper').animate(
		{
		'right': -getContentWidth()
		}, 400, 'easeInSine', function(){
			drawerOpen=false;
			if(status=='load'){
				doLoadingMessage('show');
				(name=="language") ? loadInternalDrawerContent(name) : loadExternalDrawerContent(content, name);
			}
		}	
	);
}

////drawer link clicked
function clickDrawerLink(theLink){
	
	resetOtherComponents('drawer');

	var alreadyLoaded;
	
	var id=$(theLink).data('idnum');
	var idName=$(theLink).data('idname');
	
	resetNavLinkState();
	
	$(theLink).addClass('active');
	
	($('#drawerContent span').hasClass(idName)) ? alreadyLoaded=true : alreadyLoaded=false;
	
	if(drawerOpen && !alreadyLoaded){
		closeDrawer('load',id,idName);
	} else if (alreadyLoaded && drawerOpen){
		return false;
	} else{
		(idName=="language") ? loadInternalDrawerContent(idName) : loadExternalDrawerContent(id, idName);
	}
	
}

////reset nav links to initial state
function resetNavLinkState(){
	$("#siteNavButtons a").each(function(){
		$(this).removeClass('active');
	});
}

////load content into drawer
function loadExternalDrawerContent(id, idName){
	
	//get ext. data
	$.ajax({
    type: "GET",
    url: FEED_URL+id,
    dataType: "xml",
    success: function(data){
		//get html content
		var content=$(data).find("content").text();
		displayDrawerContent(idName, content);
	},
	error: function(){
		try {
			alert(languageHelper.strings.loadErrorDrawer);
		} catch (err) {
			alert('Unable to load content, please try again');
		};		
		doLoadingMessage('hide');
		resetNavLinkState();
	}
  });	
	
}

////write content to drawer
function displayDrawerContent(idName, content){
	
	var contentHolder=$('#drawerContent span');
	
	//add content and class to drawer
		$(contentHolder).removeClass();
		$(contentHolder).addClass(idName);
		$(contentHolder).html(content);

		//hide loading message
		doLoadingMessage('hide');
		//open drawer
		refreshNav();
		resetNav();
		openDrawer();
		
		$("a",contentHolder).trigger("drawerLinksLoaded");
};

////load language switch html into drawer
function loadInternalDrawerContent(idName){

		var content="";
		
		switch(idName){
			case "language":
			content=$("#langSwitchContent").html();
			break;
		
			default:
			return false;
			break;		
		}
		
		displayDrawerContent(idName, content);
};

////loading message
function doLoadingMessage(state){
	var messageNode=$('#siteNav .message');
	(state=='show') ? $(messageNode).html(LOADING_IMG).show() : $(messageNode).empty().hide();
}

////GETTERS
function getHandleWidth(){
	return $('#siteNav').outerWidth();
}

function getContentWidth(){
	return $('#drawerContent').outerWidth();
}

function getDrawerWidth(){
	return getHandleWidth()+getContentWidth();
}

// iOS detection
function is_iOS(){	
	var iOSFlag = false;	
	if (navigator && navigator.platform && navigator.platform.match(/^(iPad|iPod|iPhone)$/)) {
		iOSFlag = true;
	}	
	return iOSFlag;	
}
