// Check visitor data
function checkDataForm() {

	var error = false;
	var err_str = "";

	// Check company name
	if (!checkNotEmpty("company")) {
		error = true;
		err_str = "Het formulier is nog niet compleet. Vul s.v.p. een <strong>bedrijfsnaam</strong> in.";
	}

	// Check address
	if (!error && !checkNotEmpty("adres")) {
		error = true;
		err_str = "Het formulier is nog niet compleet. Vul s.v.p. een <strong>adres</strong> (straat en huisnummer) in.";
	}

	// Check postal code
	if (!error && !checkPostalCode("postcode")) {
		error = true;
		err_str = "Het formulier is nog niet compleet. Vul s.v.p. een geldige <strong>postcode</strong> in, in de vorm 1234AB.";
	} 

	// Check city
	if (!error && !checkNotEmpty("plaats")) {
		error = true;
		err_str = "Het formulier is nog niet compleet. Vul s.v.p. een <strong>plaatsnaam</strong> in.";
	} 

	// Check opening hours
	if (!error && !checkOpeningHours("open_van", "open_tot")) {
		error = true;
		err_str = "Het formulier is nog niet compleet. Geef s.v.p. uw <strong>openingstijden</strong> op.";
	} 

	// Check contact name
	if (!error && !checkNotEmpty("contact")) {
		error = true;
		err_str = "Het formulier is nog niet compleet. Geef s.v.p. een <strong>contactpersoon</strong> op.";
	} 

	// Check phone no.
	if (!error && !checkPhoneNumber("telnr1", "telnr2")) {
		error = true;
		err_str = "Het formulier is nog niet compleet. Geef s.v.p. een <strong>telefoonnummer</strong> op, in de vorm 020 1234567 of 0123 456789.";
	} 

	// Check mobile phone no.
	if (!error && checkNotEmpty("mobiel") && !checkMobileNumber("mobiel")) {
		error = true;
		err_str = "Geef s.v.p. een <strong>correct mobiel nummer</strong> op, in de vorm 06 - 12345678.";
	} 

	// Check email address
	if (!error && checkNotEmpty("email") && !checkEmailAddress("email")) {
		error = true;
		err_str = "Geef s.v.p. een <strong>correct e-mail adres</strong> op, in de vorm uwnaam@eendomein.nl";
	} 

	// Show error or approve submit
	if (error) {
		showError(err_str);
		return false;
	} else {
		return true;
	}

}

// Check for value not empty
function checkNotEmpty(obj_name) {
	var obj = document.getElementById(obj_name);
	if (obj.value.length > 0) {
		return true;
	} else {
		return false;
	}
}

// Check postal code
function checkPostalCode(obj_name) {
	var obj = document.getElementById(obj_name);
	if (obj.value.match(/^[1-9][0-9]{3}[A-Za-z]{2}$/)) {
		return true;
	} else {
		return false;
	}
}

// Check opening hours
function checkOpeningHours(obj_name1, obj_name2) {
	var obj1 = document.getElementById(obj_name1);
	var obj2 = document.getElementById(obj_name2);
	var from = parseFloat(obj1.options[obj1.selectedIndex].value);
	var until = parseFloat(obj2.options[obj2.selectedIndex].value);
	if ( (from == 0 && until == 0) || from >= until) { 
		return false;
	} else {
		return true;
	}
}

// Check phone number
function checkPhoneNumber(obj1_name, obj2_name) {
	var obj1 = document.getElementById(obj1_name);
	var obj2 = document.getElementById(obj2_name);
	//alert(obj1.value.length + ", " + obj2.value.length);
	if (obj1.value.match(/^0[0-9]{2,3}$/) && obj2.value.match(/^[0-9]{6,7}$/) && ( (obj1.value.length == 3 && obj2.value.length == 7) || (obj1.value.length == 4 && obj2.value.length == 6) ) ) {
		return true;
	} else {
		return false;
	}
}

// Check mobile phone number
function checkMobileNumber(obj_name) {
	var obj = document.getElementById(obj_name);
	if (obj.value.match(/^[1-9][0-9]{7}$/)) {
		return true;
	} else {
		return false;
	}
}

// Check email address
function checkEmailAddress(obj_name) {
	var obj = document.getElementById(obj_name);
	if (obj.value.match(/^[A-z0-9_\-\.]+\@[A-z0-9_\-\.]+\.[A-z]{2,4}$/)) {
		return true;
	} else {
		return false;
	}
	
}

