function checkAll(ctl, selClass)
{		 
	if (selClass) selClass = "."+selClass;
	
	$(":checkbox"+selClass).each(function(i) 
	{		
		this.checked = ctl.checked;			
	});	
}
$(document).ready(function()
{
	var elem = document.createElement("a");	
	elem.href = '#';
	elem.innerHTML = "&nbsp;";
	
	$(elem).addClass('minMax').click(function(event) 
	 { 		
		 var col = $(this).data('collapsed');			 
		 if (col == null) col = false;
		 
		 if (!col) 
		 {			 
			 $(this).addClass("max").parent().children("span.toggle").show();			 
		 }
		 else
		 {			 
			 $(this).removeClass("max").parent().children("span.toggle").hide();
		 } 
		 
		 $(this).data('collapsed', !col);
		 
		 $(this).parent().siblings().slideToggle('normal');		 
		 
		 return false;		 
	 }).prependTo("h1.minimize");
	
	//Put a non-breaking space in every empty TD (there you go, Internet Exporer - happy now?)
	$("td:empty").html("&nbsp;");	
});

(function()
{
	jQuery.query = function() {
	    var r = {};
	    var params = location.search.replace(/^\?/,'').split('&');
	    for( var i = params.length-1;  i >= 0;  i-- ) {
	       var p = params[i].split('='), key = p[0];
	       if( key ) r[key] = p[1];
	    }
	    return r;
	 };
	 
	 $.fn.value = function(val){		
		 var obj = $(this).get(0);
		 
		 if (!obj) return $(this);
		 
		 if (obj.tagName.toLowerCase() == "select")
		 {
			 return obj.options[obj.selectedIndex].value;
		 }
		 else
		 {		 
			if (val !== undefined)
			{
				$(this).attr("value", val);
				return $(this);
			}
		
			return $(this).attr("value");
		 }
	 };
	 
	 $.fn.fadeInContent = function (content, cb){
	 	$(this).fadeOut('fast', function()
	 	{ 
	 		$(this).html(content); 
	 		if (cb) cb();
	 		$(this).fadeIn(350);
	 	});
	 	
	 	return this;
	 };
	 
	 $.fn.setWorking = function(strDesc)
	 {
		 if (!strDesc) strDesc = "Loading";
		 
		 $('div.workingDiv', this).remove();
		 
		 var content = "<center><img src=themes/controls/jquery/ajax_loader.gif /> :: " + strDesc + " :: <img src=themes/controls/jquery/ajax_loader.gif /></center>";
		 var wDiv = $("<div class='workingDiv'>"+content+"</div>");
		 
		 //wDiv.css("height", $(this).height());		 
		 $(this).children().hide();
		 $(this).prepend(wDiv)
		 
		 return this;
	 };
	 $.fn.setError = function(errorStr)
	 {
		 alert(errorStr);
		 $(this).html("<strong>Error loading data:</strong> " + errorStr);
	 }
	 $.fn.enable = function() { $(this).removeAttr("disabled").css("cursor","pointer"); return this; };	 
	 $.fn.disable = function() { $(this).attr("disabled", "disabled").css("cursor","not-allowed"); return this; };
	 $.fn.verifyForm = function(event, formField, submitParent)
	 {	 
		 var iArr = $(formField).value().split(";;");
		 
		 for (var e in iArr)
		 {			 
			 //Separate the name from the validation type
			 var tmp = iArr[e].split("::");
			 var regexp = new RegExp(tmp[1]);			 
			 
			 if (!regexp.test($("[name=\'" + tmp[0] + "\']").value())) 
			 {
				 alert("Input field " + tmp[0] + " is not in the proper format, or is missing data. Please correct and try again.");
				 e.returnValue = false;
				 return false;
			 }
			 
		 }		 
		 return true;
	 }
}) ();

function serialize(_obj)
{
   // Let Gecko browsers do this the easy way
   /*if (typeof _obj.toSource !== 'undefined' && typeof _obj.callee === 'undefined')
   {
      return _obj.toSource();
   }*/

   // Other browsers must do it the hard way
   switch (typeof _obj)
   {      
      case 'boolean':
    	  return _obj ? 1 : 0;
    	  break;
      case 'number':
      case 'function':
         return _obj;
         break;

      // for JSON format, strings need to be wrapped in quotes
      case 'string':
         return '"' + _obj + '"';
         break;

      case 'object':
         var str;
         if (_obj.constructor === Array || typeof _obj.callee !== 'undefined')
         {
            str = '[';
            var i, len = _obj.length;
            for (i = 0; i < len-1; i++) { str += serialize(_obj[i]) + ','; }
            str += serialize(_obj[i]) + ']';
         }
         else
         {
            str = '{';
            var key;
            for (key in _obj) { str += '"' + key + '":' + serialize(_obj[key]) + ','; }
            str = str.replace(/\,$/, '') + '}';
         }
         return str;
         break;

      default:
         return 'UNKNOWN';
         break;
   }
}