
var JOB_LIST_FILTER = "active";


function wui_updateJobList(){	
	if(wc_isUserLogged()) {
		
		var allJobs = wc_getAllProjectsJobs();
		if (allJobs.length!=0){
			if (JOB_FLAG == 0){
				JOB_FLAG = 1;
				for(var  k=(allJobs.length-1); k>=0; k--){
				if (isJobFinished(allJobs[k])){
					JOBFINISHED_LENGTH ++;
					}
				}
			
				wui_loadJobList(allJobs);
			}
			wui_loadJobList(allJobs);
		}
	else{
			$("#" + JOB_LIST_AREA).html("...");
			}
		}
	else{
		$("#" + JOB_LIST_AREA).html("...");
		}
	}	


function wui_loadJobList(allJobs) {
	
	// select jobs
	var jobs;
	if(JOB_LIST_FILTER=="active") jobs = wc_getActiveProjectJobs();
	if(JOB_LIST_FILTER=="running") jobs = wc_getRunningJobs();
	if(JOB_LIST_FILTER=="all") jobs = wc_getAllProjectsJobs();
	
	
	var input = new StringBuffer();
	input.appendln("<span id='wum-job-list' class='wum-alert-message center'>"+JOB_LIST_FILTER+ " Jobs</span>");
	// controls
	input.appendln("<table id='wum-job-filters'><tr>");
	input.appendln("	<td class='wum-job-filter active-jobs'><a id='wum-active-jobs-filter' href='javascript:void(0);'><img border='0' src='resources/images/icons/active_project.png'/></a></td>");
	input.appendln("	<td class='wum-job-filter all-jobs' ><a id='wum-all-jobs-filter' href='javascript:void(0);'><img border='0' src='resources/images/icons/all_projects.png'/></a></td>");
	input.appendln("	<td class='wum-job-filter running-jobs' ><a id='wum-running-jobs-filter' href='javascript:void(0);'><img border='0' src='resources/images/icons/running_jobs.png'/></a></td>");
	input.appendln("</tr></table>");
	input.appendln("<br><br>");
	
	// job list
	input.appendln("<table id='jobtable' class='wum-job-list'>");

	// create job list
	for(var  k=(jobs.length-1); k>=0; k--) {
		
		var job = jobs[k];
		
		input.appendln("<tr>");				
		input.appendln("	<td class='wum-job-marker'>&nbsp;</td>");
		input.appendln("	<td class='wum-job'>");		
		input.appendln("		<a class='wum-job " + wui_getJobClass(job) + "' href='JavaScript:void(0);' id = 'wum-job-"+job.jobId+"'>" + job.name+"</a><br>");
		input.appendln("		<font class='wum-job-time'>" + job.creationTime + "</font><br/>");		
		input.appendln("		<font class='wum-job-time'> -" + job.toolName + "-</font><br/>");
		input.appendln("		<div class='wum-job-time progressbar percentBar-" + job.jobId + "'><div id='percentageValue' class='z-index-correct wum-job-time' > " + job.percentage + "% </div> </div>");
		
		input.appendln("	</td>");
		input.appendln("</tr>");			
	};
	input.appendln("</table>");
	input.appendln("<br/>");
	// add to DOM
	$("#" + JOB_LIST_AREA).html(input.toString());	
	
	
	$(".active-jobs").simpleTooltip({
		title:"active jobs",ttbody:"", classType: "v-tooltip-general" 
	});
	
	$(".all-jobs").simpleTooltip({
		title:"all jobs",ttbody:"", classType: "v-tooltip-general" 
	});
	
	$(".running-jobs").simpleTooltip({
		title:"runnig jobs",ttbody:"", classType: "v-tooltip-general" 
	});
	
	if(jobs.length>0){
		$("#jobtable").addTablePager({results : 7,pagerScoope:"jobtable", page: JOB_PAGE_NUMBER , position : "bottom"});
	}
	
	$("#wum-active-jobs-filter").click(function(){ 		
		JOB_LIST_FILTER = "active";
		JOB_PAGE_NUMBER = 0;
		wui_updateJobList();		
	});	
	$("#wum-running-jobs-filter").click(function(){	
		JOB_LIST_FILTER = "running";
		JOB_PAGE_NUMBER = 0;
		wui_updateJobList();
	});
	$("#wum-all-jobs-filter").click(function(){	
		JOB_LIST_FILTER = "all";
		JOB_PAGE_NUMBER = 0;
		wui_updateJobList();
	});
	
	var aux =0;
	for(var  k=(jobs.length-1); k>=0; k--) {
		var job = jobs[k];
		var idJobLink = "#wum-job-"+ job.jobId;
		var barContainer = ".percentBar-"+ job.jobId;
		if(isJobRunning(job)){
			$(barContainer).progressbar({value:0});
			$(barContainer).progressbar('value',[job.percentage]);
			
			$(idJobLink).click(function(){		
				$("#" + TITLE_AREA).html("RESULTS");
				$("#" + JOB_RESULTS_AREA).html("it`s running..." + "\n");
			});
			
		}
		if(isJobQueued(job)){
			$(barContainer).html(" waiting in the queue...");
			$(idJobLink).click(function(){		
				$("#" + TITLE_AREA).html("RESULTS");
				$("#" + JOB_RESULTS_AREA).html(" waiting in the queue..." + "\n");
			});
		}
		if(isJobFinished(job)){
			$(barContainer).html(" finished and unvisited");
			$(idJobLink).click(function(){	
				openResult(TITLE_AREA, JOB_RESULTS_AREA, $(this).attr('id').split("-")[2], wc_getSessionCookie());
			});
			//aux ++;
		}
		if(isJobVisited(job)){
			$(barContainer).html(" " + job.visites + " visites");
			$(idJobLink).click(function(){
				openResult(TITLE_AREA, JOB_RESULTS_AREA, $(this).attr('id').split("-")[2], wc_getSessionCookie());
				//var jobEvent = RESULTS_FUNCTION + "(\"" + TITLE_AREA + "\", \"" + JOB_RESULTS_AREA + "\", " + $(this).attr('id').split("-")[2] + ",\"" + wc_getSessionCookie() + "\");";	
				
			});
		}
	}
	
	for(var  k=(allJobs.length-1); k>=0; k--){
	if (isJobFinished(allJobs[k])){
		aux ++;
	}
	
	
	}
	
	if((JOBFINISHED_LENGTH < aux)){
	
		//alert(JOBFINISHED_LENGTH + "sss"+wc_getActiveProjectJobs().lenght);
		$(".newJobIcon").remove();
		$("#iconSpanJob").append("<img class= 'newJobIcon' src='resources/images/icons/bell.png' alt='new active job' style='vertical-align:middle; '/>");
		$(".newJobIcon").fadeOut().fadeIn().fadeOut().fadeIn();
		
		$(".newJobIcon").simpleTooltip({
			title:"New job has finished",ttbody:"", classType: "v-tooltip-general" 
		});
		$("#job-list").children().effect("highlight", {}, 5000);
		JOBFINISHED_LENGTH = aux;
		
	}
		$("#job-list").click(function(){		
			$(".newJobIcon").remove();
		});

	
			
}

