/**
***************************************************************************
*       @developed by 	Mediafamily SRL,
* 						web: http://www.mediafamily.ro
* 						email: office@mediafamily.ro
* 						address:	str Tudor Vladimirescu nr. 63/14, 540014, Targu Mures, Romania
*
*		Displays the ajax status messages (loading, Ok, Error)
*		This script make uses of prototype and scriptaculous JS libraries.
***************************************************************************
*/

var mPosX, mPoxY;

function showOkWindow(){

	// display the ajax return message at the cursord position
	msgContainer = $('ajax_result_box');
	msgContainer.style.display =  'block';
	msgContainer.innerHTML = '<img src="/images/ajax_ok.gif" width="16" height="16">';
	Effect.Fade('ajax_result_box');
}


function hideMsgWindow(){

	// show a X image
	msgContainer = $('ajax_result_box');
	msgContainer.innerHTML = '<img src="/images/ajax_error.gif" width="16" height="16">';
	Effect.Fade('ajax_result_box');
}


function showSpinnerWindow(){

	// show a X image
	msgContainer = $('ajax_result_box');
	msgContainer.style.display =  'block';
	msgContainer.innerHTML = '<img src="/images/spinner.gif" width="16" height="16">';
}

function getMousePosition(e) {

	var posx = 0;
	var posy = 0;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY) 	{
		posx = e.pageX;
		posy = e.pageY;
	}
	else if (e.clientX || e.clientY) 	{
		posx = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}

	mPosX = posx+15;
	mPosY = posy;

	// set the position of the message window
	msgContainer = $('ajax_result_box');
	msgContainer.style.left = mPosX  + 'px';
	msgContainer.style.top = mPosY  + 'px';
}

/**
 * @access public
 * @return void
 **/
function showPage(section){
	$(section).style.display =  'block';
}

/**
 * @access public
 * @return void
 **/
function hidePage(section){
	$(section).style.display =  'none';
}


/**
 *
 * @access public
 * @return void
 **/
function saveContentPage(event, responseDiv){
	getMousePosition(event);
	showSpinnerWindow();
	hidePage('edit'+responseDiv);
	var myAjax = new Ajax.Request(
		'/direct-ecisions-saveoption',
		{
			method: 'post',
			postBody: $('FecOption'+responseDiv).serialize(),
			onComplete: showPageResponse,
			onFailure: hideMsgWindow,
			onException: hideMsgWindow
		});
	return false;
}

/**
 *
 * @access public
 * @return void
 **/
function showPageResponse(response){
	var s = response.responseText;
	var t = s.split('#!#');
	$('CecOption'+t[0]).innerHTML = t[1];
	showOkWindow();
}

/*--------------------------------------- links operation ---------------------------------------*/


/**
 * If user add dynamic N Links then he call this function to fill the data in the DOM and using these data later for their modification process
 * @access public
 * @return void
 **/
function loadNew_Links_Page(section, optionID){
	resetNew_Link_Page(optionID);
	resetButtonLnkPage('mod', optionID);
	eval("document.forms.FecOption"+optionID+".selectedFieldLink.value = "+section+";");
	eval("document.forms.FecOption"+optionID+".url.value = document.forms.link"+optionID+"_"+section+".url.value");
	eval("document.forms.FecOption"+optionID+".urlname.value = document.forms.link"+optionID+"_"+section+".urlname.value");
eval("document.forms.FecOption"+optionID+".comment.value = document.forms.link"+optionID+"_"+section+".comment.value");
	showPage('edit'+optionID);
}


/**
 * If user press the "Delete" link for "Link/comments"
 * @access public
 * @return void
 **/
function deleteNew_Links_Page(did, section, optionID){
	var myAjax = new Ajax.Request(
		'/direct-ecisions-delete',
		{
			method: 'post',
			postBody: 'field=link&did='+did+'&oid='+optionID+'&link_id='+section,
			onComplete: deleteNewLinks_Response,
			onFailure: hideMsgWindow,
			onException: hideMsgWindow
		});
	return false;
}

