function openLightbox($featureObject) {
	if(!$featureObject.length) return;
	createLightbox($featureObject, 1);
	if (typeof lightboxSearch=='function') lightboxSearch(1);
}
function openLightboxNoncloseable($featureObject) {
	createLightbox($featureObject, 0);
}
function createLightbox($featureObject, isCloseable) {
	if ($("div#lightbox-bg").size() == 0) {
		var $lightboxBG = $("<div />")
				.attr('id','lightbox-bg');
		if (isCloseable != 0) {
			$lightboxBG.click(closeLightbox);
		}
		$('body').append($lightboxBG);
	}

	$("div#lightbox").remove();
	var $lightbox = $("<div />")
			.attr('id','lightbox');
	if (isCloseable != 0) {
		var $closeLink = $("<a />")
				.attr('href', 'javascript: closeLightbox();')
				.attr('id','lightbox-close');
		$lightbox.append($closeLink);
	}

	//seeTaskNumber(24153);
	$featureObject.addClass('lightbox-container');
	if ($featureObject.length > 1) {
		$featureObject = $($featureObject[0])
	}
	//seeTaskNumber(24153);

	$featureObject.css('margin', '10px');
	$lightbox.append($featureObject);
	$('body').append($lightbox);

	var width = 292;
	if (typeof $featureObject.attr('width') != 'undefined') {
		width = parseInt($featureObject.attr('width'));
	}
	$lightbox
			.css('width', (width+20) + 'px')
			.css('margin-left', '-' + ((width+20)/2) + 'px');

	var height = 0;
	if (typeof $featureObject.attr('height') != 'undefined') {
		height = parseInt($featureObject.attr('height'));
	} else {
		height = $lightbox.outerHeight();
	}
	$lightbox.css('margin-top', '-' + ((height+20)/2) + 'px');
	$lightbox.height(height+20);

	$lightbox.hide();
	$lightbox.show();
}
function closeLightbox() {
	if (typeof lightboxSearch=='function') lightboxSearch(0);
	$("div#lightbox-bg").remove();
	$("div#lightbox").remove();
}
function loadExternalIntoLightbox(file) {
	var $div = $("<div />");
	$div.load(file, function(responseText, textStatus, XMLHttpRequest) {
		var $loadedElement = $div.children(":first").clone();
		$loadedElement.find("input.text").bind("focusin", focusOn);
		$loadedElement.find("input.text").bind("focusout", focusOff);
		$loadedElement.find("a.search-link").bind("focusin", focusOn);
		$loadedElement.find("a.search-link").bind("focusout", focusOff);
		$loadedElement.find("td.select").children("a").bind("focusin", focusOn);
		$loadedElement.find("td.select").children("a").bind("focusout", focusOff);
		openLightbox($loadedElement);
		$div.remove();
	});
}

function externalLink(url) {
	var $leavingAlert = $("<div />").addClass("action-confirm-overlay").attr("width", "292px");
	$leavingAlert.append($("<h5 />").html("You are Leaving this Site"));
	$leavingAlert.append($("<p />").html("This link takes you to another website.  <strong>Are you sure</strong> you want to go?"));
	var $ulActions = $("<ul />").addClass("actions");
	$ulActions.append($("<li />").append($("<a />").attr("href", url).html("<span>Yes - Go to Link</span>")));
	$ulActions.append($("<li />").append($("<a />").attr("href", "javascript: closeLightbox();").html("<span>No - Stay Here</span>")));
	$leavingAlert.append($ulActions);
	openLightbox($leavingAlert);
}

function lbPopup(html, size, height){
	size = size || 'sm';
	height = height || 'auto';

	var $element = $('<div class="lbpopup '+size+'">'+html+'</div>');

	switch(size){
		case 'sm': $element.attr('width', 400); break;
		case 'md': $element.attr('width', 600); break;
		case 'lg': $element.attr('width', $('#container').width()); break;
	}

	if(height != 'auto'){
		$element.attr('height', height);
	}

	createLightbox($element);

	$('#lightbox').css({'min-height':'100px'});
	if(height == 'auto'){
		$('#lightbox').css({'height': 'auto', 'top': '14%'});
	}
	return $element;
}

function lbConfirm(args){
	args = $.extend({
		title: 'Confirm',
		html: '',
		cancel: 'Cancel',
		confirm: 'Ok',
		onCancel: function(){},
		onConfirm: function(){},
		size: 'sm',
		height: 140
	}, args);

	$element = lbPopup(''+
		'<h5 class="text-center">'+args.title+'</h5>'+
		'<div class="popup-body">'+args.html+'</div>'+
		'<ul class="actions">'+
			'<li><button class="cancel-action btn-primary"><span>'+args.cancel+'</span></button></li>'+
			'<li><button class="confirm-action btn-primary"><span>'+args.confirm+'</span></button></li>'+
		'</ul>'+
	'', args.size, args.height);

	$element.find('.cancel-action').click(function(){
		closeLightbox();
		args.onCancel();
	});

	$element.find('.confirm-action').click(function(){
		closeLightbox();
		args.onConfirm();
	});

	return $element;
}

function lbAlert(html, args){
	args = $.extend({
		title: 'Alert',
		ok: 'Ok',
		onOk: function(){},
		size: 'sm',
		height: 140
	}, args);

	$element = lbPopup(''+
		'<h5 class="text-center">'+args.title+'</h5>'+
		'<div class="popup-body text-center">'+html+'</div>'+
		'<ul class="actions">'+
			'<li><button class="ok-action btn-primary"><span>'+args.ok+'</span></button></li>'+
		'</ul>'+
	'', args.size, args.height);

	$element.find('.ok-action').click(function(){
		closeLightbox();
		args.onOk();
	});

	return $element;
}

/*****
modal
ex. 
<div id='myModal' class='modal-container'>
    <div class='modal-overlay'></div>
    <div class='modal-content'>
        <a class='modal-close' href='javascript: void(0);'></a>
        <!-- put html here -->
    </div>
</div>

modal('#myModal').open('400px', '200px').onClose(function(){});
modal('#myModal').close();
***/
function modal(selector){
    var $element = $(selector);
    var $overlay = $element.find('.modal-overlay');
    var $content = $element.find('.modal-content');
    var $close = $element.find('.modal-close');
    return {
        onCloseCallback: function(){},
        open: function(w, h){
            $close.unbind('click.modal').bind('click.modal', $.proxy(function(){this.close();}, this));
            $overlay.unbind('click.modal').bind('click.modal', $.proxy(function(){this.close();}, this));
            $element.show();
            $element.addClass('visible');
            $overlay.css({left: '0px', top: '0px', width: $(window).width(), height: $(window).height()});
            
            if(w && h){
                $content.css({width: w, height: h});
                $content.css({left: '50%', 'margin-left': (-($content.width()/2))+'px'});
                $content.css({top: '50%', 'margin-top': (-($content.height()/2))+'px'});
            }
            return this;
        },
        close: function(){
            $element.removeClass('visible');
            $element.hide();
            this.onCloseCallback();
            return this;
        },
        onClose: function(callback){
            this.onCloseCallback = callback;
            return this;
        }
    };
}
