var kalenderCollapse = '';
var kalenderTimes = new Array;
var currentTimeSelect = new Array;
var tabNrs = new Array;
function changeParticulierBedrijf() {
	setTimeout("changeParticulierBedrijfReal();",100);
}
function changeParticulierBedrijfReal() {
	if (document.getElementsByName('account')[1].checked == true) {
		document.getElementById('ExtraBedrijfGegevens').style.display = 'block';

	} else {
		document.getElementById('ExtraBedrijfGegevens').style.display = 'none';
	}

}
function goToUrl(obj,checkTXT,tagSelf) {
	if (checkTXT) {
		var agree=confirm(checkTXT);
		if (!agree) return false;
	}
	if (tagSelf == 1) location.href=obj.href;
	else location.href=obj.getElementsByTagName('a')[0].href;
	return false;
}

function showKalender(type,obj,kind) {
	if (type == 'hide') {
		document.getElementById('kalender').style.display='none';
		kalenderCollapse = '';
	}
	if (type == 'startdatum') {
		if (kalenderCollapse == 'startdatum') {
			document.getElementById('kalender').style.display='none';
			kalenderCollapse = '';
		} else {
			kalenderCollapse = 'startdatum';
			changeKalender();
			document.getElementById('kalender').style.display='block';
			if (!kind) {
				document.getElementById('kalender').style.left='732px';
				document.getElementById('kalender').style.top='382px';
			} else if (kind == 1) {
				document.getElementById('kalender').style.left='605px';
				document.getElementById('kalender').style.top='545px';
			} else if (kind == 2) {
				document.getElementById('kalender').style.left='732px';
				document.getElementById('kalender').style.top='499px';
			} else if (kind == 3) {
				document.getElementById('kalender').style.left='616px';
				document.getElementById('kalender').style.top='351px';
			} else if (kind == 4) {
				document.getElementById('kalender').style.left='483px';
				document.getElementById('kalender').style.top='419px';
			}
		}
	}
	if (type == 'einddatum') {
		if (kalenderCollapse == 'einddatum') {
			document.getElementById('kalender').style.display='none';
			kalenderCollapse = '';
		} else {
			kalenderCollapse = 'einddatum';
			changeKalender();
			document.getElementById('kalender').style.display='block';
			if (!kind) {
				document.getElementById('kalender').style.left='732px';
				document.getElementById('kalender').style.top='428px';
			} else if (kind == 1) {
				document.getElementById('kalender').style.left='605px';
				document.getElementById('kalender').style.top='595px';
			} else if (kind == 2) {
				document.getElementById('kalender').style.left='732px';
				document.getElementById('kalender').style.top='553px';
			} else if (kind == 3) {
				document.getElementById('kalender').style.left='616px';
				document.getElementById('kalender').style.top='397px';
			} else if (kind == 4) {
				document.getElementById('kalender').style.left='731px';
				document.getElementById('kalender').style.top='419px';
			}

		}
	}

}

