function urlStripper(urlToStrip) {		
	if (urlToStrip.lastIndexOf('/') != -1) {			
		urlToStrip = urlToStrip.split("/");
		urlToStrip = urlToStrip[urlToStrip.length -1];	
	}
	if( urlToStrip.indexOf('#') != -1 ) {
		urlToStrip = urlToStrip.replace(/#$/, '');
	}
	return urlToStrip;
}


(function($) { 
    $.fn.extend({ 
        rollnav: function(settings) { 
			var defaults = {  
				rollOutClass	: "rollOut", //deprecated!!!
				rollOnClass		: "rollOn",
				currPageClass	: "currentPage",
				anim    		: {height: 'toggle'},
				animDuration    : 500,
				animEasing		: 'linear',
				animCallback	: function() {}
			};  
			var settings = $.extend(defaults, settings); 
        	var currUrl = urlStripper(window.location.toString());
        	var nav =  $(this);
			nav.children("ul").children("li").each( function (i) {
				var menuOpen = false;
				$(this).children("ul").hide();
				if( $(this).html().indexOf(currUrl) > -1 ){
					menuOpen = true;
					$(this).addClass(settings.currPageClass);
					$(this).children("a").addClass(settings.currPageClass);
					$(this).children("ul").hide();
					$(this).children("ul").animate( settings.anim, settings.animDuration, settings.animEasing, settings.animCallback );
				}
				$(this).click( function() {
					var clicked = $(this);
					nav.children("ul").children("li").each( function (i) {
						if( $(this).text() != clicked.text()  ) {
							$(this).removeClass(settings.rollOnClass);
							$(this).children("a").removeClass(settings.rollOnClass);
							if($(this).html().indexOf( clicked.html() ) == -1) {
								$(this).children("ul").hide();
							}
						}
						menuOpen = false;
					});					
					if( clicked.find("a:first").attr('href') === '#'  ) {
						menuOpen = true;
						if($(this).hasClass(settings.currPageClass) === false) {
							clicked.addClass(settings.rollOnClass);
							clicked.children("a").addClass(settings.rollOnClass);
						}
						clicked.children("ul").animate( settings.anim, settings.animDuration, settings.animEasing, settings.animCallback );
					}
					else {
						document.location.href= clicked.find("a:first").attr('href');
					}
				});
				$(this).mouseover( function() {
					if($(this).hasClass(settings.currPageClass) === false) {
						if(menuOpen === false) {
							$(this).addClass(settings.rollOnClass);
							$(this).children("a").addClass(settings.rollOnClass);
						}
					}
					
				});
				$(this).mouseout( function() {
					if($(this).hasClass(settings.currPageClass) === false) {	
						if(menuOpen === false) {
							$(this).removeClass(settings.rollOnClass);
							$(this).children("a").removeClass(settings.rollOnClass);
						}
					}
				});
			});
			nav.children("ul").children("li").children("ul").children("li").each( function() {
				if( $(this).html().indexOf(currUrl) > -1 ){
					$(this).addClass(settings.currPageClass);
					$(this).children("a").addClass(settings.currPageClass);
				}	
				$(this).mouseout( function() {
					$(this).removeClass(settings.rollOnClass);
					$(this).children("a").removeClass(settings.rollOnClass);
					if($(this).parent("ul").parent("li").hasClass(settings.currPageClass) === false) {
						$(this).parent("ul").parent("li").addClass(settings.rollOnClass);
						$(this).parent("ul").parent("li").children("a").addClass(settings.rollOnClass);
					}
					if($(this).hasClass('currPlaceholder') != false) {	
						$(this).addClass(settings.currPageClass);
						$(this).children("a").addClass(settings.currPageClass);
						$(this).removeClass('currPlaceholder');
						$(this).children("a").removeClass('currPlaceholder');										
					}
				});
				$(this).mouseover( function() {
					$(this).addClass(settings.rollOnClass);
					$(this).children("a").addClass(settings.rollOnClass);
					if($(this).parent("ul").parent("li").hasClass(settings.currPageClass) === false) {
						$(this).parent("ul").parent("li").removeClass(settings.rollOnClass);
						$(this).parent("ul").parent("li").children("a").removeClass(settings.rollOnClass);
					}
					if($(this).hasClass(settings.currPageClass) != false) {
						$(this).removeClass(settings.currPageClass);
						$(this).children("a").removeClass(settings.currPageClass);
						$(this).addClass('currPlaceholder');
						$(this).children("a").addClass('currPlaceholder');						
					}
				});
				$(this).click( function() {
					document.location.href = $(this).find("a:first").attr('href');
				});
			});
 		}
    }); 
})(jQuery);         