// returns array of all elements in 'form' of type 'type'
function getElementArray(form, type) {
 var array=[];
 var index=0;
 for(var i=0; i<form.elements.length; i++) {
  if(form.elements[i].type==type)
   array[index++] = form.elements[i];
 }
 return array;
}
// returns array of all elements with name matching expression
function getElementsByName(array, expr) {
 var resultarray = new Array();
 var index=0;
 for(var i=0; i<array.length; i++) {
  if(array[i].name.match(expr))
   resultarray[index++] = array[i];
 }
 return resultarray;
}
// checks string for emptiness (only spaces or nothing at all)
function empty(s) {
 if(s=="") return true;
 for(var i=0; i<s.length; i++)
  if(s.charAt(i)!=" ")
   return false;
 return true;
}
// if element has empty value, returns name minus text before the first "_"
function checkElement(element) {
 if(empty(element.value)) {
  var i=element.name.indexOf("_");
  return " - " +element.name.substring(i+1, element.name.length)+"\n";
  alert(element.name);
 } else
  return "";
}

var obligatoryall="";//=[2,3];
var obligatoryadress="";//=[5,6,7,8];

// checks a form in a contact_me -page to see if all obligatory fields are filled out (ignores spaces)
function verifyNewProductsForm(form, errormessage) {
 var msg = errormessage + "\n";
 var fields = "";
 var texts = getElementArray(form, "text");

 if(obligatoryall=="")
	obligatoryall=[2,3,9];

 for(var i=0; i<obligatoryall.length; i++)
	fields += checkElement(texts[obligatoryall[i]]);

/* fields += checkElement(texts[2]);
 fields += checkElement(texts[3]);
 fields += checkElement(texts[9]);
*/

 if(fields!="") {
  alert(msg+fields);
  return false;
 } else {
  return true;
 }
}

// checks a form in a Elcat Request -page to see if all obligatory fields are filled out (ignores spaces)
function verifyElitenetRequest(form, errormessage) {
 var msg = errormessage + "\n";
 var fields = "";
 var texts = getElementArray(form, "text");
 var radios = getElementArray(form, "radio");
 
 for (var i=0;i<2;i++) {
	if(form.IsCustomer[i].checked) 
	break;
	else {
		if(i==1) {
		fields+= " - " + "IsCustomer\n";
		}
	 }
 	}

 if(obligatoryall=="")
	obligatoryall=[0,1,2,3,4,5,6];

 for(var i=0; i<obligatoryall.length; i++)
	fields += checkElement(texts[obligatoryall[i]]);



 if(fields!="") {
  alert(msg+fields);
  return false;
 } else {
  return true;
 }
}

/* Added on 11/12/03 by Diego Lopez
 * checks a form in a "Sales Request" page (Deutschland) to see if all obligatory fields are filled out 
 * (ignores spaces) */
function verifySalesRequestDeutsch(form, errormessage) {
 var msg = errormessage + "\n";
 var fields = "";
 var texts = getElementArray(form, "text"); 

 if(obligatoryall == "") 
   obligatoryall = [0,1,2,3,4,5,6];
	
 for(var i = 0; i < obligatoryall.length; i++)
   fields += checkElement(texts[obligatoryall[i]]);

 if(fields != "") {
   alert(msg+fields);
   return false;
 } 
 else {
   return true;
 }
} 

/* Added on 15/12/03 by Diego Lopez
 * checks a form in a "Catalogue Request" page (Deutschland) to see if all obligatory fields are filled out 
 * (ignores spaces) */
function verifyCatalogueRequestDeutsch(form, errormessage) {
 var msg = errormessage + "\n";
 var fields = "";
 var texts = getElementArray(form, "text"); 

 if(obligatoryall == "") 
   obligatoryall = [1,2,3,4,5,6,7];
	
 for(var i = 0; i < obligatoryall.length; i++)
   fields += checkElement(texts[obligatoryall[i]]);

 if(fields != "") {
   alert(msg+fields);
   return false;
 } 
 else {
   return true;
 }
} 