/**
 * If user add dynamic N Links then he call this function to fill the data in the DOM and using these data later for their modification process
 * @access public
 * @return void
 **/
function deleteNewLinks_Response(response){
	var s = response.responseText;
	var t = s.split('#');
	eval("document.forms.FecOptionUrl"+t[0]+".selectedFieldLink.value = '';");
	$('CecOptionUrl'+t[0]).removeChild($('Url'+t[0]+'_'+t[1]));
}

/**
 * Reset all the fields for links items of option
 * @access public
 * @return void
 **/
function resetNew_Link_Page(optionID){
	eval("document.forms.FecOption"+optionID+".selectedFieldLink.value = ''");
	eval("document.forms.FecOption"+optionID+".url.value='http://'");
	eval("document.forms.FecOption"+optionID+".urlname.value=''");
eval("document.forms.FecOption"+optionID+".comment.value=''");
}

/**
 * Reset the action buttons used to add or modify something
 * @access public
 * @return void
 **/
function resetButtonLnkPage(status, optionID){
	if(status == 'new'){
		document.getElementById('addLink'+optionID).style.display =  'inline';
		document.getElementById('modLink'+optionID).style.display =  'none';
	}
	else if(status == 'mod'){
		document.getElementById('addLink'+optionID).style.display =  'none';
		document.getElementById('modLink'+optionID).style.display =  'inline';
	}
}

/**
 *
 * @access public
 * @return void
 **/
function saveNew_Links_ContentPage(event, responseDiv){
	getMousePosition(event);
	showSpinnerWindow();
	hidePage('edit'+responseDiv);
	var myAjax = new Ajax.Request(
		'/direct-ecisions-saveoption',
		{
			method: 'post',
			postBody: $('FecOption'+responseDiv).serialize(),
			onComplete: showNewPage_Links_Response,
			onFailure: hideMsgWindow,
			onException: hideMsgWindow
		});
	return false;
}

/**
 * If user press the "Modify" button for links
 * @access public
 * @return void
 **/
function saveMod_Links_ContentPage(event, responseDiv){
	getMousePosition(event);
	showSpinnerWindow();
	hidePage('edit'+responseDiv);
	var myAjax = new Ajax.Request(
		'/direct-ecisions-saveoption',
		{
			method: 'post',
			postBody: $('FecOption'+responseDiv).serialize(),
			onComplete: showModPage_Links_Response,
			onFailure: hideMsgWindow,
			onException: hideMsgWindow
		});
	return false;
}

/**
 *
 * @access public
 * @return void
 **/
function showNewPage_Links_Response(response){
	var s = response.responseText;
	//must be added some option details before saving the criteria
	if(s == '4'){
		alertMsg_Response(response);
		showOkWindow();
		return;
	}
	var canvasTemp = document.createElement('DIV');
	var t = s.split('#!#');
	resetNew_Link_Page(t[0]);
	canvasTemp.id = t[0]+"_" + eval("document.forms.FecOption"+t[0]+".nextField.value");
	canvasTemp.innerHTML = t[1];
	$('CecOption'+t[0]).appendChild(canvasTemp);//canvasTemp.innerHTML;
	var nextField = parseInt(eval("document.forms.FecOption"+t[0]+".nextField.value"), 10) + 1;
	eval("document.forms.FecOption"+t[0]+".nextField.value = " + nextField);
	showOkWindow();
}

/**
 *
 * @access public
 * @return void
 **/
function showModPage_Links_Response(response){
	var s = response.responseText;
	var t = s.split('#!#');
	$(t[0]+'_'+	eval("document.forms.FecOption"+t[0]+".selectedFieldLink.value")).innerHTML = t[1];
	resetNew_Link_Page(t[0]);
	resetButtonLnkPage('new', t[0]);
	showOkWindow();
}

