function dnSubmitLink()
{
	var argv = dnSubmitLink.arguments;
	var argc = argv.length;

	var link = argv[0];
	if(argc > 1)
		for(counter = 1; counter < argc; counter++)
			link += "&dnpar" + counter + "=" + document.getElementById(argv[counter]).value;

	javascript:location.replace(link);
}

function dnSubmitForm()
{
	var argv = dnSubmitForm.arguments;
	var argc = argv.length;

	var form = argv[0];
	var link = argv[1];
	if(argc > 2)
		for(counter = 2; counter < argc; counter++)
			link += "&dnpar" + counter + "=" + document.getElementById(argv[counter]).value;

	form.action = link;
	form.submit();
}

function dnClearSelect()
{
	var argv = dnClearSelect.arguments;
	var argc = argv.length;

	if(argc < 1)
		return false;
	var control = argv[0];

	control.options.length = 0;

	return true;
}

function dnPopulateSelect()
{
	var argv = dnPopulateSelect.arguments;
	var argc = argv.length;

	if(argc < 1)
		return false;
	var control = argv[0];
	var labels  = argv[1];
	var values  = argv[2];
	if(!isArray(labels) || !isArray(values) || labels.length != values.length)
		return false;

	for(var counter = 0; counter < labels.length; counter++)
		control.options[counter] = new Option(labels[counter], values[counter]);

	return true;
}

function dnGetRadioChoice(control)
{
	control = trim(control);
	if(control == "")
		return "";

	var radio = document.getElementsByName(control);
	var len = radio.length;
	if(len == undefined)
		if(radio.checked)
			return radio.value;
		else
			return "";
	for(var counter = 0; counter < len; counter++)
	{
		if(radio[counter].checked)
			return radio[counter].value;
	}

	return "";
}

function dnSetRadioChoice(control, newvalue)
{
	control = trim(control);
	newvalue = trim(newvalue);
	if(control == "" || newvalue == "")
		return "";

	var radio = document.getElementsByName(control);
	var len = radio.length;
	if(len == undefined)
	{
		radio.checked = (radio.value == newvalue);
		return;
	}
	for(var counter = 0; counter < len; counter++)
	{
		radio[counter].checked = false;
		if(radio[counter].value == newvalue)
			radio[counter].checked = true;
	}
}

function dnSetElementVisibility(element, status)
{
	if(status)
	{
		element.style.visibility = 'visible';
	}
	else
	{
		element.style.visibility = 'hidden';
	};
	
	return true;
	
}

function dnCheckElements(elements)
{
	for(var counter = 0; counter < elements.length; counter++)
		if(trim(elements[counter].value) == "")	return false;

	return true;
}

function dnTextCounter(field, cntfield, maxlimit)
{
	if (field.value.length > maxlimit)
		field.value = field.value.substring(0, maxlimit);
	else
		cntfield.value = maxlimit - field.value.length;
}

function dnNormalizeString()
{
	var argv = dnNormalizeString.arguments;
	var argc = argv.length;
	var string, stringnorm, splitted, token;

	if(argc % 2 == 0)
	{
		for(counter = 0; counter < argc/2; counter++)
		{
			string = document.getElementById(argv[counter * 2]).value;
			if(string != "")
			{
				stringnorm = "";
				splitted = string.split(" ");
				for(i = 0; i < splitted.length; i++)
				{
					if(splitted[i].length > 0)
					{
						switch(parseInt(argv[(counter * 2) + 1]))
						{
							case 0:
								token  = splitted[i].substr(0, 1).toUpperCase();
								token += splitted[i].substr(1).toLowerCase();
							break;

							case 1:
								token = splitted[i].toUpperCase();
							break;

							case 2:
								token = splitted[i].toLowerCase();
							break;
						}
						if(i != 0)
							stringnorm += " ";
						stringnorm += token;
					}
				}
				document.getElementById(argv[counter * 2]).value = stringnorm;
			}
		}
	}
}

function dnLoaderOn(target)
{
	try
	{
		if(parent.visibilityToolbar) parent.visibilityToolbar.set_display("standbyDisplayNoControls");
	}
	catch(e)
	{}

	try
	{
		if(!target) target = this;
		target.document.getElementById("loaderContainer").style.display = "";
	}
	catch (e)
	{
		return false;
	}

	return true;
}

function dnLoaderOff(target)
{
	try
	{
		if(parent.visibilityToolbar) parent.visibilityToolbar.set_display(visibilityCount ? "standbyDisplay" : "standbyDisplayNoControls");
	}
	catch(e)
	{}

	try
	{
		if(!target) target = this;
		target.document.getElementById("loaderContainer").style.display = "none";
	}
	catch (e)
	{
		return false;
	}

	return true;
}

/* **************************************************************************** */
/* Defines CTabMnu Class                                                        */
/* **************************************************************************** */

function CTabMnu()
{
	this.sMnuBody = "";
}

CTabMnu.prototype.AddItemJSCode = function(sItem, iActive, sJSCode, bVisible)
{
	if(iActive == 1)
		this.sMnuBody += "<li id=\"active\">";
	else
		this.sMnuBody += "<li>";
	this.sMnuBody += "<a href=\"#\" onClick=\"" + sJSCode + "\"><span>&nbsp;" + sItem + "&nbsp;</span></a></li>\n";
}

