$(document).ready(function() {
	
	if (document.getElementById("map_container")) {
		mapsInit();
	}
	
	$("input.required, textarea.required, select.required").blur(function() {
		if (contact_validate($(this))) {
			$(this).parent("div").addClass("form_error").removeClass("form_okay");
		} else {
			$(this).parent("div").addClass("form_okay").removeClass("form_error");
		}
	});

	
	if ($("#contactform #subject").val() == "Other") {
		$("#subject_other").show();
	}
	
	$("#contactform #sel_subject").change(function() {
		if ($(this).val() == "Other") {
			$("#subject_other").show();
			$("#subject_other").focus();
		} else {
			$("#subject_other").hide();
		}
		
		contact_validate($(this));
		
		
		$(".add_course a").click(function() {
			var html = $("#course_list .form_row").eq(0).html();
			var i = $("#course_list .form_row").length - 1;
			var n = i+1;
			$("#course_list .form_row").eq(i).clone().appendTo("#course_list .fieldset_container");
			updateAttributes($("#course_list .form_row").eq(n), n);
			return false;
		});
		
		
	});
	
	$("#contactform").submit(function() {
		
		if ($("#sel_subject").val() == "Other") {
			$("#subject").val("[Contact Form] : "+$("#subject_other").val());
		} else {
			$("#subject").val("[Contact Form] : "+$("#sel_subject").val());
		}
		
		
		var okay = true;
		if ($("#captcha").val() != "hot") {
			okay = false;
		}
		$("input.required, textarea.required, select.required").each(function(i) {
			if (contact_validate($(this))) { okay = false; }
		});
		return okay;
	});
	
	
	$(".add_course a").click(function() {
		var html = $("#course_list .form_row").eq(0).html();
		var i = $("#course_list .form_row").length - 1;
		var n = i+1;
		$("#course_list .form_row").eq(i).clone().appendTo("#course_list .fieldset_container");
		updateAttributes($("#course_list .form_row").eq(n), n);
		return false;
	});
	
	
	
});

function updateAttributes(el, n) {
	// console.log(el+","+n);
	$(el).find("input, select").each(function(i) {
		var theName = $(this).attr("name");
		var theNewName = theName.split("_")[0]+"_"+n;
		$(this).attr("name", theNewName);
		$(this).val("");
	});
}

function createCourses() {
	$("#course_list .form_row").each(function(i) {
		var fieldName = "Course_"+(i);
		var fieldValue = "";
		
		var f = Array();
		if ($(this).find("input[type=text]").eq(0).val() != "") {
			$(this).find("input[type!=hidden], select").each(function(n) {
				f.push($(this).val());
			});

			fieldValue = f.join(" | ");

			var theField = $(this).find("input[type=hidden]");
			$(theField).val(fieldValue);
		}

	});
	
	return true;
}

function reservationValidate() {

	var error = false;
	
	$("#course_list .form_row").each(function(i) {

		$(this).removeClass("error").removeClass("warning");

		var warning = false;
		var e = 0;
		$(this).find("input[type!=hidden]").each(function(n) {
			if($(this).val() == "") {
				error = true;
				e++;
				$("#course_list .form_row").eq(i).addClass("error");
				if (e == n+1) {
					error = false;
					warning = true;
					$("#course_list .form_row").eq(i).removeClass("error").addClass("warning");
				}
			}
		});
		
	});
	
	// if (error) {
	// 	return false;
	// }
	// 
	// return true;
}


function fc_PreProcess(data) {

	// console.log(data);

	if ((data.indexOf("TEXTBOOK:") != -1) || (data.indexOf("IND_COURSE_ITEM") != -1)) {
		
		// this is textbook data or individual product purchase, coming out of the DB. It should be okay.
		
		return true;
		
	} else {

		data = "";

		reservationValidate();
		if ($("#course_list").find(".warning").length == 4) {
			return false;
		}
		if ($("#course_list").find(".error").length > 0) {
			return false;
		}
		
		if (createCourses()) {
			data = $("#reserve_form").serialize();
		}

		if (data != "") {
			MyFoxyData = data;
			return true;
		}

		return false;
		
	}

}


function contact_validate(e) {
	// returns TRUE if errors in the field
	var errors = false;
	switch ($(e).attr("id")) {
		case "senderEmail" :
			if (($(e).val() == "") || ($(e).val().indexOf("@") < 0) || ($(e).val().indexOf(".") < 0)) errors = true;
			break;
		case "subject_other" :
			if (($(e).val() == "") && ($("#sel_subject").val() == "Other")) errors = true;
			break;
		default :
			if ($(e).val() == "") errors = true;
			break;
	}
	return errors;
}


function mapsInit() {
  if (GBrowserIsCompatible()) {
    var address = "321 East Grand River Ave., East Lansing, MI 48823";
	var geocoder = new GClientGeocoder();
    var map = new GMap2(document.getElementById("map_container"));
  		// map.setMapType(G_HYBRID_MAP);

	geocoder.getLatLng(
		address,
		function(point) {
			if (!point) {
				alert ("Address not found");
			} else {
				map.setCenter(point, 15);
				var marker = new GMarker(point);
				map.addOverlay(marker);
			    map.setUIToDefault();
				
				var infoWinHTML = '<div><strong>Collegeville Textbook Company</strong><br /><a href="http://maps.google.com/maps?f=d&hl=en&saddr=&daddr=321+East+Grand+River+Ave.,+East+Lansing,+MI&ie=UTF8&om=1" target="_blank">Need directions?</a>';
				map.openInfoWindowHtml(point, infoWinHTML);

				GEvent.addListener(marker, 'click', function() {
					var infoWin = map.openInfoWindowHtml(point, infoWinHTML);
				});

			}
		}
	);
	
  }
}


/*
 * Tooltip script 
 * powered by jQuery (http://www.jquery.com)
 * 
 * written by Alen Grakalic (http://cssglobe.com)
 * 
 * for more info visit http://cssglobe.com/post/1695/easiest-tooltip-and-image-preview-using-jquery
 *
 */
 
this.tooltip = function(){	
	/* CONFIG */		
		xOffset = 10;
		yOffset = 20;		
		// these 2 variable determine popup's distance from the cursor
		// you might want to adjust to get the right result		
	/* END CONFIG */		
	$("a.tooltip").hover(function(e){											  
		this.t = this.title;
		this.title = "";									  
		$(".wrap").append("<p id='tooltip'>"+ this.t +"</p>");
		$("#tooltip")
			.css("top",(e.pageY - xOffset) + "px")
			.css("left",(e.pageX + yOffset) + "px")
			.fadeIn("fast");		
    },
	function(){
		this.title = this.t;		
		$("#tooltip").remove();
    });	
	$("a.tooltip").mousemove(function(e){
		$("#tooltip")
			.css("top",(e.pageY - xOffset) + "px")
			.css("left",(e.pageX + yOffset) + "px");
	});	
	$("a.tooltip").click(function() {
		return false;
	});
};



// starting the script on page load
$(document).ready(function(){
	tooltip();
});