
/*******************/
/*                 */
/*  City Scroller  */
/*                 */
/*******************/

var cityScrollTimeout = null;
var currentIndex = 0;

function startCityScroll (startIndex) {
	currentIndex = startIndex;
	$("#domain_list").corner("10px").fadeTo("slow", 0.7);
	scrollCities(startIndex);
}

function scrollCities () {
	scrollUp();

	cityScrollTimeout = setTimeout(function () { scrollCities }, 3000);
}

function pauseCityScroll (event) {
	$("#domain_list").fadeTo("slow", 1.0); return;
	clearTimeout(cityScrollTimeout);
}

function scrollUp (num) {
	clearTimeout(cityScrollTimeout);

	if (typeof(num) == "undefined")
		num = 1;

	var speed = 1000;
	for (i=0; i<num; i++) {
		$("#domain_carrier").children(":eq(" + i + ")").slideUp(speed, function () { relocateFirst("domain_carrier"); });
		speed += 100;
	}

	clearTimeout(cityScrollTimeout);
	cityScrollTimeout = setTimeout("scrollUp()", 3000);
}

function scrollDown (numCities, num) {
	clearTimeout(cityScrollTimeout);

	if (typeof(num) == "undefined")
		num = 1;

	var speed = 1000;
	for (i=0; i<num; i++) {
		setTimeout(function () {
			var last = $("#domain_carrier").children(":eq(" + (numCities-(i+1)) + ")").hide();
			last.remove();
			$("#domain_carrier").prepend(last);
			last.slideDown(speed);
			speed += 100;
		}, i*100);
	}

	clearTimeout(cityScrollTimeout);
	cityScrollTimeout = setTimeout("scrollUp()", 3000);
}

function relocateFirst (containerID) {
	var first = $("#" + containerID).children(":first").remove();
	first.show();
	$("#" + containerID).append(first);
}

function relocateLast (containerID) {
	var last = $("#" + containerID).children(":last").remove();
	last.show();
	$("#" + containerID).prepend(last);
}

function clearValue (inputID, value) {
	if ($("#" + inputID).val() == value)
		$("#" + inputID).val("");
}

/****************/
/*              */
/*  Newsletter  */
/*              */
/****************/

function joinNewsletter () {
	var email = $("#email").val();
	return isValidEmail(email);
}

/************/
/*          */
/*  Search  */
/*          */
/************/

function search () {
	var keywords = $("#keywords").val();
	return (keywords != "");
}

/*********************/
/*                   */
/*  Feature Segment  */
/*                   */
/*********************/

function previousSegment (containerID) {
	var last = $("#" + containerID).children(":last").hide().remove();
	$("#" + containerID).prepend(last);
	last.slideDown("slow");
}

function nextSegment (containerID) {
	var first = $("#" + containerID).children(":first");
	first.slideUp("slow", function () { relocateFirst(containerID); });
}

/*******************/
/*                 */
/*  Contact Forms  */
/*                 */
/*******************/

function verifyContactComplete () {
	var firstName = $("#firstName");
	var lastName = $("#lastName");
	var title = $("#title");
	var email = $("#contact_email");
	var phone = $("#phone");

	var error = "";
	if (firstName.val() == "") {
		firstName.addClass("error_input");
		error += "<LI>Please supply your first name.";
	}
	else firstName.removeClass("error_input");

	if (lastName.val() == "") {
		lastName.addClass("error_input");
		error += "<LI>Please supply your last name.";
	}
	else lastName.removeClass("error_input");

	if (title.val() == "") {
		title.addClass("error_input");
		error += "<LI>Please supply your title.";
	}
	else title.removeClass("error_input");

	if (!isValidEmail(email.val())) {
		email.addClass("error_input");
		error += "<LI>Please supply your email address.";
	}
	else email.removeClass("error_input");

	if (phone.val() == "") {
		phone.addClass("error_input");
		error += "<LI>Please supply your phone number.";
	}
	else phone.removeClass("error_input");

	return error;
}

function reportErrors (error) {
	if (error != "") {
		var errorText = "The following errors occured when attempting to submit:<UL>" + error + "</UL>";
		$("#error").html(errorText).slideDown("slow");
		return false;
	}
	else return true;
}

/***************/
/*             */
/*  Join Form  */
/*             */
/***************/

function joinAssociatedCities () {
	var complete = validateJoin();

	if (complete) {
//		verifiedJoin();	// image verification not working
//		return;

		if (!$("#verify_text").is("input"))
			loadVerification("verification");
		else verify($("#verify_text").val(), "verification", verifiedJoin);
	}
}

function verifiedJoin () {
	$("#join_form").submit();
}

function validateJoin () {
	var domainNames = $("#domain");
	var company = $("#company");
	var address = $("#address");
	var city = $("#city");
	var state = $("#state");
	var zipcode = $("#zipcode");

	var error = verifyContactComplete();
	if (domainNames.val() == "") {
		domainNames.addClass("error_input");
		error += "<LI>Please supply at least one domain name.";
	}
	else domainNames.removeClass("error_input");

	if (company.val() == "") {
		company.addClass("error_input");
		error += "<LI>Please supply a company name.";
	}
	else company.removeClass("error_input");

	if (address.val() == "") {
		address.addClass("error_input");
		error += "<LI>Please supply an address.";
	}
	else address.removeClass("error_input");

	if (city.val() == "") {
		city.addClass("error_input");
		error += "<LI>Please supply a city.";
	}
	else city.removeClass("error_input");

	if (Number(state.val()) == 0) {
		state.addClass("error_input");
		error += "<LI>Please supply a state";
	}
	else state.removeClass("error_input");

	if (zipcode.val() == "") {
		zipcode.addClass("error_input");
		error += "<LI>Please supply a zipcode";
	}
	else zipcode.removeClass("error_input");

	return reportErrors(error);
}

/********************/
/*                  */
/*  Advertise Form  */
/*                  */
/********************/

function verifyAdvertisingComplete () {
	var complete = validateAdvertising();
	if (complete) {
//		verifiedAdvertising();	// image verification not working
//		return;

		if (!$("#verify_text").is("input"))
			loadVerification("verification");
		else verify($("#verify_text").val(), "verification", verifiedAdvertising);
	}
}

function verifiedAdvertising () {
	$("#advertise_form").submit();
}

function validateAdvertising () {
	var advertiserURL = $("#advertiserURL");
	var rfp = $("#rfp");
	var timeframe = $("#timeframe");

	var error = verifyContactComplete();
	if (advertiserURL.val() == "") {
		advertiserURL.addClass("error_input");
		error += "<LI>Please supply an advertiser URL.";
	}
	else advertiserURL.removeClass("error_input");

	if (timeframe.val() == "") {
		timeframe.addClass("error_input");
		error += "<LI>Please supply a response timeframe.";
	}
	else timeframe.removeClass("error_input");

	return reportErrors(error);
}

/******************/
/*                */
/*  Partner Form  */
/*                */
/******************/

function submitPartnerQuery () {
	var complete = validatePartnerQuery();
	if (complete) {
//		verifiedPartnerQuery();	// image verification not working
//		return;

		if (!$("#verify_text").is("input"))
			loadVerification("verification");
		else verify($("#verify_text").val(), "verification", verifiedPartnerQuery);
	}
}

function verifiedPartnerQuery () {
	$("#partner_form").submit();
}

function validatePartnerQuery () {
	var companyName = $("#company");

	var error = "";
	if (companyName.val() == "") {
		companyName.addClass("error_input");
		error += "<LI>Please supply your company name.";
	}
	else companyName.removeClass("error_input");

	error += verifyContactComplete();
	

	return reportErrors(error);
}