/*******************************************************************************
** Function to delete all the rows in a table except the table header (0th row)
** @param {tableObj}
*******************************************************************************/
function deleteRowsInTable(tableObj) {

	var rowCount = 0;

	if(tableObj  && tableObj.rows) {
		rowCount = tableObj.rows.length;
	}
	for(i=rowCount-1; i>0; i--) {
		tableObj.deleteRow(i);
	}
}

/*******************************************************************************
** Function that is called to display all the raaga
** @param {Array} of RaagaVO
** @param {tableObj}
*******************************************************************************/
function displayRaagaList(result, displayTable) {

	var resultCount = 0;

	deleteRowsInTable(displayTable);

	if(result) {
		resultCount = result.length;

		for(i=0; i<resultCount; i++) {

			var rowCount = displayTable.rows.length;
			var newRow = displayTable.insertRow(rowCount);

			if(i%2==0) {
				newRow.className="even";
				newRow.onmouseover = function(){this.className='highlight';};
				newRow.onmouseout = function(){this.className='even';};
			}
			else {
				newRow.className="odd";
				newRow.onmouseover = function(){this.className='highlight';};
				newRow.onmouseout = function(){this.className='odd';};
			}

			var playScaleCell = newRow.insertCell(0);
			if(result[i].melakarthaNumber) {
				playScaleCell.innerHTML = "<a title ='Click here to play the scale' href='melakartha_audio/" + result[i].melakarthaNumber + ".mid'>Play</a>";
			}
			else {
				playScaleCell.innerHTML = '&nbsp;';
			}
			var raagaNameCell = newRow.insertCell(1);
			raagaNameCell.innerHTML = "<a title ='Click here to view songs of this raaga' href=\"search.html?txtQuery=" + result[i].raagaName + "&searchType=raaga\">" + addNBSP(result[i].raagaName) + "</a>";

			var aarohanamCell = newRow.insertCell(2);
			aarohanamCell.innerHTML = result[i].aarohanam;

			var avarohanamCell = newRow.insertCell(3);
			avarohanamCell.innerHTML = result[i].avarohanam;

			var linkCell = newRow.insertCell(4);
			if(result[i].link) {
				linkCell.innerHTML = "<a href='" + result[i].link + "'>Link</a>";
			}
			else {
				linkCell.innerHTML = "&nbsp;";
			}

			var avarohanamCell = newRow.insertCell(5);
			if(result[i].numberOfSongs !=0) {
				avarohanamCell.innerHTML = result[i].numberOfSongs;
			}
			else {
				avarohanamCell.innerHTML = '&nbsp;';
			}
		}
	}
	return resultCount;
}

/*******************************************************************************
** Function that is called to display the krithis for a given Raaga
** @param {raagaObj}
** @param {tableObj}
** @param {boolean} - showLink for the cells
*******************************************************************************/
function displayKrithiListByRaaga(raagaObj, displayTable, showLink) {

	var krithiList = raagaObj.krithiList;
	var resultCount = 0;

	deleteRowsInTable(displayTable);

	if(krithiList) {
		resultCount = krithiList.length;

		for(i=0; i<resultCount; i++) {

			var rowCount = displayTable.rows.length;
			var newRow = displayTable.insertRow(rowCount);

			if(i%2==0) {
				newRow.className="even";
				newRow.onmouseover = function(){this.className='highlight';};
				newRow.onmouseout = function(){this.className='even';};
			}
			else {
				newRow.className="odd";
				newRow.onmouseover = function(){this.className='highlight';};
				newRow.onmouseout = function(){this.className='odd';};
			}

			var krithiNameCell = newRow.insertCell(0);
			krithiNameCell.innerHTML = krithiList[i].krithiName.trim();

			var composerNameCell = newRow.insertCell(1);
			composerNameCell.innerHTML = addNBSP(krithiList[i].composer.trim());
		}
	}
	return resultCount;
}

