$(document).ready(function(){
	
	// every item with css .field class will be highlighted onfocus
	$(".field").focus(
		function() { 
			$(this).removeClass("field"); 
			$(this).addClass("fieldHighlight"); 
		}
	);
	
	// every item with css .field class will be unhighlighted onblur
	$(".field").blur(
		function() { 
			$(this).removeClass("fieldHighlight"); 
			$(this).addClass("field"); 
		}
	);
	
	// form validation
	$("form").submit(function() {
		// set submit variables							  
		var success = true;
		var curCheckName = "";
		var checkCounter = 0;
		$(':input').each(function() {
			// * required fields begin with req_
			if (this.name.indexOf("req_") >= 0) {
				// set input variables
				var name = this.name;
				var value = this.value;
				var type = this.type;
				var obj = this;
				var tag = this.tagName.toLowerCase(); 
				// check required text, password, hidden, and textarea fields
				if (type == "text" || type == "password" || tag == "textarea" || type == "file" || type == "hidden") {
					if (value.length <= 0) {
						var message;
						if (type == "hidden") {
							message = "You cannot process this form. There is missing required data.";
						} else {
							message = "You must enter a value.";
						}
						alert(message);
						this.focus();
						success = false;
						return false;
					} else if (name.indexOf("email")>=0) {
						// validate email address
						if ((value.indexOf("@") < 0) || (value.indexOf(".") < 0)) {
							alert("You must enter a valid e-mail address.");
							this.focus();
							success = false;
							return false;
						}
					}
				}
				// check required checkboxes
				else if (type == "checkbox") {
					if ((curCheckName != name) && (!this.checked)) {
						// check counter
						if (checkCounter == 0) {
							alert("You must check at least one option");
							this.focus();
							success = false;
							return false;
						}
						// reset counter
						checkCounter = 0;
					}
					if (this.checked) {
						checkCounter++;
					}
					curCheckName = name;
				}
				// check required radio
				else if (type == "radio") {
					// loop through all elements with this name
					radioCounter = 0;
					var radioCollection = "input[name='" + name + "']";
					$(radioCollection).each(function() {
						if (this.checked) {
							radioCounter++;
						}
					});
					if (radioCounter == 0) {
						alert("You must check at least one option");
						this.focus();
						success = false;
						return false;
					}
				}
				// check required drop down menus
				else if (tag == "select") {
					if (this.selectedIndex <= 0) {
						alert("You must select at least one option");
						this.focus();
						success = false;
						return false;		
					}
				}
			}
		});
		return success;
	});
	
	// add back functionality to cancel button
	$("input[value='Cancel']").click(function() {
		history.back();						   
	});
	
	// ajax call to save asset folder directories
	$("input[value='Save Directory']").click(
		function() {
			var dir = $("input[name='assetFolder']").val();
			if (dir.length > 0) {
				$("#currentDirectories").load("assets_ajax.php", { folder:dir } ); 
				showHide();
				$("input[name='assetFolder']").val("");
			} else {
				alert("You must enter a value.");
			}
		return false;
	});
	
	$("select[name='req_contestID']").change(
		function() {
			var contestID = $("select option:selected").val();
			if (contestID.length > 0) {
				$("#contestAssets").load("images_ajax.php", { id:contestID } ); 
			}
		return false;
	});
	
	// hide extra fields for external contest
	$("select[name='req_typeID']").change(
		function() {
			var typeID = $("select option:selected").val();			
			if (typeID == 2) {
				$(".row").hide();
				$(".userSubmission").hide();
				$("select[name='req_folderID']").attr("selectedIndex",1);
				$("select[name='req_ageID']").val(1);
				$("select[name='req_forwardID']").val(1);
			} else if (typeID == 4) {
				$(".row").show();
				$(".userSubmission").show();
			} else {
				$(".row").show();
				$(".userSubmission").hide();
				$(".userSubmission").hide();
				$("select[name='req_folderID']").attr("selectedIndex",0);
				$("select[name='req_ageID']").val(0);
				$("select[name='req_forwardID']").val(0);
			}
	});
	
	// hide input field; if field is filled in, bot has tried to submit form
	if ($("#inputcheck")) {
		$("#inputcheck").hide();			  
	}
	
});

