(function($) {

    $.fn.makeDefaultShowHideTextInput = function()
    {
        return this.each(function()
        { 
        	var id = $(this).attr("id");
        	var default_message = $(this).attr("default");
            var default_onchange_input_name = $(this).attr("onchange_id");
            var default_onchange_input = null;

            if (default_onchange_input_name != null)
            {
                default_onchange_input = $("#"+default_onchange_input_name);
            }

        	// set the default message as the value
        	$(this).attr("value", default_message);
        	$(this).attr("default_set", 'true');
            $(this).css("color", "#777");

            if (default_onchange_input != null) default_onchange_input.val(0);
        	
        	// set the onfocus handler
        	$(this).focus(function()
        	{
                $(this).removeClass('input_set');

        		if ($(this).attr("default_set") == 'true')
        		{
        			$(this).attr("value", "");
        			$(this).attr("default_set", 'false');
                    $(this).css("color", "#333");
        		}

                if (default_onchange_input != null) default_onchange_input.val(1);
    	    });
        	
        	// set the onblur handler
        	$(this).blur(function()
        	{
        		if ($(this).attr("value") == "")
    			{
    				$(this).attr("value", default_message);
    	        	$(this).attr("default_set", 'true');
                    $(this).css("color", "#777");
                    if (default_onchange_input != null) default_onchange_input.val(0);
    			}
                else
                {
                    $(this).css("color","");
                    $(this).addClass('input_set');
                }
    	    });
        });
    }
})(jQuery);

(function($) {
    $.fn.focusinAndFocusout = function(focusinFn, focusoutFn)
    {
        return this.each(function()
        {
            var opened = false;
        	$(this).click(
                function(){
                if (!opened)
                {
                    opened = true;
                    focusinFn();
                }}
            );

            $('.content_container').click(
                function(){
                if (opened)
                {
                    opened = false;
                    focusoutFn();
                }}
            );
        });
    }
})(jQuery);

(function($) {
    $.fn.makeOnFocusAndBlur = function()
    {
        return this.each(function()
        {
        	// set the onfocus handler
        	$(this).focus(function()
        	{
        		$(this).css("background-color", "#fbfade");
    	    });
        	
        	// set the onblur handler
        	$(this).blur(function()
        	{
        		$(this).css("background-color", "#fff");
    	    });
        });
    }
})(jQuery);

function toggle(obj_id)
{
	var obj = $("#"+obj_id);
	if (obj != null)
	{
		obj.toggle();
	}
}

function clicktoshow(str)
{
	$("#"+str).css("display", "block");
}

function clicktohide(str)
{
	$("#"+str).css("display", "none");
}

function is_array(input)
{
    return typeof(input)=='object';
}


(function($) {

function sameOrChild(n1, n2) {
	// http://www.quirksmode.org/blog/archives/2006/01/contains_for_mo.html
	return n1 === n2 || (typeof(n1.contains) !== 'undefined' ? n1.contains(n2) : !!(n1.compareDocumentPosition(n2) & 16));
}

function focusHandler(event) {
	event = $.event.fix(event || window.event), $this = $(this), isFocused = $this.data('focus.isFocused');
	if (!isFocused) {
		$this.data('focus.isFocused', true);
		event.type = 'focusin';
		return $.event.handle.apply(this, [event]);
	}
}

function blurHandler(event) {
	var args = [].slice.call(arguments, 1), $this = $(this);
	event = $.event.fix(event || window.event);

	window.setTimeout(function() {
		if (!sameOrChild($this.get(0), document.activeElement)) {
			$this.data('focus.isFocused', false);
			event.type = 'focusout';
			return $.event.handle.apply($this.get(0), [event]);
		}
	}, 0);
}

function setupEvents(elem) {
	var $elem = $(elem), ref = $elem.data('focus.handlerReferences') || 0;
	if (ref == 0) {
		if (elem.addEventListener) {
			elem.addEventListener('focus', focusHandler, true);
			elem.addEventListener('blur', blurHandler, true);
		}
		else {
			elem.onfocusin  = focusHandler;
			elem.onfocusout = blurHandler;
		}
	}
	$elem.data('focus.handlerReferences', ref + 1)
	$elem.data('focus.isFocused', sameOrChild(elem, document.activeElement));
}

function teardownEvents(elem) {
	var $elem = $(elem), ref = $elem.data('focus.handlerReferences') || 0;
	if (ref == 1) {
		if (elem.removeEventListener) {
			elem.removeEventListener('focus', focusHandler, true);
			elem.removeEventListener('blur', blurHandler, true);
		}
		else {
			elem.onfocusin  = null;
			elem.onfocusout = null;
		}
		$elem.removeData('focus.handlerReferences')
		$elem.removeData('focus.isFocused');
	}
	else {
		$elem.data('focus.handlerReferences', ref - 1);
	}
}

$.each(['focusin', 'focusout'], function(i, x) {
	$.event.special[x] = {
		setup: function() { setupEvents(this); },
		teardown: function() { teardownEvents(this); }
	};
});

$.fn.extend({
	focusin: function(fn) {
		return fn ? this.bind('focusin', fn) : this.trigger('focusin');
	},
	focusout: function(fn) {
		return fn ? this.bind('focusout', fn) : this.trigger('focusout');
	}
});

})(jQuery);

(function($) {
    $.fn.extend({
        isChildOf: function( filter_string ) {

          var parents = $(this).parents().get();

          for ( j = 0; j < parents.length; j++ ) {
           if ( $(parents[j]).is(filter_string) ) {
      return true;
           }
          }

          return false;
        }
    });
})(jQuery);


