// JavaScript Document
var SHARETHIS = {};
SHARETHIS.addEntry = function() {};

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

function setCookie(name, value, time)
{
	if (!time) time = 60*60*24*365;
	
	var d = new Date();
	var t = new Date(d.getTime() + time);
	t = t.toGMTString();
		
	document.cookie = name + "=" + escape(value) + ";expires=" + t + ";path=/;domain=.mummieslist.com";
}

function getCookie(name)
{
	var cookie = unescape(document.cookie);
	var matches = cookie.match(new RegExp(name + "=([^;]*)"));
	if (matches)
		return matches[1];
	return null;
}

function openWindow(url, w, h)
{
	var winl = (screen.width - w) / 2;
	var wint = (screen.height - h) / 2;
	winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars=no,resizable';
	win = window.open(url, 'myWindow', winprops);

	if (win)
	{
		if (parseInt(navigator.appVersion) >= 4) { win.window.focus();}
		return win;
	}
	
	return null;
}

function submitFormOnEnter(event, form)
{
	if (getKey(event) == 13)
		form.submit();
}

function doOnEnter(event, func)
{	
	if (getKey(event) == 13)
		func();
}

function getKey(event)
{
	return window.event ? window.event.keyCode : (event ? event.which : (event.keyCode ? event.keyCode : 0));
}

function selectAll(form, isChecked)
{
	var inputs = form.getElementsByTagName('input');
	if (inputs)
	{
		for (var i = 0; i < inputs.length; i++)
		{
			if (inputs[i].type == 'checkbox')
				inputs[i].checked = isChecked;
		}
	}
}

function setBackgroundText(textboxID, value)
{
	bgTextColor = "#999999";
	normalColor = "#000000";
	
	var textbox = document.getElementById(textboxID);
	if (textbox.value != "")
		return;

	textbox.value = value;
	textbox.style.color = bgTextColor;
	
	textbox.onfocus = function() { if (textbox.value == value) {textbox.value = ''; textbox.style.color = normalColor;} }
	textbox.onblur = function() { if (textbox.value == '') {textbox.value = value; textbox.style.color = bgTextColor;} }

	if (textbox.form)
	{
		if (typeof textbox.form.onsubmit == 'function')
		{
			oldOnsubmit = textbox.form.onsubmit;
			textbox.form.onsubmit = function() { oldOnsubmit(); if (textbox.value == value) textbox.value = ''; return true; }
		}
		else
			textbox.form.onsubmit = function() { if (textbox.value == value) textbox.value = ''; return true; }
	}
}

function getUploadForm(callback, callbackArgs, finishArgs)
{
	var form = document.createElement('form');
	form.method = "post";
	form.enctype = "multipart/form-data";
	form.encoding = "multipart/form-data";
	form.action = "upload.php"
	if (callback) form.action += '?callback=' + callback;
	if (callbackArgs) form.action += '&callbackArgs=' + callbackArgs;
	if (finishArgs) form.action += '&finishArgs=' + finishArgs;
	form.target = "uploader";
		
	var fileInput = createElement('input', {name: 'upload'});
	fileInput.id = 'fileupload';
	fileInput.type = "file";
	var onChange = function()
	{
		if (validateUpload(fileInput))
		{
			var image = new Image();
			image.id = 'loadingAnimation';
			image.src = 'images/loadingAnimation.gif';
			image.style.position = "absolute";
			image.style.left = findPos(fileInput).left + "px";
			image.style.top = findPos(fileInput).top + ((fileInput.offsetHeight - image.offsetHeight) / 2) + "px";
			fileInput.parentNode.insertBefore(image, fileInput);
			fileInput.style.visibility = "hidden";
			$('fileupload2').style.visibility = "hidden";
		}
	};
	addEvent(fileInput, 'change', onChange);
	
	var iframe = createElement('iframe', {name: 'uploader'});
	iframe.id = 'uploader';
	iframe.src = "#";
	iframe.style.width = "0px";
	iframe.style.height = "0px";
	iframe.style.border = "0px solid #FFFFFF";
	
	form.appendChild(fileInput);
	form.input = fileInput;
	
	return {'form':form, 'iframe':iframe};
}

