//Startup functions
var iTimeoutGotoExternalLinkID = null;

function goto(location)
{
	if(location != 'none')
		window.location = location;	
}

function gotoExternalLink(url)
{
	iTimeoutGotoExternalLinkID = setTimeout("doGotoExternalLink('" + url + "')", 300);
}

function doGotoExternalLink(url)
{		
	window.open(url);
}

function cancelGotoExternalLink()
{
	window.clearTimeout(iTimeoutGotoExternalLinkID);
}

function callConfirm (question, location)
{
	if(confirm(question))
	{
		goto(location);
	}	
}

function hide(object, useVisibility)
{
	useVisibility = (useVisibility == undefined) ? false : useVisibility;
		
	element = document.getElementById(object);
	
	if(useVisibility)
	{
		element.style.visibility = 'hidden';
		element.style.zIndex = '1';
		element.style.left = "-99999px";
	}
	else
		element.style.display = 'none';	

}

function show(object, useVisibility)
{
	useVisibility = (useVisibility == undefined) ? false : useVisibility;
		
	element = document.getElementById(object);
	
	if(useVisibility)
	{
		element.style.visibility = 'visible';
		element.style.display = '';
		element.style.zIndex = '2';
		element.style.left = "0px";
	}
	else
		element.style.display = '';	
}

function moveRowUp(selection)
{
	selection = document.getElementById(selection);
	if(selection.selectedIndex > 0)
	{
		var lastIndex = selection.selectedIndex;
		var lastValue = selection.options[selection.selectedIndex].value;
		var lastText = selection.options[selection.selectedIndex].text;
		
		selection.options[lastIndex] = new Option(selection.options[lastIndex-1].text, selection.options[lastIndex-1].value);
		selection.options[lastIndex-1] = new Option(lastText, lastValue);
		
		selection.selectedIndex = lastIndex-1;
	}
}

function moveRowDown(selection)
{
	selection = document.getElementById(selection);
	if(selection.selectedIndex < selection.length-1)
	{
		var lastIndex = selection.selectedIndex;
		var lastValue = selection.options[selection.selectedIndex].value;
		var lastText = selection.options[selection.selectedIndex].text;
		
		selection.options[lastIndex] = new Option(selection.options[lastIndex+1].text, selection.options[lastIndex+1].value);
		selection.options[lastIndex+1] = new Option(lastText, lastValue);
		
		selection.selectedIndex = lastIndex+1;
	}
}

function highlightInput(inputField)
{		
	inputField.style.border = "1px solid #DD0055";
	inputField.style.height = "18px";
	inputField.focus();
}

function removeHighlightInput(inputField)
{
	inputField.style.border = "1px solid #CCCCCC";
	inputField.style.height= "18px";	
	
}

function hideMsgBox()
{
	document.getElementById('msgBox').innerHTML = " ";
	document.getElementById('msgBox').style.display = "none";
}

function showMsgBox(msg)
{
	document.getElementById('msgBox').innerHTML = msg
	document.getElementById('msgBox').style.display = "block";	
}

function validateEmail(inputField)
{
	inputField = document.getElementById(inputField);
	
	var value = inputField.value;
	var valid = false;
	if (value != '')
		valid = checkEmail(value);
	
		
	//validate here
	if(!valid)
	{
		highlightInput(inputField);
		showMsgBox("Dit is geen gelid e-mail adress.");		
	} else {
		removeHighlightInput(inputField);
		hideMsgBox();
	}
	return valid;
}

function checkEmail(value)
{
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(value)){
		return (true)
	}
	return (false)
}

function validateEmpty(inputField, minChars, defaultValue)
{
	var valid = true;
	var msg = '';
	inputField = document.getElementById(inputField);

	if(inputField.value == '')
		valid = false;
	
	if(minChars < 1)
		minChars = 1;

	if(inputField.value.length < minChars) {
		valid = false;
		msg = "Minimaal " + minChars + " karakters.";
	}
	if(inputField.value == defaultValue && inputField.value != '') {
		valid = false;
		msg = "Standardwaarde: " + defaultValue + ", niet toegestaan.";
	}
	
	if(valid) {
		removeHighlightInput(inputField);
		hideMsgBox();
	} else {
		highlightInput(inputField);
		showMsgBox(msg);
	}
	
	return valid;
}