/*******************************************************************************
** Function that is called to display the songs for a given Raaga
** @param {raagaObj}
** @param {tableObj}
** @param {boolean} - showLink for the cells
*******************************************************************************/
function displaySongListByRaaga(raagaObj, displayTable, showLink) {

	var songList = raagaObj.songList;
	var resultCount = 0;

	deleteRowsInTable(displayTable);

	if(songList) {
		resultCount = songList.length;

		for(i=0; i<resultCount; i++) {

			var rowCount = displayTable.rows.length;
			var newRow = displayTable.insertRow(rowCount);

			if(i%2==0) {
				newRow.className="even";
				newRow.onmouseover = function(){this.className='highlight';};
				newRow.onmouseout = function(){this.className='even';};
			}
			else {
				newRow.className="odd";
				newRow.onmouseover = function(){this.className='highlight';};
				newRow.onmouseout = function(){this.className='odd';};
			}

			var songNameCell = newRow.insertCell(0);
			songNameCell.innerHTML = songList[i].songName.trim();

			var filmNameCell = newRow.insertCell(1);
			if(showLink) {
				filmNameCell.innerHTML = "<a href=\"javascript:linkToFilm('" + songList[i].filmName.trim() + "')\">" + addNBSP(songList[i].filmName.trim()) + "</a>";
			}
			else {
				filmNameCell.innerHTML = addNBSP(songList[i].filmName.trim());
			}

			var singersCell = newRow.insertCell(2);
			if(songList[i].singers) {
				singersCell.innerHTML = songList[i].singers;
			}
			else {
				singersCell.innerHTML = "&nbsp;";
			}

			var raagaNameCell = newRow.insertCell(3);
			raagaNameCell.innerHTML = addNBSP(raagaObj.raagaName);
		}
	}
	return resultCount;
}

/*******************************************************************************
** Function that is called to display the songs based on array of FilmSongVO
*******************************************************************************/
function displaySongList(filmSongVOList, displayTable) {

	deleteRowsInTable(displayTable);

	if(filmSongVOList) {
		for(i=0; i<filmSongVOList.length; i++) {

			var rowCount = displayTable.rows.length;
			var newRow = displayTable.insertRow(rowCount);

			if(i%2==0) {
				newRow.className="even";
				newRow.onmouseover = function(){this.className='highlight';};
				newRow.onmouseout = function(){this.className='even';};
			}
			else {
				newRow.className="odd";
				newRow.onmouseover = function(){this.className='highlight';};
				newRow.onmouseout = function(){this.className='odd';};
			}

			var songNameCell = newRow.insertCell(0);

			if(filmSongVOList[i].songId && deployedLocally) {
				songNameCell.innerHTML = "<a href='javascript:soundManager.play(\"" + filmSongVOList[i].songId.trim() + "\");'>" + filmSongVOList[i].songName.trim() + "</a>";
			}
			else {
				songNameCell.innerHTML = filmSongVOList[i].songName.trim();
			}

			var filmNameCell = newRow.insertCell(1);
			filmNameCell.innerHTML = "<a title='Click here to view songs of this film' href=\"javascript:linkToFilm('" + filmSongVOList[i].filmName.trim() + "')\">" + addNBSP(filmSongVOList[i].filmName.trim()) + "</a>";

			var singersCell = newRow.insertCell(2);
			if(filmSongVOList[i].singers) {
				singersCell.innerHTML = filmSongVOList[i].singers;
			}
			else {
				singersCell.innerHTML = "&nbsp;";
			}

			var raagaNameCell = newRow.insertCell(3);
			raagaNameCell.innerHTML = "<a title ='Click here to view songs of this raaga' href=\"javascript:linkToRaaga('" + filmSongVOList[i].raagaName + "')\">" + addNBSP(filmSongVOList[i].raagaName) + "</a>";
		}
	}
}

/*****************************************************
** Function to display the list of IR films in a table
******************************************************/
function displayIRFilmList(filmYearVOList, displayTable) {

	deleteRowsInTable(displayTable);

	if(filmYearVOList) {
		for(i=0; i<filmYearVOList.length; i++) {

			var rowCount = displayTable.rows.length;
			var newRow = displayTable.insertRow(rowCount);

			if(i%2==0) {
				newRow.className="even";
				newRow.onmouseover = function(){this.className='highlight';};
				newRow.onmouseout = function(){this.className='even';};
			}
			else {
				newRow.className="odd";
				newRow.onmouseover = function(){this.className='highlight';};
				newRow.onmouseout = function(){this.className='odd';};
			}

			var yearCell = newRow.insertCell(0);
			yearCell.innerHTML = addNBSP(filmYearVOList[i].year);

			var filmNameCell = newRow.insertCell(1);
			filmNameCell.innerHTML = "<a title ='Click here to view songs from this film' href=\"search.html?txtQuery=" + filmYearVOList[i].filmName.trim() + "&searchType=film\">" + addNBSP(filmYearVOList[i].filmName) + "</a>";
		}
	}
}

/*****************************************************
** Function to sort the results based on relevance of song name
******************************************************/
function sortBySongRelevance(result, songName) {

	// TO DO to be implemented later
	return result;
}

/*****************************************************
** Function to add an option to a dropdown dynamically
******************************************************/
function addOption(selectbox,text,value )
{
	var optn = document.createElement("OPTION");
	optn.text = text;
	optn.value = value;
	selectbox.options.add(optn);
}
