var current_err = -1;

/* Dictionary, indexed by name, for storing original values of input fields */
objOrigVals = new Object();

/* Dictionary for caching visibility status of input fields */
objHidden = new Object();

function mp_recalc()
	/* Set up main geometry of page */
{
	if(msjid==2)
	{
		if(document.body.clientHeight-89>0)
			idBody.style.height=document.body.clientHeight-105;
		else
			idBody.style.height=0;

		if(document.body.clientWidth-170>0)
			idMain.style.width=document.body.clientWidth-170;
		else
			idMain.style.width=0;
	}
	else if ( msjid == 8 )
	{
		h = document.body.clientHeight;
		w = document.body.clientWidth;
		idBody.style.height = h > 78 ? h - 78 : 0;
		idMain.style.width = w > 170 ? w - 170 : 0;
	}
	else if(msjid==1)
	{
		if(document.body.clientHeight-89>0)
			idBody.style.height=document.body.clientHeight-71;
		else
			idBody.style.height=0;

		if(document.body.clientWidth-170>0)
			idMain.style.width=document.body.clientWidth-170;
		else
			idMain.style.width=0;
	}
	else if(msjid==4)
	{
		if(document.body.clientHeight-89>0)
			idBody.style.height=document.body.clientHeight-90;
		else
			idBody.style.height=0;

		if(document.body.clientWidth-170>0)
			idMain.style.width=document.body.clientWidth-170;
		else
			idMain.style.width=0;
	}
	else
	{
		if(document.body.clientHeight-88>0)
			idBody.style.height=document.body.clientHeight-88;
		else
			idBody.style.height=0;

		if(window.clientInformation.appVersion.indexOf("MSIE 5.0")==0)
		{
			if(document.body.clientWidth-170>0)
				idMain.style.width=document.body.clientWidth-170;
			else
				idMain.style.width=0;
		}
	}
}

/*** Start tooltip logic ***/
function showtipSpecial(current,e,text)
{
	element=document.getElementById("tooltip");
	thisl=current;
	element.innerHTML=text;
	//element.style.height=thisl.style.height;

	if(e.clientX<150)
	{
		element.style.pixelLeft=e.clientX;
		element.style.pixelTop=e.clientY+5;
		element.style.pixelWidth=200;
	}
	else
	{
		element.style.pixelLeft=e.clientX-150;
		element.style.pixelTop=e.clientY+5;
		//  element.style.pixelWidth=150;
		element.style.pixelWidth=e.clientX+20;
	}

	element.style.visibility = "visible";

	objElements=document.body.getElementsByTagName("TABLE");
	intWindowHeight=objElements(0).clientHeight;
	intInfoHeight=element.clientHeight;

	if(intInfoHeight>intWindowHeight-e.clientY)
	{
		element.style.pixelLeft=0;

		if(intInfoHeight>intWindowHeight)
		{
			element.style.pixelTop=0;
		}
		else
		{
			element.style.pixelTop=intWindowHeight-intInfoHeight-100;
		}
	}
}

/*** End tooltip logic ***/

/*** Start focus logic (using return-key to navigate through fields) ***/

var currentFocusIndex = 0;

function focusform()
	/* Assign ids to the input fields */
{
	try {
		elems = document.forms( 0 ).elements;
		for ( i = 0; i < elems.length; i++ )
			elems[ i ].id = i;
	} catch( objError ) {};
}

function reassignIds( objInput ) {} // legacy function

function focusnextelement( object )
	/* This function is an onsubmit handler; It will be called when the
	return key is pressed by the user.
	Here we figure out whether to submit the form or to move field focus. */
{
	elems = document.forms( 0 ).elements;
	currElem = elems[ currentFocusIndex ];
	doSubmit = false;

	if( currElem && currElem.type == "submit" ) {
		try {
			// dirty old hack: will try to submit data of textarea as multiple fields
			SeparateToelichting( window.document.forms( 0 ) );
		} catch( objError ) {};
		undisableAll();
		doSubmit = true;
	} else {
		focusNextField();
		doSubmit = false;
	}
	return doSubmit;
}

function focusnextelement1( object )
	/* some xlst's point to this function as keypress handler */
{
	if ( event.keyCode == 13 )
		focusNextField();
}

