function DateAdd(objDate, strInterval, intIncrement)
    {
        if(typeof(objDate) == "string")
        {
            objDate = new Date(objDate);

            if (isNaN(objDate))
            {
                throw("DateAdd: Date is not a valid date");
            }
        }
        else if(typeof(objDate) != "object" || objDate.constructor.toString().indexOf("Date()") == -1)
        {
            throw("DateAdd: First parameter must be a date object");
        }

        if(
        strInterval != "M"
        && strInterval != "D"
        && strInterval != "Y"
        && strInterval != "h"
        && strInterval != "m"
        && strInterval != "uM"
        && strInterval != "uD"
        && strInterval != "uY"
        && strInterval != "uh"
        && strInterval != "um"
        && strInterval != "us"
        )
        {
            throw("DateAdd: Second parameter must be M, D, Y, h, m, uM, uD, uY, uh, um or us");
        }

        if(typeof(intIncrement) != "number")
        {
            throw("DateAdd: Third parameter must be a number");
        }

        switch(strInterval)
        {
            case "M":
            objDate.setMonth(parseInt(objDate.getMonth()) + parseInt(intIncrement));
            break;

            case "D":
            objDate.setDate(parseInt(objDate.getDate()) + parseInt(intIncrement));
            break;

            case "Y":
            objDate.setYear(parseInt(objDate.getYear()) + parseInt(intIncrement));
            break;

            case "h":
            objDate.setHours(parseInt(objDate.getHours()) + parseInt(intIncrement));
            break;

            case "m":
            objDate.setMinutes(parseInt(objDate.getMinutes()) + parseInt(intIncrement));
            break;

            case "s":
            objDate.setSeconds(parseInt(objDate.getSeconds()) + parseInt(intIncrement));
            break;

            case "uM":
            objDate.setUTCMonth(parseInt(objDate.getUTCMonth()) + parseInt(intIncrement));
            break;

            case "uD":
            objDate.setUTCDate(parseInt(objDate.getUTCDate()) + parseInt(intIncrement));
            break;

            case "uY":
            objDate.setUTCFullYear(parseInt(objDate.getUTCFullYear()) + parseInt(intIncrement));
            break;

            case "uh":
            objDate.setUTCHours(parseInt(objDate.getUTCHours()) + parseInt(intIncrement));
            break;

            case "um":
            objDate.setUTCMinutes(parseInt(objDate.getUTCMinutes()) + parseInt(intIncrement));
            break;

            case "us":
            objDate.setUTCSeconds(parseInt(objDate.getUTCSeconds()) + parseInt(intIncrement));
            break;
        }
        return objDate;
    }

function boa_monta(dt){

	var ctaux = 0;
	$('#dtpainel div').addClass( 'remDTS' );

	if( isNaN(dt) ){
		var arrdt = dt.split("/");
		boa_d.setFullYear(arrdt[2],(arrdt[1]-1),arrdt[0]);
	}else{
		boa_d.setDate(boa_d.getDate()+dt);
	}
	boa_mes = boa_d.getMonth();
	ano = "-"+boa_d.getFullYear();

	$('#mesIn').html( boa_meses[boa_mes] +" "+ ano.substring(3) );

	var wdayor = boa_d.getDay();
	var wday = (wdayor == 0)? 6 : boa_d.getDay()-1;

	var inicio = boa_d.setDate(boa_d.getDate()-wday);

	for (x=0;x < 7;x++){
		if(x > 0 ) boa_d.setDate(boa_d.getDate() + 1);
		var stHJ = ( boa_d2.getTime() == boa_d.getTime() )? "hj" : "" ;
		var outromes = ( boa_mes == boa_d.getMonth() )? "" : "outromes";
		
		var axDD = zeroPad(boa_d.getDate(),2);
		var axMM = zeroPad(boa_d.getMonth()+1,2);
		var axYYYY = boa_d.getFullYear();
		var diastr = axDD+axMM+axYYYY;
		var lnk = ( boa_dados[diastr] == undefined )? axDD : "<a href='javascript:;' onclick='changeBoaDoDia( "+boa_d.getDate()+", "+boa_d.getMonth()+", "+boa_d.getFullYear()+" );marcahj(this)' class='lnkdt'>"+axDD+"</a>";
		$('#dtpainel').append('<div class="bxdt '+ stHJ +' '+ outromes +'">' + lnk +'</div>');
	}

	//EFEITINHO
	var ctaux = 0;
	var fadfator = 80;
	if( $('#dtpainel div.remDTS').length > 1 ){
		$($('#dtpainel div.remDTS')[0]).animate( {opacity: 0},0 );
		$($('#dtpainel div.remDTS')[1]).animate( {opacity: 0},fadfator );
		$($('#dtpainel div.remDTS')[2]).animate( {opacity: 0},(fadfator * 2));
		$($('#dtpainel div.remDTS')[3]).animate( {opacity: 0},(fadfator * 3));
		$($('#dtpainel div.remDTS')[4]).animate( {opacity: 0},(fadfator * 4));
		$($('#dtpainel div.remDTS')[5]).animate( {opacity: 0},(fadfator * 5));
		$($('#dtpainel div.remDTS')[6]).fadeOut( (fadfator * 6), function(){
			$('#dtpainel div.remDTS').remove();
			$('#dtpainel div').each(function(){
				$(this).fadeIn( (ctaux*fadfator) );
				ctaux++;
			});
		});
	}else{
		$('#dtpainel div').fadeIn( 'slow' );
	}

}

function marcahj(ob){
	$('.marcado').removeClass( 'marcado' );	
	$(ob).addClass( 'marcado' );
}

function zeroPad(num,count)
{
	var numZeropad = num + '';
	while(numZeropad.length < count) {
		numZeropad = "0" + numZeropad;
	}
	return numZeropad;
}


function boa_m(f){
	current = new Date(boa_d.getFullYear(), boa_mes+f, 1);
	boa_monta( "01/" + (current.getMonth()+1) +"/"+current.getFullYear() );
}

function initBoaDoDia(){
	boa_dados = new Object();
	$.get(path+'xml/calendar/', {cid:$index.city}, function(dt,st){
	$(dt).find("balada").each(function(){
		var objnome = zeroPad($(this).attr('date'),2) + zeroPad($(this).attr('month'),2) + $(this).attr('year'); //NOME DO OBJETO É FEITO COMO DDMMYYYY
		var objvalor = zeroPad($(this).attr('date'),2); + '/' + zeroPad($(this).attr('month'),2); + '/'+ $(this).attr('year'); //VALOR DO OBJETO É A DATA QUE TEM UMA BOA DO DIA
		boa_dados[objnome] = objvalor;
	});
	boa_monta(boa_d2.getDate()+'/'+(boa_d2.getMonth()+1)+'/'+boa_d2.getFullYear());
	}, 'xml' );	
}


// ------ INICIALIZA CALENDARIO
var boa_dias = ['dom','seg','ter','qua','qui','sex','sab'];
var boa_meses = ['JAN','FEV','MAR','ABR','MAI','JUN','JUL','AGO','SET','OUT','NOV','DEZ'];
var boa_d = new Date();
var boa_mes;
var boa_d2 = new Date();
var boa_dados = new Object();