/*------------------------------------ criteria page -----------------*/
/**
 * Reset the action buttons used to add or modify something
 * @access public
 * @return void
 **/
function resetButtonCritPage(status, optionID){
	if(status == 'new'){
		document.getElementById('add'+optionID).style.display =  'inline';
		document.getElementById('mod'+optionID).style.display =  'none';
	}
	else if(status == 'mod'){
		document.getElementById('add'+optionID).style.display =  'none';
		document.getElementById('mod'+optionID).style.display =  'inline';
	}
}

/**
 * Reset all the fields for criteria items of one option
 * @access public
 * @return void
 **/
function resetNew_Crit_Page(optionID){
	eval("document.forms.FecOption"+optionID+".selectedFieldCrit.value = ''");
	eval("document.forms.FecOption"+optionID+".criteria_name.value = ''");
	eval("document.forms.FecOption"+optionID+".comment.value = ''");
	eval("document.forms.FecOption"+optionID+".rating.value = '1'");
}

/**
 *
 * @access public
 * @return void
 **/
function saveNew_Crit_ContentPage(event, responseDiv){
	getMousePosition(event);
	showSpinnerWindow();
	hidePage('edit'+responseDiv);
	var myAjax = new Ajax.Request(
		'/direct-ecisions-saveoption',
		{
			method: 'post',
			postBody: $('FecOption'+responseDiv).serialize(),
			onComplete: showNewPage_Crit_Response,
			onFailure: hideMsgWindow,
			onException: hideMsgWindow
		});
	return false;
}

/**
 *
 * @access public
 * @return void
 **/
var rowCriteria = 1;
function showNewPage_Crit_Response(response){
	var s = response.responseText;
	//must be added some option details before saving the criteria
	if(s == '4'){
		alertMsg_Response(response);
		showOkWindow();
		return;
	}
	var canvasTemp = document.createElement('DIV');
	var t = s.split('#!#');
	resetNew_Crit_Page(t[0]);
	canvasTemp.id = t[0] + "_" + eval("document.forms.FecOption"+t[0]+".rowCriteria.value");
	canvasTemp.innerHTML = t[1];
	rowCriteria++;

	var replaceKEY = new RegExp("#optionID#", "g");
	var replaceKEY2 = new RegExp("_optionIDGlobal", "g");
	var results = $('newOptionArea').innerHTML.match(new RegExp("optionItem_(\\d+)", "gmi"));


	for(var i=0; i<results.length; i++){
	 	oid = results[i].match(new RegExp("\\d+"));
	    if(t[0] != 'Criteria'+oid){
			var canvasTemp2 = document.createElement('DIV');
			canvasTemp2.id = 'Criteria'+oid+'_'+eval("document.forms.FecOption"+t[0]+".rowCriteria.value");
			var newCriteria = t[2].replace(replaceKEY, oid);
			newCriteria = newCriteria.replace(replaceKEY2, oid);
			canvasTemp2.innerHTML = newCriteria;
			$('CecOptionCriteria'+oid).appendChild(canvasTemp2);
			eval("document.forms.FecOptionCriteria"+oid+".rowCriteria.value = "+ rowCriteria);
		}//end if
	}
	$('CecOption'+t[0]).appendChild(canvasTemp);//canvasTemp.innerHTML;
	//create a dinamic template backup for all criteria inserted. This is usefull because of the dinamic loading of criterias and no PHP script request
	//each time a new option is created this criteria template is inserted.
	var globalCriteriaCanvas = document.createElement('DIV');
	globalCriteriaCanvas.id = 'Criteria#optionID#_' + eval("document.forms.FecOption"+t[0]+".rowCriteria.value");
	globalCriteriaCanvas.innerHTML = t[2];
	eval("document.forms.FecOption"+t[0]+".rowCriteria.value = "+ rowCriteria);
	$('CecOptionCriteriaGlobal').appendChild(globalCriteriaCanvas);
	refreshBestMatches();
	showOkWindow();
}
/**
 * If user add dynamic N Criterias then he call this function to fill the data in the DOM and using these data later for their modification process
 * @access public
 * @return void
 **/
