// GOAL


var goalformChanged = false;

function goalform_changed() {
	goalformChanged = false;
	if ( $('goalinfosubmit').disabled ) {
		$('goalinfosubmit').disabled = false;
	}
}


function goalform_show() {
	var i = 0;
	if ( $('goalform').className == 'brick' ) {
		goalform_hide(); // crazyone
	}
	$('goalnamefield').value = goal.name;
	$('goaldescriptfield').value = ( goal.descript ? goal.descript : '' );
	if ( $('goalpublicfield') ) {
		$('goalpublicfield').checked = goal.public == 1;
		$('goallockedfield').checked = goal.locked == 1;
		$('goalfeaturedfield').checked = goal.featured == 1;
	}
	if ( $('goalevalgraphicfield') ) {
		$('goalevalgraphicfield').checked = goal.evalgraphic == 1;
	}
	if ( $('goalevalsliderfield') ) {
		$('goalevalsliderfield').checked = goal.evalslider == 1;
	}
	if ( $('goalevaldualfield') ) {
		$('goalevaldualfield').checked = goal.evaldual == 1;
	}
	if ( $('goalevalquestionfield') ) {
		$('goalevalquestionfield').checked = goal.evalquestion == 1;
		$('goalsubmarksfield').checked = goal.submarks == 1;
	}
	if ( $('goaluseurlsfield' + goal.useurls) ) {
		$('goaluseurlsfield' + goal.useurls).checked = true;
	}
	goalformChanged = false;
	$('goalinfosubmit').disabled = true;
	// set the stage
	$('goalview').className = 'hidden';
	$('goalform').className = 'brick'; // crazyone
	$('goalnamefield').focus();
}

function goalform_hide() {
	if ( goalformChanged ) {
		if ( !confirm('You have changed the contents of this form, and did not click the Save button.\n\nAre you sure you wish to continue?') ) {
			return;
		}
		goalformChanged = false;
	}
	// set the stage
	$('goalview').className = 'brick';
	$('goalform').className = 'hidden'; // crazyone
}



function goalinfonotice_set(txt, cls) {
	if ( !cls ) cls = 'api_error';
	$('goalinfonotice').innerHTML = txt;
	$('goalinfonotice').className = cls;
}


function goalform_submit() {
	if ( !$('goalevalgraphicfield').checked && !$('goalevalsliderfield').checked && !$('goalevaldualfield').checked && !$('goalevalquestionfield').checked ) {
		// warn them that no eval types are selected
		if ( !confirm('WARNING:\n\nYou have not selected any Comparation Types. In order to reach the decision, at least one Comparation Type needs to be selected.\n\nSince no Comparation Types are selected, we will select "Question" for you.\n\nClick OK if you wish to continue with "Question" selected.\nClick Cancel if you wish to set the Comparation Type before saving.') ) {
			if ( $('goaladvanced').className == 'hidden' ) {
				$('goaladvanced').className = 'brick';
			}
			return;
		}
		$('goalevalquestionfield').checked = true;
	}
	bar_loader_show('Sending Data...');
	// return true; // don't use ajax
	new Ajax.Request(
		apiurl('goal'),
		{
			//method: 'get',
			parameters: $('goalinfoform').serialize(true),
			onSuccess: function(response) {
				var xml = api_handle(response);
				var res = node_value(xml.getElementsByTagName('res')[0]);
				if ( res == 1 ) {
					// hide edit goalinfo panel
					goalform_hide();
					// update array
					goal.name = $('goalnamefield').value;
					goal.descript = ( $('goaldescriptfield').value != '' ? $('goaldescriptfield').value : null );
					if ( $('goalpublicfield') ) {
						goal.public = ( $('goalpublicfield').checked ? 1 : 0 );
						goal.locked = ( $('goallockedfield').checked ? 1 : 0 );
						goal.featured = ( $('goalfeaturedfield').featured ? 1 : 0 );
					}
					if ( $('goalevalgraphicfield') ) {
						goal.evalgraphic = ( $('goalevalgraphicfield').checked ? 1 : 0 );
					}
					if ( $('goalevalsliderfield') ) {
						goal.evalslider = ( $('goalevalsliderfield').checked ? 1 : 0 );
					}
					if ( $('goalevaldualfield') ) {
						goal.evaldual = ( $('goalevaldualfield').checked ? 1 : 0 );
					}
					if ( $('goalevalquestionfield') ) {
						goal.evalquestion = ( $('goalevalquestionfield').checked ? 1 : 0 );
						goal.submarks = ( $('goalsubmarksfield').checked ? 1 : 0 );
					}
					if ( $('goaluseurlsfield0') ) {
						goal.useurls = ( $('goaluseurlsfield2').checked ? 2 : ( $('goaluseurlsfield1').checked ? 1 : 0 ) );
					}
					// and update labels with new stuff
					$('h1goalname').innerHTML = $('goalnamefield').value;
					$('goalnamelabel').innerHTML = $('goalnamefield').value;
					$('goaldescriptlabel').innerHTML = ( $('goaldescriptfield').value != '' ? $('goaldescriptfield').value : '<em>N/A</em>' );
					if ( $('goalpublicfield') ) {
						$('goalpubliclabel').innerHTML = ( $('goalpublicfield').checked ? 'Yes' : 'No' );
						$('goallockedlabel').innerHTML = ( $('goallockedfield').checked ? 'Yes' : 'No' );
						$('goalfeaturedlabel').innerHTML = ( $('goalfeaturedfield').checked ? 'Yes' : 'No' );
					}
					if ( document.title ) document.title = siteName + ': ' + $('goalnamefield').value;
				} else {
					var err = node_value(xml.getElementsByTagName('err')[0]);
					// goal edit (only!)
					if ( err == 237 ) {
						goalinfonotice_set('Please name your goal. You are the only person that will benefit from that; you will know how to recognize it. ;-)');
						$('goalnamefield').focus();
					} else if ( err == 239 ) {
						goalinfonotice_set('It looks like you have no permission to edit goals. We will have to refresh your page, because you should not be able to use this form.');
						window.location.reload(true);
					} else if ( err == 241 ) {
						goalinfonotice_set('It looks like you can not edit this goal, which can happen if the goal is not yours. If you wish to make a goal like this one, you can <a href="/goal.php?use=' + goal.code + '">use it to create your own</strong>.');
					} else if ( err == 253 ) {
						goalinfonotice_set('Goal not found. We will have to be redirected to your goals page.');
						window.location.href = '/goals.php';
					}
				}
			},
			onFailure: function() { bar_error_show('API call failed, something went wrong...') }
		}
	);
	return false;
}




