var xmlHttp;
var responseFunction;
var cutElement;
var sAjaxLoadingScreen;

function ajaxRequest(responseFunc, phpFile, parameters, async, data, showLoadingScreen)
{
	xmlHttp = GetXmlHttpObject();
	if (xmlHttp == null)
 	{
		return;
	}
	
	async  = (async  == null || async == true) ? true  : false;
	
	var parameters = parameters.substr(0, parameters.length);
	var parametersArray = parameters.split(", ");
	
	var url = phpFile;
	var paramString = "?";
	for (var i = 0; i < parametersArray.length; i+= 3)
	{
		if(parametersArray[i+2] == 'this')
		{
			var value = escape(document.getElementById(parametersArray[i+1]).value);
		} 
		else if(parametersArray[i+2] == 'thisNoEscape')
		{
			var value = document.getElementById(parametersArray[i+1]).value;
		}
		else if (parametersArray[i+2] == 'status')
		{
			var value = document.getElementById(parametersArray[i+1]).checked;
		}
		else 
		{
			var value = parametersArray[i+1];
		}

		url += paramString + parametersArray[i] + "=" + value;
		paramString = "&";
	}
		
	url += paramString + "sid=" + Math.random() + "&config=" + config;
	
	if(data != null)
	{
		for(var i in data)
			url += "&" + i + "=" + data[i]; 
	}
	
	if(showLoadingScreen != null)
	{
		if(document.getElementById(showLoadingScreen))
		{
		 	setTimeout("if(document.getElementById(sAjaxLoadingScreen)){ document.getElementById(sAjaxLoadingScreen).style.display = 'block';}", 500);
			sAjaxLoadingScreen = showLoadingScreen;
		}
	}
	
	responseFunction = responseFunc;

	xmlHttp.onreadystatechange = stateChanged;
	xmlHttp.open("get", url, async);
	xmlHttp.send(null);
}