function validateNumber(inputField)
{
	var inputField = document.getElementById(inputField);
	var value = inputField.value;
	
	if (value == '')
		return false;
	
	if(/^([0-9\,])+$/.test(value))
	{
		hideMsgBox();
		removeHighlightInput(inputField);
		return true;
	} else {
		msg = "Dit is geen getal, voer getal in.";
		if(value.length == 0) {
			msg = "Voer een getal in aub.";
		}
		highlightInput(inputField);
		showMsgBox(msg);
		return false;
	}
}

function submitForm(formID)
{
	document.getElementById(formID).submit();
}

function validateForm(requiredObjects, form)
{
	var requiredObjects = requiredObjects.substr(0, requiredObjects.length-1);
	var requiredObjectsArray = requiredObjects.split(", ");
	var requiredObjectsArray2 = new Array();
	
	var valid = 0;
		
	for (var i=0; i<requiredObjectsArray.length; i+=2)
	{
		requiredObjectsArray2.push(new Array(requiredObjectsArray[i], requiredObjectsArray[i+1]));
	}
	
	
	for (var i=0; i<requiredObjectsArray2.length; i++)
	{
		if(valid == 0)
		{
			if(requiredObjectsArray2[i][1] == 'EMPTY') {
				if(!validateEmpty(requiredObjectsArray2[i][0].toString(), 2, ''))
					valid++;
			}
			if(requiredObjectsArray2[i][1] == 'PASSWORD') {
				if(!validateEmpty(requiredObjectsArray2[i][0].toString(), 5, ''))
					valid++;
			}
			if(requiredObjectsArray2[i][1] == 'NUMBER') {
				if(!validateNumber(requiredObjectsArray2[i][0].toString()))
					valid++;
			}
			if(requiredObjectsArray2[i][1] == 'EMAIL'){
				if(!validateEmail(requiredObjectsArray2[i][0].toString()))
					valid++;
			}
		}
	}
	
	if(valid != 0)
	{	
		//document.getElementById('msgBox').innerHTML = "Niet alle verplichte velden zijn correct ingevult.";
		scroll(0,0);
	} else {
		document.getElementById(form).submit();
	}
}

function selectAll(inputField)
{
	inputField = document.getElementById(inputField);
		
	if(inputField == null)
		return;
		
	inputField.focus();	

	if (document.selection)
    	document.selection.empty();
	else if (window.getSelection)
    	window.getSelection().removeAllRanges();

	if(inputField.value.length > 0 );
		inputField.select();
}

function showAdminIcons(objID) 
{
	var checkBox = document.getElementById("hideAllAdminIconsCheckBox");
	
	if(checkBox == null)
		return;
	
	if(checkBox.checked)
	{
		icons = document.getElementById('icons_'+objID);
		
		if(icons == null)
			return;
			
		icons.style.display = 'block';
		//changeOpac(100, 'icons_'+objID);
		
		object = document.getElementById('object_' + objID);
		
		if(object == null)
			return;
			
		object.style.border = '1px dashed #CCCCCC';
		//object.style.margin = '-1px';
	}
}

function hideAdminIcons(objID) 
{
	icons = document.getElementById('icons_'+objID);
	
	if(icons == null)
		return;
	
	icons.style.display = 'none';
	//opacity('icons_'+objID, 100, 0, 1000);
	
	object = document.getElementById('object_' + objID);
	
	if(object == null)
		return;
	
	object.style.border = '1px solid #FFF';
	//object.style.margin = '0px';
}

function swichCheckBoxes (checkBoxPreFix, userList, parentCheckBoxPreFix, parentID) 
{
	var users = userList.split(",");
	var state = document.getElementById(parentCheckBoxPreFix+parentID).checked;
	
	for (var i = 0; i < users.length; i++)
	{
		var checkBox = document.getElementById(checkBoxPreFix+users[i]);
		checkBox.checked = state;
	}
}

function rollOverImage(img, imgSrc)
{
	document.getElementById(img).src = imgSrc;
	
	adminIcons = document.getElementById(img).parentNode.parentNode.parentNode;

	container = adminIcons.parentNode;
	container.style.border = '1px dashed #dd0055';
	container.style.minHeight = '150px';
}

