dojo.require("dojo.rpc.*");
dojo.hostenv.writeIncludes();

var smdUrl="AnnouncementsManager.action";

var currentPage = 0;
var service = new dojo.rpc.JsonService( smdUrl );

var announcementIds = [];
var numOfIds = 0;

function loadIds() {
    var call = function( ids ) {
        var destList = document.getElementById( "announcementIdsControl" );
        destList.length = 0;
        for( var i = 0; i < ids.length; i++ ){
            announcementIds[ i ] = ids[ i ];
            var newOption = document.createElement("OPTION");
            newOption.text = '' + ids[ i ];
            newOption.value = '' + ids[ i ];
            var len = destList.length;
            destList.options[len] = newOption;
        }
        numOfIds = ids.length;
    };

    var defered = service.getIds();
    defered.addCallback(call);
}

loadIds();

function addNew() {

    //function called when remote method returns
    var callback = function( newId ) {
        announcementIds[ numOfIds ] = newId;
        numOfIds ++;
        var destList = document.getElementById( "announcementIdsControl" );
        var len = destList.length;
        var newOption = document.createElement("OPTION");
        newOption.text = '' + newId;
        newOption.value = '' + newId;
        destList.options[len] = newOption;
        alert( "Announcement has been commited" );
    };

    var dojoObj = dojo.widget.byId( "newAnnouncement.expirationDate" );
    var dateObj = dojoObj.getDate();

    //parameter
    var vDate =  dateObj.getTime();

    var title = document.getElementById( "newAnnouncement.title" ).value;
    var content = document.getElementById( "newAnnouncement.content" ).value;
    //alert( "is it going to pass this" );
    //var contentObj = dijit.byId( "newAnnouncement.content" );
    //var content = contentObj.getValue( false );
    
    var isActive;
    var showTitle;

    if( document.getElementById( "newAnnouncement.active" ).checked == true ) {
        isActive = true;
    } else {
        isActive = false;
    }
    if ( document.getElementById( "newAnnouncement.showTitle" ).checked == true ) {
        showTitle = true;
    } else {
        showTitle = false;
    }
    //alert("content is : " + content );
    var announcement = {
        "content": content,
        "title": title,
        "active": isActive,
        "showTitle": showTitle
    };
    //execute remote method
    var defered = service.addAnnouncement(announcement, vDate );
    //var defered = service.execute();
    //attach callback to defered object
    defered.addCallback(callback);
}

function showSelected(){
    var dropdownIndex = document.getElementById('announcementIdsControl').selectedIndex;
    var dropdownValue = document.getElementById('announcementIdsControl')[dropdownIndex].value;

    var callback = function( ann ) {
        document.getElementById( "announcement.title" ).value = ann.title;
        document.getElementById( "announcement.content" ).value = ann.content;
        //dijit.byID(self, id) .byId( "announcement.content" ).setValue( ann.content );
        document.getElementById( "announcement.active" ).checked = ann.active;
        document.getElementById( "announcement.showTitle" ).checked = ann.showTitle;
        var dateObj = ann.expirationDate;
        var dojoObj = dojo.widget.byId( "announcement.expirationDate" );
        dojoObj.setDate( dateObj );
    }
    var defered = service.getAnnouncement( dropdownValue );

    defered.addCallback(callback);
}

function up(){
    var aids = document.getElementById('announcementIdsControl');
    if( aids.length <2 )
        return;
    var dropdownIndex = document.getElementById('announcementIdsControl').selectedIndex;
    if(  dropdownIndex == 0 ){
        return;
    }
    var dropdownValue = document.getElementById('announcementIdsControl')[dropdownIndex].value;

    var defered = service.up( dropdownValue );

    var moveText1 = aids[dropdownIndex - 1 ].text;
    var moveText2 = aids[dropdownIndex].text;
    var moveValue1 = aids[dropdownIndex - 1 ].value;
    var moveValue2 = aids[dropdownIndex].value;

    aids[ dropdownIndex ].text = moveText1;
    aids[ dropdownIndex ].value = moveValue1;
    aids[ dropdownIndex - 1 ].text = moveText2;
    aids[ dropdownIndex - 1 ].value = moveValue2;
    aids.selectedIndex = dropdownIndex - 1; // Select the one that was selected before
}

function down(){
    var aids = document.getElementById('announcementIdsControl');
    if( aids.length <2 )
        return;
    var dropdownIndex = document.getElementById('announcementIdsControl').selectedIndex;
    if(  dropdownIndex == aids.length - 1 ){
        return;
    }
    var dropdownValue = document.getElementById('announcementIdsControl')[dropdownIndex].value;

    var defered = service.down( dropdownValue );

    var moveText1 = aids[dropdownIndex + 1 ].text;
    var moveText2 = aids[dropdownIndex].text;
    var moveValue1 = aids[dropdownIndex + 1 ].value;
    var moveValue2 = aids[dropdownIndex].value;

    aids[ dropdownIndex ].text = moveText1;
    aids[ dropdownIndex ].value = moveValue1;
    aids[ dropdownIndex + 1 ].text = moveText2;
    aids[ dropdownIndex + 1 ].value = moveValue2;
    aids.selectedIndex = dropdownIndex + 1; // Select the one that was selected before
}

function remove(){
    var dropdownIndex = document.getElementById('announcementIdsControl').selectedIndex;
    var dropdownValue = document.getElementById('announcementIdsControl')[dropdownIndex].value;
    document.getElementById('announcementIdsControl').remove( dropdownIndex );
    var defered = service.remove( dropdownValue );
    alert( "Announcement has been removed" );
}

function update(){
    var dropdownIndex = document.getElementById('announcementIdsControl').selectedIndex;
    var dropdownValue = document.getElementById('announcementIdsControl')[dropdownIndex].value;
    //function called when remote method returns
    var callback = function( ret ) {
        if( ret == true )
            alert( "Announcement has been updated" );
        else
            alert( "There was an error with the Announcement updat" );
    };

    var dojoObj = dojo.widget.byId( "announcement.expirationDate" );
    var dateObj = dojoObj.getDate();

    //parameter
    var vDate =  dateObj.getTime();

    var title = document.getElementById( "announcement.title" ).value;
    var content = document.getElementById( "announcement.content" ).value;
    var isActive;
    var showTitle;

    if( document.getElementById( "announcement.active" ).checked == true ) {
        isActive = true;
    } else {
        isActive = false;
    }
    if ( document.getElementById( "announcement.showTitle" ).checked == true ) {
        showTitle = true;
    } else {
        showTitle = false;
    }
    var announcement = {
        "content": content,
        "title": title,
        "active": isActive,
        "showTitle": showTitle
    };
    //execute remote method
    var defered = service.updateAnnouncement( dropdownValue, announcement, vDate );
    //var defered = service.execute();
    //attach callback to defered object
    defered.addCallback(callback);
}