function focusNextField()
	/* Move focus to next non-submit input field that can have focus
	(i.e. it must be visible, not disabled etc.) */
{
	elems = document.forms( 0 ).elements;
	i = 1*currentFocusIndex + 1;
	for ( i = 1*currentFocusIndex + 1; i < elems.length; i++ ) {
		elem = elems[ i ];
		if ( elem.type == "submit" )
			continue;
		try {
			elem.focus();
			currentFocusIndex = i;
			break;
		} catch( objError ) {};
	}
}

function setFocus(fieldname)
{
	field = document.getElementsByName(fieldname).item(0)
	try {
		field.focus();
	}
	catch( objError ) {}
}

function getnameelement( object )
	/* Given object has received the focus from user */
{
	currentFocusIndex = object.id;
}

function undisableAll()
	/* Disabled input fields are not submitted by the browser;
	Calling this function before the actual submit will quickly
	undisable all input fields so that they will be submitted. */
{
	elems = document.forms( 0 ).elements;
	for ( i = 0; i < elems.length; i++ )
		elems( i ).disabled = 0;
}

/*** End focus logic ***/


/*** Start error displaying logic ***/

function showError()
{
	errorspan.innerText = mperrors[current_err][1];
	errorstatus.innerHTML=current_err+1;
	setFocus(mperrors[current_err][0]);
}

function prevError()
{
	if (current_err > 0)
		current_err--;
	showError();
}

function nextError()
{
	if (current_err < mperrors.length - 1)
		current_err++;
	showError();
}

/*** End error displaying logic ***/


/*
 * Validation functions
 */

function _Match( re, string )
	/* Test to see if string conforms to the given regular expression re */
{
	re = new RegExp( "^" + re + "$" );
	return re.test( string );
}

function DateObject( year, month, day )
	/* Structure for storing numerical year, month and day data. */
	/* year is from 1000 to 3000, month is from 1 to 12, day is from 1 to 31*/
{
	this.year = year;
	this.month = month;
	this.day = day;
}

function dateParser( dateString )
	/* Parses the date string (in any format supported by Meetingpoint) and returns date object */
	/* Return object with year = -1 on error. */
{
	var year = month = day = 0; // numerical representation
	var y = m = d = "0";        // string representation
	if ( Tjip.Match( "\\d{8}", dateString ) ) {
		// ddmmccyy format
		d = dateString.substring( 0, 2 );
		m = dateString.substring( 2, 4 );
		y = dateString.substring( 4, 8 );
	} else if ( Tjip.Match( "\\d{6}", dateString ) ) {
		// ddmmyy format
		d = dateString.substring( 0, 2 );
		m = dateString.substring( 2, 4 );
		y = dateString.substring( 4, 6 );
	} else {
		splitter = '';
		if ( Tjip.Match( "(\\d){1,4}-\\d{1,2}-(\\d){1,4}", dateString ) )
			splitter = '-';
		if ( !splitter && Tjip.Match( "(\\d){1,4}/\\d{1,2}/(\\d){1,4}", dateString ) )
			splitter = '/';
		if ( splitter ) {
			list = dateString.split( splitter );
			if ( list[ 0 ].length == 4 ) {
				// ccyy-mm-dd format
				y = list[ 0 ];
				m = list[ 1 ];
				d = list[ 2 ];
			} else {
				// (d)d-(m)m-(cc)yy format
				d = list[ 0 ];
				m = list[ 1 ];
				y = list[ 2 ];
			}
		}
	}
	year  = 1*y;
	month = 1*m;
	day   = 1*d;
	if ( year >= 0 && year < 100 && y.length == 2 ) {
		// determine how many centuries to add
		now = new Date();
		compYear = ( now.getFullYear() + 5 ) % 100;
		if ( compYear < year )
			year += 1900;
		else
			year += 2000;
		y = year.toString();
	}
	var ret;
	nDays = getDaysOfMonth( year, month );
	if ( day < 1 || day > nDays || month < 1 || month > 12 || year < 1000 || year > 3000 ||
			y.length != 4 || m.lenght < 1 || m.length > 2 || d.lenght < 1 || d.length > 2 )
		// invalid date
		return new DateObject( -1, 0, 0 );
	else
		return new DateObject( year, month, day );
}

