
function cellmousein(target_object, tip_type) {

	document.getElementById(target_object+'-view').style.display = 'none';
	document.getElementById(target_object+'-edit').style.display = 'block';

	tooltip(target_object,tip_type);

	setCursor(document.getElementById(target_object+'-edit'),1,1)

}
function cellmouseout(target_object) {
	document.getElementById(target_object+'-view').style.display = 'block';
	document.getElementById(target_object+'-edit').style.display = 'none';
		
	document.getElementById(target_object+'-view').innerHTML = document.getElementById(target_object+'-edit').value.replace(/\n/g,"<br />");
	destroytooltip();

}

function setCursor(el,st,end) { 
	if(el.setSelectionRange) { 
		el.focus(); 
		el.setSelectionRange(st,end); 
	} 
	else { 
		if(el.createTextRange) { 
			range=el.createTextRange(); 
			range.collapse(true); 
			range.moveEnd('character',end); 
			range.moveStart('character',st); 
			range.select();
		} 
	} 
}

function tooltip(target_object, tip_type) {
	document.getElementById('cellexplanation').style.display = 'block';
	
	if (document.getElementById(target_object+'-edit') != null) {	
		document.getElementById('cellexplanation').style.top = getY(document.getElementById(target_object+'-edit'));
		document.getElementById('cellexplanation').style.left = omghax(tip_type)+60;
	}
	else {
		document.getElementById('cellexplanation').style.top = getY(document.getElementById(target_object));
		document.getElementById('cellexplanation').style.left = omghax(tip_type)+60;
	}
	
	document.getElementById('cellexplanationtext').innerHTML = guidancetext(tip_type);
}
function destroytooltip() {
	document.getElementById('cellexplanation').style.display = 'none';
}

function omghax(tip_type) {
	if (tip_type == "outcome-guide" || tip_type == "output-guide" ) {return -40;}
	if (tip_type == "outcome" || tip_type == "output" ) {return 230;}
	if (tip_type == "goal") {return 400;}
	if (tip_type == "outcome-performance" || tip_type == "output-performance" ) {return 450;}
	if (tip_type == "baseline") {return 060;}
	if (tip_type == "outcome-target" || tip_type == "output-target" ) {return 150;}
	if (tip_type == "datasource") {return 240;}
	if (tip_type == "timeframe") {return 380;}
}

function getY( oElement )
{
	var iReturnValue = 0;
	while( oElement != null ) {
		iReturnValue += oElement.offsetTop;
		oElement = oElement.offsetParent;
	}
	return iReturnValue;
}
function getX( oElement )
{
	var iReturnValue = 0;
	while( oElement != null ) {
		iReturnValue += oElement.offsetLeft;
		oElement = oElement.offsetParent;
	}
	return iReturnValue;
}


function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
				curleft += obj.offsetLeft;
				curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	return curleft;
	}
}
function frameworkaddrow() {
	activerows[currentcontainer] = true;
	data[currentcontainer] = new Array(2);
	data[currentcontainer]['outcome']=0;
	data[currentcontainer]['output']=0;

	requestelement("row", currentcontainer, '');
	notificationbox("Loading New Row.");
	currentcontainer++;
}
function frameworkaddwork(type,placenumber) {

	data[placenumber][type]++;
	requestelement(type, placenumber, data[placenumber][type]);
	document.getElementById('container-' + placenumber).style.height = document.getElementById('container-' + placenumber).offsetHeight + 100;

}
function requestelement(type, placenumber, rownumber) {
	
	if (window.XMLHttpRequest) {
		xmlhttp=new XMLHttpRequest();
	}
	else {
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==4 && xmlhttp.status==200) {
			
			switch (type) {
				case 'row':
					document.getElementById('contentarea').innerHTML += xmlhttp.responseText;			
					notificationbox("Added Row.");
					break;
				case 'outcome':
					document.getElementById('outcome-rows-' + placenumber).innerHTML += xmlhttp.responseText;			
					notificationbox("Added Outcome.");
					break;
				case 'output':
					document.getElementById('output-rows-'+ placenumber).innerHTML += xmlhttp.responseText;			
					notificationbox("Added Output.");
					break;
			}
			
		}
	}
	xmlhttp.open("GET","style/php/create-row.php?placenumber=" + placenumber + "&type=" + type + "&rownumber=" + rownumber,true);
	xmlhttp.send();

	
}