function loadNew_Crit_Page(section, optionID){
	resetNew_Crit_Page(optionID);
	resetButtonCritPage('mod', optionID);
	eval("document.forms.FecOption"+optionID+".selectedFieldCrit.value="+section);
	eval("document.forms.FecOption"+optionID+".criteria_name.value = document.forms.critForm"+optionID+"_"+section+".criteria_name.value");
	eval("document.forms.FecOption"+optionID+".comment.value = document.forms.critForm"+optionID+"_"+section+".comment.value");
	eval("document.forms.FecOption"+optionID+".rating.value = document.forms.critForm"+optionID+"_"+section+".rating.value");
	showPage('edit'+optionID);
}

/**
 * If user press the "Delete" link for "criteria"
 * @access public
 * @return void
 **/
function deleteNew_Crit_Page(did, section, optionID){
	var myAjax = new Ajax.Request(
		'/direct-ecisions-delete',
		{
			method: 'post',
			postBody: 'field=criteria&did='+did+'&oid='+optionID+'&cid='+section,
			onComplete: deleteNewCriteria_Response,
			onFailure: hideMsgWindow,
			onException: hideMsgWindow
		});
	return false;
}

/**
 * If user add dynamic N Criterias then he call this function to fill the data in the DOM and using these data later for their modification process
 * @access public
 * @return void
 **/
function deleteNewCriteria_Response(response){
	var s = response.responseText;
	var t = s.split('#');
	eval("document.forms.FecOptionCriteria"+t[0]+".selectedFieldCrit.value = ''");
	$('CecOptionCriteria'+t[0]).removeChild($('Criteria'+t[0]+'_'+t[1]));

	//updating the criteria name for all options
	var results = $('newOptionArea').innerHTML.match(new RegExp("optionItem_(\\d+)", "gmi"));
	for(var i=0; i<results.length; i++){
		oid = results[i].match(new RegExp("\\d+"));
		if(t[0] != oid){
			$('CecOptionCriteria'+oid).removeChild($('Criteria'+oid+'_'+t[1]));
		}//end if
	}
	$('CecOptionCriteriaGlobal').removeChild($('Criteria#optionID#_'+t[1]));
	refreshBestMatches();
}

/**
 * If user press the "Modify" button for links
 * @access public
 * @return void
 **/
function saveMod_Crit_ContentPage(event, responseDiv){
	getMousePosition(event);
	showSpinnerWindow();
	hidePage('edit'+responseDiv);
	var myAjax = new Ajax.Request(
		'/direct-ecisions-saveoption',
		{
			method: 'post',
			postBody: $('FecOption'+responseDiv).serialize(),
			onComplete: showModPage_Crit_Response,
			onFailure: hideMsgWindow,
			onException: hideMsgWindow
		});
	return false;
}

/**
 *
 * @access public
 * @return void
 **/
