/**
 * Usage:
 * 
 * 1, AJAX
 * 
 * <a id="advanced-search" href="/someUrl">Modal Link</a>
 * $("a#advanced-search").modal();
 * 
 * 2, Inline
 *
 * <a class="show-inquiry-modal" href="#inquiry-modal-form">Modal Link</a>
 * <div id="inquiry-modal-form">...</div>
 * $("a.show-inquiry-modal").modal();
 * 
 */
jQuery.noConflict();
(function($) { 

(function($){
	
    $.fn.modal = function(options) {
 
        var opts = $.extend({}, $.fn.modal.defaults, options);
     
        return this.each(function() {
            // assign current element to a variable
        	$this = $(this);
        	
        	var o = $.extend({}, opts, $this.metadata());
             
            var href = $this.attr("href");
            if(href == null){
            	alert("href cannot be null");
            	return;
            }
            
    		$('.mb-close-btn').click(function(){
    			self.parent.$.fn.modal.remove();
    		});
    		
    		$('#close-btn').click(function(){
				self.parent.$.fn.modal.remove();
			});
            
    		$this.click(function(event){
    			event.stopPropagation();
    			$.fn.modal.show(href, o);
    			this.blur();
    			return false;
    		});
        });
    }
    
    $.fn.modal.defaults = {
        allowClose:true,
        width:498,
        height:575,
        scroll:"yes",
        bg:"dark",
        title:""
    }

    $.fn.modal.showIframe = function(){
		$("#mb-load").remove();
    }

    $.fn.modal.show = function(url, opts){
		// remove the scroll bars
    	
        $('html').css({'position': 'static'});
        
		document.body.scroll="no";
		
		if ($.browser.msie){
			$('#page-top-advert').css('display','none');
		}
		if ($.browser.webkit){
			$('.advertisement').hide();
		}
		
		$("body").append('<div id="mb-load"><img src="/resources/images/icon/loading-blue-lg.gif" /></div>');
		$('#mb-load').show();
		
		var html = "";
		if($("#mb-overlay").length == 0){
			html += '<div id="mb-overlay" class="' + opts.bg +'">';
			html += '<div id="mb-overlay-bg"></div>';
			html += '<div id="mb-frame-box">';
			if (url.charAt(0) == "#"){
				html += '<div title="'+ opts.title +'" id="mb-iframe" name="mb-iframe" style="width:'+ opts.width +'px; height:'+ opts.height +'px;"></div>';
			} 
			else{
				html += '<iframe frameborder="0" hspace="0" src="'+ url +'" scrolling="'+ opts.scroll +'" title="'+ opts.title +'"id="mb-iframe" name="mb-iframe" style="width:'+ opts.width +'px; height:'+ opts.height +'px;" allowtransparency="true" onload="$.fn.modal.showIframe()"> </iframe>';
			}
			html += '</div></div>';
			$("body").append(html);
			
			if (url.charAt(0) == "#"){
				$(url).appendTo($("#mb-iframe"));
				$(url).show();
			} 

			if (opts.allowClose) {
				$("#mb-overlay").click(function(event){
					$.fn.modal.remove();
				});
			}
			$("#mb-iframe").click(function(event){
				event.stopPropagation();
			});

			position(opts);

            $(window).resize(function(){
            	position(opts);
            });

			if (url.charAt(0) == "#"){
				$.fn.modal.showIframe();
			}

			if(frames['mb-iframe'] === undefined){ // safari
				$("#mb-load").remove();
				$(document).keyup(function(e){ 
					var key = e.keyCode; 
					if(key == 27){ remove(); }
				});
			}
			
			// causes problems in IE
			//$('.scroll-pane').jScrollPane();

		} else {
			$.fn.modal.remove();
		}
    }

    $.fn.modal.remove = function(){
    	if($("#mb-iframe").is("div")){
    		var $div = $($("#mb-iframe").children().get(0));
    		$("body").append($div);
    		$div.hide();
    	}
		$("#mb-overlay").unbind("click");
		$("#mb-overlay").fadeOut("fast", function(){
			$('#mb-overlay').remove();
		});
		$("#mb-load").remove();
		if($.browser.msie){
			$('#page-top-advert').css('display','block');
		}
		if ($.browser.webkit){
			$('.advertisement').show();
		}
		if ($.browser.mozilla){
			var f = $('#adframe-top');
			if (f != null && typeof(f) != 'undefined'){
				f.src = f.src;
			}
		}
		try{
			$('html').css({ 'position': 'auto'});        
		}catch(err) {}
		document.body.scroll="auto";
		document.onkeydown = "";
		return false;
    }

    function position(opts){
		var h = $(window).height();
		var w = $(window).width();
        var top = (((h - parseInt(opts.height)) / 2) > 0) ? (h - parseInt(opts.height)) / 2 : 0;
        var left = (((w - parseInt(opts.width)) / 2) > 0) ? (w - parseInt(opts.width)) / 2 : 0;
        $("#mb-frame-box").css({'margin-left': left +'px', 'margin-top': top + 'px'});
    }

    
})(jQuery);


$(document).ready(function(){
	$(".rbtitle div.close").click(function(){
		$.fn.modal.remove();
		self.parent.$.fn.modal.remove();
	});
});

})(jQuery);
