var aantal =0;
var ramen= new Array;
var NewWin = new Array;

function hide(id) {
	var element = document.getElementById(id);
	if (element != null) {
		element.style.visibility = "hidden"; 
	}
}
function unhide(id) {
	var element = document.getElementById(id);
	if (element != null) {
		element.style.visibility = "visible"; 
	}
}
function venster(vergroting){
for (var t=1;t<=aantal;t++){
	 raam="ram"+t;
	 if (!NewWin[raam].closed){
	 NewWin[raam].focus();
      }
    }
    aantal++;
    raam="ram"+aantal;
    NewWin[raam] =  window.open(vergroting,raam,
    'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=700,height=600');
//    NewWin[raam].moveTo(aantal*20,aantal*20);
    ramen[aantal]=1;
}


function sluit(){
for (var t=1;t<=aantal;t++){
	 if (ramen[t]==1){
	 owin = window.open("","ram"+t);
     owin.close();}
  }
}

function showPhoto(filename){
    var h = 290;
    var w = 500;
    NewWindow =  window.open(filename,"groot",
    'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=no,resizable=yes,width='+w+',height='+h);
    NewWindow.focus();
}

function sorteer(sortorder)
{
  f = document.sortform;
  f.order.value = sortorder;
  f.offset.value = 0;
  f.submit();
}

function offset(offset)
{
  f = document.sortform;
  f.offset.value = offset;
  f.submit();
}

/* function checkform
 hoofdfunctie die alle verplichte velden van het formulier controlleert op 
 inhoud. Daarom wordt gekeken of het veld ingevuld is en zo ja of de tekst
 ook goed is vormgegeven. Hiervoor worden verschillende subfuncties gebruikt
*/

function checkform() {	
  if (document.zoeken.naam.value=="") {
    alert("Naam is verplicht.");
    document.zoeken.naam.focus();
    return false;
  }  
	else {
		if (!checkWords(document.zoeken.naam.value)) {
			alert("Uw naam mag alleen letters en spaties bevatten.");
			document.zoeken.naam.focus();
			return false;
		}
	}
	
  if (document.zoeken.email.value!="") {
  	if (!emailCheck(document.zoeken.email.value)) {
	  	document.zoeken.email.focus();
	  	return false;
	  }	  
  }
  //else email adres is optioneel
/*	else {
			alert("E-mail adres is verplicht.");
		 	document.zoeken.email.focus();
	  	return false;
	}
*/
	
  if (document.zoeken.telnr.value!="") {
		if (!checkPhoneNumber(document.zoeken.telnr.value)) {
			alert("Het telefoonnummer mag alleen cijfers en "-"bevatten.\nn.b. het veld is niet verplicht.");
			document.zoeken.telnr.focus();
			return false;
		}
	}			
	else {
			alert("Een telefoonnummer is verplicht.");
		 	document.zoeken.telnr.focus();
	  	return false;
	}
	
	//controlleren of er wel iets wordt gezocht....
	if (document.zoeken.merk.value!="" || document.zoeken.model.value!="" || document.zoeken.carrosserie.value!="" || document.zoeken.brandstof.value!="" || document.zoeken.prijsvan.value!="" || document.zoeken.prijstot.value!="" || document.zoeken.bouwjaarvan.value!="" || document.zoeken.bouwjaartot.value!="" || document.zoeken.extra.value!="") {
		return true;
	}
	else {
		alert("Geeft u a.u.b. een zoekopdracht op door een merk, model of andere eigenschap op te geven.\nOf laat het formulier leeg (Wis formulier).");
		return false;
	}
}

/*
 subfuncties 
*/

// Strip leading and trailing white-spaces
String.prototype.trim = function() {
	return this.replace(/^\s*|\s*$/g, "");
}

// Strip all white-spaces
String.prototype.removespaces = function() {
	return this.replace(/\s*/g, "");
}

// Strip non legal characters
String.prototype.removenonchar = function() {
	return this.replace(/\W/g, "");
}

function checkWords (str) {
	//test of een zin uit meerdere woorden bestaat zonder vreemde tekens maar spaties zijn toegestaan
	var whiteSpace = /\s/; //whiteSpaces (spaties enters tabs)
	str = str.trim();
	var woorden = new Array();
	woorden = str.split(whiteSpace);
	for (i=0; i<woorden.length; i++) {
		if (!checkWord(woorden[i])) {
			return false;
		}
	}
	return true;
}
	