function finishUpload(result, upload)
{
	var anim = $("loadingAnimation");
	anim.parentNode.removeChild(anim);
	$("fileupload").style.visibility = "visible";
	if ($("fileupload2")) $("fileupload2").style.visibility = "visible";
	if (result && result != '')
	{
		var image = new Image();
		image.src = "uploads/small/" + result;

		var link = createElement('a', {target: '_blank', href: 'uploads/' + result});
		link.appendChild(image);
	}
	else
	{
		var link = document.createTextNode("Error uploading image");
	}

	if (upload && upload != '')
	{
		$(upload).innerHTML = '';
		$(upload).appendChild(link);
	}
}

function createElement(elName, attributes)
{
	if (!name) name = "";
	
	if (window.attachEvent) // if IE
	{
		attrText = '';
		for (var name in attributes)
			attrText += ' ' + name + '="' + attributes[name] + '"';

		return document.createElement('<' + elName + attrText + '>');
	}
	else
	{
		var e = document.createElement(elName);
		for (var name in attributes)
			e[name] = attributes[name];
		
		return e;
	}
}

function getElementsByClassName(className, element)
{
	if (!element)
		element = document;
		
	var els = element.getElementsByTagName('*');	
	var result = [];
	
	for (var i = 0; i < els.length; i++)
	{
		if (els[i].className == className)
			result[result.length] = els[i];
	}
	
	return result;
}

function validateUpload(file)
{
	var imageExtensions = ['gif', 'jpeg', 'jpg', 'jpe', 'jif', 'jfif', 'jfi', 'png'];
	
	var filename = file.value;
	
	var split = filename.split('.');
	var extension = split[split.length - 1];
	
	var valid;

	if ((valid = arraySearch(imageExtensions, extension)) == -1)
		alert('File must be image (jpeg, gif or png)');
	
	if (valid != -1)
	{
		file.form.submit();
		return true;
	}
	return false;
}

function tooltip(text)
{
	if (text && text != "")
	{
		var tooltip = document.tooltipElm ? document.tooltipElm : document.createElement('div');
		tooltip.className = 'tooltip';
		tooltip.innerHTML = text;
		document.body.appendChild(tooltip);
		
		document.tooltipElm = tooltip;
		
		addEvent(document, 'mousemove', getMousePos, false);
	}
	else
	{
		if (document.tooltipElm && document.tooltipElm.parentNode)
			document.tooltipElm.parentNode.removeChild(document.tooltipElm);
		removeEvent(document, 'mousemove', getMousePos, false);
	}
}


function getMousePos(e) {
	var IE = document.all ? true : false;

	if (IE)
	{
		mouse_x = event.clientX + document.body.scrollLeft
		mouse_y = event.clientY + document.body.scrollTop
	}
	else
	{
		mouse_x = e.pageX
		mouse_y = e.pageY
	}  

	document.tooltipElm.style.left = mouse_x + "px";
	document.tooltipElm.style.top = mouse_y + 20 + "px";
}

function addEvent(elm, evType, fn, useCapture) {
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);
		return true;
	}
	else if (elm.attachEvent) {
		var r = elm.attachEvent('on' + evType, fn);
		return r;
	}
	else {
		elm['on' + evType] = fn;
	}
}

function removeEvent(elm, evType, fn, useCapture) {
	if (elm.removeEventListener) {
		elm.removeEventListener(evType, fn, useCapture);
		return true;
	}
	else if (elm.detachEvent) {
		return elm.detachEvent('on' + evType, fn);
	}
	else {
		elm['on' + evType] = null;
	}
}

function arraySearch(array, value)
{
	for (var i = 0; i < array.length; i++)
		if (array[i].toLowerCase() == value.toLowerCase())
			return i;

	return -1;
}

