jQuery.fn.windowModal = function(options){
    options = jQuery.extend({
	ajax:true,
	opacity: 0.5,
	classModal: '.sdkModal',
	width: 200,
	height: 300,
	msgLoad: 'Carregando...',
	url: '',
	data: '',
	tipo: 'POST',
	closeClass: 'sdkClose',
	closeFn: false,
	closeText: 'close',
	onLoad: false
    }, options);
    var obj = this;
    $(this).windowModalDestroy(options);
    var rel = $(options.classModal).length - 1;
    var w = $(document).width();
    var h = $(document).height();
    var classModal = options.classModal.replace('.','');
    $(this).attr('rel', classModal+rel);
    $(document).keyup(function(event){
	var e = event.keyCode;
	if(e == 27)
	{
	    $(obj).windowModalClose(options);
	}
    });
    var divModal = '<div class="'+classModal+' '+classModal+rel+'"></div>'
    $('body').append(divModal);
    var modal = $(options.classModal);
    var bodyW = $('body').width();
    var bodyH = $('body').height();
    var top = bodyH-($(this).height()/2);
    var left = bodyW-($(this).width()/2);
    $(options.classModal).css({
	background:'#000',
	opacity: options.opacity,
	height: h+'px',
	width: w+'px',
	position: 'absolute',
	top: '0px',
	left:'0px',
	'z-index':'1000',
	display: 'block'
    });
    var tp = parseInt($(window).scrollTop()) + top ;
    $(this).css({
	position: 'absolute',
	top: tp,
	left: left,
	background: '#FFFFFF',
	'z-index':'1003',
	'margin-top':'100px',
	display: 'block'
    });
    $(this).html(options.msgLoad);
    modal.live('click',function(){
	$(obj).windowModalClose(options);
    });
    var spanClose = '<a href="javascript: void(0);" id="wMClose" class="'+options.closeClass+'">'+options.closeText+'</a>';
    if(options.ajax == true){
	$.ajax({
	    url: options.url,
	    data: options.data,
	    type: options.tipo,
	    complete: function()
	    {
		$(obj).html();
	    },
	    success: function(content)
	    {
		$(obj).html(content);
		var bodyW = $('body').width();
		var bodyH = $('body').height();
		var top = '50px';
		var left = (bodyW/2)-($(obj).width()/2);
		top = parseInt($(window).scrollTop())+50 ;	
		$(obj).css({
		    position: 'absolute',
		    top: top,
		    left: left,
		    background: '#FFFFFF',
		    'z-index':'1003',
		    width: options.width
		});
		if(!$.browser.msie)
		{
		    $(obj).append(spanClose);
		}else
		{
		    var id = $(obj).attr('id');
                                            
		    if(id){
			document.getElementById(id).innerHTML = content+spanClose;
		    }else{
			$(obj).append(spanClose);
		    }
		}
		$('#wMClose', obj).live('click', function(){
		    $(obj).windowModalClose(options);
		});
		if(options.closeFn){
		    $(options.closeFn).click(function(){
			$(obj).windowModalClose(options);
		    });
		}  
		if(options.onLoad)
		{
		    options.onLoad(content);
		}
	    }
	});
    }else
    {
	var iframe = "<iframe src="+options.url+"></iframe>";
	$(this).html(iframe);
	var bodyW = $('body').width();
	var bodyH = $('body').height();
	var top = '50px';
	var left = (bodyW/2)-($(obj).width()/2);
	$('iframe',this).css({
	    width: options.width,
	    height: options.heigth
	});
	$(this).css({
	    position: 'absolute',
	    top: top,
	    background: '#FFFFFF',
	    'z-index':'1003'
	});
	$(this).append(spanClose);
	$('#wMClose', this).live('click', function(){
	    $(obj).windowModalClose(options);
	});
    }
}
jQuery.fn.windowModalClose = function(options)
{
    options = jQuery.extend({
	ajax:true,
	opacity: 0.5,
	classModal: '.sdkModal',
	width: 'auto',
	height: 'auto',
	msgLoad: 'Carregando...',
	url: '',
	data: '',
	closeClass: 'sdkClose'
    }, options);
    $(this).hide();
    $('.'+$(this).attr('rel')).hide();
    $(this).windowModalDestroy(options)
}
jQuery.fn.windowModalDestroy = function(options)
{
    $(this).attr('style', '');
    $('#wMClose', this).die('click');
    $(this).html('');
    $('.'+$(this).attr('rel')).remove();
    $(document).die('keydown');
}
var scrollInt
var scrTime, scrSt, scrDist, scrDur, scrInt, scrSl, scrDistX
function easeInOut(t,b,c,d)
{
    return (c/2 * (1 - Math.cos(Math.PI*t/d)) + b);
}
scrollPage = function()
{
    scrTime += scrInt
    if (scrTime < scrDur) {
	window.scrollTo(easeInOut(scrTime,scrSl,scrDistX,scrDur), easeInOut(scrTime,scrSt,scrDist,scrDur))
    } else {
	window.scrollTo(scrSl+scrDistX, scrSt+scrDist)
	clearInterval(scrollInt)
    }
}
jQuery.fn.extend({
    smoothScroll : function(duration, velocity, marginLeft, marginTop)
    {
	if(typeof(duration) == 'undefined') duration = 500
	if(typeof(velocity) == 'undefined') velocity = 10
	if(typeof(marginLeft) == 'undefined') marginLeft = 0
	if(typeof(marginTop) == 'undefined') marginTop = 0

	this.click(function(){
	    var element_id = $(this).attr("href")
	    var source_positions = {
		top : $(this).get(0).offsetTop,
		left : $(this).get(0).offsetLeft
	    }
	    var dest_positions = {
		top : $(element_id).get(0).offsetTop-marginTop,
		left : $(element_id).get(0).offsetLeft-marginLeft
	    }
	    if (window.scrollY)
		scrSt = window.scrollY
	    else if (document.documentElement.scrollTop)
		scrSt = document.documentElement.scrollTop
	    else
		scrSt = document.body.scrollTop	
	    if (window.scrollX)
		scrSl = window.scrollX
	    else if (document.documentElement.scrollLeft)
		scrSl = document.documentElement.scrollLeft
	    else
		scrSl = document.body.scrollLeft
	    scrDist = dest_positions.top - scrSt
	    scrDistX = dest_positions.left - scrSl
	    scrDur = 500
	    scrTime = 0
	    scrInt = 5
	    clearInterval(scrollInt)
	    scrollInt = setInterval(scrollPage, scrInt)
	    return false
	})
    }
})
