/******************************************************************************
* dtabClient.js
*******************************************************************************

*******************************************************************************
*                                                                             *
* Copyright 2000-2002								                          *
*                                                                             *
******************************************************************************/
function refreshTable(gid, cmd)
{
	var formName = "FORM" + gid;
	var form = document.forms[formName];
	if(form == null) {
		alert("no form");
		return;
	}
	if(form.tagName == null) {
		form = form[0];
		if(form == null) {
			alert("no form");
			return;
		}
	}
	var input = form["TABLECMD" + gid.substr(0,8)];
	if(input == null) {
		return;
	}
	input.value = input.value + cmd;
	form.submit();
}

function dtabCheckForm(gid, requiredTables, verbose, params)
{
	var formName = "dynForm" + gid;
	var form = document.forms[formName];
	if(form == null) {
		return;
	}
	if(form.tagName == null) {
		form = form[0];
		if(form == null) {
			return;
		}
	}
	var fieldMsg = null;
	var msg = "";
	for(var name in requiredTables) {
		var input = form[name];
		if(input == null) continue;
		var value;
		switch(input.tagName) {
		case "INPUT":
			value = input.value;
			break;
		case "TEXTAREA":
			value = input.value;
			break;
		case "SELECT":
			var option = input.options[input.selectedIndex];
			if(option != null) value = option.value;
			break;
		default:
			//alert(input.tagName);
			break;
		}
		if(value != "") continue;
		if(fieldMsg == null) {
			fieldMsg = requiredTables[name];
			msg = "missingField";
		} else {
			fieldMsg += ", " + requiredTables[name];
			msg = "missingFields";
		}
	}
	if(fieldMsg != null) {
		if(verbose) {
			msg = objThesaurus.translate(msg, fieldMsg);
			alert(msg);
		}
		return false;
	}
	if(params != null) {
		window.open("", "win" + gid , params);
	}
	form.submit();
	return false;
}

function initDate(gid, paramId, required, min, max, value, initIsNow)
{
	if(initIsNow  && required && (value == null || value == "")) { 
		var now = new Date();
		now.setHours(0);
		now.setMinutes(0);
		now.setSeconds(0);
		value = "" + now.getTime();
	}
	if(!required && (value == null || value == "")) return;
	var dates = value.split(" ");
	var v1 = parseInt(dates[0]);
	if(isNaN(v1)) v1 = min
	//else v1 *= 1000;
	if(v1 < min) v1 = min;
	if(v1 > max) v1 = max;
	var v2 = parseInt(dates[1]);
	if(isNaN(v2)) v2 = min;
	//else v2 *= 1000;
	if(v2 < min) v2 = min;
	if(v2 > max) v2 = max;
	if(v2 < v1) v2 = v1;
	var delta = v2 - v1;
	var date = new Date(v1);
	var formId = "dynForm" + gid;
	var dateId = paramId + "date";
	required = required == true;
	var form = document.forms[formId];
	if(form == null) return;
	var input = form[paramId];
	if(input.length != null) input = input[0];
	if(input == null) return;
	var yearInput = form[paramId + "year"];
	if(yearInput == null) return;
	var monthInput = form[paramId + "month"];
	var dayInput   = form[paramId + "day"];
	var hourInput  = form[paramId + "hour"];
	var shift = required ? 0 : 1;
	var minYear = parseInt(yearInput.options[shift].value);
	yearInput.selectedIndex = date.getFullYear() - minYear + shift;
	var level;
	var d1;
	if(delta > 86400 * 31 * 1000) {
		level = 3;
		d1 = new Date(date.getFullYear() + 1, 0, 1, 0);
	} else if(delta > 86400 * 1000) {
		level = 2;
		d1 = new Date(date.getFullYear(), date.getMonth() + 1, 1, 0);
	} else if(delta > 3600 * 1000) {
		level = 1;
		d1 = new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1, 0);
	} else {
		level = 0;
		d1 = new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours() + 1);
	}
	v1 = d1.getTime();
	if(v1 > max) d1 = new Date(max);
	input.value = date.getTime() + " " + d1.getTime();
	if(monthInput != null) {
		if(level <= 2) {
			monthInput.selectedIndex = date.getMonth() + 1;
		} else {
			monthInput.selectedIndex = 0;
		}		
	}
	if(dayInput != null) {
		if(level <= 1) {
			dayInput.selectedIndex = date.getDate() - 1 + 1;
		} else {
			dayInput.selectedIndex = 0;
		}		
	}
	if(hourInput != null) {
		if(level <= 0) {
			hourInput.selectedIndex = date.getHours() + 1;
		} else {
			hourInput.selectedIndex = 0;
		}
	}
}