// checks a form in a Elcat Request -page to see if all obligatory fields are filled out (ignores spaces)
function verifyElitenetRequestDeutsch(form, errormessage) {
 var msg = errormessage + "\n";
 var fields = "";
 var texts = getElementArray(form, "text");
 var radios = getElementArray(form, "radio");
 
 for (var i=0;i<2;i++) {
	if(form.SindKunde[i].checked) 
	break;
	else {
		if(i==1) {
		fields+= " - " + "SindKunde\n";
		}
	 }
 	}

 if(obligatoryall=="")
	obligatoryall=[0,1,2,3,4,5,6];

 for(var i=0; i<obligatoryall.length; i++)
	fields += checkElement(texts[obligatoryall[i]]);



 if(fields!="") {
  alert(msg+fields);
  return false;
 } else {
  return true;
 }
}

// checks a form in a Elcat Request -page to see if all obligatory fields are filled out (ignores spaces)
function verifyElitenetRequestDutch(form, errormessage) {
 var msg = errormessage + "\n";
 var fields = "";
 var texts = getElementArray(form, "text");
 var radios = getElementArray(form, "radio");
 
 for (var i=0;i<2;i++) {
	if(form.UBentKunde[i].checked) 
	break;
	else {
		if(i==1) {
		fields+= " - " + "UBentKunde\n";
		}
	 }
 	}

 if(obligatoryall=="")
	obligatoryall=[0,1,2,3,4,5,6];

 for(var i=0; i<obligatoryall.length; i++)
	fields += checkElement(texts[obligatoryall[i]]);



 if(fields!="") {
  alert(msg+fields);
  return false;
 } else {
  return true;
 }
}

// checks a form in a Elcat Request -page to see if all obligatory fields are filled out (ignores spaces)
function verifyElitenetRequestSpanish(form, errormessage) {
 var msg = errormessage + "\n";
 var fields = "";
 var texts = getElementArray(form, "text");
 var radios = getElementArray(form, "radio");
 
 for (var i=0;i<2;i++) {
	if(form.EsCliente[i].checked) 
	break;
	else {
		if(i==1) {
		fields+= " - " + "EsCliente\n";
		}
	 }
 	}

 if(obligatoryall=="")
	obligatoryall=[0,1,2,3,4,5,6];

 for(var i=0; i<obligatoryall.length; i++)
	fields += checkElement(texts[obligatoryall[i]]);



 if(fields!="") {
  alert(msg+fields);
  return false;
 } else {
  return true;
 }
}

// checks a form in a Elcat Request -page to see if all obligatory fields are filled out (ignores spaces)
function verifyElitenetRequestFrench(form, errormessage) {
 var msg = errormessage + "\n";
 var fields = "";
 var texts = getElementArray(form, "text");
 var radios = getElementArray(form, "radio");
 
 for (var i=0;i<2;i++) {
	if(form.EtesVousClient[i].checked) 
	break;
	else {
		if(i==1) {
		fields+= " - " + "EtesVousClient\n";
		}
	 }
 	}

 if(obligatoryall=="")
	obligatoryall=[0,1,2,3,4,5,6];

 for(var i=0; i<obligatoryall.length; i++)
	fields += checkElement(texts[obligatoryall[i]]);



 if(fields!="") {
  alert(msg+fields);
  return false;
 } else {
  return true;
 }
}


// checks a form in a contact_me -page to see if all obligatory fields are filled out (ignores spaces)
function verifyFeedbackForm(form, errormessage) {
 var msg = errormessage + "\n";
 var fields = "";
 var textarea = getElementArray(form, "textarea");
 var texts = getElementArray(form, "text");

 if(obligatoryall=="")
	obligatoryall=[2,3,9];

// alert(obligatoryall);	
 fields += checkElement(textarea[0]);
 for(var i=0; i<obligatoryall.length; i++)
	fields += checkElement(texts[obligatoryall[i]]);
/* fields += checkElement(texts[2]);
 fields += checkElement(texts[3]);
 fields += checkElement(texts[9]);
*/
 if(fields!="") {
  alert(msg+fields);
  return false;
 } else {
  return true;
 }
}

