﻿(function($) {
	$.showFlexxWindow = function(container, opts) {
		var defaultScrlHeightAdjust = 18;
		var defaults = { evt: null, isIE6: false, pageX: 0, pageY: 0, width: 300, height: 300, scrollHeightAdjust: defaultScrlHeightAdjust, isModal: true, position: "NW", onLoad: null, onClose: null };
		if (opts) {
			$.extend(defaults, opts);
		}
		if (defaults.pageX == 0 && defaults.evt && defaults.evt.pageX) { defaults.pageX = defaults.evt.pageX; }
		if (defaults.pageY == 0 && defaults.evt && defaults.evt.pageY) { defaults.pageY = defaults.evt.pageY; }
		if (container) {
			container = (!container.startsWith("#") ? "#" : "") + container;
			var cEl = $(container).eq(0);
			if (cEl) {

				var closeContainer = function(e) {
					if(e){
						e.preventDefault();
					}
					$(document).unbind('click');
					$(container).hide();
					if (defaults.isModal) {
						$.dimScreenStop();
					}
					if (defaults.onClose) {
						defaults.onClose(cEl, defaults);
					}
				};
				var windowClick = function(e){
					var close = false;
					if (e.target && e.target.id) {
						if ($("#" + e.target.id).parents(container).length == 0) {
							close = true;
							closeContainer();
						}
					}
					if(!close){
						$(document).one("click", function(e){
							windowClick(e);
						});
					}
				}
				
				function showWindow() {
					switch (defaults.position) {
						case "NE":
							defaults.pageX = (defaults.pageX > defaults.width ? defaults.pageX - defaults.width : defaults.pageX);
							break;
						case "SE":
							defaults.pageX = (defaults.pageX > defaults.width ? defaults.pageX - defaults.width : defaults.pageX);
							defaults.pageY = (defaults.pageY > defaults.height ? defaults.pageY - defaults.height : defaults.pageY);
							break;
						case "SW":
							defaults.pageY = (defaults.pageY > defaults.height ? defaults.pageY - defaults.height - 15 : defaults.pageY);
							break;
						case "NW":
							break;
						case "C":
							defaults.pageY = (defaults.pageY - parseInt((defaults.height / 2)));
							break;
						case "WINDOW":
							defaults.pageX = ($(window).width() / 2 - defaults.width / 2) + $(window).scrollLeft();
							defaults.pageY = ($(window).height() / 2 - defaults.height / 2) + $(window).scrollTop() - 50;
							break;
					}
					
					cEl.css("display", "inline").css("top", defaults.pageY).css("left", defaults.pageX).css("opacity", "1").css("z-index", "1010").fadeIn();
					var scrlElHeight = defaults.height;
					var scrlEl = null;
					cEl.children(".inner").eq(0).css("width", defaults.width).css("height", defaults.height).children().each(function(i) {
						if (!$(this).hasClass("vertical-scroll")) {
							scrlElHeight -= $(this).height();
						} else {
							scrlEl = $(this);
						}
					});

					if (scrlEl) {
						scrlEl.css("height", (scrlElHeight - defaults.scrollHeightAdjust));
					}

					if (defaults.onLoad) {
						defaults.onLoad(cEl, defaults);
					}
				}

				$(".button-red, .close", container).one("click", function(e){closeContainer(e);});

				$(document).one("click", function(e){
					windowClick(e);
				});

				if (defaults.isModal) {
					$.data(cEl[0], "ismodal", "true");
					$.dimScreen(250, 0.6, defaults.isIE6, function() {
						showWindow();
					});
				} else {
					showWindow();
				}
			}
		}

	}
})(jQuery);
(function($) {
	$.setFlexxWindows = function() {
		$("div.flexx-window").each(function() {
			$(this).css("position", "absolute").css("left", "-999999px").css("display", "");
		});
	}
})(jQuery);
(function($) {
	$.dimScreen = function(speed, opacity, isIE6, callback) {
        if(jQuery('#__dimScreen').size() > 0) return;
        
        if(typeof speed == 'function') {
            callback = speed;
            speed = null;
        }

        if(typeof opacity == 'function') {
            callback = opacity;
            opacity = null;
        }

        if(speed < 1) {
            var placeholder = opacity;
            opacity = speed;
            speed = placeholder;
        }
        
        if(opacity >= 1) {
            var placeholder = speed;
            speed = opacity;
            opacity = placeholder;
        }

        speed = (speed > 0) ? speed : 500;
        opacity = (opacity > 0) ? opacity : 0.5;
        return jQuery('<div></div>').attr({
                id: '__dimScreen'
                ,fade_opacity: opacity
                ,speed: speed
            }).css({
            background: '#000'
            ,height: (!isIE6 ? '100%' : '100%')
            ,left: '0px'
            ,opacity: 0
            ,position: 'absolute'
            ,top: '0px'
            ,width: (!isIE6 ? '100%' : '100%')
            ,zIndex: 999
        }).appendTo(document.body).fadeTo(speed, opacity, callback);
	};
})(jQuery);
(function($) {
	$.dimScreenStop = function(callback) {
		var x = jQuery('#__dimScreen');
		var opacity = x.attr('fade_opacity');
		var speed = x.attr('speed');
		x.fadeOut(speed, function() {
			x.remove();
			if (typeof callback == 'function') callback();
		});
	};
})(jQuery);
(function($) {
	$.asyncComplete = function() {
		$("input[showoncomplete=1]").add("a[showoncomplete=1]").show();
		$("img[removeoncomplete=1]").remove();
	}
})(jQuery);
(function($) {
	$.globalService_Fail = function(result) {
   		if($.writeObject) $.writeObject(result);
   		$.asyncComplete();
	}
})(jQuery);
(function($) {
	$.globalService_Success = function(result) {
   		$.asyncComplete();
   	}
})(jQuery);
(function($) {
	$.getDashedId = function(val) {
		if (val) {
			return val.substring(val.lastIndexOf('-') + 1, val.length);
		} else {
			return '0';
		}
	}
})(jQuery);