function frameworkdeleterow(targetid) {

	activerows[targetid] = false;
	var body = document.getElementById("contentarea");
	var div = document.getElementById("container-"+targetid);
	body.removeChild(div);
	notificationbox("Deleted Row.");

/* 	document.getElementById('text-' + targetid).innerHTML = ""; //document.getElementById('frameworkconstruct').innerHTML + createframeworkrow(); */
}
function frameworkdeletecell(target, row, subrow) {
	
	document.getElementById( target + '-' + row + '-' + subrow ).style.display = "none";
	document.getElementById( target + '-' + row + '-' + subrow +'-state').value = 0;
	notificationbox("Deleted.");

}
function startup() {
	document.getElementById('goal').focus();
}

function save() {
	var i;
	var outcomeframework = [];
	
	for(i=0; i<activerows.length;i++) {
		if(activerows[i] == true) {
			
			var constructedoutput = [];
			var constructedoutcome = [];
						
			for (j=0; j<=data[i]['output']; j++) {
				if (document.getElementById('output-' + i + '-' + j +'-state').value == 1) {
					var constructedrow = {						
						"output-output" : document.getElementById('output-output-' + i + '-' + j + '-view').innerHTML,
						"output-performance" : document.getElementById('output-performance-' + i + '-' + j + '-view').innerHTML,
						"output-target" : document.getElementById('output-target-' + i + '-' + j + '-view').innerHTML,
						"output-datasource" : document.getElementById('output-datasource-' + i + '-' + j + '-view').innerHTML,
						"output-timeframe" : document.getElementById('output-timeframe-' + i + '-' + j + '-view').innerHTML
					};
					constructedoutput.push(constructedrow);
				}
			}
			for (j=0; j<=data[i]['outcome']; j++) {
				if (document.getElementById('outcome-' + i + '-' + j +'-state').value == 1) {
					var constructedrow = {
						"outcome-outcome" : document.getElementById('outcome-outcome-' + i + '-' + j + '-view').innerHTML,
						"outcome-performance" : document.getElementById('outcome-performance-' + i + '-' + j + '-view').innerHTML,
						"outcome-baseline" : document.getElementById('outcome-baseline-' + i + '-' + j + '-view').innerHTML,
						"outcome-target" : document.getElementById('outcome-target-' + i + '-' + j + '-view').innerHTML,
						"outcome-datasource" : document.getElementById('outcome-datasource-' + i + '-' + j + '-view').innerHTML,
						"outcome-timeframe" : document.getElementById('outcome-timeframe-' + i + '-' + j + '-view').innerHTML
					};
					constructedoutcome.push(constructedrow);
				}
			}
			var constructedrow = {
					"objective" : document.getElementById('objective-' + i).value,
					"output" : constructedoutput,
					"outcome" : constructedoutcome
				};
			outcomeframework.push(constructedrow);
		}
	}
	

	if (window.XMLHttpRequest) {
		xmlhttp=new XMLHttpRequest();
	}
	else {
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==4 && xmlhttp.status==200) {
			frameworkid = xmlhttp.responseText;
			
			notificationbox("Saved! " + new Date + '<br />You can return to this page through <a href="' + pageself + frameworkid + '">this link</a> or <a href="#" onclick="window.open( ' + "'./style/php/email.php?frameworkid=" + frameworkid + "','email','height=200,width=400')" + '">an email</a>.');
			if(isprinting) {
				window.open('/outcome/style/php/print.php?frameworkid='+ frameworkid,'printwindow','');
				isprinting = false;
			}
		}
	}
	xmlhttp.open("GET","style/php/save-framework.php?goal=" +  document.getElementById('goal').value + "&frameworkid="+ frameworkid + "&data="+ JSON.stringify(outcomeframework),true);
	xmlhttp.send();

}
function print() {
	isprinting = true;
	save();
}

function notificationbox(message) {
	document.getElementById('notificationbox').style.display = "block";
	document.getElementById('notificationbox').innerHTML = message;
}