// hide external contest form fields
function updateContestForm() {
	var typeID = $("select[name='req_typeID'] option:selected").val();			
	if (typeID == 2) {
		// hide fields for external contest
		$(".row").hide();	
	} else if (typeID == 4) {
		// show user submission fields	
		$(".userSubmission").show();
	}
}

// delete prompt
function deleteIt(id) {
	if (confirm("Are you sure?")) {
		$("input[name='deleteID']").val(id);
		$("form").submit();
		return true;
	} else {
		return false;
	}	
}

// delete prompt for asset folders
function deleteAssetID(id) {
	if (confirm("Are you sure?")) {
		$("input[name='deleteAssetID']").val(id);
		$("form").submit();
		return true;
	} else {
		return false;
	}	
}

// show/hide one divs using .toggle class; must be only div on page
var hidden = true;
function showHide() {
	if (hidden) {
		$(".toggle").show('fast');
		hidden = false;
	} else {
		$(".toggle").hide('fast');
		hidden = true;
	}
}

// show/hide any div using id
function showHideID(id) {
	var objID = "#" + id;
	if ($(objID)) {
		if ($(objID).css("display") == "none") {
			$(objID).show('fast');
		} else {
			$(objID).hide('fast');
		}
	}
}

// show/hide metrics in admin
function toggleTabs(obj,id) {
	obj.blur();
	var tabs = new Array("dailyMetrics","userSubmissions","standardMetrics");
	for (var i=0; i<tabs.length; i++) {	
		var cur = tabs[i];
		if (cur == id) {
			if ($("#"+id)) {
				$("#"+id).show();
				$("#"+id+"Tab").addClass('selected');
			}
		} else {
			if ($("#"+cur)) {
				$("#"+cur).hide();
				$("#"+cur+"Tab").removeClass('selected');
			}
		}
	} 
	
}

// hide enter button
function hideEnter() {
	$("#enterButton").hide('fast');	
	$("#entryTeaser").hide('fast');
	$("#entryForm").show('fast');
}

// hides enter button and adjusts copy div class
function hideEnterSetClass() {
	$("#enterButton").hide('fast');	
	$("#entryTeaser").hide('fast');
	$("#entryForm").show('fast');
	$("#copy").removeClass('showBtn');
	$("#content").addClass('formBorder');
}

function popup(url) {
	window.open(url, '', 'top=50,left=50,height=300,width=400,scrollbars=yes,resizable=yes,location=no,status=no');	
}

function setAction(action) {
	$(":input[name='action']").val(action);
}

function validDate(dateMonth,dateDay,dateYr) {
	var allMonths = new Array(null,"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
	var formObj = document.forms[0].elements;
	var dateYrObj = formObj[dateYr].options[formObj[dateYr].options.selectedIndex];
	var dateDayObj = formObj[dateDay].options[formObj[dateDay].options.selectedIndex];
	var dateMonthObj = formObj[dateMonth].options[formObj[dateMonth].options.selectedIndex];
	var monthValue = parseInt(dateMonthObj.value);
	if ((dateYrObj.value.length > 0) && (dateDayObj.value.length > 0) && (dateMonthObj.value.length > 0)) {
		var testDate = new Date(monthValue + "/" + dateDayObj.value + "/" + dateYrObj.value + " 00:00:00");
		testDate = testDate.toUTCString();
		if (testDate.indexOf(allMonths[monthValue]) < 0) {
			alert("You must select an legitimate date.");
			return false;
		}
	}
}

function checkForUniqueEmail() {
	var success = false;
	var allEmails = "";
	var err = 0;
	$(':input').each(function() {
		if (this.name.indexOf("_email") > 0) {
			if ((allEmails.indexOf(this.value) >= 0) && (this.value.length > 0) && (allEmails.length > 0)) {
				err++;
				alert("You must enter 5 unique email addresses.");	
				this.select();
				return success;
			} else {
				allEmails += (this.value + ",");
			}
		}		
	});
	if (err == 0) {
		success = true;
	}
	return success;
}