(function($){

//Dialog box with iframe (url property)
//<div id="dialog"></div>
// open:  $("#dialog").iframeDialog({url:"http://xxxxxx",width:xxx,height:xxx});
// close: $("#dialog").iframeDialog("close");

$.fn.iframeDialog = function(options){
    switch (options) {
        case 'close': return $(this).dialog('close');
        case 'open': return $(this).dialog('open');
    }
    this.options = {
        title:"Default Title",
        width:640, height:480,
        close: function(){
            $(this).children().remove();
        },
        open: function(){
            $(this).append($(
                '<iframe src="' + options.url + '" width="100%" height="100%"' +
                ' style="border:none;"></iframe>'
            ));
        }
    };
    $.extend(this.options,this.options,options);
    return $(this).dialog(this.options);
}

//Rollover
//<img src="xxx.jpg" class="imgover" />
// usage: $(".imgover").rollOver();
//        $(".imgover").rollOver({suffix:"_ovr",fade:500}); // fade=msec.

$.fn.rollOver = function(options) {
    var settings = { suffix: "_o" };
    if (options) $.extend(settings,options);
    return $(this).each( function() {
        this.osrc = $(this).attr('src');
        this.hsrc = this.osrc.replace(/^(.+)(\.[a-zA-Z]+)$/,'$1'+settings.suffix+'$2');
        this.preload = new Image();
        $(this.preload).attr('src',this.hsrc);
        $(this).mouseover( function() {
            if (!settings.fade) $(this).attr('src',this.hsrc);
            else $(this).stop(true,true).attr('src',this.hsrc)
                 .fadeTo(0,0.6).fadeTo(settings.fade,1);
        }).mouseout( function() {
            $(this).stop(true,true).attr('src',this.osrc);
        });
    });
}

//Activate image link
// and remove mouseover(out) events.

$.fn.activateImage = function(options) {
    var settings = { suffix: "_o" };
    if (options) $.extend(settings,options);
    return $(this).each( function() {
        $(this).removeClass().unbind('mouseover').unbind('mouseout');
        var osrc = $(this).attr('src');
		if (this.osrc) osrc = this.osrc;
        $(this).attr('src',osrc.replace(/^(.+)(\.[a-zA-Z]+)$/,'$1'+settings.suffix+'$2'));
    });
}

//Animate to Anchors
//<a href="#top" class="scroll">Go Top</a>
// usage: $(".scroll").scrollAnchors();

$.fn.scrollAnchors = function(options) {
    var settings = { duration: 500, easing: "swing" };
    if (options) $.extend(settings,options);
    return $(this).click(function(event) {
        event.preventDefault();
        var target_top = 0;
        if (settings.scrollTop!=undefined) 
            target_top = settings.scrollTop;
        else
            target_top = $("a[name="+this.hash.slice(1)+"]").offset().top;
        $('html, body').animate({scrollTop:target_top}, settings.duration, settings.easing);
    });
}

})(jQuery);