/* Format from any valid MP date format to return mm-dd-ccyy format */
function formatDate( mpDateIn )
{
	date = dateParser( mpDateIn );
	if ( date.year == -1 ) {
		return mpDateIn; // do nothing when wrong date format is entered
	}
	return _formatDateObject( date );
}

function _formatDateObject( dateObject )
{
	d = dateObject.day;
	m = dateObject.month;
	y = dateObject.year;
	//result = ( d <= 9 ? '0' : '' ) + d + '-' + ( m <= 9 ? '0' : '' ) + m + '-' + y;
	result = y + '-' + ( m <= 9 ? '0' : '' ) + m + '-' + ( d <= 9 ? '0' : '' ) + d;
	return result;
}

function getDaysOfMonth( y, m )
	/* return number of days in month m of year y ( with 1 <= m <= 12 ); return 0 on error */
{
	days = 0;
	if ( m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12 )
		days = 31;
	else if ( m == 4 || m == 6 || m == 9 || m == 11 )
		days = 30;
	else if ( m == 2 ) {
		if ( ( y % 4 ) == 0 && ( y % 100 ) != 0 || ( y % 400 ) == 0 )
			days = 29; // for leap years
		else
			days = 28;
	}
	return days;
}

function _IsValidDate( dateString )
	/* See if given date string parses to a valid date */
{
	d = dateParser( dateString );
	return d.year != -1;
}

function _IsValidNlAccount( account )
	/* Check to see if account resembles a valid Dutch bank account */
{
	if ( !Tjip.Match( "[nN]?\\d{9}", account ) )
		return false;
	acc = account;
	if ( acc.charAt( 0 ).toUpperCase() == "N" )
		acc = acc.substring( 1 );
	// do eleven-proof check
	weightFactor = 9;
	weightedSum = 0;
	for ( i = 0; i < acc.length; i++ ) {
		weightedSum += weightFactor*acc.charAt( i );
		weightFactor--;
	}
	return ( weightedSum % 11 == 0 );
}

function _IsValidSofinummer( sofinr )
	/* Check to see if sofinr resembles a valid sofinummer */
{
	if ( !Tjip.Match( "\\d{9}", sofinr ) )
		return false;
	// do eleven-proof check
	weightFactor = 9;
	weightedSum = 0;
	for ( i = 0; i < acc.length; i++ ) {
		weightedSum += weightFactor*sofinr.charAt( i );
		weightFactor--;
		if ( weightFactor == 1 ) weightFactor = -1;
	}
	return ( weightedSum % 11 == 0 );
}

function _IsValidNlPostcode( postcode )
	/* Check to see if postcode resembles a valid Dutch postcode */
{
	return Tjip.Match( "\\d{4}\\s?[A-Za-z]{2}", postcode );
}

function formatNlPostcode( postcode )
	/* Format postcodeIn to '1234 AB' format and return it. */
{
	if ( !_IsValidNlPostcode( postcode ) )
		return postcode; // do nothing if we can't parse postcode 
	out = postcode.substring( 0, 4 );
	out += " ";
	out += postcode.substring( postcode.length - 2, postcode.length );
	out = out.toUpperCase();
	return out;
}

function _IsValidNumber( number, totalDigits, fractionDigits )
	/* Validate given decimal number */
{
	testee = number;
	if ( !Tjip.Match( "-?\\d*(\\.\\d*)?", testee ) )
		return false;
	if ( number.charAt( 0 ) == "-" ) {
		// cut off leading minus sign
		testee = number.substring( 1 );
	}
	list = testee.split( '.' );
	if ( list.length == 1 ) {
		// no decimal point
		l0 = list[ 0 ].length;
		if ( l0 == 0 || l0 > totalDigits )
			return false;
	} else if ( list.length == 2 ) {
		// decimal point
		l0 = list[ 0 ].length;
		l1 = list[ 1 ].length;
		if ( l0 == 0 && l1 == 0 )
			return false;
		if ( l0 + l1 > totalDigits || ( fractionDigits != null && l1 > fractionDigits ) )
			return false;
	} else
		return false;
	return true;
}

function _DateCompare( date0, date1 )
	/* Return -1 if the string date0 is earlier, 0 if equal, 1 if later then string date1 */
{
	t0 = dateParser( date0 );
	t1 = dateParser( date1 );
	if ( t0.year < t1.year )
		return -1;
	else if ( t0.year > t1.year )
		return 1;
	if ( t0.month < t1.month )
		return -1;
	else if ( t0.month > t1.month )
		return 1;
	if ( t0.day < t1.day )
		return -1;
	else if ( t0.day > t1.day )
		return 1;
	return 0;
}