function showModPage_Crit_Response(response){
	var s = response.responseText;
	var t = s.split('#!#');
	//replacing the criteria item with the new value. Only for the selected
	$(t[0]+'_'+eval("document.forms.FecOption"+t[0]+".selectedFieldCrit.value")).innerHTML = t[1];
	//updating the criteria name for all options
	var results = $('newOptionArea').innerHTML.match(new RegExp("optionItem_(\\d+)", "gmi"));
	for(var i=0; i<results.length; i++){
		oid = results[i].match(new RegExp("\\d+"));
		if(t[0] != 'Criteria'+oid){
			$('nameCriteria'+eval("document.forms.FecOption"+t[0]+".selectedFieldCrit.value")+'_'+oid).innerHTML = eval("document.forms.FecOption"+t[0]+".criteria_name.value");
			eval("document.forms.critFormCriteria"+oid+"_"+eval("document.forms.FecOption"+t[0]+".selectedFieldCrit.value")+".criteria_name.value = document.forms.FecOption"+t[0]+".criteria_name.value");
			eval("document.forms.critFormCriteria"+oid+"_"+eval("document.forms.FecOption"+t[0]+".selectedFieldCrit.value")+".rating.value = document.forms.FecOption"+t[0]+".rating.value");
		}//end if
	}
	$('nameCriteria'+eval("document.forms.FecOption"+t[0]+".selectedFieldCrit.value")+'_#optionID#').innerHTML = eval("document.forms.FecOption"+t[0]+".criteria_name.value");
	eval("document.forms.critFormCriteria_optionIDGlobal_"+eval("document.forms.FecOption"+t[0]+".selectedFieldCrit.value")+".criteria_name.value = document.forms.FecOption"+t[0]+".criteria_name.value");
	eval("document.forms.critFormCriteria_optionIDGlobal_"+eval("document.forms.FecOption"+t[0]+".selectedFieldCrit.value")+".rating.value = document.forms.FecOption"+t[0]+".rating.value");

	resetNew_Crit_Page(t[0]);
	resetButtonCritPage('new', t[0]);
	refreshBestMatches();
	showOkWindow();
}

/*----------------------------- add new option---------------------------------------------------*/
/**
 * This function add a new option Item into the DOM using the template placed at the bottom of page
 * This function parse the template and replace some KEY ELEMENTS with a new optionID - temporary number
 * @access public
 * @return void
 **/
var optionItem = 0;
function addNewOption(did){
	optionItem++;
	var canvasTemp = document.createElement('DIV');
	canvasTemp.id = "optionItem_" + (optionItem);
	var htmlTpl = document.getElementById('optionTpl').innerHTML;
	var replaceKEY = new RegExp("#optionID#", "g");
	canvasTemp.innerHTML = htmlTpl.replace(replaceKEY, optionItem);
	//$('newOptionArea').appendChild(canvasTemp);
	$('newOptionArea').insertBefore(canvasTemp,$('newOptionArea').firstChild);
	addOptTitle(optionItem);
	addOptComment(optionItem);
	loadAllCriterias(optionItem);
	//initialize a new option with the remaining, actual, criteria number.
	eval("document.forms.FecOptionCriteria"+optionItem+".rowCriteria.value = "+ rowCriteria);
}

/**
 * Loading all criterias for one new option
 * @access public
 * @return void
 **/
function loadAllCriterias(oid){
	var replaceKEY = new RegExp("_optionIDGlobal", "g");
	var html = $('CecOptionCriteriaGlobal').innerHTML.replace(replaceKEY, oid);
	var replaceKEY = new RegExp("#optionID#", "g");
	$('CecOptionCriteria'+oid).innerHTML = html.replace(replaceKEY, oid);
}//end function loadAllCriterias


/**
 * If user press the "Delete" link for option
 * @access public
 * @return void
 **/
function deleteNewOption(did, optionID){
	var myAjax = new Ajax.Request(
	'/direct-ecisions-delete',
	{
		method: 'post',
		postBody: 'field=option&did='+did+'&oid='+optionID,
		onComplete: deleteNewOption_Response,
		onFailure: hideMsgWindow,
		onException: hideMsgWindow
	});
	return false;
}

function deleteNewOption_Response(response){
	var s = response.responseText;
	var t = s.split('#!#');
	$('newOptionArea').removeChild($('optionItem_'+t[0]));
	//if no options exist I remove the template option criterias also
	if(t[1] <= 0){
		$('CecOptionCriteriaGlobal').innerHTML = '';
	}
	refreshBestMatches();
}


