/**********
     TITLE: MagicLayer Object (customized version)
   VERSION: 2.5 (Apr 24, 2000)
      TYPE: Object Definition
    AUTHOR: Antti Koivunen <Antti.Koivunen@hut.fi>
 COPYRIGHT: 1999-2000 Antti Koivunen. All Rights Reserved.
**********/

// Necessary Browser Check
var mg_ie  = (document.all) ? true : false;
var mg_ns = (navigator.appName == "Netscape" && parseInt(navigator.appVersion) == 4) ? true : false;


function getsupport ( selectedtype )
{
  document.supportform.orderid.value = selectedtype ;
  document.supportform.submit() ;
}



/*** MagicLayer Object Component - Core - 2.5 (modified) ***/

function mg_getLayerById(id, d) {
	var e = "", i;
	d = (d || document);
	if (d.getElementById) return d.getElementById(id);
	else if (d.all) return d.all[id];
	else if (d.layers && d.layers.length > 0) {
		if (d.layers[id]) return d.layers[id];
		for (i=0; i < d.layers.length; i++) {
			e = mg_getLayerById(id, d.layers[i].document);
			if (e) return e;
	}	}
	return false;
}

function mg_getCSSProperty(id, p) {
	var sheets = document.styleSheets, rules, i, j, v;
	for (i=0; i < sheets.length; i++) {
		rules = sheets[i].cssRules || sheets[i].rules;
		for (j=0; j < rules.length; j++) {
			if (rules[j].selectorText == id && rules[j].style[p]) v = rules[j].style[p];
	}	}
	return v;
}

function mg_getLayerCSSProperty(p) {
	if (this.styleRef[p]) return this.styleRef[p];
	else return mg_getCSSProperty("#" + this.id, p);
}

function mg_showLayer() { this.styleRef.visibility = mg_ns ? "show" : "visible"; }

function mg_hideLayer() { this.styleRef.visibility = mg_ns ? "hide" : "hidden"; }

function mg_allEval (expr, type, not_id) {
	var m = MagicLayer.instances;
	if (type) {
		for (var i=0; i < m.length; i++) {
			if (m[i].type == type && m[i].id != not_id) eval("MagicLayer.instances[" + i + "]." + expr);
		}
	} else {
		for (var i=0; i < MagicLayer.instances.length; i++) {
			if (m[i].id != not_id) eval("MagicLayer.instances[" + i + "]." + expr);
}	}	}

function mg_createInstances() {
	var a = arguments;
	for (var i=0; i < a.length; i++) {
		if (!a[i][1]) a[i][1] = a[i][0]; if (!a[i][2]) a[i][2] = "normal"; if (!a[i][3]) a[i][3] = "";
		eval("window."+a[i][0]+" = document."+a[i][0]+" = new MagicLayer('"+a[i][1]+"','"+a[i][2]+"','"+a[i][3]+"')");
}	}

/** MagicLayer Object Constructor **/

function MagicLayer(id, type, win) {

	this.id = id; this.type = type || "normal"; this.window = win || window;
	MagicLayer.instances[this.id] = MagicLayer.instances[MagicLayer.instances.length] = this;
	
	this.layerRef = mg_getLayerById(id, this.window.document);
	this.styleRef = this.layerRef.style || this.layerRef;
	this.layerRef.mgLayer = this;
	
	if (document.styleSheets) {
		this.x = this.origX = parseInt(this.getCSSProperty("left")) || this.layerRef.offsetLeft;
		this.y = this.origY = parseInt(this.getCSSProperty("top")) || this.layerRef.offsetTop;
	} else {
		this.x = this.origX = parseInt(this.styleRef.left) || this.layerRef.offsetLeft;
		this.y = this.origY = parseInt(this.styleRef.top) || this.layerRef.offsetTop;
	}
	this.width = (this.layerRef.clip) ? this.layerRef.clip.width : this.layerRef.offsetWidth;
	this.height = (this.layerRef.clip) ? this.layerRef.clip.height : this.layerRef.offsetHeight;
}