function _DateEQ( date0, date1 ) { return _DateCompare( date0, date1 ) == 0; }
function _DateNE( date0, date1 ) { return _DateCompare( date0, date1 ) != 0; }
function _DateLT( date0, date1 ) { return _DateCompare( date0, date1 ) < 0; }
function _DateGT( date0, date1 ) { return _DateCompare( date0, date1 ) > 0; }
function _DateLE( date0, date1 ) { return _DateCompare( date0, date1 ) <= 0; }
function _DateGE( date0, date1 ) { return _DateCompare( date0, date1 ) >= 0; }

function _Age( dateStrings )
	/* Given the date string, return age in years as integer. A optional second
	   string can be supplied that specifies the reference date (if left out the
	   current date will be used). */
{
	dateString = _Age.arguments[ 0 ];
	if ( dateString.length==4 ) // asume only year is given
	{
		dateString = '01-01-' + dateString;
	}
	t1 = dateParser( dateString );

	t0 = dateParser( _Today() );
	if ( _Age.arguments.length > 1 ) {
		arg1 = _Age.arguments[ 1 ];
		t = dateParser( arg1 );
		if ( t.year != -1 )
			t0 = t;
	}
	age = t0.year - t1.year;
	if ( t0.month < t1.month || ( t0.month == t1.month && t0.day < t1.day ) )
		age--;
	return age;
}

function _DayOfMonth( dateString )
	/* Given the date string, return day of month as integer */
{
	t = dateParser( dateString );
	return t.day;
}

function _Today( daysOffset )
	/* Return date string of today + daysOffset days (daysOffset can be negative) */
{
	off = daysOffset;
	msOffset = isNaN( off ) ? 0 : daysOffset*1000*3600*24; // offset in milliseconds
	now = new Date();
	ret = new Date( now.getTime() + msOffset );
	return ret.getDate() + '-' + ( ret.getMonth() + 1 ) + '-' + ret.getFullYear();
}

function _Concat( strings )
	/* Concatenate strings together */
{
	result = "";
	for ( i = 0; i < arguments.length; i++ )
		result += arguments[ i ];
	return result;
}

function _Substring( strID, start, end ) {
	return strID.substring( start, end );
}

// put validation functions in the Tjip namespace
Tjip = new Object();
Tjip.Match = _Match;
Tjip.IsValidNlPostcode = _IsValidNlPostcode;
Tjip.IsValidNlAccount = _IsValidNlAccount;
Tjip.Age = _Age;
Tjip.Today = _Today;
Tjip.Concat = _Concat;
Tjip.Substring = _Substring;
Tjip.DateCompare = _DateCompare;
Tjip.IsValidDate = _IsValidDate;
Tjip.IsValidNumber = _IsValidNumber;
Tjip.DateEQ = _DateEQ;
Tjip.DateNE = _DateNE;
Tjip.DateLT = _DateLT;
Tjip.DateGT = _DateGT;
Tjip.DateLE = _DateLE;
Tjip.DateGE = _DateGE;
Tjip.DayOfMonth = _DayOfMonth;

/*
 * Helper functions for dynamic behaviour of screens
 */

function disableInput( name, doDisable )
{
	elem = document.forms( 0 ).elements( 'checkbox_' + name );
	if ( elem == null )
		elem = document.forms( 0 ).elements( name );
	if ( elem == null )
		return;
	if ( elem.length >= 1 ) {
		// elem is an array ( for example of radio buttons )
		for ( i = 0; i < elem.length; i++ ) {
			elem[ i ].disabled = doDisable;
		}
	}
	elem.disabled = doDisable;
	if ( elem.style )
		elem.style.backgroundColor = doDisable ? "#eeeeee" : "#ffffff";
}


