/*######################################################*\
||                                                      ||
||                  S N E L S I T E                     ||
||                                                      ||
||       Media Design Content Management System         ||
|| Copyright 2002-2004 Media Design  v. ##CMS_VERSION## ||
\*######################################################*/

// With great thanks to A List Apart
// Article : Accessible Pop-up Links
// Author  : Caio Chassot
// Link    : http://www.alistapart.com/articles/popuplinks/

// File version: 1.0 (Aug. 22, 2005)
// SVN: '$Id$'

function isUndefined(v) {
	var undef;
	return v===undef;
}

var _POPUP_FEATURES = 'location=0,toolbar=0,statusbar=0,scrollbars=yes,menubar=0,width=500,height=360,title="snelsite"';

function raw_popup(url, target, features) {
	// pops up a window containing url optionally named target, optionally having features
	if (isUndefined(features)) features = _POPUP_FEATURES;
	if (isUndefined(target  )) target   = '_blank';
	var theWindow = window.open(url, target, features);
	theWindow.focus();
	return theWindow;
}

function link_popup(src, features) {
	// to be used in an html event handler as in: <a href="..." onclick="link_popup(this,...)" ...
	// pops up a window grabbing the url from the event source's href
	return raw_popup(src.getAttribute('href'), src.getAttribute('target') || '_blank', features);
}

function reload_navpanel()
{
	self.parent.nav.window.location = "index.php?do=nav&showgroupid=2";
}


// #############################################################################
// validate input in forms
function validate_input(fields)
{
	var continueSubmit = true;
	var errors = 'Benodigd(e) veld(en) niet ingevuld:\n';

	//for (var i =0; i < arguments.length; i++)
	for (var key in fields)
	{
		if (document.cpform[key].value == '')
		{
			errors += '- ' + fields[key] + "\n";
			continueSubmit = false;
		}
	}
	if (continueSubmit)
	{
		return true;
	}
	else
	{
		alert(errors);
		return false;
	}
}

function disableSubmit(formName)
{
	setTimeout("document." + formName + ".submitbutton.disabled=false;", 30000);
	eval('document.' + formName + '.submitbutton.disabled = true;');
	return true;
}

// #############################################################################
// set control panel frameset title
function set_cp_title()
{
	if (typeof(parent.document) != "undefined" && typeof(parent.document) != "unknown" && typeof(parent.document.title) == "string")
	{
		if (document.title != '')
		{
			parent.document.title = document.title;
		}
		else
		{
			parent.document.title = "Snelsite";
		}
	}
}


// #############################################################################
// toggle all functionality
function in_array(ineedle, haystack, caseinsensitive)
{
	needle = new String(ineedle);

	if (caseinsensitive)
	{
		needle = needle.toLowerCase();
		for (i in haystack)
		{
			if (haystack[i].toLowerCase() == needle)
			{
				return i;
			}
		}
	}
	else
	{
		for (i in haystack)
		{
			if (haystack[i] == needle)
			{
				return i;
			}
		}
	}
	return -1;
}

function js_toggle_all(formobj, formtype, option, exclude, setto)
{
	for (var i =0; i < formobj.elements.length; i++)
	{
		var elm = formobj.elements[i];
		if (elm.type == formtype && in_array(elm.name, exclude, false) == -1)
		{
			switch (formtype)
			{
				case "radio":
					if (elm.value == option) // option == '' evaluates true when option = 0
					{
						elm.checked = setto;
					}
				break;
				case "select-one":
					elm.selectedIndex = setto;
				break;
				default:
					elm.checked = setto;
				break;
			}
		}
	}
}

function js_select_all(formobj)
{
	exclude = new Array();
	// needed? -> exclude[0] = "selectall";
	js_toggle_all(formobj, "select-one", '', exclude, formobj.selectall.selectedIndex);
}

function js_check_all(formobj)
{
	exclude = new Array();
	js_toggle_all(formobj, "checkbox", '', exclude, formobj.allbox.checked);
}

function js_check_all_option(formobj, option)
{
	exclude = new Array();
	js_toggle_all(formobj, "radio", option, exclude, true);
}

function toggle_checkboxes(name)
{
	var elems = document.getElementsByName(name);
	for (var i = 0; i < elems.length; i++)
	{
		if (elems[i].checked)
		{
			elems[i].checked = false;
		}
		else
		{
			elems[i].checked = true;
		}
	}
}


//function js_open_help(scriptname, actiontype, optionval)
//{
//	window.open("help.php?s=" + SESSIONHASH + "&do=answer&page=" + scriptname + "&pageaction=" + actiontype + "&option=" + optionval, "helpwindow", "toolbar=no,scrollbars=yes,resizable=yes,width=600,height=450");
//}

// #############################################################################
// toggle display groups
function open_close_group(group, doOpen)
{
	var curdiv = document.getElementById("group_" + group);

	if (doOpen)
	{
		curdiv.style.display = "";
	}
	else
	{
		curdiv.style.display = "none";
	}
}

