/*
 * Depend Class v0.1b : attach class based on first class in list of current element
 * File: jquery.dependClass.js
 * Copyright (c) 2009 Egor Hmelyoff, hmelyoff@gmail.com
 */


(function($) {
	// Init plugin function
	$.baseClass = function( obj ){
	  obj = $(obj);
	  var sClass = obj.get(0).className.match(/([^ ]+)/);
	  if( sClass && sClass[1] )
	    return sClass[1];

	  return false;
	};
	
	$.fn.addDependClass = function( className, delimiter ){
		var options = {
		  delimiter: delimiter ? delimiter : '-'
		}
		return this.each(function(){
		  var baseClass = $.baseClass(this);
		  if( baseClass )
    		$(this).addClass(baseClass + options.delimiter + className);
    	else {
    	  this.baseClass = false;
    	  $(this).addClass(className);
    	}
    	
		});
	};

	$.fn.removeDependClass = function( className, delimiter ){
		var options = {
		  delimiter: delimiter ? delimiter : '-'
		}
		return this.each(function(){
		  var baseClass = $.baseClass(this);

    	if( this.className == className || this.baseClass === false )
    	  $(this).removeClass(className);

		  else if( baseClass )
    		$(this).removeClass(baseClass + options.delimiter + className);
    	  
		});
	};

	$.fn.toggleDependClass = function( className, delimiter ){
		var options = {
		  delimiter: delimiter ? delimiter : '-'
		}
		return this.each(function(){
		  var baseClass = $.baseClass(this);
		  if( baseClass )
		    if( $(this).is("." + baseClass + options.delimiter + className) )
    		  $(this).removeClass(baseClass + options.delimiter + className);
    		else
    		  $(this).addClass(baseClass + options.delimiter + className);
		});
	};

	// end of closure
})(jQuery);