document.getElementsByClassName = function(cl) {
	var retnode = [];
	var myclass = new RegExp('\\b'+cl+'\\b');
	var elem = this.getElementsByTagName('*');
	
	for (var i = 0; i < elem.length; i++) {
		var classes = elem[i].className;
		if (myclass.test(classes))
			retnode.push(elem[i]);
	}
	
	return retnode;
}; 

function rollOutImage(img, imgSrc)
{
	document.getElementById(img).src = imgSrc;
	
	adminIcons = document.getElementById(img).parentNode.parentNode.parentNode;
	container = adminIcons.parentNode;
	container.style.border = '1px solid #FFF';
	container.style.minHeight = '0px';
}

function trim(myString) 
{
	while (myString.substring(0,1) == ' ')
	{
		myString = myString.substring(1, myString.length);
	}
	while (myString.substring(myString.length-1, myString.length) == ' ')
	{
		myString = myString.substring(0, myString.length-1);
	}
	return myString;
}

function inArray(value, myArray) 
{
	for (var i=0; i<myArray.length; i++) {
		if(myArray[i] == value)
			return true;
	}
	return false;
}

function isNumeric(input)
{
	return (input == parseFloat(input));
}

function hideAllAdminIcons(target)
{
	ajaxRequest(empty, '../internal/services/addToSession.php', 'variable, showAdminIcons, string, value, '+document.getElementById(target).checked+', string');
	
	addPageToMenuIcons = document.getElementsByClassName("AddPageToMenuLink");
	for (var i=0;i<addPageToMenuIcons.length; i++) 
	{
		if(document.getElementById(target).checked)
			addPageToMenuIcons[i].style.display = 'block';
		else
			addPageToMenuIcons[i].style.display = 'none';
	}
	
	PageAdminIcons = document.getElementsByClassName("PageAdminIcons");
	for (var i=0;i<PageAdminIcons.length; i++) 
	{
		if(document.getElementById(target).checked)
			PageAdminIcons[i].style.display = 'block';
		else
			PageAdminIcons[i].style.display = 'none';
	}
	
	ContainerAdminIcons = document.getElementsByClassName("ContainerAdminIcons");
	for (var i=0;i<ContainerAdminIcons.length; i++) 
	{
		if(document.getElementById(target).checked)
			ContainerAdminIcons[i].style.display = 'block';
		else
			ContainerAdminIcons[i].style.display = 'none';
	}
	
	ContainerAdminIcons = document.getElementsByClassName("HiddenPagesPullDown");
	for (var i=0;i<ContainerAdminIcons.length; i++) 
	{
		if(document.getElementById(target).checked)
			ContainerAdminIcons[i].style.display = 'block';
		else
			ContainerAdminIcons[i].style.display = 'none';
	}
	
	ContainerAdminIcons = document.getElementsByClassName("AddExternIcon");
	for (var i=0;i<ContainerAdminIcons.length; i++) 
	{
		if(document.getElementById(target).checked)
			ContainerAdminIcons[i].style.display = 'block';
		else
			ContainerAdminIcons[i].style.display = 'none';
	}
	
	ContainerAdminIcons = document.getElementsByClassName("AddHeadIcon");
	for (var i=0;i<ContainerAdminIcons.length; i++) 
	{
		if(document.getElementById(target).checked)
			ContainerAdminIcons[i].style.display = 'block';
		else
			ContainerAdminIcons[i].style.display = 'none';
	}
}