function checkWord (str) {
	//test of een woord geen getallen of vreemde tekens bevat
	var validWord = /^(\w+)$/; //match a-z A-Z 0-9
	var nonDigits = /^(\D+)$/; //match !0-9
	//test verzameling op letters zonder spaties of getallen
	if (!str.match(validWord) || !str.match(nonDigits)) {
		return false;
	}
	return true;	
}

function emailCheck (emailStr) {
	/* The following pattern is used to check if the entered e-mail address
	   fits the user@domain format.  It also is used to separate the username
	   from the domain. */
	var emailPat=/^(.+)@(.+)$/;
	/* The following string represents the pattern for matching all special
	   characters.  We don't want to allow special characters in the address. 
	   These characters include ( ) < > @ , ; : \ " . [ ]    */
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
	/* The following string represents the range of characters allowed in a 
	   username or domainname.  It really states which chars aren't allowed. */
	var validChars="\[^\\s" + specialChars + "\]";
	/* The following pattern applies if the "user" is a quoted string (in
	   which case, there are no rules about which characters are allowed
	   and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
	   is a legal e-mail address. */
	var quotedUser="(\"[^\"]*\")";
	/* The following pattern applies for domains that are IP addresses,
	   rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
	   e-mail address. NOTE: The square brackets are required. */
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	/* The following string represents an atom (basically a series of
	   non-special characters.) */
	var atom=validChars + '+';
	/* The following string represents one word in the typical username.
	   For example, in john.doe@somewhere.com, john and doe are words.
	   Basically, a word is either an atom or quoted string. */
	var word="(" + atom + "|" + quotedUser + ")";
	// The following pattern describes the structure of the user
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	/* The following pattern describes the structure of a normal symbolic
	   domain, as opposed to ipDomainPat, shown above. */
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	
	
	/* Finally, let's start trying to figure out if the supplied address is
	   valid. */
	
	/* Begin with the coarse pattern to simply break up user@domain into
	   different pieces that are easy to analyze. */
	var matchArray=emailStr.match(emailPat);
	if (matchArray==null) {
	  /* Too many/few @'s or something; basically, this address doesn't
	     even fit the general mould of a valid e-mail address. */
		alert("Email adres is niet correct (controlleer op '@' en '.')");
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];
	
	// See if "user" is valid 
	if (user.match(userPat)==null) {
	    // user is not valid
	    alert("Uw e-mail adres lijkt niet correct te zijn. (fout in het deel voor '@')");
	    return false;
	}
	
	/* if the e-mail address is at an IP address (as opposed to a symbolic
	   host name) make sure the IP address is valid. */
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
	    // this is an IP address
		  for (var i=1;i<=4;i++) {
		    if (IPArray[i]>255) {
		        alert("Het opgegeven IP-adres (achter '@') lijkt niet correct te zijn.");
						return false;
		    }
	    }
	    return true;
	}
	
	// Domain is symbolic name
	var domainArray=domain.match(domainPat);
	if (domainArray==null) {
		alert("Uw e-mail adres lijkt niet correct te zijn. (fout in het deel achter '@')");
	  return false;
	}
	
	/* domain name seems valid, but now make sure that it ends in a
	   three-letter word (like com, edu, gov) or a two-letter word,
	   representing country (uk, nl), and that there's a hostname preceding 
	   the domain or country. */
	
	/* Now we need to break up the domain to get a count of how many atoms
	   it consists of. */
	var atomPat=new RegExp(atom,"g");
	var domArr=domain.match(atomPat);
	var len=domArr.length;
	if (domArr[domArr.length-1].length<2 || 
	    domArr[domArr.length-1].length>3) {
	   // the address must end in a two letter or three letter word.
	   alert("E-mail adressen moeten eindigen op 2 of 3 letters na de punt.");
	   return false;
	}
	
	// Make sure there's a host name preceding the domain.
	if (len<2) {
	   var errStr="Uw e-mail adres is niet geldig. (De naam de domeinhost is te kort.)";
	   alert(errStr);
	   return false;
	}
	
	// If we've gotten this far, everything's valid!
	return true;
}

function checkPhoneNumber (str) {
//checkPhoneNumber kijk of de string een 10 cijferig getal bevat
//andere tekens of tekst wordt genegeerd alleen de cijfers tellen mee
  var antw = str.match(/\d/ig);    
  var telnr = "";
  for (i=0;i<antw.length;i++) {
  	telnr += antw[i];
  }
	if (telnr.length != 10) {
		alert ("Telefoonnummer te kort (10 cijfers nodig).\n uw nr: "+telnr);
		return false;
	}
	else {
		document.zoeken.telnr.value = telnr;
	}
	return true;
}