CTabMnu.prototype.BuildMenu = function()
{
	sMnu  = "<ul id=\"dntabmnu\">\n";
	sMnu += this.sMnuBody;
	sMnu += "</ul>\n";

	return sMnu;
}

/* **************************************************************************** */
/* Defines Client to Server IDEC Ajax Class                                     */
/* **************************************************************************** */

function CIDECAjaxToServer()
{
	this.array = new Array(""); /* Instantiates an array and defines the default command */
}

CIDECAjaxToServer.prototype.SetCommand = function(value)
{
	this.array[0] = Base64.encode(encodeHTMLentities(value));

	return true;
}

CIDECAjaxToServer.prototype.AddItem = function(value)
{
	this.array.push(Base64.encode(encodeHTMLentities(value)));

	return true;
}

CIDECAjaxToServer.prototype.GetArray = function()
{
	return this.array;
}

/* **************************************************************************** */
/* Defines Client from Server IDEC Ajax Class                                   */
/* **************************************************************************** */
function CIDECAjaxFromServer(value)
{
	normalizeArray(value);
	this.array = value;
}

CIDECAjaxFromServer.prototype.CheckIfGood = function()
{
	return (this.array.length >= 2) ? true : false;
}

CIDECAjaxFromServer.prototype.GetResult = function()
{
	return (Base64.decode(this.array[0]) == "1") ? true : false;
}

CIDECAjaxFromServer.prototype.GetMessage = function()
{
	if(this.array[1] == "") return "";
	return decodeHTMLentities(Base64.decode(this.array[1]));
}

CIDECAjaxFromServer.prototype.GetItemsNo = function()
{
	return this.array.length - 2;
}

CIDECAjaxFromServer.prototype.GetItem = function(value)
{
	if(value >= this.array.length - 2) return "";
	if(this.array[value + 2] == "") return "";
	return decodeHTMLentities(Base64.decode(this.array[value + 2]));
}

/* **************************************************************************** */
/* Functions to manage curricula                                                */
/* **************************************************************************** */

function dnBuildProjectCode()
{
	/* Paramaters: type, progressive, revision */
	var argv = dnBuildProjectCode.arguments;
	var argc = argv.length;

	if(argc < 3)
		return "";

	var ptype       = document.getElementById(argv[0]).value;
	var progressive = document.getElementById(argv[1]).value;
	var revision    = document.getElementById(argv[2]).value;
	var code        = "";

	if(ptype == "" || progressive == "" || revision == "")
		return "";
	
	code += ptype;
	if(progressive.length < 2)
		code += '0';
	code += progressive;
	if(revision.length < 2)
		code += '0';
	code += revision;

	return code;
}

function dnBuildCurriculumCode()
{
	/* Paramaters: project, edition, year, agency */
	var argv = dnBuildCurriculumCode.arguments;
	var argc = argv.length;

	if(argc < 4)
		return "";

	var project = document.getElementById(argv[0]).value;
	var edition = document.getElementById(argv[1]).value;
	var year    = document.getElementById(argv[2]).value;
	var agency  = document.getElementById(argv[3]).value;
	var code    = "";

	if(project == "" || edition == "" || year == "" || agency == "")
		return "";

	code += project;
	if(edition.length < 2)
		code += '0';
	code += edition;
	if(year.length < 2)
		code += '0';
	code += year;
	code += agency;

	return code;
}

function dnBuildAreaCode()
{
	/* Paramaters: curriculum, tag, progressive */
	var argv = dnBuildAreaCode.arguments;
	var argc = argv.length;

	if(argc < 3)
		return "";

	var curriculum  = document.getElementById(argv[0]).value;
	var tag         = document.getElementById(argv[1]).value;
	var progressive = document.getElementById(argv[2]).value;
	var code        = "";

	if(curriculum == "" || tag == "" || progressive == "")
		return "";

	code += curriculum;
	code += tag;
	if(progressive.length < 2)
		code += '0';
	code += progressive;

	return code;
}

function dnBuildCourseCode()
{
	/* Paramaters: area, tag, progressive */
	var argv = dnBuildCourseCode.arguments;
	var argc = argv.length;

	if(argc < 3)
		return "";

	var area        = document.getElementById(argv[0]).value;
	var tag         = document.getElementById(argv[1]).value;
	var progressive = document.getElementById(argv[2]).value;
	var code        = "";

	if(area == "" || tag == "" || progressive == "")
		return "";

	code += area;
	code += tag;
	if(progressive.length < 2)
		code += '0';
	code += progressive;

	return code;
}

function dnBuildModuleCode()
{
	/* Paramaters: tag, progressive, revision */
	var argv = dnBuildModuleCode.arguments;
	var argc = argv.length;

	if(argc < 3)
		return "";

	var tag         = document.getElementById(argv[0]).value;
	var progressive = document.getElementById(argv[1]).value;
	var revision    = document.getElementById(argv[2]).value;
	var code        = "";

	if(tag == "" || progressive == "" || revision == "")
		return "";

	code += tag;
	if(progressive.length < 2)
		code += '0';
	code += progressive;
	if(revision.length < 2)
		code += '0';
	code += revision;

	return code;
}