// Show error 
function showError(err_str) {
	var obj = document.getElementById("errorbox");
	obj.innerHTML = err_str;
	if (obj.style.display == "none") {
		obj.style.display = "block";
	}
}

// Show no equipment no. notice
function showNotice(telnr) {
	/*
	var obj = document.getElementById("form");
	obj.style.display = "block";
	obj.style.display = "none";
	*/
	showError("Als u geen equipmentnummer heeft, kunt u geen meldingen/bestellingen via deze site doorgeven. Neem contact op met ons Technical Service Center op telefoonnummer <strong>" + telnr + "</strong> om uw melding of bestelling door te geven.");
}

// Show explanation about equipment number
function showHideExplanation(display_value) {
	var obj = document.getElementById("equip_explan");
	obj.style.display = display_value;
}

// Check 'empty machine' form 
function checkEmptyForm() {

	var error = false;
	var err_str = "";

	// Check equipmentnumber
	if (!checkEquipmentNumber("equip_nr_1", "equip_nr_2")) {
		error = true;
		err_str = "Het equipmentnummer is niet correct. Vul s.v.p. een correct <strong>equipmentnummer</strong> in.";
	}

	// Check tastes
	if (!error && !checkNotEmpty("smaken")) {
		error = true;
		err_str = "Geef s.v.p. &eacute;&eacute;n of meerdere smaken op die bijgevuld moeten worden.";
	}

	// Show error or approve submit
	if (error) {
		showError(err_str);
		return false;
	} else {
		return true;
	}
}

function checkEquipmentNumber(obj1_name, obj2_name) {
	var obj1 = document.getElementById(obj1_name);
	var obj2 = document.getElementById(obj2_name);
	if (obj1.value.match(/^[0-9]{3}/) && obj2.value.match(/^[A-Za-z0-9]{2}/)) {
		return true;
	} else {
		return false;
	}

}

// Show options for service problems
function showProblems(obj) {

	// Hide other problems
	var objects = document.getElementsByTagName("div");
	for (i = 0; i < objects.length; i++) {
		if (objects[i].id.indexOf("problems_") > -1) {
			objects[i].style.display = "none";
		}
	}

	// Show problems for this equipment type
	document.getElementById("problems_" + obj.value).style.display = "block";
}

// Check service form 
function checkServiceForm() {

	var error = false;
	var err_str = "";

	// Check equipmentnumber
	if (!checkEquipmentNumber("equip_nr_1", "equip_nr_2")) {
		error = true;
		err_str = "Het equipmentnummer is niet correct. Vul s.v.p. een correct <strong>equipmentnummer</strong> in.";
	}

	// Check equipment type
	if (!error && !checkEquipmentType("service", "eq_type")) {
		error = true;
		err_str = "Kies s.v.p. een soort apparaat.";
	}

	// Check problem 
	if (!error && !checkProblem("service", "eq_type", "problems[]", "other_comment")) {
		error = true;
		err_str = "Vink s.v.p. &eacute;&eacute;n of meerdere problemen aan. Als u een ander probleem heeft, omschrijf dit dan ook.";
	}

	// Show error or approve submit
	if (error) {
		showError(err_str);
		return false;
	} else {
		//return false;
		return true;
	}

}

// Check equipment type
function checkEquipmentType(form_name, obj_name) {

	var objects = document.forms[form_name].elements[obj_name];
	var val_ok = false;
	for (i = 0; i < objects.length; i++) {
		if (objects[i].checked) {
			val_ok = true;
			break;
		}
	}
	return val_ok;
}

// Check problem
function checkProblem(form_name, eq_type_obj, problem_obj, other_obj) {

	// Get char representing chosen equipment type (K, F, or T)	
	var objects = document.forms[form_name].elements[eq_type_obj];
	var eq_type;
	for (i = 0; i < objects.length; i++) {
		if (objects[i].checked) {
			eq_type = objects[i].value;
			break;
		}
	}
	eq_type = eq_type.charAt(0);	

	// Check all checkboxes staring with K/F/T to see if at least 1 is checked
	var checked_problem = false;

	var objects = document.forms[form_name].elements[problem_obj];
	for (i = 0; i < objects.length; i++) {
		if (objects[i].value.charAt(0) == eq_type && objects[i].checked) {
			checked_problem = true;
			break;
		}
	}

	// Check textarea if "other" was checked
	if (document.getElementById(eq_type + "_other").checked && document.getElementById("comment").value.length == 0) {
		checked_problem = false;
	}
	
	return checked_problem;
}