// checks a form in a contact_me -page to see if all obligatory fields are filled out (ignores spaces)
function verifyContactsYouForm(form, errormessage) {
	var msg = errormessage + "\n";
	var fields = "";
	var radios = getElementArray(form, "radio");
	var texts = getElementArray(form, "text");
	var textscount = texts.length;
		
//	fields += checkElement(texts[2]);
//	fields += checkElement(texts[3]);

	if(obligatoryall=="")
		obligatoryall=[2,3];
	if(obligatoryadress=="")
		obligatoryadress=[5,6,7,8];

	for(var i=0; i<obligatoryall.length; i++)
		fields += checkElement(texts[obligatoryall[i]]);

	if(radios[0].checked) {
/*		fields += checkElement(texts[5]);
		fields += checkElement(texts[6]);
		fields += checkElement(texts[7]);
		fields += checkElement(texts[8]);
*/	
		for(var i=0; i<obligatoryadress.length; i++)
			fields += checkElement(texts[obligatoryadress[i]]);
	} else if(radios[1].checked)
		fields += checkElement(texts[textscount-1]);
	else if(radios[2].checked)
		fields += checkElement(texts[textscount-2]);
	else if(radios[3].checked)
		fields += checkElement(texts[textscount-3]);
	else {	//none of the radio buttons were checked
		fields+= " - "+radios[0].value+", "+radios[1].value+", "+radios[2].value+", "+radios[3].value+"\n";
	}
		
	if(fields!="") {
		alert(msg+fields);
		return false;
	} else {
		return true;
	}
}

// checks to see if all obligatory fields are filled out (ignores spaces)
function verifyOrderCatalogueForm(form, errormessage) {
 var msg = errormessage + "\n";
 var fields = "";
 var texts = getElementArray(form, "text");

 if(obligatoryall=="")
	obligatoryall=[2,3,5,6,8,9,10];
 for(var i=0; i<obligatoryall.length; i++)
	fields += checkElement(texts[obligatoryall[i]]);

/* fields += checkElement(texts[2]);
 fields += checkElement(texts[3]);
 fields += checkElement(texts[5]);
 fields += checkElement(texts[6]);
 fields += checkElement(texts[8]);
 fields += checkElement(texts[9]);
 fields += checkElement(texts[10]);
*/
 if(fields!="") {
  alert(msg+fields);
  return false;
 } else {
  return true;
 }
}


/********************************
  Only for contacts you - pages
 ********************************/	
var star = "/pix/star.gif";
var blank = "/pix/blank.gif";
var addresscount = 5;
	
// shows/hides stars based on selected radio buttons in a contactsyou - page
function radioChange(form) {
	var radios = getElementArray(form, "radio");
	var images = getElementsByName(document.images, new RegExp("mark\w*"));
		
	for(var i=0; i<images.length; i++)
		images[i].src = blank;
	for(var i=0; i<obligatoryall.length; i++) {
		images[obligatoryall[i]].src = star;
		}

	if(radios[0].checked) {
		for(var i=0; i<obligatoryadress.length; i++)
			images[obligatoryadress[i]].src = star;
	} else if(radios[1].checked)
		images[images.length-1].src = star;
	else if(radios[2].checked)
		images[images.length-2].src = star;
	else if(radios[3].checked)
		images[images.length-3].src = star;
	else {
		radios[3].checked=true;
		images[images.length-3].src = star;
		}
}


/***********************************
  Only for order catalogue - pages
 ***********************************/	
var searchlength = 5;

// returns first element in array with the name 'value'
function catalogueSearch(array, value) {
 var arrayvalue;
 for(var i=0; i<array.length; i++) {
  arrayvalue = array[i].name.toLowerCase().replace(/\_/gi," ");
  if(arrayvalue==value.toLowerCase())
   return array[i];
 }
 for(var i=0; i<array.length; i++) {
  arrayvalue = array[i].name.toLowerCase();
  if(arrayvalue.substring(0,searchlength)==value.substring(0,searchlength).toLowerCase())
   return array[i];
 }
 return null;
}