/** Private Properties **/

MagicLayer.instances = new Array();

/** Instance Methods **/

MagicLayer.prototype.show = mg_showLayer;
MagicLayer.prototype.hide = mg_hideLayer;
MagicLayer.prototype.getCSSProperty = mg_getLayerCSSProperty;

/** Static Methods **/

MagicLayer.all = mg_allEval;
MagicLayer.createInstances = mg_createInstances;

/*************************************/

function messageWindow(url, w, h) {
	w = w || 640; h = h || 480;
	msgWin = window.open(url, "message", "width="+w+",height="+h+",scrollbars=yes,resizable=yes");
	if (window.focus) msgWin.focus();
}

function checkValueLimit(value, minValue, maxValue) {
	var v = parseInt(value);
	if (isNaN(v) || v < minValue || v > maxValue) return true;
	else return false;
}

function checkDate(dayField, monthField, yearField) {
	var d = dayField.value, m = monthField.value, y = yearField.value, msg = "", e;
	if (d.indexOf("0") == 0) d = d.substr(1);
	if (m.indexOf("0") == 0) m = m.substr(1);
	if (checkValueLimit(d, 1, 31)) {
		msg = "The value of 'day' is not valid (1 - 31).";
		e = dayField;
	}
	else if (checkValueLimit(m, 1, 12)) {
		msg = "The value of 'month' is not valid (1 - 12).";
		e = monthField;
	}
	
	var d = new Date();
	else if (checkValueLimit(y, 2004, d.getFullYear()+1)) {
		msg = "The value of 'year' is not within the acceptable range.";
		e = yearField;
	}
	else if (m == 2 && d > 28) {
		msg = "There are only 28 days in February.";
		e = dayField;
	}
	else if ((m == 4 || m == 6 || m == 9 || m == 11) && d > 30) {
		msg = "There are only 30 days in the selected month.";
		e = dayField;
	}
	if (msg) return new Array(msg, e);
	else return false;
}

function checkForEmptyFields(formObj) {
	var requiredTextFields = new Array("username", "password", "repassword", "firstname", "lastname", "email", "address", "city", "zip", "date1d", "date1m", "date1y", "date2d", "date2m", "date2y");
	var requiredSelectFields = new Array("country"), i, e;
	for (i = 0; i < requiredTextFields.length; i++) {
		e = formObj.elements[requiredTextFields[i]];
		if (!e.value) return e;
	}
	for (i = 0; i < requiredSelectFields.length; i++) {
		e = formObj.elements[requiredSelectFields[i]];
		if (!e.options[e.selectedIndex].value) return e;
	}
	if (!(formObj.elements["nchars"].value)) return formObj.elements["nchars"];
	return false;
}


function checkForm(formObj) {
	var e = checkForEmptyFields(formObj);
	var d1 = checkDate(formObj.date1d, formObj.date1m, formObj.date1y);
	var d2 = checkDate(formObj.date2d, formObj.date2m, formObj.date2y);
	if (e) {
		window.alert("Some of the required data is still missing.");
		if (e.focus) e.focus();
		return false;
	} else if (d1) {
		window.alert(d1[0]);
		if (d1[1] && d1[1].focus) d1[1].focus();
		return false;
	} else if (d2) {
		window.alert(d2[0]);
		if (d2[1] && d2[1].focus) d2[1].focus();
		return false;
	}
	else return true;
}

/* Registration form checking */
function checkForEmptyRegFields(formObj) {
	var requiredTextFields = new Array("regusername", "regpassword", "repassword", "firstname", "lastname", "email", "address", "city", "zip");
	var requiredSelectFields = new Array("country"), i, e;
	for (i = 0; i < requiredTextFields.length; i++) {
		e = formObj.elements[requiredTextFields[i]];
		if (!e.value) return e;
	}
	for (i = 0; i < requiredSelectFields.length; i++) {
		e = formObj.elements[requiredSelectFields[i]];
		if (!e.options[e.selectedIndex].value) return e;
	}
	if (!(formObj.elements["nchars"].value)) return formObj.elements["nchars"];
	return false;
}

