var MOUSE_X, MOUSE_Y;

function ajaxGetUpdate(outputId, url){
	new Ajax.Updater(outputId, url, {asynchonous:true, evalScripts:true});
}


function ajaxUpdateParentOutput(outputId){
	url = 'ajax.php?AJAX_PROC=' + outputId;
	window.opener.ajaxGetUpdate(outputId, url);
}

function ajaxPostUpdate(outputId, formId){
	if (formId){
		postVars = Form.serialize(formId);
	}
	
	url = 'ajax.php?AJAX_PROC=' + outputId;
	new Ajax.Updater(outputId, url, {asynchonous:true, method:"post", postBody:postVars, evalScripts:true});
}

function ajaxUpdate(outputId){
	url = 'ajax.php?AJAX_PROC=' + outputId;
	new Ajax.Updater(outputId, url, {asynchonous:true, method:"post", evalScripts:true});
}

function showHideByClassName(parentElement, className, display){
	elements = Element.getElementsByClassName(parentElement, className);
	elements.each(function(element) {
		if (display == true){
			element.show();
		} else {
			element.hide();
		}
	});
	return true;
}


function moveElementToMousePosition(element, x, y){
	xStr = x + 'px';
	yStr = y + 'px';

	element.style.left = xStr;
	element.style.top = yStr;
}

function showElement(id){
	Element.setStyle(id, {display: 'block'});
}

function showHelp(contentId, alignment){
   $('helpBox').innerHTML = $(contentId).innerHTML; 
	moveElementToMousePosition($('helpBox'), MOUSE_X, MOUSE_Y);
	showElement('helpBox');
}

function recordPosition(e) {
	// sets the values of the mouse pointer in the global mouse variables.
	MOUSE_X = Event.pointerX(e);
	MOUSE_Y = Event.pointerY(e);
}

function resizeWindowToImage(elementId, xBuffer, yBuffer) {
	elementWidth = $(elementId).width + xBuffer;
	elementHeight = $(elementId).height + yBuffer;
	if (elementWidth < 450){
		elementWidth = 450;	
	}

	
   self.resizeTo(elementWidth, elementHeight);
} 

function resizeWindow(x, y){
   self.resizeTo(x, y);
}

function confirmDelete(mesg){
	var agree;
	if (!mesg){
		mesg = "Are you sure you want to delete?";
	} 
	agree = confirm(mesg);
	if (agree){
		return true ;
	} else {
		return false ;
	}	
}


/**
* This will take in a class name, find any form elements
* with that class name and mark them selected.
*/
function selectByClassName(parentElement, className, check){
	elements = Element.getElementsByClassName(parentElement, className);
	elements.each(function(element) {
		element.checked = check;												 	
	});
	return true;
}


function toggleDisplay(id){
    if ($(id).style.display == "") showDBox = "none";
    else showDBox = "";
    $(id).style.display = showDBox;
} 


function slideToggle(id){
	var durationTime = 0.2;
	if (Element.visible(id)){
		Effect.SlideUp(id, {duration: durationTime});
	} else {
		Effect.SlideDown(id, {duration: durationTime});
	}
}

// --- USER SPECIFIC FUNCTIONS ------------------------
function changeSelectedDiv(prefix, formField,  newValue){
	currentDiv = prefix + $(formField).value;
	Element.removeClassName(currentDiv, 'selected');
	$(formField).value = newValue;
	newDiv = prefix + newValue;
	Element.addClassName(newDiv, 'selected');
}

function checkProjectAndGroup(id_1, id_2, formId){
	// if project Id and GroupId are set, then submit form. 
	valueDiv1 = 'projRow_' + $(id_1).value;
	valueDiv2 = 'groupRow_' + $(id_2).value;

	if (Element.hasClassName(valueDiv1, 'selected') && Element.hasClassName(valueDiv2, 'selected')){
		if ($F('viewAll')){
			$('viewAllUsers').value = 1;   
		} else {
			$('viewAllUsers').value = 0;	   
		}
		ajaxPostUpdate('userListOutput', formId);
	}
}

function displayCategoryInputs(fileType){
	if (fileType == 'photo'){
		Element.show('photoCategories');	
		Element.hide('fileCategories');	
		Element.show('fileInputs');	
	} else if (fileType == 'file'){
		Element.show('fileCategories');
		Element.hide('photoCategories');
		Element.show('fileInputs');	
	} else {
		Element.hide('fileInputs');	
	}
}


Event.observe(document, "mousemove", recordPosition, false);