function clearInput( name, keepOrig )
	/* Clear inputfield of given name, optionally keeping the original value
	   (original value is used by the restoreInput() function */
{
	elem = document.forms( 0 ).elements( name );
	if ( elem == null )
		return;
	if ( elem.length != null && elem[ 0 ].checked != null ) {
		// name refers to list of checkboxes or radiobuttons
		for ( i = 0; i < elem.length; i++ ) {
			objOrigVals[ name + "_____" + i ] = keepOrig ?
				elem[ i ].checked : false;
			elem[ i ].checked = false;
		}
	} else {
		// name refers to textfield or combobox
		objOrigVals[ name ] = keepOrig ? elem.value : "";
		elem.value = "";
	}
	
	if ((name == "PP.VP.VP_GIRORK") || (name == "PP.VP.VP_BANKRK")) {
		return validateInteger(window.event);
	}
}


function restoreInput( name )
{
	elem = document.forms( 0 ).elements( name );
	if ( elem && elem.length != null && elem[ 0 ].checked != null ) {
		// name refers to list of checkboxes or radiobuttons
		for ( i = 0; i < elem.length; i++ ) {
			origVal = objOrigVals[ name + "_____" + i ];
			if ( elem.checked != false && origVal != null ) {
				elem[ i ].checked = origVal; // restore original value
				objOrigVals[ name + "_____" + i ] = null;
			}
		}
	} else {
		// name refers to textfield or combobox
		origVal = objOrigVals[ name ];
		if ( elem && elem.value == "" && origVal != null ) {
			elem.value = origVal; // restore original value
			objOrigVals[ name ] = null;
		}
	}
}

function hideInput( name, doHide )
	/* Hide/unhide input field of given name, and clear contents */
{
  //hide the field if it's part of the velden array
  if (typeof Velden == "object") {
		if (typeof Velden[name] != "undefined") {
			doHide = true;
		}
	}

	if ( objHidden[ name ] == doHide )
		return; // no change in visibiliy
	if ( doHide )
		clearInput( name, true );
	else
		restoreInput( name );
	id = document.all.item( "tr_" + name );
	id.style.display = doHide ? "none" : "inline";
	objHidden[ name ] = doHide;
}

function hideAndKeep( name, doHide )
	/* Hide/unhide input field of given name, without clearing its contents */
{
  //hide the field if it's part of the velden array
  if (typeof Velden == "object") {
		if (typeof Velden[name] != "undefined") {
			doHide = true;
		}
	}
  
	if ( objHidden[ name ] == doHide ) {
		return; // no change in visibiliy
	}	
	id = document.all.item( "tr_" + name );
	if ( id != null ) {
		id.style.display = doHide ? "none" : "inline";
		objHidden[ name ] = doHide;
	} else
		alert( "Unknown field: " + name );
}

function ShoworHide (name, actie)
{
  //hide the field if it's part of the velden array
  if (typeof Velden == "object") {
		if (typeof Velden[name] != "undefined") {
			actie = "hide";
		}
	}

	id = document.all.item( "tr_" + name );
	if ( id != null ) {
		if (actie == 'show'){
			id.style.display = "inline";
			objHidden[ name ] = false;
		} else {
			id.style.display = "none";
			objHidden[ name ] = true;
		}
	} else
		alert( "Unknown field: " + name );
}

function disableButton( name, doDisable )
	/* Make input button inactive */
{
	// look in list of input buttons for element with matching 'alt' attribute
	elems = document.forms( 0 ).elements( "p:action" );
	elem = 0;
	for ( i = 0; i < elems.length; i++ ) {
		if ( elems[ i ].alt == name ) {
			elem = elems[ i ];
			break;
		}
	}
	if ( elem )
		elem.disabled = doDisable;
}

function hideButton( name , doHide )
	/* Completely hide input button */
{
	// look in list of input buttons for element with matching 'alt' attribute
	elem = 0;
	elems = document.forms( 0 ).elements( "p:action" );
	if ( elems.length == null )
		elems = Array( elems );
	for ( i = 0; i < elems.length; i++ ) {
		if ( elems[ i ].alt == name ) {
			elem = elems[ i ];
			break;
		}
	}
	if ( elem )
		elem.style.display = doHide ? "none" : "inline";
}

function setRequired( id, req )
	/* Set/unset requiredness indicator (i.e. the red star) for input fields */
{
	elem = document.all.item( "req_" + id );
	if ( elem != null ) {
		elem.replaceAdjacentText( "afterbegin", req ? "*" : "" );
	}
}

function setLabel( id, text )
	/* Set text of field with given id */
{
	document.all.item( "lab_" + id ).innerHTML = text;
}