function copyPos(copyee, copier, leftOffset, topOffset)
{
	var pos = findPos(copyee);
	with (copier.style)
	{
		position = "absolute";
		left = pos.left + (leftOffset ? leftOffset : 0) + "px";
		top = pos.top + (topOffset ? topOffset : 0) + "px";
	}
}

function findPos(obj)
{
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
	return {left:curleft, top:curtop};
}

function setUpload(result)
{
	if ($("Image")) $("Image").value = result;
	var remove;
	if (remove = $("remove")) {
		remove.style.height = "14px";
		remove.innerHTML = '<a href="#" onclick="removeUpload(); return false">Remove upload</a>';
	}
}

function removeUpload()
{
	if ($("Image")) $("Image").value = '';
	if ($("upload")) $("upload").innerHTML = '';
	if ($("remove")) $("remove").innerHTML = '';
	if (typeof $("file") != 'undefined' && $('file'))
		$("file").value = '';
}

function setDefaultText(input, text)
{
	input.defaultText = text
	input.onfocus = function() { if (this.value == this.defaultText) this.value = ''; };
	input.onblur = function() { if (this.value == '') this.value = this.defaultText; };
}

function activateSearchBox()
{
	if ($('globalSearch'))
	{
		setDefaultText($('globalSearch'), 'Type Your Search Here...');
	}
}

function activateFileUpload()
{
	if ($('fileupload') && $('fileupload2') && $('browse_btn'))
	{
		new Image().src = "images/btn_browse_ro.jpg";
		
		addEvent($('fileupload'), 'change', function() { $('fileupload2').value = $('fileupload').value; });

		addEvent($('fileupload'), 'mouseout', function() { $('browse_btn').src = "images/btn_browse.jpg"; }, false);
		addEvent($('fileupload'), 'mouseover', function() { $('browse_btn').src = "images/btn_browse_ro.jpg"; }, false);
	}	
}

function placeFileUpload(upload)
{
	if (!upload)
		upload = getUploadForm('setUpload', null, 'upload');

	var div = createElement('div');
	div.className = "file_replace";
	var input = createElement('input', {type: "text", name: "fileupload2", id: "fileupload2"});
	var img = createElement('img', {id: "browse_btn", src: "images/btn_browse.jpg"});
	
	div.appendChild(upload.form);
	div.appendChild(input);
	div.appendChild(img);
	document.body.appendChild(div);
	document.body.appendChild(upload.iframe);
	copyPos($("file"), upload.form.input);
	copyPos($("fileupload"), $("fileupload2"), 0, -($("fileupload2").offsetHeight - $("fileupload").offsetHeight) / 2);
	copyPos($("fileupload2"), $("browse_btn"), $("fileupload2").offsetWidth);
	activateFileUpload();
}

function showErrorMessages(fields, messages)
{
	var collisions = [];
	collisions['/user.php'] = ['FirstName'];
	collisions['/message_board_post.php'] = ['Message'];
	
	for (var i = 0; i < fields.length; i++)
	{
		var field = $(fields[i]);
		if (field)
		{
			var errorField = createElement("div");
			document.body.appendChild(errorField);
			var pos = findPos(field);
			errorField.className = "error_message";
			errorField.innerHTML = messages[i];
			errorField.style.position = "absolute";
			
			if (typeof collisions[location.pathname] != 'undefined' && arraySearch(collisions[location.pathname], fields[i]) != -1)
			{
				errorField.style.top = pos.top + field.offsetHeight + "px";
				errorField.style.left = pos.left + "px";
			} else {
				errorField.style.top = pos.top + (field.offsetHeight - errorField.offsetHeight) / 2 + "px";
				errorField.style.left = pos.left + field.offsetWidth + 5 + "px";
			}
		}
	}
}