// Show parts for some equipment type
function showHideParts(eq_type) {

	var obj = document.getElementById(eq_type);
	obj.style.display = (obj.style.display == "block" ? "none" : "block");
	

}

// Check parts form
function checkPartsForm() {

	var error = false;
	var err_str = "";

	// Check count inputs
	if (!checkForNumbers("parts", "part_")) {
		error = true;
		err_str = "Vul s.v.p. alleen nummers in voor de aantallen van de onderdelen.";
	}

	// Show error or approve submit
	if (error) {
		showError(err_str);
		return false;
	} else {
		//return false;
		return true;
	}

}

// Check all count inputs for numbers
function checkPartCounts() {

	var objects = document.forms['parts'].elements;
	var all_ok = true;
	for (i = 0; i < objects.length; i++) {
		if (objects[i].name.indexOf("part_") > -1 && !objects[i].value.match(/^[0-9]+$/) && objects[i].value > 50) {
			all_ok = false;
		}
	}

	return all_ok;
}

// Show products
function showHideProducts(obj_name) {
	var obj = document.getElementById(obj_name);
	obj.style.display = (obj.style.display == "block" ? "none" : "block");	
}

// Show packages
function showHidePackages(obj_name) {
	var obj = document.getElementById(obj_name);
	obj.style.display = (obj.style.display == "block" ? "none" : "block");	
}

// Check form for ordering labels
function checkLabelsForm() {

	var error = false;
	var err_str = "";

	// Check count inputs
	if (!checkForNumbers("labels", "label_")) {
		error = true;
		err_str = "Vul s.v.p. alleen nummers in voor de aantallen van de smaakplaatjes.";
	}

	// Show error or approve submit
	if (error) {
		showError(err_str);
		return false;
	} else {
		//return false;
		return true;
	}

}

// Check all count inputs for numbers
function checkForNumbers(form_name, elm_prefix) {

	var objects = document.forms[form_name].elements;
	var all_ok = true;
	for (i = 0; i < objects.length; i++) {
		if (objects[i].name.indexOf(elm_prefix) > -1 && !objects[i].value.match(/^[0-9]+$/)) {
			all_ok = false;
		}
	}

	return all_ok;
}

function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  //return [ scrOfX, scrOfY ];
  return scrOfY;;
}

// Show bigger photo of small part
function showBigPhoto(filename, header) {
	
	var scroll = getScrollXY();
	var obj = document.getElementById('bigphoto');
	obj.style.top = (100 + scroll) + 'px';
	obj.innerHTML = '<a href="javascript:hideBigPhoto();" class="close"></a>';
	obj.innerHTML += '<div class="title">' + header + '</div>';
	obj.innerHTML += '<img src="images/parts/' + filename + '" />';
	obj.style.display = 'block';
	
}

function hideBigPhoto() {
	var obj = document.getElementById('bigphoto');
	obj.style.display = 'none';
}

function initPage() {
	setBottomHandler();
}

/*
 * @File        $RCSfile: moDIV.js,v $
 * @Version     $Revision: 1.8 $
 * @Author      $Author: paulk $ (last checked in by)
 * @Date        $Date: 2003/01/29 10:44:12 $ (UTC date of last check in)
 */

function setDivOver(divID) {
	var d = document.getElementById(divID);
	d.style.background = '#D21206';
	d.style.color = '#FFFFFF';
	d.style.border = '1px solid #FFFFFF';
}

function setDivOut(divID) {
	var d = document.getElementById(divID);
	d.style.background = 'transparent';
	d.style.color = '#FFFFFF';
	d.style.border = '1px solid #FFFFFF';
}

function setDiv2Over(divID) {
	var d = document.getElementById(divID);
	d.style.background = '#FFFFFF';
	d.style.color = '#A00000';
	d.style.border = '1px solid #A00000';
}

function setDiv2Out(divID) {
	var d = document.getElementById(divID);
	d.style.background = 'transparent';
	d.style.color = '#F90B00';
	d.style.border = '1px solid #F90B00';
}


function toggleLinks() {
	var theDiv = document.getElementById('linksdiv');
	var visibility = theDiv.style.visibility;
	if(visibility =='hidden') {
		theDiv.style.visibility = 'visible';
	} else {
		theDiv.style.visibility = 'hidden';
	}
}