function highlightLabel( id, doHighlight )
	/* Make text of field red to signify error condition */
{
	if ( typeof( mperrors ) != null && mperrors.length > 0 )
		// there are already server validation errors displayed on this page
		return
			document.all.item( "lab_" + id ).style.color = doHighlight ? "red" : "white";
}

function toUpperCase( name )
	/* Make all alphabetic characters uppercase */
{
	elem = document.forms( 0 ).elements( name );
	if ( elem.value )
		elem.value = elem.value.toUpperCase();
}

function toLowerCase( name )
	/* Make all alphabetic characters lowercase */
{
	elem = document.forms( 0 ).elements( name );
	if ( elem.value )
		elem.value = elem.value.toLowerCase();
}

function capitalize( name )
{
	elem = document.forms( 0 ).elements( name );
	val = elem.value;
	newVal = '';
	if ( val && val.length > 0 ) {
		newVal += val.charAt( 0 ).toUpperCase();
		for ( i = 1; i < val.length; i++ ) {
			if ( val.charAt( i - 1 ).valueOf() == ' ' )
				newVal += val.charAt( i ).toUpperCase();
			else
				newVal += val.charAt( i )
		}
	}
	elem.value = newVal;
}

function zeroPadding( name, totalDigits )
	/* Pad numeric value with leading zero's up to a number that is totalDigits long */
{
	elem = document.forms( 0 ).elements( name );
	if ( elem.value ) {
		str = elem.value + ''
			nZeros = totalDigits - str.length;
		if ( nZeros > 0 )
			for ( n = 0; n < nZeros; n++ )
				str = '0' + str;
		elem.value = str;
	}
}

function SetDayOfMonth( name, dayString )
	/* Given the name of the datevar and dayString, change the date */
	/* eg: pp_avvdat is "31-12-2003": SetDayOfMonth(pp_avvdat, "28") --> pp_avvdat "28-12-2003"  */
{
	elem = document.forms( 0 ).elements( name );
	if ( elem.value )
	{
		elem.value = dayString + elem.value.substring( 2 );
	}
}

function SetToFirstOfNextMonth( name )
	/* Set the date of element of given name to the first of the following month.
	*/
{
	elem = document.forms( 0 ).elements( name );
	if ( elem.value ) {
		d = dateParser( elem.value );
		newDate = new DateObject( d.year, d.month, 1 );
		newDate.month = newDate.month % 12 + 1;
		if ( newDate.month == 1 )
			newDate.year++;
		elem.value = _formatDateObject( newDate );
	}
}


function getValue( name )
{
	elem = document.forms( 0 ).elements( name );
	if ( !elem )
		elem = document.all.item( name );
	if ( elem && elem.value != null ) {
		return elem.value;
	} else if ( elem && elem.length ) {
		for ( i = 0; i < elem.length; i++ ) {
			if ( elem[ i ].checked )
				return elem[ i ].value;
		}
		return '';
	} else if ( elem && elem.innerHTML != null ) {
		val = elem.innerHTML;
		if ( val == '-' ) val = '';
		return val;
	} else {
		alert( 'Can\'t get value for ' + name );
		return '';
	}
}

function setValue( name, value ){
	
	if (document.forms( 0 ) != null ){
		elem = document.forms( 0 ).elements( name );
		if ( !elem )
			elem = document.all.item( name );
		if ( elem && elem.value != null ) {
			//1
			elem.value = value;
			// see if a checkbox exists and if so, update it accordingly
			checkbox = document.forms( 0 ).elements( 'checkbox_' + name );
			if ( checkbox )
				checkbox.checked = checkbox.value == value;
		} else if ( elem && elem.length ) {
			//2
			for ( i = 0; i < elem.length; i++ ) {
				if ( elem[ i ].value == value )
					elem[ i ].checked = true;
				else
					elem[ i ].checked = false;
			}
		} else {
			setString( "html_" + name, value );
		}
	}
}