function stripeTables()
{
	var count = 0;
	
	var tables = $$("table.striped");
	for (var i = 0; i < tables.length; i++)
	{
		for (var j = 0; j < tables[i].rows.length; j++)
		{
			// Skip the headers
			if (tables[i].rows[j].cells.length > 0 && tables[i].rows[j].cells[0].tagName.toLowerCase() != 'td')
				continue;
			
			for (var k = 0; k < tables[i].rows[j].cells.length; k++)
				if (count % 2 == 0) {
					if (tables[i].rows[j].cells[k].className && tables[i].rows[j].cells[k].className != "")
						tables[i].rows[j].cells[k].className += " striped";
					else
						tables[i].rows[j].cells[k].className = "striped";
				}
			count++;
		}
	}
}

function scrollAds(container)
{
	var ads = container.getElementsByTagName('a');
	if (ads.length == 0) return;

	container.style.position = "absolute";
	var pos = findPos(container);

	var topDiv = createElement('div', { id: "topScrollDiv" });
	var bottomDiv = createElement('div', { id: "bottomScrollDiv" });

	topDiv.style.position = bottomDiv.style.position = "absolute";
	topDiv.style.left = bottomDiv.style.left = pos.left + "px";
	topDiv.style.backgroundColor = bottomDiv.style.backgroundColor = "#FFFFFF";
	topDiv.style.zIndex = bottomDiv.style.zIndex = 0;
	topDiv.style.width = bottomDiv.style.width = container.offsetWidth + "px";
	topDiv.style.height = bottomDiv.style.height = 1.2 * ads[0].firstChild.offsetHeight + "px";

	topDiv.style.top = pos.top - ads[0].firstChild.offsetHeight * 1.2 + "px";
	bottomDiv.style.top = pos.top + container.offsetHeight + "px";

	document.body.appendChild(topDiv);
	document.body.appendChild(bottomDiv);

	var oldResize = window.onresize;
	window.onresize = function() {
		if (oldResize)
			oldResize();
		topDiv.style.left = bottomDiv.style.left = findPos(container).left + "px";		
	}

	var defaultDuration = 12.0;
	var defaultYDist
	for (var i = 0; i < ads.length; i++) {		
		ads[i].yDest = pos.top + container.offsetHeight;
		if (i == 0) defaultYDist = ads[i].yDest - findPos(ads[i].firstChild).top;

		scrollAd(ads[i],
				 { x: 0, transition: Effect.Transitions.linear,
				   afterFinish: function(eff) {
					   with (eff.element.style) {
					   	  position = "absolute";
					   	  left = (container.offsetWidth - eff.element.offsetWidth) / 2 + "px";
					   	  top = -eff.element.offsetHeight + "px";
					   }
					   scrollAd(eff.element, eff.options, defaultYDist, defaultDuration);
				   }
				 }, defaultYDist, defaultDuration
		);
	}
}

function scrollAd(ad, options, defaultYDist, defaultDuration)
{
	options.y = ad.yDest - findPos(ad.firstChild).top;
	options.duration = options.y / defaultYDist * defaultDuration

	new Effect.Move(ad, options);
}

function addRow(tableID, html)
{
	var table = $(tableID);
	var row = table.insertRow(-1);
	var cell = row.insertCell(0);
	cell.innerHTML = html;
}

function copyRows(tableID, className, index)
{
	var rows = $$('#' + tableID + ' tr.' + className);
	var lastRow = rows[rows.length - 1];
	for (var i = 0; i < rows.length; i++)
	{
		var newRow = $(tableID).insertRow(lastRow.rowIndex + i + index);
		for (var j = 0; j < rows[i].cells.length; j++)
		{
			var newCell = newRow.insertCell(-1);
			var regexp = new RegExp("\\[0\\]", "g");
			newCell.innerHTML = rows[i].cells[j].innerHTML.replace(regexp, "[" + index + "]");;

			for (var k = 0; k < rows[i].cells[j].attributes.length; k++)
				newCell.setAttribute(rows[i].cells[j].attributes[k].name, rows[i].cells[j].attributes[k].value);
		}
	}
}

