
/*
$(function(){
   
	$(window).load(function() {
		registerWindowHasLoaded();
	});
	
	$("div#Container").registerResizeToFitPage({
		stretch: "height"
	});
	
});
//*/

/**
 *    src: http://www.mail-archive.com/discuss@jquery.com/msg02537.html
 * author: Klaus Hartl
 */

$.clientCoords = function() {
	
	var dimensions = {width: 0, height: 0};
	
	if (document.documentElement) {
		dimensions.width = document.documentElement.offsetWidth;
		dimensions.height = document.documentElement.offsetHeight;
	} 
	else if (window.innerWidth && window.innerHeight) {
		dimensions.width = window.innerWidth;
		dimensions.height = window.innerHeight;
	}
	return dimensions;
	
}

$.fn.draggable = function() {
	if (!$(this).exists()) {
		return false;
	}
	
	$(this).bind("drag", function(event) {
		$(this).css({   
			top:(event.offsetY-document.body.scrollTop),   
			left:(event.offsetX-document.body.scrollLeft)   
		})
	});
	
}

$.fn.exists = function() {
	return ($(this).length > 0)?true:false;
}

$.fn.fixPNGs = function() {
	if (!$(this).exists()) {
		return false;
	}
	
	// Supersleight plugin
	$(this).supersleight({shim: "/img/pixel.transparent.gif"});
	
}

function getEventKeyCode(event){
	
	var code = "";
	
	if (!event) {
		event = window.event;
	}
	
	if (event.keyCode) {
		code = event.keyCode;
	}
	else if (event.which) {
		code = event.which;
	}
	
	return code;
	
}

$.fn.getTotalHeight = function(arguments) {
	arguments = $.extend({
		border: true,
		margin: true,
		padding: true
	}, arguments);
	
	if (!$(this).exists()) {
		return 0;
	}

	var totalHeight = ($(this).height()>0)?$(this).height():$(this).css("height").replace(/px/g,"");

	var borderHeight = parseInt($(this).css("borderTopWidth")) + parseInt($(this).css("borderBottomWidth"));
	var marginHeight = parseInt($(this).css("margin-top")) + parseInt($(this).css("margin-bottom"));
	var paddingHeight = parseInt($(this).css("padding-top")) + parseInt($(this).css("padding-bottom"));

	if (arguments.border && borderHeight > 0) {
		totalHeight += borderHeight;
	}
	if (arguments.margin && marginHeight > 0) {
		totalHeight += marginHeight;
	}
	if (arguments.padding && paddingHeight > 0) {
		totalHeight += paddingHeight;
	}
	
	return totalHeight;
	
}

$.fn.getTotalWidth = function(arguments) {
	arguments = $.extend({
		border: true,
		margin: true,
		padding: true
	}, arguments);
	
	if (!$(this).exists()) {
		return 0;
	}

	var totalWidth = ($(this).width()>0)?$(this).width():$(this).css("width").replace(/px/g,"");

	var borderWidth = parseInt($(this).css("borderLeftWidth")) + parseInt($(this).css("borderRightWidth"));
	var marginWidth = parseInt($(this).css("margin-left")) + parseInt($(this).css("margin-right"));
	var paddingWidth = parseInt($(this).css("padding-left")) + parseInt($(this).css("padding-right"));

	if (arguments.border && borderWidth > 0) {
		totalWidth += borderWidth;
	}
	if (arguments.margin && marginWidth > 0) {
		totalWidth += marginWidth;
	}
	if (arguments.padding && paddingWidth > 0) {
		totalWidth += paddingWidth;
	}
	
	return totalWidth;
	
}

function getVar($i) {
   
   var $var = false;
   
   if (!isFinite($i))
      $i = 0;
   
   var $request_uri = window.location.pathname.split('/');
   
   $request_uri.shift(); // shift empty root
   
   if ($i < $request_uri.length)
      $var = $request_uri[$i];
   
   return $var;
   
}

function isInternal($href) {
   
   if (!isset($href) || $href.length < 1)
      return false;
   
   $href = $href.split('/');
   
   $href.shift(); // http:
   $href.shift(); // '', between //
   
   return $href.shift() == window.location.host;
   
}

function getRequestUri($href) {
   
   if (!isset($href) || $href.length < 1)
      return false;
   
   $href = $href.split('/');
   
   $href.shift(); // http:
   $href.shift(); // '', between //
   $href.shift(); // host
   
   return '/' + $href.join('/');
   
}

//http://gregwolejko.com/ie-detection-in-javascript/
//author: Greg Wolejko

function isIE() {
   
   return $.browser.msie;
   
	// return /*@cc_on!@*/false;
   
}
function isIE6(){
   
   return isIE() && $.browser.version.substr(0,1) < 7;
   
	// return false /*@cc_on || @_jscript_version < 5.7 @*/;
   
}
function isIE7(){
   
   return isIE() && $.browser.version.substr(0,1) == 7;
   
	// return false /*@cc_on || @_jscript_version >= 5.7 @*/;
   
}

function isset(data) {
   return typeof data != 'undefined' && data != null;
}

//http://www.mattfarina.com/2007/02/01/preloading_images_with_jquery
//	author: Matt Farina

$.fn.preloadImages = function() {
   for (var i = 0; i<arguments.length; i++) {
      jQuery("<img>").attr("src", arguments[i]);
   }
}

function randomHex(length) {
	
   var chars = "0123456789ABCDEF";
	var randomstring = '';
   
	for (var i=0; i<length; i++) {
		var rnum = Math.floor(Math.random() * chars.length);
		randomstring += chars.substring(rnum,rnum+1);
	}
   
	return randomstring;
   
}

$.fn.registerResizeToFitPage = function(arguments) {
	arguments = $.extend({
		stretch: ""
	}, arguments);
	
	if (!$(this).exists()) {
		return false;
	}

	var element = $(this);
	var resizeArgs = arguments;
	
	if (element.exists()) {
		if (windowHasLoaded()) {
			element.resizeToFitPage(resizeArgs);
		}
		else {
			$(window).load(function() {
				element.resizeToFitPage(resizeArgs);
			})
		}
		$(window).bind("resize", function(){
			element.resizeToFitPage(resizeArgs);
		});
	}
	
	return true;
	
}

windowLoaded = false;
function registerWindowHasLoaded() {
	windowLoaded = true;
}

$.fn.resizeToFitPage = function(arguments) {
	arguments = $.extend({
		stretch: ""
	}, arguments);

	if (!$(this).exists()) {
		return false;
	}
	
	var stretch = arguments.stretch.substr(0,1); 
	if (stretch == "h" || stretch == "b") {
		
		var ch = ($(this).attr("id")=="Container")?$(this).getTotalHeight():$("div#Container").getTotalHeight();
		var wh = $(window).height();
		
		$(this).height(ch);
		if (ch < wh) {
         $('div#Footer').css({
            margin: (wh-ch)+'px 0 0'
         });
			$(this).height(wh);
		}
		
	}
	
	if (stretch == "w" || stretch == "b") {
		
		var cw = ($(this).attr("id")=="Container")?$(this).getTotalWidth():$("div#Container").getTotalWidth();
		var ww = $(window).width();
		
		$(this).width(ww);
		if (cw > ww) {
			$(this).width(cw);
		}
		
	}
	
	return true;
	
}

/**
 *    src: http://stackoverflow.com/questions/411688/how-to-extend-jquery-to-make-it-easier-to-retrieve-the-tagname
 * author: Dan Herbert
 */

$.fn.tagName = function() {
    return this.get(0).tagName.toLowerCase();
}

function windowHasLoaded() {
	return windowLoaded;
}

