/*!
 * currentTabManager 0.01 - add class for current tab
 *
 * Copyright (c) 2010 Cutout Inc.
 * 
 * SYNOPSIS
 * 
 * $.currentTabManager("#target a").fire();
 * $.currentTabManager("#target a").fire({}, url);
 * $.currentTabManager("#target a").fire({
 *		event : 'dblclick',
 *		classCurrent : 'someClassName'
 * }, url);
 */
;(function($) {

    /**
     * plugin name
     */
    var plugname = 'currentTabManager';
    
    $[plugname] = $.sub();
    
    /**
     * enable
     */
    $[plugname].fn.fire = function(opt, url){
			
			opt = $.extend({
				event : 'click.currentTabManager',
				classCurrent : 'enabled'
			}, opt || {});
			
			url = urlNormalize(url || document.URL);
			
			var parent = this;
			var target;
			var length = 0;
			
			$(this).each(function() {
				
				$(this).removeClass(opt.classCurrent);
				
				// URLが最長一致する要素を記録
				var target_str = urlNormalize(this.href);
                
				if (url.indexOf(target_str) != -1) {
					if (target_str.length > length) {
						target = $(this);
						length = target_str.length;
					}
				}
				
				$(this).unbind(opt.event);
				$(this).bind(opt.event, function () {
					$[plugname](parent).fire(opt, this.href);
				});
			});
			
			// current page
			if (target) {
				target.addClass(opt.classCurrent);
			}
			
			function urlNormalize(url) {
				url = url.replace(/^.+?\/\/+/, '');
				url = url.replace(/\\/g, '/');
				url = url.replace(/\.html?/, '');
				return url;
			}
			
			return $(this);
		};
    
})(jQuery);

