function openWindow(url, name, width, height, location, menubar, resizable, scrollbars, status, toolbar) {
	var top = (screen.height / 2) - (height / 2);
	var left = (screen.width / 2) - (width / 2);
	
	window.open(url, name, "top=" + top + "px,left=" + left + "px,width=" + width + "px,height=" + height + "px,location=" + location
					+ ",menubar=" + menubar + ",resizable=" + resizable + ",scrollbars=" + scrollbars + ",status=" + status
					+ ",toolbar=" + toolbar);
}

function confirm_url(url, msg)
{
	if (confirm(msg)) { location.href = url + "&HTTP_REFERER=" + escape(location.href); }
}

function toggleLayer(toggle_obj, toggle_img) {
	if (document.getElementById(toggle_obj).style.display == "none") {
		document.getElementById(toggle_obj).style.display = "inline";
		document.getElementById(toggle_img).src = "/admin/icons/toggle_close.gif";
	} else {
		document.getElementById(toggle_obj).style.display = "none";
		document.getElementById(toggle_img).src = "/admin/icons/toggle_open.gif";
	}
}

function isValidEmail(email, delimeter)
{
	var rgx = new RegExp();
	rgx.compile("^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$");
	
	if (email.indexOf(delimeter) >= 0) {
		// multiple e-mail addresses
		var email_array = email.split(delimeter);
		
		for (var i = 0; i < email_array.length; i++) {
			if (!rgx.test(email_array[i])) return false;
		}
	} else {
		// single e-mail address
		if (!rgx.test(email)) return false;
	}
	
	return true;
}

function isValidURL(url)
{
	var rgx = new RegExp();
	rgx.compile("^[A-Za-z]+://[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&\?\/.=]+$");
	
	if (!rgx.test(url)) {
		return false;
	}
	
	return true;
}

function isNumeric(txt)
{
	var validChars = "0123456789";
	var isNumber = true;
	var chr = "";

	for (i = 0; i < txt.length && isNumber == true; i++) {
		chr = txt.charAt(i);
		if (validChars.indexOf(chr) == -1) {
			isNumber = false;
		}
	}
	return isNumber;
}

function toggleDays(form_name, field_name) {
	var day = document.forms[form_name].elements[field_name + "_day"].options[document.forms[form_name].elements[field_name + "_day"].selectedIndex].value;
	var month = document.forms[form_name].elements[field_name + "_month"].options[document.forms[form_name].elements[field_name + "_month"].selectedIndex].value;
	var year = document.forms[form_name].elements[field_name + "_year"].options[document.forms[form_name].elements[field_name + "_year"].selectedIndex].value;

	var day_opts = document.forms[form_name].elements[field_name + "_day"];
	var total_days = getDaysInMonth(month, year);
	var current_days = day_opts.options.length;
	
	if (current_days < total_days) {
		for (var i=current_days; i<total_days; i++) {
			day_opts.options[i] = new Option(i+1, i+1);
		}
	} else if (current_days > total_days) {
		for (var j=current_days; j>(total_days-1); j--) {
			day_opts.options[j] = null;
		}
	}
	
	if ((total_days < current_days) && (day > total_days))
		day_opts.selectedIndex = day_opts.options.length - 1;
	else
		day_opts.selectedIndex = day - 1;
}

function getDaysInMonth(month, year)
{
	var days;
	if (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12)  days=31;
	else if (month==4 || month==6 || month==9 || month==11) days=30;
	else if (month==2) { if (isLeapYear(year)) { days=29; } else { days=28; } }
	return (days);
}
function isLeapYear(Year)
{
	if (((Year % 4)==0) && ((Year % 100)!=0) || ((Year % 400)==0)) {
		return (true);
	} else {
		return (false);
	}
}

function constructFilename(filename)
{
	// remove (win32) directory deliminators
	filename = filename.replace(/^.*\\/g, "");
	// remove file extension
	filename = filename.replace(/\.[^.]*$/g, "");
	// strip trailing spaces
	filename = filename.replace(/[ ]$/, "");
	// spaces to underscores
	filename = filename.replace(/ /g, "_");
	// remove anything else that is remotly illegal
	filename = filename.replace(/[^-_a-zA-Z0-9]/g, "");
	// strip multiple underscores
	filename = filename.replace(/_+/g, "_");
	// lowercase looks pretty :)
	filename = filename.toLowerCase();
	// restrict length
	filename = filename.substring(0, 100);

	return filename;
}

function updateFilename(file_name, form, file_name_field)
{
	filename = constructFilename(file_name);
	
	if (document.forms[form].elements[file_name_field].value == "")
		document.forms[form].elements[file_name_field].value = filename;
}
function updateSubDomain(file_name, form, file_name_field)
{
	filename = constructFilename(file_name).replace(/_/g,"-");
	
	if (document.forms[form].elements[file_name_field].value == "")
		document.forms[form].elements[file_name_field].value = filename;
}

function validateFilename(file_name, form, file_name_field)
{
	filename = constructFilename(file_name);
	document.forms[form].elements[file_name_field].value = filename;
}
function validateSubDomain(file_name, form, file_name_field)
{
	filename = constructFilename(file_name).replace(/_/g,"-");
	document.forms[form].elements[file_name_field].value = filename;
}

function handleChosenImage(element, html, width, height, alt_attribute, title_attribute, image_id, description, full_filename)
{
	NickEdit_ExecCmdInsertHTML(element, html);
}

function handleChosenDocument(element, html, doc_id, description, full_filename)
{
	NickEdit_ExecCmdInsertHTML(element, html);
}

function handleChosenMedia(element, html, doc_id, description, full_filename)
{
	NickEdit_ExecCmdInsertHTML(element, html);
}

function handleChosenPlugin(element, html, sel)
{
	NickEdit_ExecCmdInsertHTML(element, html);
}

function PasteFromWord(element, html)
{
	NickEdit_ExecCmdInsertHTML(element, html);
}