function changeKalender(truwWhat) {
	kalenderTimes = new Array;
	var d=new Date();
	d.setTime(0);

	var invulDate = document.getElementById('s_'+kalenderCollapse).value;

	var matches = new Array;
	if (matches = invulDate.match('^([012]?[0-9]|30|31)\/(0?[0-9]|10|11|12)\/(20[0-9]{2})$')) {
		d.setMonth(matches[2]-1);
		d.setYear(matches[3]);
		d.setDate(matches[1]);
		currentTimeSelect[kalenderCollapse] = d.getTime();
	}

	var matches = new Array;
	if (truwWhat == 'select') {
		d.setMonth(document.getElementsByName('maand')[0].value-1);
		d.setYear(document.getElementsByName('jaar')[0].value);
	} else if (matches = invulDate.match('^([012]?[0-9]|30|31)\/(0?[0-9]|10|11|12)\/(20[0-9]{2})$')) {
		d.setMonth(matches[2]-1);
		d.setYear(matches[3]);
	}

	d.setDate(1);
	var time = d.getTime();
	document.getElementsByName('maand')[0].onchange = doNothing;
	document.getElementsByName('maand')[0].value = d.getMonth()+1;
	document.getElementsByName('maand')[0].onchange = changeKalenderSelect;

	document.getElementsByName('jaar')[0].onchange = doNothing;
	document.getElementsByName('jaar')[0].value = d.getFullYear();
	document.getElementsByName('jaar')[0].onchange = changeKalenderSelect;

	var startDay = d.getDay();
	if (startDay < 1) startDay = 7;
	time -= (startDay*86400000);
	for (a = 1; a <= 42; a++) {
		time +=86400000;
		kalenderTimes[a] = time;
		d.setTime(time);
		document.getElementById('Kfield_'+a).innerHTML = d.getDate();
		if ((a < 7 && d.getDate() > 7) || (a > 28 && d.getDate() < 14))  {
			document.getElementById('Kfield_'+a).className = 'graySquar';

			document.getElementById('Kfield_'+a).onmouseout = doNothing;
			document.getElementById('Kfield_'+a).onmouseover = doNothing;
		} else {
			if (time == currentTimeSelect[kalenderCollapse]) {
				document.getElementById('Kfield_'+a).onmouseout = changeClass1;
				document.getElementById('Kfield_'+a).className = 'kalenderOver';
			} else {
				document.getElementById('Kfield_'+a).className = '';
				document.getElementById('Kfield_'+a).onmouseout = changeClass2;
			}
			document.getElementById('Kfield_'+a).onmouseover = changeClass1;
		}
	}
}

function doNothing(e) {
}

function changeClass1(e) {
	this.className='kalenderOver';
}

function changeClass2(e) {
	this.className='';
}

function changeKalenderSelect(e) {
	changeKalender("select");
}

function changeCurrentDate(id) {
	var d=new Date();
	d.setTime(kalenderTimes[id]);
	var day = d.getDate()+'';
	var month = (d.getMonth()+1)+'';
	var year = d.getFullYear();
	day = (day.length > 1 ? day : '0'+day);
	month = (month.length > 1 ? month : '0'+month);
	document.getElementById('s_'+kalenderCollapse).value = day+'/'+month+'/'+year;
	showKalender('hide');
}

function changeDatesTo(obj) {
	var matches = new Array;
	if (matches = obj.value.match('^([^-]+)-([^-]+)$')) {
		document.getElementById('s_startdatum').value = matches[1];
		document.getElementById('s_einddatum').value = matches[2];
	}
}

function changeNews(id) {
	if (oldSelected) {
		with ( document ) {
			getElementById('nieuwslink-'+oldSelected).style.color	= '#999999';
			getElementById('nieuwsitem-'+oldSelected).style.display	= 'none';
			
			getElementById('nieuwslink-'+id).style.color	= '#000000';
			getElementById('nieuwsitem-'+id).style.display	= 'block';
		}
		
		oldSelected = id;
	}
}

function changeTab ( id, tabname, stdClass ) {
	for ( var i = 1; i <= tabNrs [ tabname ]; i++ ) {
		with ( document ) {
			getElementById ( tabname + i ).className					= stdClass;
			getElementById ( tabname + 'content' + i ).style.display	= 'none';
			getElementById ( tabname + 'underline' + i ).style.display	= 'none';
		}
	}
	
	with ( document ) {
		getElementById ( tabname + id ).className					= stdClass + ' current';
		getElementById ( tabname + 'content' + id ).style.display	= 'block';
		getElementById ( tabname + 'underline' + id ).style.display	= 'block';
	}
}

function showWWvergeten(switcher) {
	if (switcher == 1) {
		document.getElementById('loginContent').style.display = 'none';
		document.getElementById('wwVergetenContent').style.display = 'block';
	} else {
		document.getElementById('wwVergetenContent').style.display = 'none';
		document.getElementById('loginContent').style.display = 'block';
	}
}

function checkEmailWWvergeten(value) {
	var tempValue = value+'';
	if (!tempValue.match(/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/)) {
		alert('Geef een juist emailadres op.');
		return false;
	}
}
function flash(inp) {
	document.write(inp);
}

function vulInInf(field,value) {
	if (document.getElementsByName(field) && document.getElementsByName(field)[0]) {
		if (document.getElementsByName(field)[0].type == 'radio' || document.getElementsByName(field)[0].type == 'checkbox') {
			for (var z = 0; z < document.getElementsByName(field).length; z++) {
				if (document.getElementsByName(field)[z].value == value) document.getElementsByName(field)[z].checked = true;
			}
		} else {
			document.getElementsByName(field)[0].value = value;
		}
	}
}

