
/* Other Functions */
function popup(mypage, myname, w, h, scroll, tool, stat) {
	var winl = (screen.width - w) / 2;
	var wint = (screen.height - h) / 2;
	winprops = "height=" + h + ",width=" + w + ",top=" + wint + ",left=" + winl + ",scrollbars=" + scroll + ",resizable,toolbar=" + tool + ",status=" + stat + "";
	win = window.open(mypage, myname, winprops);
	if (parseInt(navigator.appVersion) >= 4) {
		win.window.focus();
	}
}
function newImage(imgSrc) {
	var imgName = new Image();
	imgName.src = imgSrc;
	return imgName;
}
function change(imgName, imgLocation) {
	document[imgName].src = imgLocation;
}
function trim(str) {
	str.replace(/^\s*/, "").replace(/\s*$/, "");
	return str;
}
function emailCheck(emailStr) {
	var emailPat = /^(.+)@(.+)$/;
	var specialChars = "\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
	var validChars = "[^\\s" + specialChars + "]";
	var quotedUser = "(\"[^\"]*\")";
	var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom = validChars + "+";
	var word = "(" + atom + "|" + quotedUser + ")";
	var userPat = new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat = new RegExp("^" + atom + "(\\." + atom + ")*$");
	var matchArray = emailStr.match(emailPat);
	if (matchArray == null) {
		alert("Please input a valid Email Address (check @ and .'s). Thank You.");
		return false;
	}
	var user = matchArray[1];
	var domain = matchArray[2];
	if (user.match(userPat) == null) {
		alert("The username doesn't seem to be valid. Please input a valid Email Address. Thank You");
		return false;
	}
	var IPArray = domain.match(ipDomainPat);
	if (IPArray != null) {
		for (var i = 1; i <= 4; i++) {
			if (IPArray[i] > 255) {
				alert("Destination IP address is invalid! Please input a valid Email Address. Thank You.");
				return false;
			}
		}
		return true;
	}
	var domainArray = domain.match(domainPat);
	if (domainArray == null) {
		alert("The domain name doesn't seem to be valid. Please input a valid Email Address. Thank You.");
		return false;
	}
	var atomPat = new RegExp(atom, "g");
	var domArr = domain.match(atomPat);
	var len = domArr.length;
	if (domArr[domArr.length - 1].length < 2 || domArr[domArr.length - 1].length > 3) {
		alert("The address must end in a three-letter domain, or two letter country. Please input a valid Email Address. Thank You.");
		return false;
	}
	if (len < 2) {
		var errStr = "This address is missing a hostname. Please input a valid Email Address. Thank You.";
		alert(errStr);
		return false;
	}
	return true;
}
function contactFormSuccess() {
	try
	{
		$("contact-wait").style.visibility = "hidden";
		$("contact-form").reset();
		$('contact-message').className = 'successMessage';
		$('contact-message').innerHTML = "Your request has been recorded.  Thank You.";
	}
	catch (e)
	{
		alert(e);
	}
}
function contactFormFailure() {
	try
	{
		$("contact-wait").style.visibility = "hidden";
		$('contact-message').className = 'failureMessage';
		$('contact-message').innerHTML = "Submission failed.  Please try email or telephone.";
	}
	catch (e)
	{
		alert(e);
	}
}
function submitContactForm() {
	try {
		var form = $("form_contact");
		if (trim(form.name.value) == "") {
			$('contact-message').className = 'failureMessage';
			$('contact-message').innerHTML = "Please input your Name. Thank You.";
			form.name.focus();
			return false;
		}
		if (trim(form.email.value) == "") {
			$('contact-message').className = 'failureMessage';
			$('contact-message').innerHTML = "Please input a value for Email Address. Thank You.";
			form.email.focus();
			return false;
		} else {
			if (!emailCheck(trim(form.email.value))) {
				form.email.focus();
				return false;
			}
		}
		if (trim(form.telephone.value) == "") {
			$('contact-message').className = 'failureMessage';
			$('contact-message').innerHTML = "Please input your Telephone Number. Thank You.";
			form.telephone.focus();
			return false;
		}
		$("contact-wait").style.visibility = "visible";
		var parameters = form.serialize(true);
		if (!form.feedback.cleared)
		{
			parameters.feedback = '';
		}
		new Ajax.Request(form.action, {parameters:parameters, onSuccess:contactFormSuccess, onFailure:contactFormFailure});
	}
	catch (e) {
		alert(e);
	}
	return false;
}
function clearOnce(element) {
	if (!element.cleared) {
		element.innerHTML = "";
		element.cleared = true;
	}
}
function subscribeFormSuccess() {
	try
	{
		$("subscribe-wait").style.visibility = "hidden";
		$("subscribe-form").reset();
		$('subscribe-message').className = 'successMessage';
		$('subscribe-message').innerHTML = "Your request has been recorded.  Thank You.";
	}
	catch (e)
	{
		alert(e);
	}
}
function subscribeFormFailure() {
	try
	{
		$("subscribe-wait").style.visibility = "hidden";
		$('subscribe-message').className = 'failureMessage';
		$('subscribe-message').innerHTML = "Submission failed.  Please try again later.";
	}
	catch (e)
	{
		alert(e);
	}
}
function submitSubscribeForm() {
	try {
		var form = $("subscribe-form");
		if (trim(form.name.value) == "") {
			$('subscribe-message').className = 'failureMessage';
			$('subscribe-message').innerHTML = "Please input your Name. Thank You.";
			form.name.focus();
			return false;
		}
		if (trim(form.email.value) == "") {
			$('subscribe-message').className = 'failureMessage';
			$('subscribe-message').innerHTML = "Please input a value for Email Address. Thank You.";
			form.email.focus();
			return false;
		} else {
			if (!emailCheck(trim(form.email.value))) {
				form.email.focus();
				return false;
			}
		}
		$("subscribe-wait").style.visibility = "visible";
		var parameters = form.serialize(true);
		new Ajax.Request(form.action, {parameters:parameters, onSuccess:subscribeFormSuccess, onFailure:subscribeFormFailure});
	}
	catch (e) {
		alert(e);
	}
	return false;
}
function fillRetailerDropDowns(t)
{
	try
	{
		var d = eval('('+t.responseText+')');
		
		var select = $('retailer-states');
		
		select.innerHTML = '';
		
		select.options[0] = new Option('Select Location');
		
		for (var i = 0; i < d.stateProvince.length; i+=3)
		{
			if (d.stateProvince[i+1] == 'United States')
			{
				select.options[select.options.length] = new Option(d.stateProvince[i+2], d.stateProvince[i]);
			}
			else
			{
				select.options[select.options.length] = new Option(d.stateProvince[i+1]+' - '+d.stateProvince[i+2], d.stateProvince[i]);
			}
		}
		
		select = $('online-retailers');
		
		select.innerHTML = '';
		
		select.options[0] = new Option('On-Line Stores');
		
		for (var i = 0; i < d.online.length; i+=2)
		{
			select.options[select.options.length] = new Option(d.online[i], d.online[i+1]);
		}
	}
	catch (e)
	{
		alert(e);
	}
}
function initRetailerLocator() {
	new Ajax.Request("/women/ajax/retailerLocator/getLists?siteName=Toschi", {onSuccess:fillRetailerDropDowns});
}