function removeRow(tableID, className, index, maxIndex)
{
	var index = index[0];
	var row = $$('#' + tableID + ' tr.' + className);
	if (!row || row.length == 0)
		return;
	
	row = row[0];
	var rowIndex = row.rowIndex;
	var table = $(tableID);
	
	if (index == 0)
		table.rows[rowIndex + 1].className += " copyable";
	table.deleteRow(rowIndex + index);
	
	for (var i = rowIndex + index; i < rowIndex + maxIndex; i++)
	{
		for (var j = 0; j < table.rows[i].cells.length; j++)
		{
			var selects = Element.getElementsBySelector(table.rows[i].cells[j], 'select');
			var selectedIndexes = [];
			for (var k = 0; k < selects.length; k++)
				selectedIndexes[k] = selects[k].selectedIndex;
				
			var regexp = new RegExp("\\[\\d+\\]", "g");
			table.rows[i].cells[j].innerHTML = table.rows[i].cells[j].innerHTML.replace(regexp, "[" + index + "]");
			
			selects = Element.getElementsBySelector(table.rows[i].cells[j], 'select');
			for (var k = 0; k < selects.length; k++)
				selects[k].selectedIndex = selectedIndexes[k]

		}
		index++;
	}	
}

function formatButtons(buttons, image, rollover)
{
	for (var i = 0; i < buttons.length; i++) {
		var overlay = createElement('input', {type: 'image', name: buttons[i].name, src: image});
		overlay.onmouseover = function() { this.src = rollover; }
		overlay.onmouseout = function() { this.src = image; }
		overlay.onclick = buttons[i].onclick;
		buttons[i].parentNode.insertBefore(overlay, buttons[i]);
		buttons[i].parentNode.removeChild(buttons[i]);
		createElement('img', {src: rollover}); // Preload rollover
	}
}

function formatSearchButtons()
{
	var buttons = $$('input[type="submit"][value="Search"]');
	formatButtons(buttons, 'images/search.png', 'images/search_ro.png');
}

function formatUpdateButtons()
{
	var buttons = $$('input[type="submit"][value="Update"]');
	formatButtons(buttons, 'images/update.png', 'images/update_ro.png');
}

function formatDeleteButtons()
{
	var buttons = $$('input[type="submit"][value="Delete"]');
	formatButtons(buttons, 'images/delete.png', 'images/delete_ro.png');
}

function formatSubmitButtons()
{
	var buttons = $$('input[type="submit"][value="Submit"]');
	formatButtons(buttons, 'images/submit.png', 'images/submit_ro.png');
}

function formatResetButtons()
{
	var buttons = $$('input[type="reset"][value="Reset"]');
	formatButtons(buttons, 'images/reset.png', 'images/reset_ro.png');
}

function formatSendMessageButtons()
{
	var buttons = $$('input[type="submit"][id="send_message"]');
	formatButtons(buttons, 'images/send_message.jpg', 'images/send_message_ro.jpg');
}

function formatPostMessageButtons()
{
	var buttons = $$('input[type="button"][id="post_message"]');
	formatButtons(buttons, 'images/post_message.png', 'images/post_message_ro.png');
}

function formatPostMessageSubmitButtons()
{
	var buttons = $$('input[type="submit"][id="post_message"]');
	formatButtons(buttons, 'images/post_message.png', 'images/post_message_ro.png');
}

function formatEditMessageSubmitButtons()
{
	var buttons = $$('input[type="submit"][id="edit_message"]');
	formatButtons(buttons, 'images/edit_message.jpg', 'images/edit_message_ro.jpg');
}

function formatPostEventButtons()
{
	var buttons = $$('input[type="button"][id="post_event"]');
	formatButtons(buttons, 'images/post_event.png', 'images/post_event_ro.png');
}

function formatCompleteRegistrationButtons()
{
	var buttons = $$('input[type="submit"][id="complete_reg"]');
	formatButtons(buttons, 'images/complete_registration.jpg', 'images/complete_registration_ro.jpg');
}