function setString( name, value ){
  if (name == "html_PP.OB.OB_CARRESS"){
     switch (value) {
			case '01':
				value = "Stationwagon";
			  break;
			case '02':
				value = "Cabriolet";
			  break;
			case '03':
				value = "2/3 - deurs";
			  break;
			case '04':
				value = "4/5 - deurs";
			  break;
			case '05':
				value = "MPV";
			  break;
			case '06':
				value = "Coupé";
			  break;
			case '07':
				value = "Terreinwagen";
			  break;
			case '09':
				value = "Klein busje";
			  break;
			case '10':
				value = "Kampeerwagen";
			  break;
			default:
				value = "Overig";
			}
  } else if (name == "html_PP.OB.OB_BRANSTO"){
     switch (value) {
			case 'B':
				value = "Benzine";
			  break;
			case 'D':
				value = "Diesel";
			  break;
			case 'G':
				value = "Gas (LPG)";
			  break;
			default:
				value = "Overig";
			}
  }
	elem = document.forms( 0 ).elements( name );
	if ( !elem )
		elem = document.all.item( name );
	if ( elem )
		elem.innerHTML = value;
	//else
		//alert( "Can't set string for field " + name );
}

function evaluateSection( sectionId, idsInSection )
	/* If all fields of a section are hidden, then hide the section itself too.
	   idsInSection is an Array of elements. */
{
	nHidden = 0;
	for ( i in idsInSection ) {
		if ( idsInSection[ i ].style.display == "none" )
			nHidden++;
		else
			break;
	}
	hideSection = nHidden == idsInSection.length;
	sectionId.style.display = hideSection ? "none" : "block";
}

function evaluateSection2( sectionId, idsInSection )
	/* If all fields of a section are hidden, then hide the section itself too.
	   idsInSection is an Array of strings corresponding to the IDs of elements. */
{
	nHidden = 0;
	for ( i in idsInSection ) {
		obj = document.all.item( idsInSection[ i ] );
		if ( obj.style.display == "none" )
			nHidden++;
		else
			break;
	}
	hideSection = nHidden == idsInSection.length;
	sectionId.style.display = hideSection ? "none" : "block";
}

function isVisible( elem )
	/* See if the given element is visible on screen */
{
	var vis = !elem.disabled;
	if ( vis )
		vis = elem.type != "hidden";
	if ( vis ) {
		rowId = "tr_" + elem.name;
		rowItem = null;
		if ( document.all.item( rowId ) != null )
			rowItem = document.all.item( rowId );
		if ( rowItem ) {
			invis = ( rowItem.style != null ? rowItem.style.display == "none" : false );
			vis = !invis;
		}
	}
	return vis;
}

function new_window(URL){
	win = window.open(URL);
	win.location.href = URL;
}
function changetouppercase( object ){
	if ( event.keyCode>=97 && event.keyCode<=122 ){
		event.keyCode=event.keyCode-32;
	}
}
////////////////////////////////
// ValidateNumberCharacters(OnPaste)
////////////////////////////////
// because maxlength ain't implemented for textarea
function validateNumberCharacters( objField, numberCharacters ){
    var retVal = true;
	if( objField.value.length > numberCharacters - 1 ){
		return( false );
	}
	return retVal;
}
function validateNumberCharactersOnPaste( objField, numberCharacters ){
    var retVal = true;
    var lengthOfClipboard = 0;
    lengthOfClipboard = window.clipboardData.getData('Text').length;
    if( objField.value.length > numberCharacters - lengthOfClipboard ){
		return( false );
	}
	return retVal;
}
/*** Start specific hacks ***/
var blnButtonNuAanvragen;

function GetSubstringToelichting(objHiddenField, intNumberCharacters)
{
	if(strToelichting.length!=0)
	{
		if(strToelichting.length>intNumberCharacters)
		{
			objHiddenField.value=strToelichting.substr(0, intNumberCharacters);
			strToelichting=strToelichting.substr(intNumberCharacters);
		}
		else
		{
			objHiddenField.value=strToelichting;
			strToelichting="";
		}
	}
}
function toggleButton(objButton) {
	if (objButton.children.item(0).value == "Relatie aanmaken (off)")
	{
		objButton.children.item(0).value = "Relatie aanmaken (on)";
	}
	else
	{
		objButton.children.item(0).value = "Relatie aanmaken (off)";
	}
	toggleObjects( objButton );
}
function resultEvaluateTerugButton() {
	result=false;
	if(strCurrentButtonName.toLowerCase()=='terug' && window.event.type=="submit" && (strDocumentID=="Offerte_Generic_New" || strDocumentID=="Offerte_Generic_Vijzig"))
	{
		result=!window.confirm("Niet opgeslagen wijzigingen gaan verloren. Doorgaan?");
	}
	return(result);
}
/*** End specific hacks ***/