/*
 * checking if some mandatory fields are have value inserted
 * @access public
 * @return void
*/
function checkFields(did, area){
	document.forms.decForm.title.value = document.getElementById('title_f').value;
	if(area == 'category'){
		var myAjax = new Ajax.Request(
		'/direct-ecisions-checkMandatoryFields',
		{
			method: 'post',
			postBody: 'did='+did+'&title='+document.getElementById('title_f').value,
			onComplete: alertMsgCategory_Response,
			onFailure: hideMsgWindow,
			onException: hideMsgWindow
		});
	}
	else {
		var myAjax = new Ajax.Request(
		'/direct-ecisions-checkMandatoryFields',
		{
			method: 'post',
			postBody: 'did='+did+'&title='+document.getElementById('title_f').value,
			onComplete: alertMsg_Response,
			onFailure: hideMsgWindow,
			onException: hideMsgWindow
		});
	}
	return false;
}

/*
* Checking if some mandatory fields are filled before saving a decision
* 1 = mandatory title decision
* 2 = mandatory option, less 1
* 3 = mandatory option title for a decision: user added a link but didn't specify the title option
* 4 = mandatory option title for a decision: user added a criteria but didn't specify the title option
* 5 = User must add LESS 2 CRITERIAS for one decision
*/
function alertMsgCategory_Response(response){
	var s = response.responseText;
	var submitForm = true;
	if(s != 1){
		submitForm = false;
		alert("- "+eval("document.forms.decForm.error_"+s+".value"));
	}
	return submitForm;
}


/*
* Checking if some mandatory fields are filled before saving a decision
* 1 = mandatory title decision
* 2 = mandatory option, less 1
* 3 = mandatory option title for a decision: user added a link but didn't specify the title option
* 4 = mandatory option title for a decision: user added a criteria but didn't specify the title option
* 5 = User must add LESS 2 CRITERIAS for one decision
*/
function alertMsg_Response(response){
	var s = response.responseText;
	if(s != 1){
		submitForm = false;
		alert("- "+eval("document.forms.decForm.error_"+s+".value"));
	}
	else {
		document.forms.decForm.submit();
	}
	return submitForm;
}

/*
 * Sending a keyword tot the server and return results number
 * @access public
 * @return void
*/
function sugestDecisions(event, keyword){
	getMousePosition(event);
	showSpinnerWindow();
	var myAjax = new Ajax.Request(
	'/direct-ecisions-search',
	{
		method: 'post',
		postBody: 'keyword='+keyword+'&limit=15&sugest=1',
		onComplete: sugestDecisions_Response,
		onFailure: hideMsgWindow,
		onException: hideMsgWindow
	});
	return false;
}//end function sugestDecisions

function sugestDecisions_Response(response){
	var s = response.responseText;
	$('searchResults').innerHTML = s;
	showOkWindow();
}//end function sugestDecisions_Response

/*-------------------- working with best match ------------*/
/*
 * Displaying the "match best position" window
 * @access public
 * @return void
*/
function displayMatch(did, oid, event){
	getMousePosition(event);
	showSpinnerWindow();
	var myAjax = new Ajax.Request(
	'/direct-ecisions-loadCriteria',
	{
		method: 'post',
		postBody: 'oid='+oid+'&did='+did,
		onComplete: displayMatch_Response,
		onFailure: hideMsgWindow,
		onException: hideMsgWindow
	});
	return false;
}


function displayMatch_Response(response){
	$('editMatch').style.left = mPosX  + 'px';
	$('editMatch').style.top = mPosY  + 'px';
	var s = response.responseText;
	var t = s.split('#!#');
	$('editMatchForm').innerHTML = t[0];
	hideMsgWindow();
	showPage('editMatch');
}

/*
 * If the cancel button was press then all the hidden and input fields are reset
 * @access public
 * @return void
*/
function resetImportance(section){
	resetMatchForm(section);
	hidePage(section);
}

/*
 * Reseting the "match best position" window
 * @access public
 * @return void
*/
function resetMatchForm(section){
	$(section+'Form').innerHTML = '';
}