function checkRegistrationForm(formObj) {
	var e = checkForEmptyRegFields(formObj);
	if (e) {
		window.alert("Some of the required data is still missing.");
		if (e.focus) e.focus();
		return false;
	} 
	else return true;
}

function checkForWrongLCCombinations(formObj) {
	// Check for the output options so they don't have bad combinations
	if ((formObj.elements["outputformat"].selectedIndex == 1) && (formObj.elements["final"].selectedIndex == 0)) {
		return true;
	}
	if ((formObj.elements["outputformat"].selectedIndex == 1) && (formObj.elements["final"].selectedIndex == 2)) {
		return true;
	}
	return false;
}

/* LC order form checking */ 
function checkForEmptyLCFields(formObj) {
	var requiredTextFields = new Array("date1d", "date1m", "date1y", "date2d", "date2m", "date2y");
	var requiredSelectFields = new Array("style", "outputformat", "final"), i, e;
	for (i = 0; i < requiredTextFields.length; i++) {
		e = formObj.elements[requiredTextFields[i]];
		if (!e.value) return e;
	}
	for (i = 0; i < requiredSelectFields.length; i++) {
		e = formObj.elements[requiredSelectFields[i]];
		if (!e.options[e.selectedIndex].value) return e;
	}
	
	//if (!(formObj.elements["nchars"].value)) return formObj.elements["nchars"];
	return false;
}


function checkLCForm(formObj) {
	var e = checkForEmptyLCFields(formObj);
	var d1 = checkDate(formObj.date1d, formObj.date1m, formObj.date1y);
	var d2 = checkDate(formObj.date2d, formObj.date2m, formObj.date2y);
	var c = checkForWrongLCCombinations(formObj);
	if (e) {
		window.alert("Some of the required data is still missing.");
		if (e.focus) e.focus();
		return false;
	} else if (d1) {
		window.alert(d1[0]);
		if (d1[1] && d1[1].focus) d1[1].focus();
		return false;
	} else if (d2) {
		window.alert(d2[0]);
		if (d2[1] && d2[1].focus) d2[1].focus();
		return false;
	} else if (c) {
		window.alert("You cannot use Tracked changes with Plain text output.");	
		return false;
	}
	else return true;
}

/* Translation order form checking */ 
function checkForEmptyTranslationFields(formObj) {
	var requiredTextFields = new Array("date1d", "date1m", "date1y", "date2d", "date2m", "date2y");
	var requiredSelectFields = new Array("srclang", "targetlang", "outputformat"), i, e;
	for (i = 0; i < requiredTextFields.length; i++) {
		e = formObj.elements[requiredTextFields[i]];
		if (!e.value) return e;
	}
	for (i = 0; i < requiredSelectFields.length; i++) {
		e = formObj.elements[requiredSelectFields[i]];
		if (!e.options[e.selectedIndex].value) return e;
	}
	
	// If TKK-button is checked you need to fill in unitcode
	if (formObj.elements["chk_tkk"].checked == true) {
		if( !formObj.elements["unitcode"].value ) return e;
	}
	//if (!(formObj.elements["nchars"].value)) return formObj.elements["nchars"];
	return false;
}


function checkTranslationForm(formObj) {
	var e = checkForEmptyTranslationFields(formObj);
	var d1 = checkDate(formObj.date1d, formObj.date1m, formObj.date1y);
	var d2 = checkDate(formObj.date2d, formObj.date2m, formObj.date2y);
	if (e) {
		window.alert("Some of the required data is still missing.");
		if (e.focus) e.focus();
		return false;
	} else if (d1) {
		window.alert(d1[0]);
		if (d1[1] && d1[1].focus) d1[1].focus();
		return false;
	} else if (d2) {
		window.alert(d2[0]);
		if (d2[1] && d2[1].focus) d2[1].focus();
		return false;
	}
	else return true;
}


if (self != top) top.location.href = self.location.href;
