;(function() {
	jQuery.extend({
		cropImage : function(elem, resize_value) {
			var rootUrl = $.getUrlVar("rootUrl");
			rootUrl = rootUrl == null ? "" : rootUrl; 
			$(elem).each(function(index, value) {
				var crop_img = $(value);
				crop_img.css("display", "none");
				
				var img_wrapper = $("<span>");
				img_wrapper
				.css("overflow", "hidden")
				.css("position", "relative")
				.css("margin", "0")
				.css("padding", "0")
				.css("width", resize_value)
				.css("height", resize_value)
				.css("display", "inline-block")
				.css("background", "url(" + rootUrl + "/images/loading.gif) 50% 50% no-repeat");
				
				var parent = crop_img.parent();
				parent.append(img_wrapper);
				img_wrapper.append(crop_img);

				$(crop_img).load(function() {
					var loaded_img = $(this);
					
					var img_obj = new Image();
					img_obj.src = loaded_img.attr("src");
					
					if(!img_obj.complete && noImage) {
						img_obj = noImage;
						loaded_img.attr("src", noImage.src);
					}
						
					var width = img_obj.width;
					var height = img_obj.height;

					var resize_width = 0;
					var resize_height = 0;
					var top = 0;
					var left = 0;

					if(width > height) {
						resize_width = resize_value * (width / height);
						resize_height = resize_value;
						left = "-" + ((resize_width - resize_value) / 2) + "px";
					} else {
						resize_height = resize_value * (height / width );
						resize_width = resize_value;
						top = "-" + ((resize_height - resize_value) / 2) + "px";
					}

					loaded_img
					.css("padding", 0)
					.css("margin", 0)
					.css("border", "none")
					.css("position", "absolute")
					.css("width", resize_width)
					.css("height", resize_height)
					.css("top", top)
					.css("left", left)
					.css("display", "block");
				});
				if($.browser.msie)
					crop_img.get(0).complete;
				setTimeout(function() {crop_img.trigger("load"); },0);
			});
		},
		preview : function(elem) {
			$(elem).hover(function(e) {
				$("<div id=\"jquery-preview-container\"><img>")
				.css("position", "absolute")
				.css("background", "#fff")
				.css("top", e.pageY + 20)
				.css("left", e.pageX + 10)
				.css("min-height", "50px")
				.css("min-width", "50px")
				.css("z-index", "1000")
				.css("border", "1px solid #d3d3d3")
				.appendTo("body")
				.find("img").attr("src", $(this).attr("src"))
				.load(function() {
					$(this).show("fast");
				});
				if($.browser.msie) {
					var preview_img = $("#jquery-preview-container").find("img");
					if(preview_img.get(0).complete)
						preview_img.trigger("load");
				}
			}, function(e) {
				$("#jquery-preview-container")
				.remove();
			}).mousemove(function(e) {
				$("#jquery-preview-container")
				.css("top", e.pageY + 20)
				.css("left", e.pageX + 10);
			});
		},
		showWindow: function(id, content, xLoc, yLoc) {
			if($(".jquery-window-wrapper").size() > 0)
				$(".jquery-window-wrapper").remove();
			var winHtml = "<div id=\"" + id + "\" class=\"jquery-window-wrapper\">" +
					"<div class=\"win-top-panel\"></div>" +
					"<div class=\"win-mid-panel\"></div>" +
					"<div class=\"win-bottom-panel\"></div>" +
					"<div class=\"win-content-panel\">" + content + "</div>" +
					"</div>";
			$("body").append(winHtml);
			var elem = $("#" + id);
			var contentHeight = elem.find("div.win-content-panel").height();
			if(xLoc != null && yLoc != null) {
				contentHeight = contentHeight > 58 ? contentHeight : 58;
				elem.find("div.win-mid-panel").css("height", contentHeight - 58);
				elem.css("top", yLoc - (contentHeight - 23)).css("left", xLoc + 10);
			} else {
				elem.find("div.win-mid-panel").css("height", contentHeight - 17);
				var win_width = $(window).width();
				var win_height = $(window).height();
				elem.find("div.win-bottom-panel").addClass("no-arrow");
				if($.browser.msie) {
					elem.css("top", ((win_height - elem.height()) / 2) + $(document).scrollTop())
						.css("left", (win_width - elem.width()) / 2)
						.css("position", "absolute");
					$(window).scroll(function() {
						var elem = $(".jquery-window-wrapper");
						elem.css("top", (($(window).height() - elem.height()) / 2) + $(document).scrollTop());
					});
				} else {
					elem.css("top", (win_height - elem.height()) / 2)
						.css("left", (win_width - elem.width()) / 2)
						.css("position", "fixed");
				}
			}
		},
		getUrlVars: function(){
			var vars = [], hash;
			var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
			for(var i = 0; i < hashes.length; i++) {
				hash = hashes[i].split('=');
				vars.push(hash[0]);
				vars[hash[0]] = hash[1];
			}
			return vars;
		},
		getUrlVar: function(name){
			return $.getUrlVars()[name];
		},
		bindAutocomplete : function(elem, url) {
			$(elem).autocomplete(url, {
				extraParams: {
					f: "title_t",
					l: "40"
				}, 
				selectFirst: false, 
				width: "500px",
				delay: 300,
				max: 25,
				matchCase: true,
				matchSubset: false,
				matchContains: true,
				cacheLength: 1,
				mustMatch: false,
				highlight: function(value, term, styleClass) {
					var terms = term.split(" ");
					for(var i = 0; i < terms.length; i++)
						value = value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + terms[i].replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "gi"), 
								'<span class="' + styleClass + '">$1</span>');
					return value;
				}
			});
		}
	});
}) ();

var noImage = null;