/*
 * Sending data to the server: new values for the important ratings
 * @access public
 * @return void
*/
function saveImportance(event){
	getMousePosition(event);
	showSpinnerWindow();
	hidePage('editMatch');
	var myAjax = new Ajax.Request(
		'/direct-ecisions-saveoption',
		{
			method: 'post',
			postBody: $('FecOptionMatch').serialize(),
			onComplete: saveImportance_Response,
			onFailure: hideMsgWindow,
			onException: hideMsgWindow
		});
	return false;
}

function saveImportance_Response(response){
	var s = response.responseText;
	var t = s.split('#!#');
	//alert(t);
	for(var i =0; i < (t.length-1); i++){
		var fields = t[i].split('::');
		eval("document.forms.critFormCriteria"+fields[0]+"_"+fields[1]+".rating.value="+fields[2]);
		eval("document.forms.critFormCriteria_optionIDGlobal_"+fields[1]+".rating.value="+fields[2]);
	}//end for
	refreshBestMatches();
	hideMsgWindow();
}

function refreshBestMatches(){
	var myAjax = new Ajax.Request(
		'/direct-ecisions-calcBestMaches',
		{
			method: 'post',
			postBody: 'did='+document.forms.decForm.did.value,
			onComplete: refreshBestMatches_Response,
			onFailure: hideMsgWindow,
			onException: hideMsgWindow
		});
	return false;
}//end function refreshBestMatchs()

function refreshBestMatches_Response(response){
	var s = response.responseText;
	var t = s.split('#!#');
	for(var i =0; i < (t.length-1); i++){
		var fields = t[i].split('::');
		if(fields[2] > 0){
			//alert('bm_status_'+fields[0]);
			$('bm_status_'+fields[0]).innerHTML = fields[1];
			$('bestMatchLabel_'+fields[0]).style.display = 'inline';
		}
		else {
			$('bm_status_'+fields[0]).innerHTML = '';
			$('bestMatchLabel_'+fields[0]).style.display = 'none';
		}
	}//end for
}//end function refreshBestMatches_Response

//------------------------ reference section -----------------------
/*
 * Open the references popup
 * @access public
 * @return void
*/
function displayRefer(refer, event){
	getMousePosition(event);
	showSpinnerWindow();
	hideMsgWindow();
	showPage(refer);
}//end function displayRefer

/*
 * If the cancel button was press then all the hidden and input fields are reset
 * @access public
 * @return void
*/
function resetRefer(section){
	resetReferForm();
	hidePage(section);
}

/*
 * Reseting the "match best position" window
 * @access public
 * @return void
*/
function resetReferForm(){
	document.forms.FecRefer.referID.value = '';
	document.forms.FecRefer.name.value = '';
	document.forms.FecRefer.url.value = 'http://';
	document.forms.FecRefer.comment.value = '';
}

/*
 * Sending data to the server: new values of the new reference
 * @access public
 * @return void
*/
function saveNew_Refer(event){
	getMousePosition(event);
	showSpinnerWindow();
	hidePage('editRefer');
	var myAjax = new Ajax.Request(
		'/direct-ecisions-saverefer',
		{
			method: 'post',
			postBody: $('FecRefer').serialize(),
			onComplete: saveRefer_Response,
			onFailure: hideMsgWindow,
			onException: hideMsgWindow
		});
	return false;
}

function saveRefer_Response(response){
	var s = response.responseText;
	var t = s.split('#!#');
	var tblId = 'referTbl';
	var tbl = document.getElementById(tblId);
	var newRow = tbl.insertRow(1);//insert a new row after the head of table
	var newCell_1 = newRow.insertCell(0);
	var newCell_2 = newRow.insertCell(1);
	var newCell_3 = newRow.insertCell(2);
	newCell_3.align = 'center';
	newCell_1.innerHTML = t[2];
	newCell_2.innerHTML = t[3];
	newCell_3.innerHTML = t[4];
	document.forms.FecRefer.position.value = t[1];
	$("refferHead").style.display="";
	resetReferForm();
	hideMsgWindow();
}

