﻿function wireUpButtonHoverEvents(buttonNormalClass, buttonHoverClass)
{
	$('.' + buttonNormalClass).hover(
		function() {$(this).className=buttonHoverClass;}
		,function() {$(this).className=buttonNormalClass;}
	);
}

jQuery.fn.placeNear = function(targetElement, leftOffset, topOffset)
{
	return this.each(function(){
		if (targetElement && $(targetElement).length > 0)
		{
			var elementParentTotalOffset = totalOffset($(this)[0].offsetParent);
			var targetElementTotalOffset = totalOffset($(targetElement)[0]);
			var finalLeft = targetElementTotalOffset.left - elementParentTotalOffset.left + leftOffset;
			var finalTop = targetElementTotalOffset.top - elementParentTotalOffset.top + topOffset;
			$(this).css({position: 'absolute', left: finalLeft, top: finalTop});
		}
	});
};

function totalOffset(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return {left: curleft, top: curtop};
}
								
jQuery.fn.handlePopup = function(selectedRowDetailsLink, xOffset, yOffset)
{
	return this
		.placeNear(selectedRowDetailsLink, xOffset, yOffset)
		.hide()
		.slideDown("fast");
};

jQuery.readyOrUpdatePanel = function(functionToWireUp)
{
	jQuery(functionToWireUp);
	
	// Wire up UpdatePanel events
	if (Sys)
	{
		var prm = Sys.WebForms.PageRequestManager.getInstance();
		prm.add_endRequest(function(sender, args){
			functionToWireUp();
		});
	}
};

String.prototype.setQueryStringVar = function(key, value)
{
	var finalUrl = this;
	var pattern = new RegExp(key + '=[^&]*');
	if (pattern.test(this))
	{
		finalUrl = finalUrl.replace(pattern, key + '=' + value);
	}
	else
	{
		if (this.search(/\?/) < 0)
		{
			finalUrl += '?';
		}
		finalUrl += key + '=' + value;
	}
	return finalUrl;
}