/* sortables */
function updateOrderCrits() { return order_update('crit', sortableCritsOrder); }
function updateOrderAlts() { return order_update('alt', sortableAltsOrder); }

function order_update(prfx, prev) {
	var order = order_get(prfx);
	var changed = false;
	for ( var i = 0; i < order.length; i++ ) {
		if ( !prev[i] || order[i] != prev[i] ) {
			changed = true;
		}
	}
	if ( !changed ) return;
	bar_loader_show('Saving New Order...');
	if ( prfx == 'crit' ) {
		sortableCritsOrder = order;
	} else if ( prfx == 'alt' ) {
		sortableAltsOrder = order;
	}
	var params = {
		order: order.join(','),
		action: prfx,
		goal: goal.code
	};
	new Ajax.Request(
		apiurl('saveorder'),
		{
			//method: 'get',
			parameters: params,
			onSuccess: function(response) {
				var xml = api_handle(response);
				var res = node_value(xml.getElementsByTagName('res')[0]);
				if ( res == 1 ) {
					// do nothing here
				} else {
					var err = node_value(xml.getElementsByTagName('err')[0]);
					// alt add/edit
					if ( err == 269 ) {
						goalinfonotice_set('There was a problem updating the order, it looks like not all items were used. If you are using a non-common browser, please <a href="#" onclick="window.location.reload(true);return false;">refresh this page</a> in order to continue.');
						$('goalnamefield').focus();
					} else if ( err == 239 ) {
						goalinfonotice_set('It looks like you have no permission to edit goals. We will have to refresh your page, because you should not be able to use this form.');
						window.location.reload(true);
					} else if ( err == 241 ) {
						goalinfonotice_set('It looks like you can not edit this goal, which can happen if the goal is not yours. If you wish to make a goal like this one, you can <a href="/goal.php?use=' + goal.code + '">use it to create your own</strong>.');
					} else if ( err == 271 ) {
						goalinfonotice_set('There was a problem while updating the display order. Please try again, perhaps after refreshing the page. If it still does not work, please contact support.');
					} else if ( err == 253 ) {
						goalinfonotice_set('Goal not found. We will have to be redirected to your goals page.');
						window.location.href = '/goals.php';
					}
				}
			},
			onFailure: function() { bar_error_show('API call failed, something went wrong...') }
		}
	);
}

function order_get(prfx) {
	var rel = $(prfx + 'list');
	var divs = rel.getElementsByTagName('span');
	var r = [ ];
	for ( var i = 0; i < divs.length; i++ ) {
		var d = divs[i];
		if ( d.id && d.id.indexOf('namelabel') > -1 ) {
			var id = parseInt(d.id.replace(prfx, '').replace('namelabel', ''), 10);
			if ( !isNaN(id) ) {
				r.push(id);
			}
		}
	}
	return r;
}

function helpbox(state) {
	toggleClass('goalhelpswitch', 'brick', 'hidden');
	toggleClass('goalhelpbox', 'goalhelpbox', 'hidden');
	toggleClass('goalpagebox', 'goalpagebox', 'goalfullpagebox');
}

