addLoadEvent( setCookieViewportSize );



// Disable right-click
(function() {
	if ( GLOBAL && GLOBAL.copyBlock ) {
		var imgs = document.getElementsByTagName( 'img' );
		for ( var i = 0; i < imgs.length; i++ ) {
			if ( imgs[i].src.indexOf('.jpg') != -1 ) {
				imgs[i].oncontextmenu = function() { return false };
			}
		}
	}
})();



function setLinkTarget( evt )
{
	var tg = getEventTarget( evt );
	if ( tg.nodeName == 'A' ) {
		if ( tg.hostname != window.location.hostname ) {
			tg.target = '_blank';
		}
	}
}



function getViewportSize() {
	var width, height;
	
	if ( typeof window.innerWidth != 'undefined') {
		width  = window.innerWidth || width;
		height = window.innerHeight || height;
	}
	else if ( typeof document.documentElement != 'undefined' && typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0 ) {
		// IE in standards compliant mode
		width  = document.documentElement.clientWidth || width;
		height = document.documentElement.clientHeight || height;		
	}
	
	width  = ( width > 0 ? width : 1100 );
	height = ( height > 0 ? height : 800 );
	
	return [width, height];
}



function setCookieViewportSize() {
	// Set cookie to store viewport size
	var viewportSizeNew = getViewportSize().join( '_' );
	
	if ( viewportSizeNew != '1100_800' ) {
		// Cookie does not exist or viewportsize has changed
		var objDate  = new Date();
		var lifespan = 1000 * 60 * 60 * 24; // 1 day
		objDate.setTime( objDate.getTime() + lifespan );
		var expDate     = objDate.toGMTString();
		document.cookie = 'viewportSize=' + viewportSizeNew + '; expires=' + expDate + '; path=/';
	}
		
	var imgTime = document.getElementById( 'imgTime' );
	if ( imgTime != null ) {
		imgTime.innerHTML += '<br />Cookie VPS (JS): ' + viewportSizeNew;
	}
	
	return true;
}




// Toggle password visibility
function togglePassword() {
	var showPassword = document.getElementById( 'showPassword' );
	
	if ( showPassword ) {
		showPassword.onclick = function() {
			var sitePassword = document.forms[0].sitePassword;
			try {
				// All but IE
				sitePassword.type = ( this.checked ? 'text' : 'password' );
			}
			catch( e ) {
				// IE
				var sitePasswordClone   = document.createElement( 'input' );
				sitePasswordClone.size  = 10;
				sitePasswordClone.id    = 'sitePassword';
				sitePasswordClone.name  = 'sitePassword';
				sitePasswordClone.value = sitePassword.value;
				sitePasswordClone.type  = ( this.checked ? 'text' : 'password' );
				sitePassword.parentNode.replaceChild( sitePasswordClone, sitePassword );
			}
		}
	}
}



function initKeyNav() {
	document.onkeydown = function( evt ) {
		var evt = evt || window.event;
		var tg  = getEventTarget( evt );
		if ( tg.nodeName == 'INPUT' || tg.nodeName == 'TEXTAREA' ) {
			return;
		}
		
		if ( evt.keyCode >= 37 && evt.keyCode <= 40 ) {
			switch( evt.keyCode ) {
				case 37:
					keyLeft();
					break;
				case 38:
					keyUp();
					break;
				case 39:
					keyRight();
					break;
				case 40:
					keyDown();
					break;
			}
			
			// Set cookie to hide text
			var objDate  = new Date();
			var lifespan = 1000 * 60 * 60; // 1 hour
			objDate.setTime( objDate.getTime() + lifespan );
			var expDate = objDate.toGMTString();
			document.cookie = 'keyboard=1; expires=' + expDate + '; path=/';
			return stopDefaultAction( evt );
		}
	}
}



function initFormatOptions() {
	var links = document.getElementsByTagName( 'A' );
	var popupLink;
	
	for ( var i = 0; i < links.length; i++ ) {
		if ( links[i].className.indexOf('formatOptions') == -1 ) {
			continue;
		}
		
		links[i].onclick = function() {
			var url = this.getAttribute( 'href' );
			openPopup( url );
			return false;
		}
	}
	
}



function checkUpload() {
	if ( !document.forms['frmUpload'] ) {
		return;
	}
	
	document.forms['frmUpload'].onsubmit = function() {
		var uploadImg = document.getElementById( 'uploadImg' );
		if ( uploadImg.value.length > 1 ) {
			document.getElementById( 'btnSubmit' ).disabled = true;
			return true;
		}
		var msg = translate( 'Kies eerst een bestand om te uploaden' );
		alert( msg );
		return false;
	}
}


function openPopup( url )
{
	popupWidth  = 540;
	popupHeight = 300;
	windowWidth = document.body.offsetWidth;
	windowLeft  = ( windowWidth - 570 ) / 2;
	window.open( url + "", "", "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=1,resizable=1,copyhistory=yes,width=" + popupWidth + ",height=" + popupHeight + ",left=" + windowLeft + ",top=300" )
}



function getEventTarget( e ) {
	var event = e || window.event;
    var targetElement = null;

    if ( typeof event.target != 'undefined' ) {
        targetElement = event.target;
    }
	else {
        targetElement = event.srcElement;
    }

    while ( targetElement.nodeType == 3 && targetElement.parentNode != null ) {
        targetElement = targetElement.parentNode;
    }

    return targetElement;
}



function addLoadEvent( func )
{
	var oldOnLoad = window.onload;
	if ( typeof window.onload != 'function' ) {
		window.onload = func;
	}
	else {
		window.onload = function() {
			oldOnLoad();
			func();
		}
	}
}