var checking			= -1;

var positioningMeta		= -1;
var animatingMeta		= -1;

var scrollCheckDelay	= 10;
var positionMetaDelay	= 500;
var step				= 1;
var animateDelay		= 15;
var metaHeight = 21;

var metaNav = null;
var alignTD = null;
var linksDiv = null;

function setBottomHandler() {
	metaNav = new MetaNavObject(); //Get div from content
	linksDiv = new LinksDivObject(); 
	alignTD = document.getElementById("alignTD");
	if (navigator.platform.indexOf('Mac')==0) {
		if ((navigator.appName.indexOf("Microsoft")!=-1))	window.onscroll = window.onresize = setMacMover;
		else checking = setTimeout("moveMenusMac()", scrollCheckDelay);
		metaNav.move(0, calculateBottom());
		metaNav.show();
	} else {
		checking = setTimeout("checkForScroll()", scrollCheckDelay);
	}
}
function MetaNavObject() {
	this.div = document.getElementById("bottommenu");
	this.move = function moveMeta(x,y){if(isNaN(y)) return; this.div.style.left = x+"px"; this.div.style.top = y+"px"; this.x = x; this.y = y;}
	this.hide = function hideMeta(){this.div.style.visibility = "hidden";this.div.style.display = "none";}
	this.show = function showMeta(){this.div.style.visibility = "visible";this.div.style.display = "block";}
	
}
function LinksDivObject() {
	this.div = document.getElementById("linksdiv");
	this.move = function (x,y){if(isNaN(y)) return; this.div.style.left = x+"px"; this.div.style.top = y+"px"; this.x = x; this.y = y;}
	this.hide = function (){this.div.style.visibility = "hidden";this.div.style.display = "none";}
	this.show = function (){this.div.style.visibility = "visible";this.div.style.display = "block";}	
}

function checkForScroll() {
	clearTimeout(checking);
	checking = -1;
	var continueChecking = true;
	if ((calculateBottom() - metaHeight) != metaNav.y) {
		if ((positioningMeta == -1) && (animatingMeta == -1)) {
			continueChecking = false;
			metaNav.hide();
			//linksDiv.hide();
			positioningMeta = setInterval("startMeta()",positionMetaDelay);
		}
	}
	if (continueChecking) checking = setTimeout("checkForScroll()", scrollCheckDelay);
}

function setMacMover() {
	if (checking == -1) checking = setTimeout("moveMenusMac()", scrollCheckDelay*10);
}
function moveMenusMac() {
	if (!(navigator.appName.indexOf("Microsoft")!=-1)) {
		clearTimeout(checking);
	}
	checking = -1;
	metaNav.hide();
	metaNav.move(0, calculateBottom());
	metaNav.show();

	if (!(navigator.appName.indexOf("Microsoft")!=-1))
		checking = setTimeout("moveMenusMac()", scrollCheckDelay);
}

var metasteps;
function startMeta() {
	var newPosition = calculateBottom();
	metaNav.move(0, newPosition);
	clearInterval(positioningMeta);
	positioningMeta = -1;
	metasteps = -metaHeight;
	metaNav.show();
	animatingMeta = setInterval("animateMeta()",animateDelay);
}

function animateMeta() {
	metasteps = metasteps + step;
	if(metasteps <= 0) metaNav.move(0, metaNav.y - step);
	else {
		metaNav.move(0, metaNav.y - (metasteps-step));

		// Popup Links Position
		//window.status = alignTD.offsetLeft;
		linksDiv.move(alignTD.offsetLeft + 610,metaNav.y - linksDiv.div.offsetHeight);
		
		clearInterval(animatingMeta);
		animatingMeta = -1;
		if (checking == -1) {
			checking = setTimeout("checkForScroll()", scrollCheckDelay);
		}
	}
}

function calculateBottom() {
	var newPosition;

	if(navigator.appName.indexOf("Microsoft")!=-1) {
		if (window.document.documentElement.clientHeight) {
			newPosition = document.documentElement.scrollTop + parseInt(document.documentElement.clientHeight);
		} else {
			newPosition = document.body.scrollTop + parseInt(document.body.clientHeight);
		}
	} else newPosition = window.pageYOffset + window.innerHeight;

	if(navigator.platform.indexOf('Mac')==0) newPosition -= metaHeight;
	if(newPosition < 480) newPosition = 480;//maximum height
	return(newPosition);
}