// gets parameter from url
function getParameter(paramname) {
 var querystring = window.location.search;
 var value=null;
 if(querystring!="") {
  var begin = querystring.indexOf(paramname+"=");
  if(begin >= 0) {
	begin += paramname.length+1;
	value = querystring.substring(begin, querystring.length);
	var end = value.indexOf("&");
	if(end > -1)
	 value = value.substring(0, end);
  }
 }
 if(value==null)
	return value;
 value = value.replace(/\+/gi," ");
// alert(value);
 return unescape(value);
}

// checks checkbox in order catalogue - page based on parameters in the url
function setCatalogue(form) {
 var checkboxes = getElementArray(form, "checkbox");
 
 // productseriescatalogue
 var value=getParameter("catalogue");
 if(value!=null) {
  var checkbox = catalogueSearch(checkboxes,value);
  if(checkbox!=null) {
   checkbox.checked=true;
  }
 }
 
 // singleproductcatalogue
 value=getParameter("cataloguename");
 if(value!=null) {
  if(value.charAt(0)=="'") {
   value=value.substring(1,value.length-1);
  }
  if(value.charAt(value.length-1)=="'") {
   value=value.substring(0,value.length-2);
  }
  var checkbox = catalogueSearch(checkboxes,value);
  if(checkbox!=null) {
   checkbox.checked=true;
  } 
 }
}

/***********************************
  For all forms. Main procedures.
 ***********************************/	

// 
function setObligatory(all, adress) {
	obligatoryall = all;
	if( (adress) ) 
		obligatoryadress = adress;
//	alert(obligatoryadress);
}

// run by a form-page after form end tag	(</form>)
function load(form, type) {
	loadForm(form);

	switch(type) {
	case "contactsyou":		radioChange(form);
							break;
	case "ordercatalogue":	        setCatalogue(form);
							break;
	}
}

// run by a form-page on submit
function send(form, type, errormessage) {
	var result = false;
	saveForm(form);
	switch(type) {
		case "contactsyou":	result = verifyContactsYouForm(form, errormessage);
							break;
		case "feedback":	result = verifyFeedbackForm(form, errormessage);
							break;
		case "newproducts":	result = verifyNewProductsForm(form, errormessage);
							break;
		case "ordercatalogue":	result = verifyOrderCatalogueForm(form, errormessage);
							break;
		case "elcat":		result = verifyElcat(form, errormessage);
							break;
		case "docanvraag":	result = verifyDocumentatieAnvraag(form, errormessage);
							break;
		case "docanvraagfr":	result = verifyDocumentatieAnvraagFr(form, errormessage);
							break;
		case "elitenetRequestDeutsch": result = verifyElitenetRequestDeutsch(form, errormessage);
							break;
		case "elitenetRequestDutch":   result = verifyElitenetRequestDutch(form, errormessage);
							break;
		case "elitenetRequestSpanish": result = verifyElitenetRequestSpanish(form, errormessage);
							break;
		case "elitenetRequestFrench":  result = verifyElitenetRequestFrench(form, errormessage);
							break;
		case "elitenetRequest": result = verifyElitenetRequest(form, errormessage);
							break;
		case "salesRequestDeutsch": result = verifySalesRequestDeutsch(form, errormessage);
		         		 		break; 
		case "catalogueRequestDeutsch": result = verifyCatalogueRequestDeutsch(form, errormessage);
		         		 		break; 
		default: result = verifyNewProductsForm(form, errormessage);
			 				break;
	}
//	convertValues(form);
	return result;
}

/*
//uses escape to convert special characters in values in form to %hexvalue
function convertValues(form) {
	var elements = form.elements;
	for(var i=0; i<elements.length; i++) {
		if(elements[i].type != "hidden")
			elements[i].value = escape(elements[i].value);
	}
}
*/