var CONST_ATTTAG 		= "htext";
var CONST_LINKTAG 		= "hlink";
var CONST_LABELCHANGETAG= "hfield";
var CONST_ATTID 		= "id";
var CONST_PLACEHOLDER 	= "div";
var CONST_LABELTAGS		= "div,th,h2";
var CONST_IMAGES 		= "img";
var CONST_TEXTID_END 	= "|";
var CONST_ERROR 		= "404";

var XML_FIELDDATA 		= "documents/field.xml";


function parseDocument(){
	var e = document;
    e = e.getElementsByTagName(CONST_PLACEHOLDER);	
    for(var i=0; i<e.length; i++){
		var a = e[i].getAttribute(CONST_ATTTAG);
		if(a != null){
			loadXML("documents/" + a + ".txt","fillContent");
		}
    }
}

function fillContent(s){
	var i = s.indexOf(CONST_TEXTID_END);
	var sID = Left(s, i);	
	var sVal = Right(s, s.length - (i + 1));
	setDocumentValue(sVal, sID);
}

function setDocumentValue(s, sid){
	var e = document;
    e = e.getElementsByTagName(CONST_PLACEHOLDER);
    for(var i=0; i<e.length; i++){
		var a = e[i].getAttribute(CONST_ATTTAG);
		var nid = e[i].getAttribute(CONST_ATTID);
		if(a == sid){
			document.getElementById(nid).innerHTML = s;
		}
    }
}

function openLink(s){
	loadXML_Return("documents/" + s + ".txt","openSesame");
}

/***************************FUNCTIONS TO SET HELP LINKS**********************************/

//PARSE LINKS IS USED TO SORT THROUGH THE IMAGES AND ADD IN THE PRPER LINKS
function parseLinks(s){
	var e = getTags(CONST_IMAGES);
	for(var i=0; i<e.length; i++){
		var a = e[i].getAttribute(CONST_LINKTAG);
		if(a != null){
			loadXML("documents/" + a + ".txt","setLink");
		}
    }
}

function setLink(s){
	
}

function openSesame(s){
	if(s != CONST_ERROR){
		var i = s.indexOf(CONST_TEXTID_END);
		var sID = Left(s, i);	
		var sVal = Right(s, s.length - (i + 1));
		window.open(sVal,'help_window');
	}else{
		alert("This help file does not currently exist");
	}
}
/**********************************************************************************************/



/********************FUNCTIONS USED TO POPULATE HEADER VALUES***********************/
function parseLabels(){
	loadXML(XML_FIELDDATA,"parseLabelData");
}
function parseLabelData(sxml){
	var s = CONST_LABELTAGS.split(",");
	for(var i=0; i<s.length; i++){
		var e = getTags(s[i]);
		for(var x=0; x<e.length; x++){
			var a = e[x].getAttribute(CONST_LABELCHANGETAG);
			if(a != null){
				var svalue = getXMLData(sxml, a, "field_id", "field_title");
				document.getElementById(e[x].getAttribute(CONST_ATTID)).innerHTML = svalue;
			}
		}
	}
}
function getXMLData(sxml,sdata,sfindin, sreturnfrom){
	var xmlDoc=createXML(sxml)
	var sreturn = "";
	
	var fields = xmlDoc.getElementsByTagName("fields");
	var fld = fields[0].getElementsByTagName("field");
	for(var i=0; i<fld.length; i++){
		var sid = fld[i].getElementsByTagName(sfindin)[0].childNodes[0].nodeValue;
		var sret = fld[i].getElementsByTagName(sreturnfrom)[0].childNodes[0].nodeValue;
		if(sid == sdata){
			sreturn = sret;
			i = fld.length
		}
	}
	return sreturn;
}

/**********************************************************************************************/

function getTags(s){
	var e = document;
    e = e.getElementsByTagName(s);
	return e;
}

/**************************GENERIC FUNCTIONS****************************/
function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}
function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}
/***************************************************************************/