function opacity(id, opacStart, opacEnd, millisec) {
    //speed for each frame
    var speed = Math.round(millisec / 10);
    var timer = 0;

    //determine the direction for the blending, if start and end are the same nothing happens
    if(opacStart > opacEnd) {
        
		for(i = opacStart; i >= opacEnd; i--)
		{
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
   		
		for(i = opacStart; i <= opacEnd; i++)
        {
	        setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    }
}

//change the opacity for different browsers
function changeOpac(opacity, id) {
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
} 

function shiftOpacity(id, millisec) {
    //if an element is invisible, make it visible, else make it ivisible
    if(document.getElementById(id).style.opacity == 0) {
        opacity(id, 0, 100, millisec);
    } else {
        opacity(id, 100, 0, millisec);
    }
} 

function switchTab(tabID, activateID, TabNavigationID)
{
	var tab 	= document.getElementById(tabID);
	tab.className = 'ActiveTab';
	var radio   = document.getElementById("radioTab_" + tabID);
	radio.checked = true;
	
	var content = document.getElementById(TabNavigationID).childNodes;
	
	for (var i = 0; i < content.length; i++) 
	{
		if(content[i].className == 'Tabs')
		{
			tabs = content[i];
			break;
		}
	}
	
	if(tabs.childNodes[0].id)
		tabs = tabs.childNodes[0].childNodes;
	else
		tabs = tabs.childNodes[1].childNodes;
	
	for (var i = 0; i < tabs.length; i++) 
	{
		if(tabs[i].className == 'ActiveTab') {
			tabs[i].className = 'Tab';
		}
	}
	tab.className = 'ActiveTab';
	
	// Get content ID
	for (var i = 0; i < content.length; i++) 
	{
		if(content[i].className == 'TabsContent')
		{
			content = content[i];
			break;
		}
	}
	
	// Get hide/show pages
	var pages = content.childNodes;
	for (var i = 0; i < pages.length; i++) 
	{
		if(pages[i].id != undefined)
		{
			if (pages[i].id == activateID)
			{
				show(pages[i].id, true);
				pages[i].checked = false;				
			}
			else
			{
				hide(pages[i].id, true);
			}
		}
	}
}

function resizeElement(element, size)
{
	element = document.getElementById(element);
	element.style.height = size + "px";	
}

function resize(elementID, newSize, useAnimation, duration, oldSize)
{
	if(duration == null)
		duration = 0.3;

	var element = document.getElementById(elementID);
	var seconds = duration * 1000;
    var timer = 0;
	if(oldSize == null)
		oldSize = element.clientHeight;
		
	if(useAnimation)
	{
		if(oldSize > newSize) {
			var dSize = oldSize - newSize;
			var stepSize = seconds/dSize;
			for(i = oldSize; i >= newSize; i--) {
				setTimeout("resizeElement('" + elementID + "','" + i + "')",(timer * stepSize));
				timer++;
			}
		} else if(oldSize < newSize) {
			var dSize = newSize - oldSize;
			var stepSize = seconds/dSize;
			for(i = oldSize; i <= newSize; i++) {
				setTimeout("resizeElement('" + elementID + "','" + i + "')",(timer * stepSize));
				timer++;
			}
		}
	} else {
		resizeElement(elementID, newSize);	
	}
}

function switchSize(elementID, size1, size2, useAnimation) 
{
	if(useAnimation == null)
		useAnimation = false;
		
	if(document.getElementById(elementID).clientHeight < size2)
	{
		resize(elementID, size2, useAnimation);
		if(document.getElementById('newContactHandle'))
			document.getElementById('newContactHandle').style.backgroundImage = 'url("../website/images/UpIconOver.png")';
	} else {
		resize(elementID, size1, useAnimation);
		if(document.getElementById('newContactHandle'))
			document.getElementById('newContactHandle').style.backgroundImage = 'url("../website/images/DownIconOver.png")';
	}
}

function removeElementByValue(array, value)
{
	id = -1;
	for(var i=0; i<array.length; i++)
	{
		if(array[i] == value)
		{
			id = i;
			break;
		}
	}
	
	if(id != -1)
		return removeElementByID(array, id);
}

function removeElementByID(array, id)
{
	return array.splice(id, 1);
}


function disableEnterKey(e)
{
     var key;     
     if(window.event)
          key = window.event.keyCode; //IE
     else
          key = e.which; //firefox     

     return (key != 13);
}


function getRadioValue(element)
{
	for(var i = 0; i < element.length; i++)
		if(element[i].checked)
			return element[i].value;
	return "";
}

function setRadioValue(element, val)
{
	if(element == null)
		return;
		
	for(var i = 0; i < element.length; i++)
	{
		if(element[i].value == val)
			element[i].checked = true;
		else
			element[i].checked = false;
	}
}

function getUrlVars()
{    
	var vars = [], hash;    
	var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');     
	for(var i = 0; i < hashes.length; i++)    
	{        
		hash = hashes[i].split('=');        
		vars.push(hash[0]);        
		vars[hash[0]] = hash[1];   
	}    
	return vars;
}
