var activityDatabase = '';
var mUpdate = false;

function allowUpdate()
{
    mUpdate = true;
}

function setDatabase(database)
{
    activityDatabase=database;
    initDbCall(activityDatabase,mUpdate);
}

function getMonthStr(monthVal)
{
    var month=new Array(12)
       month[1]="January"
       month[2]="February"
       month[3]="March"
       month[4]="April"
       month[5]="May"
       month[6]="June"
       month[7]="July"
       month[8]="August"
       month[9]="September"
       month[10]="October"
       month[11]="November"
       month[12]="December"

   return month[monthVal];
}

function daysInMonth(month,year) 
{
    month=month-1;
    return 32 - new Date(year, month, 32).getDate();
}

function getNewStr(day,month,year)
{

    var addEditActivityUrl = "../pages/activities/activityForm.php";

    var newStr = "<a class=\"act\" href=\""+addEditActivityUrl;
    newStr = newStr+"?day="+day;
    newStr = newStr+"&month="+month;
    newStr = newStr+"&year="+year;
    newStr = newStr+"\">add</a>";

    return newStr;
}

function getDayStr(day,month,year)
{
    return ((mUpdate)?formatCommandLink(0,"add",day,day,month,year):day);
}

function fillindays(monthStr,year)
{
    var month = parseInt(monthStr,10);
    var date=new Date(year,month-1,1)
    var offset = date.getDay();

    for (var idx=1;idx<=daysInMonth(month,year);idx++)
    {
        var dayStr = 'day'+(idx+offset);
        document.getElementById(dayStr).innerHTML=getDayStr(idx,month,year);
    }
    document.getElementById("monthStr").innerHTML=getMonthStr(month)+" "+year;

    showActivitiesCalendar(month,year,offset); 
}   

function clean()
{
    for (var idx=1;idx<=(7*6);idx++)
    {
        var dayStr = 'day'+idx;
        document.getElementById(dayStr).innerHTML='';
        var newStr = 'new'+idx;
        document.getElementById(newStr).innerHTML='';
        var actStr = 'act'+idx;
        document.getElementById(actStr).innerHTML='';
    }
}

function updateCalendar(form)
{
    clean();
    fillindays(form.calMonth.value,form.calYear.value);
    return false;
}

function updateMonth(value)
{
    var tempMonth = parseInt(document.monthForm.calMonth.value,10)+value;
    var tempYear = parseInt(document.monthForm.calYear.value,10);
    var str = ''

    if (tempMonth>12)
    {
        document.monthForm.calYear.value=(tempYear+1)
        tempMonth = 1;
    }

    if (tempMonth<1)
    {
        document.monthForm.calYear.value=(tempYear-1)
        tempMonth = 12;
    }

    if (tempMonth<10)
    {
        str=str+'0';
    }
    document.monthForm.calMonth.value=str+tempMonth;

    updateCalendar(document.monthForm);
    return false;
}

function formatCommandLink(id,cmd,link,day,month,year)
{
    var htmlStr = "<a class=\"act\" href=# onclick=\"";
    htmlStr = htmlStr+"return update('"+cmd+"',"+id+","+day+","+month+","+year+")";
    htmlStr = htmlStr+"\">"+link+"</a>\n";
    return htmlStr;
}

function formatCommand(m,cmd)
{
    return formatCommandLink(m,cmd,cmd,0,0,0);
}

function update(cmd,id,day,month,year)
{
    //alert("update called with "+ cmd + ","+id + ","+day + ","+month + ","+year);
    var reload = false;
    clearForm();

    switch (cmd)
    {
    case "remove" : 
    case "update" : 
    case "view"   : showActivity(id);
    case "add"    : if (mAllowUpdate == true) 
                    { 
                        document.activityForm.cmd.value=cmd; 
                        if (id == 0)
                        {
                            document.activityForm.day.value=((day<10)?'0'+day:day);
                            document.activityForm.month.value=((month<10)?'0'+month:month);
                            document.activityForm.year.value=year;
                        }
                    }       
                    document.getElementById("actInfo").style.visibility="visible"; 
                    break;

    default: updateCalendar(document.monthForm);
    case "cancel" : document.getElementById("actInfo").style.visibility="hidden"; break;
    }

    return reload;
}