function wui_getJobClass(job){
	if (job.visites == -2) return "wum-job-queued";
	if (job.visites == -1) return "wum-job-running";
	else if (job.visites == 0) return "wum-job-finished";
	else if (job.visites > 0) return "wum-job-visited";
	else return "";
}

function wui_renameJob(id, name){
	 //dialog name
	 var dialog = "wum-rename-job-dialog";
	 var tdJob = "tdJobId-" + id ;
	 //create dialog
	 var input = new StringBuffer();
	 input.appendln( "<div id='"+ dialog +"' title='Rename job "+ name +"'>");	 	
	 input.appendln("<form>");	
	 input.appendln(	"<label class='wum-info-item'>New job name: </label>");
	 input.appendln(	"<input type='text' id='newName' />");
	 input.appendln("</form>");
	 input.appendln("</div>");
	 $("#wum-project-list").append(input.toString());
	 
	 
	// dialogatization (setting properties and functionality)
	 $("#"+dialog).dialog({
		 width: 450,
		 modal: true, 
		 buttons: {
		 //buttons functionality
		 'OK':  function() {
				 var newname = $("#newName").val();
				 if ($("#newName").val()==null || $("#newName").val()=="" ) {
					 $("#newName").addClass('ui-state-error');
		
				 } else {						
					 var callback = function(data){
						 $("#"+ tdJob).html(newname);
						 $("#"+ tdJob).effect("highlight", {}, 3000);		
					 };
					 var errorcallback =  function(data){		
						 alert(data);	
					 };
					 wc_renameJob(id, $("#newName").val(), callback,errorcallback);					 
					 closeDialog(dialog);
				 }
		 },

		 Cancel: function() {
			 closeDialog(dialog);
		 }		

	 }
	 });
}

function wui_createModalDelJob(id, name, container){
	 //dialog name 
	 var dialog = "wum-delete-job-dialog";
	 var Hidden = $("#newName").val();
	 var trJob = "trJob-" + id;
	 var input = new StringBuffer();
	 	
	 	input.appendln("<div id='" + dialog + "' title='DELETE JOB "+ name +"'>");
	 	input.appendln( "<div>&nbsp;</div>");
	 	input.appendln("<span id='iconSpanJob' style='margin-left: 5px; height: 100%; float: left;'>");
		input.appendln("<img class='app-icon' border='0' src='resources/images/icons/help_blue.png' style='vertical-align:middle'/>");
		input.appendln("</span>");
	 	input.appendln(	"<div>");
	 	input.appendln(		"<label class='wum-info-item'>"+ name + " will be delete from de database.</label><br/>");
	 	input.appendln(		"<label class='wum-info-item'>Press OK to continue or CANCEL to discard. </label>");
	 	input.appendln(	"</div>");		
		input.appendln("</div>");
	 
	 //append
	 $("#wum-project-list").append(input.toString());
	// dialogatization (setting properties and functionality)
	 $("#"+dialog).dialog({
		 width: 450,
		 modal: true, 
		 buttons: {
		
		 'OK':  function() {				
				 var errorcallback =  function(data){		
					 alert(data);	
				 };
				 var callback = function(data){			 
					 //remove tr job
					 $(container).remove();
					 };
					 
				wc_deleteJob(id, callback,errorcallback);
				 closeDialog(dialog);
			 },
		Cancel: function() {
		 closeDialog(dialog);
		 }
		 }
	});
}


function getJobRefFromLink(link,parent){
	var jobRef = {};
	jobRef.id = link.substring(link.lastIndexOf("-")+1, link.length);	
	jobRef.name = wc_getJobName(jobRef.id, parent);
	return jobRef;
}