function formatNewUserButtons()
{
	var buttons = $$('input[type="button"][id="new_user"]');
	formatButtons(buttons, 'images/create_user_vendor.jpg', 'images/create_user_vendor_ro.jpg');
}
function formatExportButtons()
{
	var buttons = $$('input[type="button"][id="export"]');
	formatButtons(buttons, 'images/export_results.jpg', 'images/export_results_ro.jpg');
}
function formatCreateSubscriberButtons()
{
	var buttons = $$('input[type="button"][id="create_subscriber"]');
	formatButtons(buttons, 'images/create_subscriber.jpg', 'images/create_subscriber_ro.jpg');
}
function formatViewMyAdsButtons()
{
	var buttons = $$('input[type="button"][id="my_ads"]');
	formatButtons(buttons, 'images/view_my_ads.png', 'images/view_my_ads_ro.png');
}
function formatViewAllButtons()
{
	var buttons = $$('input[type="button"][id="all_ads"]');
	formatButtons(buttons, 'images/view_all_promos.jpg', 'images/view_all_promos_ro.jpg');
}
function formatOldPromosButtons()
{
	var buttons = $$('input[type="button"][id="old_promos"]');
	formatButtons(buttons, 'images/view_old_promos.jpg', 'images/view_old_promos_ro.jpg');
}
function formatCurPromosButtons()
{
	var buttons = $$('input[type="button"][id="cur_promos"]');
	formatButtons(buttons, 'images/view_current_promos.jpg', 'images/view_current_promos_ro.jpg');
}
function formatFuturePromosButtons()
{
	var buttons = $$('input[type="button"][id="future_promos"]');
	formatButtons(buttons, 'images/view_future_promos.jpg', 'images/view_future_promos_ro.jpg');
}
function formatSubmitPromoButtons()
{
	var buttons = $$('input[type="button"][id="submit_weekly_promo"]');
	formatButtons(buttons, 'images/submit_weekly_promo.jpg', 'images/submit_weekly_promo_ro.jpg');
}
function formatSendTestButtons()
{
	var buttons = $$('input#send_test[type="submit"]');
	formatButtons(buttons, 'images/send_test_email.jpg', 'images/send_test_email_ro.jpg');
}


function getCity(pCode, cityBox)
{
	if (pCode.length < 6)
		return;
	
	new Ajax.Request('ajax/postalcode.php?p=' + pCode, {
					 onSuccess: function(response) {
									if (response)
										$(cityBox).value = response.responseText;
								}
					 }
	);
}

function activateLegend()
{
	var filter = parseInt(getCookie('cal_filter'), 10);
	if (!filter) filter = 0x3F;

	var legends = $$('div.legend');
	for (var i = 0; i < legends.length; i++) {
		legends[i].filterIndex = Math.pow(2, i);
		legends[i].eventClassName = legends[i].className.split(/\s/)[1];
		legends[i].activated = true;
		legends[i].onclick = legendClick;
		if ((filter & legends[i].filterIndex) == 0)
			legends[i].onclick();
	}
}

function legendClick()
{
	this.activated = !this.activated;
	
	var filter = parseInt(getCookie('cal_filter'), 10);
	if (!filter) filter = 0x3F; // There are currently 6 filters
	filter = this.activated ? filter | this.filterIndex : filter & (0x3F ^ this.filterIndex)
	setCookie('cal_filter', filter);
	
	this.innerHTML = this.activated ? '&nbsp;' : '<span class="legend_text">X</span>';
	var events = $$('a.' + this.eventClassName, 'img.' + this.eventClassName);
	for (var j = 0; j < events.length; j++)
		events[j].style.display = this.activated ? "inline" : "none";
}

function showEventPopup(text, callerLink)
{
	var divs = getElementsByClassName('eventPopup');
	for (var i = 0; i < divs.length; i++)
		divs[i].parentNode.removeChild(divs[i]);
		
	var div = createElement('div', {className: 'eventPopup', innerHTML: text});
	copyPos(callerLink.parentNode, div);
	document.body.appendChild(div);
}