function toggle_group(group, field)
{
	var curdiv = document.getElementById("group_" + group);

	//if (curdiv.style.display == "none")
	if (field.checked)
	{
		open_close_group(group, true);
	}
	else
	{
		open_close_group(group, false);
	}
}
function toggle_dynamic(group, ontoggle, field)
{
	var curdiv = document.getElementById("group_" + group);
	if (field.value == ontoggle)
	{
		if (curdiv.style.display == "none")
		{
			open_close_group(group, true);
		}
		else
		{
			open_close_group(group, false);
		}
	}
	else
	{
		open_close_group(group, false);
	}
}

// #############################################################################
// gallery submit function
function fetchGallerydata()
{
	document.forms["cpform"].realpath.value = document.forms["gallery"].path.value;
	document.forms["cpform"].realmaxwidth.value = document.forms["gallery"].maxwidth.value;
	document.forms["cpform"].realtitle.value = document.forms["gallery"].title.value;
	document.forms["cpform"].realthumbsprefix.value = document.forms["gallery"].thumbsprefix.value;
	document.forms["cpform"].realperpage.value = document.forms["gallery"].perpage.value;
	document.forms["cpform"].realthumbsize.value = document.forms["gallery"].thumbsize.value;
	return true;
}

/* Style system */
function loadcontent(url)
{
	var head = document.getElementsByTagName('head').item(0);
	var scripttag = document.getElementById('loadscript');
	if (scripttag)
	{
		head.removeChild(scripttag);
	}
	script = document.createElement('script');
	script.setAttribute('src', url);
	script.setAttribute('type', 'text/javascript');
	script.setAttribute('id', 'loadscript');

	head.appendChild(script);
}



// Row-movement functions
function gather_sequence(hiddenName)
{
	var nodeRow;

	var elemsArray = document.getElementsByName(hiddenName);
	var hiddenFormVar = elemsArray[0]; // it's imperative to use this function only with unique hidden form var names!

	var nodeTable = document.getElementById('sequence');

	for(var i = 0, nLength = nodeTable.childNodes.length; i < nLength; i++)
	{
		nodeRow = nodeTable.childNodes[i];
		if(nodeRow.nodeType != 1)
		{
			continue
		}
		var regex = /(?:[a-z]+)([0-9]+|cc|subject)/i;
		var m = regex.exec(nodeRow.getAttribute("id"));
		if (m)
		{
			listRowIds.push(m[1]);
		}

	}

	hiddenFormVar.value = listRowIds.join(',');
}

function find_referencing_row(node, dir)
{
	do
	{
		node = (dir == "down") ? node.nextSibling : node.previousSibling;
	} while(node != null && node.nodeName.toLowerCase() != "tr");

	return node;
}

var listRowIds = [];
function move_row(node, dir)
{
	var nodeMove = node.parentNode.parentNode;
	var nodeParent = nodeMove.parentNode;
	var nodeReference = find_referencing_row(nodeMove, dir);

	if(nodeReference == null) // Don't move if first or last
	{
		return;
	}

	var nReferenceIndex = nodeReference.__nRowIndex;
	var nMoveIndex = nodeMove.__nRowIndex;

	if(dir == "down")
	{
		nodeReference = find_referencing_row(nodeReference, "down");
		if(nodeReference == null)
		{ // IE won't follow the specs for Node.insertBefore, therefore we need appendChld
			nodeParent.appendChild(nodeParent.removeChild(nodeMove))
		}
		else
		{
			nodeParent.insertBefore(nodeParent.removeChild(nodeMove), nodeReference);
		}
	}
	else
	{
		nodeParent.insertBefore(nodeParent.removeChild(nodeMove), nodeReference);
	}

	var sMoveId = listRowIds[nMoveIndex];
	listRowIds[nMoveIndex] = listRowIds[nReferenceIndex];
	listRowIds[nReferenceIndex] = sMoveId;
}

function remove_row(elem)
{
	elem.parentNode.parentNode.parentNode.removeChild(elem.parentNode.parentNode);
}

//#########
// - not used?
function gather_inputdata(fieldName, hiddenName)
{
	var listFieldIds = [];

	var hiddenElemsArray = document.getElementsByName(hiddenName);
	var hiddenFormVar = hiddenElemsArray[0]; // it's imperative to use this function only with unique hidden form var names!

	var nodeTable = document.getElementById('sequence');

	var sequenceRows = 0;
	for(var i = 0, nLength = nodeTable.childNodes.length; i < nLength; i++)
	{
		if (nodeTable.childNodes[i].nodeName.toLowerCase() == 'tr')
		{
			for (var j = 0; j < nodeTable.childNodes[i].childNodes.length; j++)
			{
				if (nodeTable.childNodes[i].childNodes[j].nodeName.toLowerCase() == 'td')
				{
					for (var k = 0; k < nodeTable.childNodes[i].childNodes[j].childNodes.length; k++)
					{
						if (nodeTable.childNodes[i].childNodes[j].childNodes[k].nodeName.toLowerCase() == 'input')
						{
							var inputVal = 30;
							if (nodeTable.childNodes[i].childNodes[j].childNodes[k].value > 0)
							{
								inputVal = nodeTable.childNodes[i].childNodes[j].childNodes[k].value;
							}
							listFieldIds.push(inputVal);
						}

					}
				}
			}
		}
	}
	hiddenFormVar.value = listFieldIds.join(',');
}
//##########