function setCookie ( name, value, days ) {
	if ( days ) {
		var date = new Date ( );
		
		date.setTime ( date.getTime ( ) + ( days * 24 * 60 * 60 * 1000 ) );
		
		var expires = "; expires=" + date.toGMTString ( );
	}
	else {
		var expires = "";
	}
	
	document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie ( name ) {
	var nameEQ	= name + "=";
	var ca		= document.cookie.split ( ';' );
	
	for ( var i = 0; i < ca.length; i++ ) {
		var c = ca [ i ];
		
		while ( c.charAt ( 0 ) == ' ' )
			c = c.substring ( 1, c.length );
		
		if ( c.indexOf ( nameEQ ) == 0 )
			return c.substring ( nameEQ.length, c.length );
	}
	
	return null;
}

function deleteCookie ( name ) {
	createCookie ( name, "", -1 );
}

function json_encode(mixed_val) {

    var indent;
    var value = mixed_val;
    var i;

    var quote = function (string) {
        var escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
        var meta = {    // table of character substitutions
            '\b': '\\b',
            '\t': '\\t',
            '\n': '\\n',
            '\f': '\\f',
            '\r': '\\r',
            '"' : '\\"',
            '\\': '\\\\'
        };

        escapable.lastIndex = 0;
        return escapable.test(string) ?
        '"' + string.replace(escapable, function (a) {
            var c = meta[a];
            return typeof c === 'string' ? c :
            '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
        }) + '"' :
        '"' + string + '"';
    }

    var str = function(key, holder) {
        var gap = '';
        var indent = '    ';
        var i = 0;          // The loop counter.
        var k = '';          // The member key.
        var v = '';          // The member value.
        var length = 0;
        var mind = gap;
        var partial = [];
        var value = holder[key];

        // If the value has a toJSON method, call it to obtain a replacement value.
        if (value && typeof value === 'object' &&
            typeof value.toJSON === 'function') {
            value = value.toJSON(key);
        }

        // What happens next depends on the value's type.
        switch (typeof value) {
            case 'string':
                return quote(value);

            case 'number':
                // JSON numbers must be finite. Encode non-finite numbers as null.
                return isFinite(value) ? String(value) : 'null';

            case 'boolean':
            case 'null':
                // If the value is a boolean or null, convert it to a string. Note:
                // typeof null does not produce 'null'. The case is included here in
                // the remote chance that this gets fixed someday.

                return String(value);

            case 'object':
                // If the type is 'object', we might be dealing with an object or an array or
                // null.
                // Due to a specification blunder in ECMAScript, typeof null is 'object',
                // so watch out for that case.
                if (!value) {
                    return 'null';
                }

                // Make an array to hold the partial results of stringifying this object value.
                gap += indent;
                partial = [];

                // Is the value an array?
                if (Object.prototype.toString.apply(value) === '[object Array]') {
                    // The value is an array. Stringify every element. Use null as a placeholder
                    // for non-JSON values.

                    length = value.length;
                    for (i = 0; i < length; i += 1) {
                        partial[i] = str(i, value) || 'null';
                    }

                    // Join all of the elements together, separated with commas, and wrap them in
                    // brackets.
                    v = partial.length === 0 ? '[]' :
                    gap ? '[\n' + gap +
                    partial.join(',\n' + gap) + '\n' +
                    mind + ']' :
                    '[' + partial.join(',') + ']';
                    gap = mind;
                    return v;
                }

                // Iterate through all of the keys in the object.
                for (k in value) {
                    if (Object.hasOwnProperty.call(value, k)) {
                        v = str(k, value);
                        if (v) {
                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
                        }
                    }
                }

                // Join all of the member texts together, separated with commas,
                // and wrap them in braces.
                v = partial.length === 0 ? '{}' :
                gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
                mind + '}' : '{' + partial.join(',') + '}';
                gap = mind;
                return v;
        }
    };

    // Make a fake root object containing our value under the key of ''.
    // Return the result of stringifying the value.
    return str('', {
        '': value
    });
}