function refreshDate(gid, paramId, control, required, min, max)
{
	var formId = "dynForm" + gid;
	var dateId = paramId + "date";
	required = required == true;
	var shift = required ? 0 : 1;
	var form = document.forms[formId];
	if(form == null) return;
	var input = form[paramId];
	if(input == null) return;
	if(input.length != null) return;
	var yearInput = form[paramId + "year"];
	if(yearInput == null) return;
	var monthInput = form[paramId + "month"];
	var dayInput   = form[paramId + "day"];
	var hourInput  = form[paramId + "hour"];
	var controlInput  = form[paramId + control];
	var setState = true;
	if(controlInput != null && controlInput.selectedIndex == 0) setState = false;
	var year = yearInput.options[yearInput.selectedIndex].value;
	var minYear = parseInt(yearInput.options[shift].value);
	if(year == "") {
		if(control == "year" || control == "none") {
			input.value = "";
			if(monthInput != null) monthInput.selectedIndex = 0;
			if(dayInput != null) dayInput.selectedIndex = 0;
			if(hourInput != null) hourInput.selectedIndex = 0;
			return;
		}
		year = minYear;
	}
	var month = 0;
	var level = 4;
	switch(control) {
	case "year": level = 0; break;
	case "month":
		level = 1; 
		break;
	case "day": 
		level = 2; 
		break;
	case "hour": 
		level = 3; 
		break;
	}
	var monthDefined = true;
	var dayDefined = true;
	var hourDefined = true;
	var defined = true;
	if(monthInput != null) {
		month = monthInput.options[monthInput.selectedIndex].value;
		if(month == "") {
			month = 0;
			if(level >= 2 && setState) define = true;
			else defined = false;
		} 
	} else {
		defined = false;
	}
	monthDefined = defined;
	var day = 1;
	if(dayInput != null) {
		day = dayInput.options[dayInput.selectedIndex].value;
		if(day == "") {
			day = 1;
			if(level >= 3 && setState) define = true;
			else defined = false;
		}
	} else {
		defined = false;
	}
	dayDefined = defined;
	var hour = 0;
	if(hourInput != null) {
		hour = hourInput.options[hourInput.selectedIndex].value;
		if(hour == "") {
			hour = 0;
			defined = false;
		} 
	} else {
		defined = false;
	}
	hourDefined = defined;
	var date = new Date(year, month, day, hour);
	var value = date.getTime();
	if(value < min) {
		value = min;
		date = new Date(value);
	} else if(value > max) {
		value = max;
		date = new Date(value);
	}
	var shift = required ? 0 : 1;
	yearInput.selectedIndex = date.getFullYear() - minYear + shift;
	if(monthInput != null) {
		if(monthDefined) {
			monthInput.selectedIndex = date.getMonth() + 1;
		} else {
			monthInput.selectedIndex = 0;
		}
	}
	if(dayInput != null) {
		if(dayDefined) {
			dayInput.selectedIndex = date.getDate() - 1 + 1;
		} else {
			dayInput.selectedIndex = 0;
		}
	}
	if(hourInput != null) {
		if(hourDefined) {
			hourInput.selectedIndex = date.getHours() + 1;
		} else {
			hourInput.selectedIndex = 0;
		}
	}
	var dates = "" + value;
	var date1;
	if(hourDefined) {
		date1 = new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours() + 1);
	} else if(dayDefined) {
		date1 = new Date(date.getFullYear(), date.getMonth(), date.getDate()+1, 0);
	} else if(monthDefined) {
		date1 = new Date(date.getFullYear(), date.getMonth() + 1, 1, 0);
	} else {
		date1 = new Date(date.getFullYear() + 1, 0, 1, 0);
	}
	var value1 = date1.getTime();
	if(value1 > max) value1 = max;
	dates += " " + value1;
	input.value = dates;
}

function initCheckbox(gid, paramId, paramValue, defaultValue)
{
	var formId = "dynForm" + gid;
	var form = document.forms[formId];
	if(form == null) return;
	var hidden = form[paramId];
	if(hidden == null) return;
	var checkbox = form[paramId + "checkbox"];
	if(checkbox == null) return;
	var checked;
	var value = false;
	if(paramValue != "" || paramValue != null) {
		value = !(paramValue == false || paramValue == "off" || paramValue == "false" || paramValue == "0" || paramValue == "no");
	} else 	{
		value = !(defaultValue == "" || defaultValue == "off" || defaultValue == "false" || defaultValue == "0" || defaultValue == "no");
	}
	checkbox.checked = value;
	hidden.value = "" + value;
}

function refreshCheckbox(gid, paramId)
{
	var formId = "dynForm" + gid;
	var form = document.forms[formId];
	if(form == null) return;
	var hidden = form[paramId];
	if(hidden == null) return;
	var checkbox = form[paramId + "checkbox"];
	if(checkbox == null) return;
	hidden.value = "" + checkbox.checked;
}

function passwordChange(input)
{
	var value = input.value;
	var sibling = input.nextSibling;
	if(sibling == null) return;
	sibling.value = calcSHA1(value);
}

function initMenu(formId, paramId, required, isMenu, paramValue)
{
	var form = document.forms["dynForm" + formId];
	if(form == null) return;
	var control = form[paramId];
	if(control == null) return;
	if(control.options == null) return;
	if(isMenu) {
		for(var i=0;i<control.options.length;i++) {
			var option = control[i];
			if(option.value == paramValue) {
				control.selectedIndex = i;
				return;
			}
		}
	} else {
		for(var i=0;i<control.length;i++) {
			var c = control[i];
			if(c.value == paramValue) {
				c.checked = true;
				return;
			}
		}
	}
}