function evals_show(id) {
	var rel = $('goalevals' + id);
	if ( !rel ) return;
	// toggle it
	toggleClass('goalevals' + id, 'box', 'hidden');
	// if hidding
	if ( rel.className == 'hidden' ) {
		return;
	}
	// something else to show here?
	// 2DO: set disabled sliders or something
}

function results_show(id, page) {
	if ( !page ) page = 'goal';
	var rel = $(page + 'results' + id);
	if ( !rel ) return;
	// toggle it
	toggleClass(page + 'results' + id, 'box', 'hidden');
	// if hidding
	if ( rel.className == 'hidden' ) {
		var swfparent = $('chartobj' + id).parentNode;
		swfobject.removeSWF('chartobj' + id);
		if ( !$('chartobj' + id) ) {
			swfparent.appendChild(Builder.node('div', { id: 'chartobj' + id }));
		}
		return;
	}
	var realid = ( id == 'cid' ? $('evalresultscidurl').href.replace(/(.*&c=)/, '') : id );
	if ( realid > 0 ) {
		var title = 'Decision for criteria: ' + goal.crits[realid]['name'];
	} else {
		var title = 'Criteria comparison for goal: ' + goal.name;
	}
	// call chart
	amchart({
		type: 'pie',
		obj: 'chartobj' + id,
		id: 'chartobj' + id,
		url: '/chart.php?g=' + goal.code + '&c=' + realid,
		title: title
	});
	// set consistency ratio
	var cr = 0;
	if ( page == 'evalchart' ) { // evaluate page
		for ( var i in goal.results[realid] ) {
			cr = goal.results[realid][i]['cr'];
			break;
		}
/*	} else if ( page == 'goal' ) { // view goal page
		cr = goal.consistency[id];
	} else if ( page == 'goaldecision' ) { // decision page
		cr = goal.consistency[id];
*/	} else { // any other page?
		cr = goal.consistency[id];
	}
	if ( cr == 0 ) cr = .01;
	if ( id == 'cid' ) {
		updateCRSlider('cid', cr);
	} else {
		updateCRSlider('cid' + id, cr);
	}
}

function decision_show(chartId, objId) {
	var rel = $(objId);
	if ( !rel ) return;
	// toggle it
	toggleClass(objId, 'box', 'hidden');
	// if hidding
	if ( rel.className == 'hidden' ) {
		var swfparent = $('chartobj' + chartId).parentNode;
		swfobject.removeSWF('chartobj' + chartId);
		if ( !$('chartobj' + chartId) ) {
			swfparent.appendChild(Builder.node('div', { id: 'chartobj' + chartId }));
		}
		return;
	}
	// call chart
	amchart({
		type: 'pie',
		obj: 'chartobj' + chartId,
		id: 'chartobj' + chartId,
		url: '/chart.php?g=' + goal.code,
		title: 'Decision for goal: ' + goal.name
	});
	// set consistency ratio
	var cr = 0;
	if ( objId == 'evalchartresultsgid' ) { // evaluate page
		for ( var i in goal.decision ) {
			cr = goal.decision[i]['cr'];
			break;
		}
/*	} else if ( objId == 'goalresults' ) { // view goal page
		cr = goal.consistency.final;
	} else if ( objId == 'goaldecision' ) { // decision page
		cr = goal.consistency.final;
*/	} else { // any other page?
		cr = goal.consistency.final;
	}
	if ( cr == 0 ) cr = .01;
	updateCRSlider('gid', cr);
}

function updateCRSlider(slider, value) {
	var val = roundNumber(parseFloat(value), 2);
	// flip (only if it's like graphic)
	//value = 1 - value;
	// x
	//var x = value * 100;
	// y
	//var y = ( 1 - value ) * 100;

	//$(slider + 'evalqualfield').value = value;

	// set label
	if ( $(slider + 'crlabel') ) $(slider + 'crlabel').innerHTML = val;
	if ( $(slider + 'crlabelwarning') ) $(slider + 'crlabelwarning').innerHTML = val;

	// move image depending on the position
	if ( $(slider + 'crtrack') ) $(slider + 'crtrack').style.width = Math.round(val * 500) + 'px';

	if ( $(slider + 'crwarning') ) $(slider + 'crwarning').className = ( val > 0.5 ? 'crwarningbox' : 'hidden' );
}

function evallinks_toggle() {
	var show = ( goal.altscnt > 2 && goal.critscnt > 2 );
	// goal (cid=0)
	if ( $('goalevallink') ) {
		$('goalevallink').className = ( show ? 'inliner' : 'hidden' );
	}
	// crits (cid=*)
	for ( var i in goal.crits ) {
		if ( $('crit' + i + 'evallink') ) {
			$('crit' + i + 'evallink').className = ( show ? 'inliner' : 'hidden' );
		}
	}
	/*
	if ( $('') ) {
		$('').className = ( show ? 'inliner' : 'hidden' );
	}
	*/
}