function CheckandSend(formulier) {
	if (formulier == "caravan") { //zet aantal bedragvelden op nul in caravanformulier
		if (getValue( "PP.CD.CD_INVENT" ) == "")
			setValue ("PP.CD.CD_INVENT","0");
		if (getValue( "PP.CD.CD_VOORTNT" ) == "")
			setValue ("PP.CD.CD_VOORTNT","0");
		if (getValue( "PP.CD.CD_VRZAANB" ) == "")
			setValue ("PP.CD.CD_VRZAANB","0");
		if (getValue( "PP.CD.CD_VWACAB" ) == "")
			setValue ("PP.CD.CD_VWACAB","0");
	}
	
	if (formulier == "inboedel") { //zet aantal bedragvelden op nul in inboedelformulier
		if (getValue( "PP.IP.IP_AUDIO" ) == "")
			setValue ("PP.IP.IP_AUDIO","0");
		if (getValue( "PP.IP.IP_LIJFSIE" ) == "")
			setValue ("PP.IP.IP_LIJFSIE","0");
		if (getValue( "PP.IP.IP_VSOMZVM" ) == "")
			setValue ("PP.IP.IP_VSOMZVM","0");
		if (getValue( "PP.IP.IP_VSINSVM" ) == "")
			setValue ("PP.IP.IP_VSINSVM","0");
		if (getValue( "PP.IP.IP_VSOMVVM" ) == "")
			setValue ("PP.IP.IP_VSOMVVM","0");
	}
	
	if (formulier == "pleziervaartuig") { //zet aantal bedragvelden op nul in pleziervaartuigformulier
		if (getValue( "PP_PG_PG_dagwrde" ) == "")
			setValue ("PP_PG_PG_dagwrde","0");
		if ((getValue( "PP_IP_IP_verzsom_mp" ) == "J") && (getValue( "PP_IP_IP_verzsom" ) == ""))
			setValue ("PP_IP_IP_verzsom","0");
	}
}

function Bevestigen(soort) {
	//auto en motor formulier
	if ((getValue('PP.AL.AL_VIEWCOD') == '08001') || (getValue('PP.AL.AL_VIEWCOD') == '08025'))  {
		var oldKenteken = getValue( "PP.OB.OB_KENTEKE");
		var newKenteken = oldKenteken.replace(/\-/g, "");
		setValue ("PP.OB.OB_KENTEKE",newKenteken);
	}
	//caravan formulier
	if (getValue('PP.AL.AL_VIEWCOD') == '08019')  {
		var oldKenteken = getValue( "PP.CR.CR_KENTEKE");
		var newKenteken = oldKenteken.replace(/\-/g, "");
		setValue ("PP.CR.CR_KENTEKE",newKenteken);
	}
	
	if (soort == 'aanvragen') {
		document.getElementById('momentgeduldinhoud').innerHTML = '<b>Moment geduld a.u.b.</b><br>Uw aanvraag wordt verstuurd...';
		var top = ZetMomentHoogte();
		document.getElementById('momentgeduld').style.top = top;
		document.getElementById('momentgeduld').style.display = 'block';
		document.forms[0].actiontype.value = "aanvragen";
		document.forms[0].submit();
	} else if (soort == 'premieberekening') {
		document.getElementById('momentgeduldinhoud').innerHTML = '<b>Moment geduld a.u.b.</b><br>Uw berekening wordt verstuurd...';
		var top = ZetMomentHoogte();
		document.getElementById('momentgeduld').style.top = top;
		document.getElementById('momentgeduld').style.display = 'block';
		document.forms[0].actiontype.value = "premieberekening";
		document.forms[0].submit();
	}
}

function ZetMomentHoogte() {
	var halfschermhoogte = getInsideWindowHeight() / 2;
	
	var theDiv = document.getElementById('divMaintable')
	if (typeof theDiv == "undefined" || theDiv == null){
		theDiv = document.getElementById('inhoud')
	}
		
	var maintablehoogte = theDiv.offsetHeight;
	
	var tmptop = maintablehoogte - halfschermhoogte;
	tmptop = Math.round(tmptop) + 80;
	return tmptop;
}