// Lichtkrant JS
var altcolor = 0;
function add_lichtkrantrow(title, contentid)
{
	var ourTable = document.getElementById('sequence');
	var createRow = document.createElement('tr');

	createRow.setAttribute('id', 'cid' + contentid);
	createRow.className = 'alt' + ((altcolor++ % 2) + 1);

	// first TD
	var tdOne = document.createElement('td');
	var fieldTitle = document.createElement('strong');

	fieldTitle.appendChild(document.createTextNode(title));
	tdOne.appendChild(fieldTitle);

	// second TD
	var tdTwo = document.createElement('td');

	var inputField = document.createElement('input');

	inputField.setAttribute('type', 'text');
	inputField.setAttribute('size', '3');
	inputField.setAttribute('maxlength', '3');
	inputField.setAttribute('tabindex', '1');
	inputField.name = 'seconds[]';
	inputField.value = '30';
	inputField.className = 'bginput';

	var secs = document.createElement('small');
	secs.appendChild(document.createTextNode('seconden'));

	tdTwo.appendChild(inputField);
	tdTwo.appendChild(secs);

	// third TD
	var tdThree = document.createElement('td');

	var linkUp = document.createElement('a');
	linkUp.setAttribute('href', 'javascript:void(0)');
	linkUp.onclick = function () { move_row(this, 'up') };
	var imgUp = document.createElement('img');
	imgUp.setAttribute('src', '/cpstyle/icons/arrow_up.gif');
	imgUp.setAttribute('alt', 'omhoog');
	linkUp.appendChild(imgUp);

	var linkDown = document.createElement('a');
	linkDown.setAttribute('href', 'javascript:void(0)');
	linkDown.onclick = function () { move_row(this, 'down') };
	var imgDown = document.createElement('img');
	imgDown.setAttribute('src', '/cpstyle/icons/arrow_down.gif');
	imgDown.setAttribute('alt', 'omlaag');
	linkDown.appendChild(imgDown);

	var linkDel = document.createElement('a');
	linkDel.setAttribute('href', 'javascript:void(0)');
	linkDel.onclick = function () { remove_row(this) };
	var imgDel = document.createElement('img');
	imgDel.setAttribute('src', '/cpstyle/icons/delete.gif');
	imgDel.setAttribute('alt', 'verwijder');
	linkDel.appendChild(imgDel);

	tdThree.appendChild(linkUp);
	tdThree.appendChild(linkDown);
	tdThree.appendChild(linkDel);

	createRow.appendChild(tdOne);
	createRow.appendChild(tdTwo);
	createRow.appendChild(tdThree);

	ourTable.appendChild(createRow);
}
// #############################################################################
// confirm delete action
function confirm_delete(id) 
{
	var form = document.getElementById(id);
	var check = false;
	for (var i = 0; i < form.elements.length; i++)
	{
		if (form.elements[i].type == 'checkbox' && form.elements[i].checked == true) 
		{
			check = true;
			break;
		}		
	}

	if (check == false)
	{
		alert("Er zijn geen nieuwsbriefabonnees geselecteerd om te verwijderen!");
		return false;
	}

	return confirm("Weet u zeker dat u deze nieuwsbriefabonnees wilt verwijderen?");
}

// #############################################################################
// disable quickregistrationlist 
function disable_quickreg(element)
{
	var target = document.getElementById('quickdisplay');
	if (element.checked == true)
	{		
		target.disabled = false;
	}
	else
	{
		target.checked = false;
		target.disabled = true;
	}
}

// #############################################################################
// check form for a selected receiver
function receiver_selected() 
{
	var form = document.getElementById('receivercheck');
	for (var i = 0; i < form.elements.length; i++)
	{
		if (form.elements[i].type == "checkbox" && form.elements[i].checked == true) 
		{
			return true;
		}
		if (form.elements[i].type == "text" && form.elements[i].value != "") 
		{
			return true;
		}
	}

	alert('Er moet minimaal een ontvanger ingevuld/geselecteerd zijn om de editie naar te versturen!');
	return false;

}

/*######################################################*\
||                   S N E L S I T E                    ||
||                   ##CMS_VERSION##                    ||
||           Copyright 2002-2004 Media Design           ||
\*######################################################*/