function fillRetailerList(t)
{
	try
	{
		var d = eval('('+t.responseText+')');
		
		if ($('retailer-states').selectedIndex == 0)
		{
			$('retailer-list-title').innerHTML = '';
			$('retailer-list').style.visibility = 'hidden';
		}
		
		$('retailer-list-title').innerHTML = 
			$('retailer-states').options[$('retailer-states').selectedIndex].innerHTML;
		
		$('retailer-list-contents').innerHTML = '';
		$('retailer-list').style.visibility = 'visible';

		var html = new Array();
		
		for (var i = 0; i < d.retailers.length; ++i)
		{
			if (i > 0)
			{
				html.push('<br/><br/>');
			}
						
			var r = d.retailers[i];
			
			html.push(r[0]);
			html.push('<br/>');
			html.push(r[1]);
			if (r[2])
			{
				html.push('<br/>');
				html.push(r[2]);
			}
			html.push('<br/>');
			html.push(r[3]);
			html.push(', ');
			html.push(r[4]);
			html.push(' ');
			html.push(r[6]);
			if (r[7])
			{
				html.push('<br/>');
				html.push(r[7]);
			}
			if (r[8])
			{
				html.push('<br/><a href="');
				html.push(r[8]);
				html.push('">');
				html.push(r[8]);
				html.push('</a>');
			}
		}
		
		$('retailer-list-contents').innerHTML = html.join('');
	}
	catch (e)
	{
		alert(e);
	}
}

function displayRetailerList() {
	new Ajax.Request("/women/ajax/retailerLocator/getRetailers?siteName=Toschi&location="+$F('retailer-states'),
	 {onSuccess:fillRetailerList});
}