/*--comments for a decision--*/
/*
 * Open the references popup
 * @access public
 * @return void
*/
function displayComment(section, event){
	getMousePosition(event);
	showSpinnerWindow();
	hideMsgWindow();
	showPage(section);
}//end function displayRefer

/*
 * Sending data to the server: new values of the new comments
 * @access public
 * @return void
*/
function saveNew_Comment(event){
	getMousePosition(event);
	showSpinnerWindow();
	hidePage('editComment');
	var myAjax = new Ajax.Request(
		'/direct-ecisions-savecomment',
		{
			method: 'post',
			postBody: $('commentForm').serialize(),
			onComplete: saveComment_Response,
			onFailure: hideMsgWindow,
			onException: hideMsgWindow
		});
	return false;
}
function saveComment_Response(response){
	var s = response.responseText;
	var t = s.split('#!#');
	document.forms.commentForm.position.value = t[0];
	resetCommentForm();
	hideMsgWindow();
	var newLocation = window.location.href.replace(/#comments/g, "");
	document.forms['commentForm'].action = newLocation+'#comments';
	document.forms['commentForm'].submit();
}

/*
 * If the cancel button was press then all the hidden and input fields are reset
 * @access public
 * @return void
*/
function resetComment(section){
	resetCommentForm();
	hidePage(section);
}

/*
 * Reseting the "match best position" window
 * @access public
 * @return void
*/
function resetCommentForm(){
	document.forms.commentForm.commID.value = '';
	//document.forms.FecRefer.name.value = '';
	document.forms.commentForm.comment.value = '';
}


/**
 * If user press the "Delete" link for "criteria"
 * @access public
 * @return void
 **/
function deleteComment(commID, did){
	var myAjax = new Ajax.Request(
		'/direct-ecisions-savecomment',
		{
			method: 'post',
			postBody: 'operation=delete&commID='+commID+'&did='+did,
			onComplete: deleteComment_Response,
			onFailure: hideMsgWindow,
			onException: hideMsgWindow
		});
	return false;
}

/**
 * If user add dynamic N Links then he call this function to fill the data in the DOM and using these data later for their modification process
 * @access public
 * @return void
 **/
function deleteComment_Response(response){
	var s = response.responseText;
	var t = s.split('#!#');
	$('listComments').removeChild($('comm_'+t[1]));
	$('commNr').innerHTML = '('+t[2]+')';
}

/*
* Assign a category to decision
*/
function assignCategory(did, value, promote){
	if(promote)
		promote = 1;
	else
		promote = 0;
	var myAjax = new Ajax.Request(
		'/direct-ecisions-assignCateg',
		{
			method: 'post',
			postBody: 'did='+did+'&value='+value+'&promote='+promote,
			onComplete: assignCategory_Response,
			onFailure: hideMsgWindow,
			onException: hideMsgWindow
		});
	return false;
}//end function assignCategory

/*
* Returning the results of AJAX submition and setting up the submited categID like an old_value for the future assignation
*/
function assignCategory_Response(response){
	var s = response.responseText;
	var t = s.split('#!#');
}//end function assignCategory_Response

/*
* adding a check on all links. This verify if the user is in the "add new ecision" page and he tried to leave the page without saving data.
* He risk to loose all his entered data.
*/
var warningMsg = ''
var showWarning = true;
function addLinkCheck(msg) {
	warningMsg = msg;
	showWarning = true;
	for (var i = 0; i < document.getElementsByTagName("A").length; i++){
		if(!document.getElementsByTagName("A")[i].href.match('javascript'))
			document.getElementsByTagName("A")[i].onclick = function(){showWarning = false;};
	}//end for

}