function attachEventListener( target, eventType, functionRef, capture )
{
    if ( typeof target.addEventListener != 'undefined' ) {
        target.addEventListener( eventType, functionRef, capture );
    }
    else if ( typeof target.attachEvent != 'undefined' ) {
        target.attachEvent( 'on' + eventType, functionRef );
    }
	else {
        eventType = 'on' + eventType;

        if ( typeof target[eventType] == 'function' ) {
            var oldListener = target[eventType];

            target[eventType] = function() {
                oldListener();

                return functionRef();
            }
        }
		else {
            target[eventType] = functionRef;
        }
    }

    return true;
}



function stopDefaultAction( event )
{
    event.returnValue = false;

    if ( typeof event.preventDefault != 'undefined' ) {
        event.preventDefault();
    }

    return true;
}



function deleteCat( catId )
{
	var msg = translate( 'Deze pagina wissen?' );
	 if ( confirm(msg) ) {
		window.location.href = 'categories.php?catId=' + catId + '&catDelete=1';
	}
}



function enableSubmit( page )
{
    var frm = document.form1;
	if ( typeof frm != 'undefined' ) {
		frm.setAttribute( 'action', page );		
		var btnSubmit = document.getElementById( 'btnSubmit' );
		btnSubmit.disabled = false;
		
		frm.onsubmit = function() {
			var formOk = verifyForm( this );
			btnSubmit.disabled = formOk;
			return formOk;
		}
	}    
}



function verifyForm() {
	var formFields = document.getElementsByTagName( 'INPUT' );
	if ( formFields.length == 0 ) {
		return;
	}
	
	var msg = '';
	var fieldValue, isEmpty, labelText, objLabel, fieldClass;
	
	for ( var i = 0; i < formFields.length; i++ ) {
		
		if ( formFields[i].getAttribute('type') != 'text' ) {
			continue;
		}
		fieldClass = formFields[i].className;
		if ( !fieldClass ) {
			continue;
		}
		
		// Paragraphs
		objLabel = formFields[i].parentNode.getElementsByTagName( 'LABEL' )[0];
		if ( !objLabel ) {
			// Table cells
			objLabel = formFields[i].parentNode.parentNode.getElementsByTagName( 'LABEL' )[0];
		}
		if ( !objLabel ) {
			continue;
		}
		
		labelText = objLabel.firstChild.nodeValue.replace( ':', '' );
		if ( !labelText ) {
			continue;
		}
		
		fieldValue = formFields[i].value;
		isEmpty    = ( formFields[i].value.length == 0 );
		
		if ( fieldClass.indexOf('required') != -1 && isEmpty ) {
			msg += "\n- " + labelText + ' ' + translate( 'is verplicht' );
		}
		
		if ( fieldClass.indexOf('phone') != -1 && !isEmpty && !validatePhone(fieldValue) ) {
			msg += "\n- " + labelText + ' ' + translate( 'is geen telefoonnummer' );
		}
		
		if ( fieldClass.indexOf('url') != -1 && !isEmpty && !validateUrl(fieldValue) ) {
			msg += "\n- " + labelText + ' ' + translate( 'is geen domeinnaam' );
		}
		
		if ( fieldClass.indexOf('mail') != -1 && !isEmpty && !validateEmail(fieldValue) ) {
			msg += "\n- " + labelText + ' ' + translate( 'is geen e-mail adres' );
		}
		
	}
	
	if ( msg ) {
		msg = translate( 'Het formulier is niet juist ingevuld:' ) + msg;
		alert( msg );
		return false;
	}
	
	return true;
}



function validateEmail( str )
{
	var pattern = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return pattern.test( str );
}



function validateUrl( str )
{
	var pattern = /^(www\.)?(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return pattern.test( str );
}



function validatePhone( str )
{
	var matches = str.match( /\d/g ); // 'g' = global (search entire string, don't stop at first reference)
	return ( matches && matches.length >= 7 );
}


function translate( str )
{
	var lang = document.body.getAttribute( 'lang' ) || 'en';
	var out  = str;
	if ( typeof language[str][lang] != 'undefined' ) {
		out = language[str][lang];
	}
	return out;
}



var language = [];

language['Banner wissen?'] = {
	"en": "Delete banner?"
}

language['De waarde in het veld moet een getal zijn'] = {
	"en": "The value must be a number"
}

language['is verplicht'] = {
	"en": "is required"
}

language['is geen telefoonnummer'] = {
	"en": "is not a phone number"
}

language['is geen domeinnaam'] = {
	"en": "is not a domain name"
}

language['is geen e-mail adres'] = {
	"en": "is not an e-mail address"
}

language['Het formulier is niet juist ingevuld:'] = {
	"en": "The form has not been filled in correctly:"
}

language['Deze pagina wissen?'] = {
	"en": "Delete this page?"
}

language['Deze foto wissen?'] = {
	"en": "Delete this image?"
}

language['Kies eerst een bestand om te uploaden'] = {
	"en": "First choose a file to upload"
}

language['Wachtwoord vergeten?'] = {
	"en": "Forgot your password?"
}

language['Navigeer met de pijltjes op uw toetsenbord'] = {
	"en": "Navigate with the arrow keys on your keyboard"
}

language['Volledige nieuwe zone invoegen?'] = {
	"en": "Insert completely new zone?"
}

language['Uw wachtwoord is verstuurd naar'] = {
	"en": "Your password has been sent to"
}

language['Wachtwoord sturen naar'] = {
	"en": "Send password to"
}