function GetXmlHttpObject()
{	
	var xmlHttp=null;	
	try
	{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e)
	{
		//Internet Explorer
		try
		{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttp;
}

function stateChanged() 
{ 
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete")
	{ 
		if(document.getElementById(sAjaxLoadingScreen))
		{
			document.getElementById(sAjaxLoadingScreen).style.display = 'none';
			sAjaxLoadingScreen = null;
		}
		responseFunction(xmlHttp.responseText);
	} 
}


function callAjax(responseFunc, phpFile, parameters, async, data, showLoadingScreen) {
	ajaxRequest(responseFunc, root + "internal/services/" + phpFile, parameters, async, data, showLoadingScreen);
}


function empty(result)
{
	//Do nothing;
}

function showHints(result)
{
	var resultArray = result.split(",");
	document.getElementById(resultArray[0].toString()).innerHTML = resultArray[1];
}

function moveObjectUp(result)
{
	window.location = result;
}

function moveObjectDown(result)
{
	window.location = result;
}

function publish(result)
{
	publishIcon = document.getElementById("publishIcon_" + result);
	if(publishIcon.parentNode.id == "icons_9999")
	{
		if(publishIcon.className == "PublishIconGreen")
		{
			elementsArray = document.getElementsByClassName("PublishIconGreen");
			for(i=0; i<elementsArray.length; i++) 
			{
				elementsArray[i].className = "PublishIconRed";
				elementsArray[i].alt = "Maak zichtbaar voor anderen";
				elementsArray[i].title = "Maak zichtbaar voor anderen";
			}
		}
		else 
		{
			elementsArray = document.getElementsByClassName("PublishIconRed");
			for(i=0; i < elementsArray.length; i++)
			{
				elementsArray[i].className = "PublishIconGreen";
				elementsArray[i].alt = "Verberg voor anderen";
				elementsArray[i].title = "Verberg voor anderen";
			}
		}
		
	} 
	else 
	{
		if(publishIcon.className == "PublishIconGreen") 
		{
			publishIcon.className = "PublishIconRed";
			publishIcon.alt = "Maak zichtbaar voor anderen";
			publishIcon.title = "Maak zichtbaar voor anderen";
		}
		else 
		{
			publishIcon.className = "PublishIconGreen";	
			publishIcon.alt = "Verberg voor anderen";
			publishIcon.title = "Verberg voor anderen";
		}
	}
}

function cutObject(result)
{
	//Parse Data
	resultArray = result.split(",");
	id = resultArray[0];
	acceptedPasteIcons = resultArray[1].split(":");

	//Hide all paste icons
	pasteIcons = document.getElementsByClassName("PasteIconActivated");
	for(i=0; i<pasteIcons.length; i++)
	{
		pasteIcons[i].className = "PasteIconHidden";
	}

	//Show accepted Paste Icons
	pasteIcons = document.getElementsByClassName("PasteIconHidden");
	for(i=0; i<pasteIcons.length; i++)
	{
		var pasteIconPrefix = "pasteIcon_";
		var pasteIconID = pasteIcons[i].id.substr(pasteIconPrefix.length, pasteIcons[i].id.length);
		if(inArray(pasteIconID, acceptedPasteIcons))
			pasteIcons[i].className = "PasteIconActivated";
	}
	
	//Open scissor
	closedCutIcons = document.getElementsByClassName("CutIconClosed");
	for(j=0; j<closedCutIcons.length; j++)
		closedCutIcons[j].className = "CutIcon";
	
	//Reset Copy icon
	doneCopyIcons = document.getElementsByClassName("CopyIconDone");
	for(j=0; j<doneCopyIcons.length; j++)
		doneCopyIcons[j].className = "CopyIcon";
	
	
	//Close scissor
	cutIcons = document.getElementsByClassName("CutIcon");
	for(j=0; j<cutIcons.length; j++)
	{
		if(cutIcons[j].parentNode.id == ("icons_"+id))
			cutIcons[j].className = "CutIconClosed";
	}
	
	cutElement = document.getElementById("object_"+id);
}

function copyObject(result)
{
	//alert(result);
	//Parse Data
	resultArray = result.split(",");
	id = resultArray[0];
	acceptedPasteIcons = resultArray[1].split(":");

	//Show Paste Icons
	pasteIcons = document.getElementsByClassName("PasteIconHidden");
	for(i=0; i<pasteIcons.length; i++)
	{
		var pasteIconPrefix = "pasteIcon_";
		var pasteIconID = pasteIcons[i].id.substr(pasteIconPrefix.length, pasteIcons[i].id.length);
		if(inArray(pasteIconID, acceptedPasteIcons)) 
		{
			pasteIcons[i].className = "PasteIconActivated";
		}
	}
	
	//Open scissor
	closedCutIcons = document.getElementsByClassName("CutIconClosed");
	for(j=0; j<closedCutIcons.length; j++)
		closedCutIcons[j].className = "CutIcon";

	//Reset Copy icon
	doneCopyIcons = document.getElementsByClassName("CopyIconDone");
	for(j=0; j<doneCopyIcons.length; j++)
		doneCopyIcons[j].className = "CopyIcon";
	
	//Change copy icon
	copyIcons = document.getElementsByClassName("CopyIcon");
	for(j=0; j<copyIcons.length; j++)
	{
		if(copyIcons[j].parentNode.id == ("icons_"+id))
			copyIcons[j].className = "CopyIconDone";
	}
	
	copyElement = document.getElementById("object_"+id);
}

function pasteObject(result)
{
	//alert(result);
	if(result != "NO_UPDATE") 
	{
		resultArray = result.split(",");
		goto("?page="+resultArray[0]+"&x="+resultArray[1]+"#object_"+resultArray[1]);
	}
}

function dblClickMenu(databaseID, elementID)
{
	cancelGotoExternalLink();
	clickMenu(databaseID, elementID);
}

function clickMenu (databaseID, elementID)
{
	menuItem = document.getElementById(elementID);
	value = menuItem.innerHTML;
	
	nameStartIndex = value.lastIndexOf('</div>');
	if(nameStartIndex == -1)
		nameStartIndex = value.lastIndexOf('</DIV>');
	nameEndIndex = value.length-1;
	if(value.substr(nameStartIndex + 6, nameEndIndex) != 0)
		name = value.substr(nameStartIndex + 6, nameEndIndex);

	valueLength = name.length;
	name = normalize_space(name);
	
	
	isExternalLink = false;
	if( name.substr(9, 1) == '#' ) {
		isExternalLink = true;
	}
		
	isInput = false;
	if(menuItem.innerHTML.indexOf("<input") != -1)
		isInput = true;
	else if(menuItem.innerHTML.indexOf("<INPUT") != -1)
		isInput = true;
	
	if( (menuItem.className == "ActiveMenuLink" && isInput == false) || (menuItem.className == "MenuHead" && isInput == false) )
	{
		oldHtml = menuItem.innerHTML;
		menuItem.innerHTML = "<div class='tabBorderLeft' ></div><div class='tabBorderRight' ></div>";
		javascriptFunctionString =       "ajaxRequest(editMenu, \"" + root + "internal/services/updateMenu.php\",\"databaseID, " + databaseID + ", string, elementID, " + elementID + ", string, value, updateMenuInput, this\")";
		javascriptCancelFunctionString = "editMenu(\"" + menuItem.id + ", " + name + "\")";
		
		javascriptDeleteFunctionString =  "ajaxRequest(deleteMenu, \"" + root + "internal/services/deleteMenu.php\",\"databaseID, " + databaseID + ", string\")";
		menuItem.innerHTML += "<div class='DeleteIcon' onclick='"+ javascriptDeleteFunctionString + "'></div>";
		menuItem.innerHTML += "<input class='UpdateMenuInput' id='updateMenuInput' value='" + name + "' />";
		menuItem.innerHTML += "<div class='ApplyEditMenu'  onclick='" + javascriptFunctionString +"'       alt='Ok'        title='Ok'></div><div class='CancelEditMenu' onclick='editMenu(\"" + menuItem.id + "," + name + "\");' alt='Annuleren' title='Annuleren'></div>";

		document.getElementById('updateMenuInput').onclick = function() { document.getElementById('updateMenuInput').focus(); };
	}
}

function test(message)
{
	alert(message);	
}

function resetMenuItem(element, innerHtml)
{
	document.getElementById(element).innerHTML = innerHtml;
}

function editMenu(result)
{
	resultArray = result.split(",");
	menuItem = document.getElementById(resultArray[0]);
	menuItem.innerHTML = "<div class='tabBorderLeft' ></div><div class='tabBorderRight' ></div>\n";
	menuItem.innerHTML += resultArray[1];
}

function deleteMenu(result)
{
	//alert(result);
	window.location.reload(false);
}

function normalize_space(input)
{
	return input.replace(/^\s*|\s(?=\s)|\s*$/g, '');	
}

function editPageTitle(pageTitleID, pageDatabaseID)
{
	if(document.getElementById('updateContentSubTitle'))
		updatePageSubTitle('contentDescription', document.getElementById('updateContentSubTitle').value)
	contentTitleElement = document.getElementById(pageTitleID);
	value = contentTitleElement.innerHTML;
	value = normalize_space(value);
	
	if(value.substring(0, 4) == '<h1>')
	{
		value = value.substring(4);
		value = value.substring(0, (value.length-5));
	}
	
	if(value.indexOf("\n") != -1 && value.indexOf("\n")  < value.length - 3)
		value = value.substring(2);
	
	value = trim(value).replace("'", "&#39");

	isInput = false;
	if(contentTitleElement.innerHTML.indexOf("<input") != -1)
		isInput = true;
	else if(contentTitleElement.innerHTML.indexOf("<INPUT") != -1)
		isInput = true;
	
	if(isInput == false)
	{
		javascriptFunctionString = "ajaxRequest(updatePageTitle, \"" + root + "internal/services/updatePageTitle.php\",\"pageDatabaseID, " + pageDatabaseID + ", string, pageTitleID, " + pageTitleID + ", string, value, updateContentTitle, this\")";
		contentTitleElement.innerHTML = "<input size='13' id='updateContentTitle' value='" + value + "' />";
		contentTitleElement.innerHTML += "<div class='ApplyEditPage' onclick='" + javascriptFunctionString +"' alt='Ok' title='Ok'></div><div class='CancelEditPage' alt='Annuleren' title='Annuleren' onclick='updatePageTitle(\""+ contentTitleElement.id + "," + value + "\")'></div>";		
	}
}

function editPageTitleDescription(pageSubTitleID, pageDatabaseID)
{
	if(document.getElementById('updateContentTitle'))
		updatePageTitle('contentTitle', document.getElementById('updateContentTitle').value)
	contentSubTitleElement = document.getElementById(pageSubTitleID);
	value = contentSubTitleElement.innerHTML;
	
	value = normalize_space(value);
	
	if(value.indexOf("\n") != -1 && value.indexOf("\n")  < value.length - 3)
		value = value.substring(2);

	value = trim(value);
	value = value.substring(2);
	
	isInput = false;
	if(contentSubTitleElement.innerHTML.indexOf("<input") != -1)
		isInput = true;
	else if(contentSubTitleElement.innerHTML.indexOf("<INPUT") != -1)
		isInput = true;
	
	if(isInput == false)
	{
		javascriptFunctionString = "ajaxRequest(updatePageSubTitle, \"" + root + "internal/services/updatePageSubTitle.php\",\"pageDatabaseID, " + pageDatabaseID + ", string, pageSubTitleID, " + pageSubTitleID + ", string, value, updateContentSubTitle, this\")";
		contentSubTitleElement.innerHTML = " - <input size='13' id='updateContentSubTitle' value='" + value + "' />";
		contentSubTitleElement.innerHTML += "<div class='ApplyEditPage' onclick='" + javascriptFunctionString +"' alt='Ok' title='Ok'></div><div class='CancelEditPage' alt='Annuleren' title='Annuleren' onclick='updatePageSubTitle(\""+ contentSubTitleElement.id + "," + value + "\")'></div>";		
	}
}

function updatePageTitle(result)
{
	resultArray = result.split(",");
	resultArray[1] = normalize_space(resultArray[1]);
	pageTitleElement = document.getElementById(resultArray[0]);
	pageTitleElement.innerHTML = "<h1>"+trim(resultArray[1]) + "</h1> ";
}

function updatePageSubTitle(result)
{
	resultArray = result.split(",");
	pageSubTitleElement = document.getElementById(resultArray[0]);
	if(resultArray[1].length >= 1)
		pageSubTitleElement.innerHTML = "- " + trim(resultArray[1]);
	else
		pageSubTitleElement.innerHTML = trim(resultArray[1]);
}

function manageAdvertisementAction(result)
{
	action = result.split(",");
		
	if(!action[2])
		action[2] = '';
	
	if(action[3] == 'select')
	{
		dropDown = document.getElementById("edit_action_image_id");
		imageUrl = document.getElementById("edit_action_image");
		image	 = document.getElementById("selectedActionImage");
	}
	else
	{
		dropDown 	 = document.getElementById("edit_action_image_id");
		title	 	 = document.getElementById("edit_action_image_title");
		imageUrl 	 = document.getElementById("edit_action_image");
		image	  	 = document.getElementById("editActionImage");
	}	
	
	image.parentNode.style.display = 'block';
	
	var delOption 	= -1;
	var delOptionID = 0;
	
	if(action[0] == 0)
		image.parentNode.style.display = 'none';
	
	if(action[0] == 'delete')	// image deleted
	{
		delOption = action[1];
		action[0] = 0
		action[1] = '';
		action[2] = '';
		image.parentNode.style.display = 'none';
	}
			
	image.src   = action[1];
	image.title = action[2];
	image.alt   = action[2];

	if(action[3] != 'select')
	{
		title.value = action[2];

		for(i = 0; i < dropDown.length; i++)
		{
			if(dropDown.options[i].value == delOption)
			{
				delOptionID = i;
				continue;
			}
			
			if(dropDown.options[i].value == action[0])
			{
				if(action[0] != 0)
					dropDown.options[i].text = action[2];
								
				dropDown.selectedIndex = i;
			}
		}
	}
	
	if(delOptionID != 0)
	{
		actionSelect = document.getElementById("actionSelect");
		image		 = document.getElementById("selectedActionImage");
		
		dropDown.options[delOptionID] 	  = null;
		actionSelect.options[delOptionID] = null;
		image.parentNode.style.display 	  = 'none';
	}
}


function addContact(result) {
	var resultArray = result.split(',');
	var contactSelect = document.getElementById('contactSelectionPullDown');
	
	contactSelect[contactSelect.options.length] = new Option(resultArray[0], resultArray[resultArray.length - 1]);
	contactSelect[contactSelect.options.length - 1].selected = true;
}

function addLink(result) {
	//alert(result);
	var resultArray = result.split(',');
	var id 	 = resultArray[0];
	var name = resultArray[1];
	
	var linkSelect     = document.getElementById('linksAdminLinksDropdown');
	var addButton 	   = document.getElementById('submitLinkButton');
	var deleteButton   = document.getElementById('deleteLinkButton');
	
	var update = false;
	if(id)
	{
		for(var i = 0; i < linkSelect.options.length; i++)
		{
			if(linkSelect.options[i].value == id)
			{
				update = true;
				linkSelect.options[i] = new Option(name, id);
				linkSelect.options[i].selected = true;
			}
		}
	}
	if(update)
	{
		addButton.value = "Link wijzigen";
		deleteButton.style.display = '';
		alert("Link gewijzigd");
	}
	else
	{
		linkSelect[linkSelect.options.length] = new Option(name, id);
		alert("Link toegevoegd");
		selectLink("");
	}
}

function deleteLink(id){
	var tabID 			= 'tab_externTabPage';
	var activateID  	= 'externTabPage';
	var TabNavigationID = 'contactTabNavigation';
		
	var extern_name   		= document.getElementById('extern_name');
	var extern_url    		= document.getElementById('extern_url');
	var	extern_description  = document.getElementById('extern_description');
	var intern_dropdown 	= document.getElementById('internal_page_drop_down');
	var intern_description  = document.getElementById('intern_description');
	var contact_dropdown 	= document.getElementById('contactSelect');
	var contact_description = document.getElementById('contact_description');
	
	var addButton 			= document.getElementById('submitLinkButton');
	var deleteButton		= document.getElementById('deleteLinkButton');
								
	extern_name.value 		 = '';
	extern_url.value  		 = '';
	extern_description.value = '';
	intern_dropdown.selectedIndex = 0;
	intern_description.value = '';
	contact_dropdown.selectedIndex = 0;
	contact_description.value = '';
	
	var linkSelect = document.getElementById('linksAdminLinksDropdown');
	for(var i = 0; i < linkSelect.options.length; i++)
	{
		if(linkSelect.options[i].value == id)
		{
			linkSelect.options[i] = null;
		}
	}
	
	addButton.value = "Link toevoegen";
	deleteButton.style.display = 'none';
	
	switchTab(tabID, activateID, TabNavigationID);
}

function selectLink(result) {
	
	var tabID 			= 'tab_externTabPage';
	var activateID  	= 'externTabPage';
	var TabNavigationID = 'contactTabNavigation';
		
	var extern_name   		= document.getElementById('extern_name');
	var extern_url    		= document.getElementById('extern_url');
	var	extern_description  = document.getElementById('extern_description');
	var intern_dropdown 	= document.getElementById('internal_page_drop_down');
	var intern_description  = document.getElementById('intern_description');
	var contact_dropdown 	= document.getElementById('contactSelect');
	var contact_description = document.getElementById('contact_description');
	
	var addButton 			= document.getElementById('submitLinkButton');
	var deleteButton		= document.getElementById('deleteLinkButton');
	
	var edit				= document.getElementById('editModeHidden'); 
	
	extern_name.value 		 = '';
	extern_url.value  		 = '';
	extern_description.value = '';
	intern_dropdown.selectedIndex = 0;
	intern_description.value = '';
	contact_dropdown.selectedIndex = 0;
	contact_description.value = '';
	
	if(result == "")
	{
		addButton.value = "Link toevoegen";
		deleteButton.style.display = 'none';
		edit.value 		= 0;
	}
	else
	{		
		var resultArray = result.split(',');
		var id   = resultArray[0];
		var name = resultArray[1];
		var url  = resultArray[2];
		var text = resultArray[3];
		var type = resultArray[4];
				
		addButton.value = "Link wijzigen";
		deleteButton.style.display = '';
		edit.value 		= id;
		
		if(type == "intern")
		{
			tabID 			= 'tab_internTabPage';
			activateID  	= 'internTabPage';
					
			var page_id     = url.split('=')[1];
			var i;
			for(i = 0; i < intern_dropdown.options.length; i++)
				if(intern_dropdown.options[i].value == page_id)
					break;
			intern_dropdown.selectedIndex = i;
			intern_description.value      = text;
		}
		else if (type == 'contact')
		{
			tabID 			= 'tab_contactTabPage';
			activateID  	= 'contactTabPage';
			
			var contact_id = resultArray[5];
			var i;
			for(i = 0; i < contact_dropdown.options.length; i++)
				if(contact_dropdown.options[i].value == contact_id)
					break;
			contact_dropdown.selectedIndex = i;
			contact_description.value      = text;
		}
		else
		{
			extern_name.value 		 = name;			
			extern_url.value 		 = url;
			extern_description.value = text;
		}
	}
		
	switchTab(tabID, activateID, TabNavigationID);
}

function newPhotoCollection(result)
{
	var resultArray = result.split(',');
	var collectionSelect = document.getElementById(resultArray[2]);
	collectionSelect[collectionSelect.length] = new Option(resultArray[0], resultArray[1]);
	collectionSelect[collectionSelect.length-1].selected = true;
}

function addCategory(result)
{
	if(result != 'FALSE')
	{
		var ul = document.getElementById('photoCategoryObject_ul');
		ul.innerHTML += result;
	} else {
		alert('Category betaat al');	
	}
}

function database2objects(result)
{
	var resultsArrayString = result.split('Array\n(')[1];
	resultsArrayString = resultsArrayString.substr(0, resultsArrayString.length-2);

	var resultsArrayStrings = resultsArrayString.split(')\n');
	
	var resultsArrayStrings2 = new Array();
	for(i = 0; i < resultsArrayStrings.length; i++)
	{
		if(resultsArrayStrings[i] == null)
			continue;
			
		resultsArrayStrings2.push(resultsArrayStrings[i].split('(\n')[1])
	}
	
	var resultsArray = new Array();
	for(j = 0; j < resultsArrayStrings2.length-1; j++)
	{
		var resultArray = new Array();
		if(resultsArrayStrings2[j] == null)
			continue;
				
		var	resultProperties = resultsArrayStrings2[j].split('\n');
		for(k = 0; k < resultProperties.length; k++)
		{
			var propertyName = trim(resultProperties[k].split('] => ')[0]);
			propertyName = propertyName.substr(1, propertyName.length - 1);
			propertyValue = resultProperties[k].split('] => ')[1];
			if(propertyName != null && propertyValue != null)
				resultArray[propertyName] = propertyValue;
		}
		resultsArray.push(resultArray);
	}
	return resultsArray;
}

function array2object(result)
{
	var resultsArrayString = result.split('Array\n(')[1];
	resultsArrayString = resultsArrayString.substr(0, resultsArrayString.length-2);
		
	var resultArray = new Array();
	var	resultProperties = resultsArrayString.split('\n');
	for(k = 0; k < resultProperties.length; k++)
	{
		var propertyName = trim(resultProperties[k].split('] => ')[0]);
		propertyName = propertyName.substr(1, propertyName.length - 1);
		propertyValue = resultProperties[k].split('] => ')[1];
		resultArray[propertyName] = propertyValue;
	}
	
	return resultArray;
}
