/*
* jQuery Floatbox Plugin 1.0.6
* Copyright (c) 2008 Leonardo Rossetti (motw.leo@gmail.com)
* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/

(function($){
    $.floatbox=function(options){
        var getWidth=function(){
            var version=parseInt($.prototype.jquery.match(/\d/gim)[1]);
            var width;
            if(version>1){
                width=$(window).width();
            }else{
                width=document.body.scrollWidth?document.body.scrollWidth:document.documentElement.scrollWidth;
            }
            return width/2;
        };

        var settings=$.extend({
            bg:"floatbox-background",
            box:"floatbox-box",
            content:"",
            button:"<div class='close-floatbox-wrap'>[ <a role='button' href='javascript:void(0);' class='close-floatbox'>Close</a> ]</div>",
            desc:"This is a popup box, press esc key to close.",
            fade:false,
            ajax:null,
            bgConfig:{
                position:($.browser.msie)?"absolute":"fixed",
                zIndex:8,
                width:"100%",
                height:"100%",
                top:"0px",
                left:"0px",
                backgroundColor:"#000",
                opacity:"0.75",
                display:"none"
            },
            boxConfig:{
                position:($.browser.msie)?"absolute":"fixed",
                zIndex:9,
                width:getWidth()+"px",
                height:"auto",
                top:"50%",
                left:(getWidth()/2)+"px",
                marginLeft: '-210px',
                backgroundColor:"#fff",
                display:"none"
            }
        },options);
    var showBox=function(){
        var content=typeof settings.content==="string"?settings.content:settings.content.clone();
        $("<div></div>").bind("click",function(){
            closeBox();
        }).attr("id",settings.bg).css(settings.bgConfig).width(($.browser.msie)?document.body.clientWidth:"100%").height(($.browser.msie)?document.body.clientHeight:"100%").appendTo("body");
        $("<div></div>").attr({
            id:settings.box,
            role:"alertdialog"
        }).html(content).append(settings.button).css(settings.boxConfig).appendTo("body").css("margin-top","-"+$("#"+settings.box).height()/2+"px").find(".close-floatbox").bind("click",function(){
            closeBox();
        }).end();
        if(settings.fade){
            $("#"+settings.bg).fadeIn(200,function(){
                $("div#"+settings.box).fadeIn(200);
            });
        }else{
            $("#"+settings.bg).show().parent().find("#"+settings.box).show();
        }
        if(settings.ajax){
            $.ajax({
                type:settings.ajax.params===""?"GET":"POST",
                url:settings.ajax.url,
                data:settings.ajax.params,
                beforeSend:function(){
                    $("#"+settings.box).html(settings.ajax.before);
                },
                success:function(data){
                    $("#"+settings.box).html(data).append(settings.button).find(".close-floatbox").bind("click",function(){
                        closeBox()
                        }).end();
                },
                complete:function(XMLHttpRequest,textStatus){
                    if(settings.ajax.finish){
                        settings.ajax.finish(XMLHttpRequest,textStatus);
                    }
                },
            contentType:"html"
            });
    }
};

var closeBox=function(){
    if(settings.fade){
        $("#"+settings.box).fadeOut(200,function(){
            $("#"+settings.bg).fadeOut(200,function(){
                $("#"+settings.box).remove();
                $("#"+settings.bg).remove();
            });
        });
    }else{
        $("#"+settings.box+",#"+settings.bg).hide();
        setTimeout(function(){
            $("#"+settings.box).remove();
            $("#"+settings.bg).remove();
        },500);
    }
};

var init=function(){
    showBox();
    $(document).one("keypress",function(e){
        var escKey=$.browser.mozilla?0:27;
        if(e.which===escKey){
            closeBox();
        }
    }).one("keydown",function(e){
    var escKey=$.browser.mozilla?0:27;
    if(e.which===escKey){
        closeBox();
    }
});
if($.browser.msie){
    $("body, html").css({
        height:"100%",
        width:"100%"
    });
    $(window).bind("scroll",function(){
        $("#"+settings.box).css("top",document.documentElement.scrollTop+($(window).height()/2)+"px");
    });
}
};

init();
};

})(jQuery);
