//common.js = common site scripts

//image path variables for header, for ease of reference and update
var imghome = new Image(); 
imghome.src = "images/homeheader.png"; 
var imgabout = new Image(); 
imgabout.src = "images/aboutheader.png"; 
var imgratings = new Image();
imgratings.src = "images/ratingsheader.png"; 
var imglist = new Image();
imglist.src =  "images/homeheader.png"; 
var imgmulti = new Image();
imgmulti.src =  "images/multiheader.png"; 
var imgofficial = new Image();
imgofficial.src = "images/officialheader.png"; 
var imgcontact = new Image();
imgcontact.src = "images/contactheader.png"; 
var imgsitemap = new Image();
imgsitemap.src = "images/siteheader.png"; 

var sections = ["home", "about", "ratings", "list", "multi", "official", "contact", "sitemap"];
var currentSection = "home"; 

//added LF 6/3/2008 - new section variable to eliminate passing parm on URL
//variable is set with page left navs, or on page itself (if no left nav)
var Section;

//set these to false on page if not including right or footer
var bRight = true; 
var bFoot = true;
//COMMON LOAD SCRIPT FOR MOST PAGES IN SITE
//ASSUMES ajaxinclude.js is included, assumes the above image variables and also assumes ...
//ids of the content sections (ContentHead, ContentRight, ContentFoot)
//all should be there if the template page is used
//sect param is optional
function DoCommonLoad(sect)
{
	try
	{
		//do includes of header, right and footer
		document.getElementById("ContentHead").innerHTML = ajaxinclude("navtop.html");
		if(bRight) document.getElementById("ContentRight").innerHTML = ajaxinclude("navright.html");
		else 
		{
			try
			{
				document.getElementById("ContentRight").style.width = "0px"; 
				document.getElementById("tdContent").style.width = "90%"; 
				document.getElementById("tdContent").style.paddingLeft = "20px"; 
			}
			catch(e){}
		}
		if(bFoot) document.getElementById("ContentFoot").innerHTML = ajaxinclude("footer.html");
		
		//qsvals.section is section
		//if qsvals is null there were no params passed on the url	
		var qsvals = GetQueryStringVals();
		
		currentSection = (sect) ? sect : (qsvals && qsvals.section) ? qsvals.section : ""; 
		if(currentSection)
		{
			var headerimg = document.getElementById("HeaderImg");
			switch(currentSection)
			{
				case "home" : 
					headerimg.src = imghome.src;
				break;
				case "about" : 
					headerimg.src = imgabout.src;
				break;
				case "ratings" : 
					headerimg.src = imgratings.src;
				break;
				case "list" : 
					headerimg.src = imglist.src;
				break;
				case "multi" : 
					headerimg.src = imgmulti.src;
				break;
				case "official" : 
					headerimg.src = imgofficial.src;
				break;
				case "contact" : 
					headerimg.src = imgcontact.src;
				break;
				case "sitemap" : 
					headerimg.src = imgsitemap.src;
				break;
				default : 
					headerimg.src = imghome.src;
				break;
			}
			
			document.getElementById("span"+currentSection).className="topMenuOn"; 
		}
	}
	catch(e)
	{
		var loaderrmsg = "<p class='h1'>Error loading page</p><a class='link' href='index.html'>Click to return to home page.</a>";
		document.getElementById("ContentMain").innerHTML = loaderrmsg;
	}
}

/***********************************************
// GetQueryStringVals Added Lisa Fernandez Nov. 30, 2005
// Retrieves name / value pairs from document location (query string) or a passed string
// will return any number of pairs in the form of any object with the name as the key for each value
***********************************************/
function GetQueryStringVals(qs) 
{
	this.params = {};
	
	if (qs == null || qs == undefined)
		qs=location.search.substring(1,location.search.length)

	if (qs.length == 0) return null;
	
	qs = qs.replace(/\+/g, ' ')
	var args = qs.split('&') // parse out name/value pairs separated via &
	//trim off the non-search portion of a passed location string
	var loc = args[0].indexOf("?");
	if( loc > -1)
		args[0] = args[0].substr(loc+1); 

// split out each name=value pair
	for (var i=0;i<args.length;i++) 
	{
		var value;
		var pair = args[i].split('=')
		var name = unescape(pair[0])

		if (pair.length == 2)
			value = unescape(pair[1])
		else
			value = name
		
		this.params[name] = value
	}
	return this.params;
}
function resetForm()
{
	//document.location.reload();
}

//CONTACT PAGE FORM SCRIPT
//form validation, get correct email to send to and submit
function formulateMessage(frm)
{
	var bSubmit = false; 
	var message = "";
    //inquiry category
	if(frm.Category[frm.Category.selectedIndex].value == "select")
	{
		alert("Please select an Inquiry Category"); 
		frm.Category.focus();
		return false;
	}
	message += "\n\nInquiry Category: "; 
	message += frm.Category[frm.Category.selectedIndex].text + "\n\n"; 
	//name
	if(frm.Name.value == "")
	{
		alert("Please enter your name"); 
		frm.Name.focus();
		return false;
	}
	message += "Sender Name: " + frm.Name.value + "\n\n";
	
	//property type
	for(var i=0;i<frm.elements.PropertyType.length;i++)
	{
		if(frm.elements.PropertyType[i].checked)
		{
		message += "Property Type: ";
		message += frm.elements.PropertyType[i].value + "\n\n";
		}
	}
	
	//prop name
	if(frm.PropertyName.value == "")
	{
		alert("Please enter property name"); 
		frm.PropertyName.focus();
		return false;
	}
	message += "Property Name: "; 
	message += frm.PropertyName.value + "\n\n";
	
	 //state
	if(parseInt(frm.State[frm.State.selectedIndex].value) == 0)
	{
		alert("Please select your state, province or country."); 
		frm.State.focus();
		return false;
	}
	message += frm.State.name + ": ";
	message += frm.State.options[frm.State.selectedIndex].text + "\n\n";
	
	//zip
	if(!frm.Zip.value)
	{
		alert("Please enter your zip code");
		frm.Zip.focus();
		return false;
	}
	message += frm.Zip.name + ": ";
    message += frm.Zip.value  + "\n\n";
	//ContactFormat
	if((!frm.Phone.value || frm.Phone.value == "Please provide phone") && (!frm.EMAIL.value || frm.EMAIL.value == "Please provide email"))
	{
		alert("Please provide contact information");
		var focfield = frm.ContactFormat[0].checked ? frm.EMAIL : frm.Phone;
		focfield.focus();
		return false;
	}
	message += "Contact Format: ";
	message += frm.ContactFormat[0].checked ? frm.ContactFormat[0].value : frm.ContactFormat[1].value;
	message += "\n\n" + "Email: "; 
	message += frm.EMAIL.value + "\n\n";
	message += "Phone: "; 
	message += frm.Phone.value + "\n\n";
	
	//Questions_comments_suggestions
	if(frm.Questions_comments_suggestions.value == "")
	{
		alert("Please enter your question, comment or suggestion."); 
		frm.Questions_comments_suggestions.focus();
		return false;
	}
	message += frm.Questions_comments_suggestions.name + ": ";
	message += frm.Questions_comments_suggestions.value + "\n\n";
	
	//category / email to field
	var email = frm.Category[frm.Category.selectedIndex].value;
	
	if(email == "select")
	{
		alert("Please select a category."); 
		frm.Category.focus();
		return false;
	}
	else
	{
		if(email == "acct manager")
		{
			email = getEmail(frm);
			//special case for one email not in national.aaa.com domain...
			/*if(email == "clyne.karen@aaa-calif.com")
			{
				email = "pmsmith@national.aaa.com"; 
				message = "PLEASE FORWARD THE FOLLOWING MESSAGE TO: ACSC Manager. \n\n" + message;
			}*/
		}
		//debug
		//email = "lfernandez@national.aaa.com";
		if(!email) return false;
	}
  	frm.email_message.value=replaceChars(message);
	
	//test for from email, if none given use a default email address, sender needs a from email in  correct format
	var fromEmail = frm.EMAIL.value;
	fromEmail = (fromEmail == "" || fromEmail == "Please provide email") ? "DoNotReply@national.aaa.com" : fromEmail;

	//debug
	//email = "lfernandez@national.aaa.com";
	
    //frm.action = "http://ww1.aaa.biz/Dev_DynamicWeb/sendEmail?"
	frm.action = "http://www.aaa.com/mailman/SCPro.exe";
	frm.EMAIL.value = fromEmail;
	frm.RECIPIENT.value = email;
		
	//replace all spaces in url with %20's
	var oldUrl = frm.action;
	var newUrl= encodeURI(oldUrl);
	bSubmit = true;
	if(bSubmit)
	{
		var npu=window.open("about:blank",'npu','height=300,width=400,screenX=100,screenY=100,left=100,top=25,scrollbars=yes,resizable=yes,menubar=no,location=no');
		npu.opener=window;
		npu.focus();
		frm.action = newUrl;
		frm.target = "npu";
		frm.submit();
		//window.setTimeout(resetForm, 500);
	}
 	
}
//backslash, colon and hypen ok
var charsToReplace = 
{
	forwardslash 	: {Char: "/", repwith: " or "},
	dollarsign 		: {Char: "$", repwith: " dollars "}, 
	paren1			: {Char: "(", repwith: ""}, 
	paren2			: {Char: ")", repwith: ""},
	asterisk		: {Char: "*", repwith: ""},
	exclamation		: {Char: "!", repwith: ""},
	comma			: {Char: ",", repwith: " "}, 
	singlequote		: {Char: "'", repwith: ""}, 
	doublequote		: {Char: "\"", repwith: ""},
	semicolon		: {Char: ";", repwith: "-"},
	poundsign		: {Char: "#", repwith: "number "}
}
function replaceChars(str)
{
	var curval;
	for(var key in charsToReplace)
	{
		curval = charsToReplace[key];
		str = replaceChar(str, curval.Char, curval.repwith);
	}
	return str;
}
function replaceChar(str, Char, replacewith)
{
	if(replacewith == undefined) replacewith = " ";
	
	while(str.indexOf(Char)>-1)
		str = str.replace(Char, replacewith);
	
	return str;
}
//shorthand function for document.getElementById
function getElem(el)
{
	return document.getElementById(el);
}
//shows the state region dropdown if a state with regions is selected
var regstates = ["CA","FL","MI","NV" ]; //used by checkState and getEmail functions
function checkState(sel)
{
	try
	{
		if(!sel) sel = getElem("State");
		var state = parseInt(sel.options[sel.selectedIndex].value);
		for (var i=0;i<regstates.length;i++)
			getElem("region"+regstates[i]).style.display = "none"; //hide the region selects
			
		getElem("caMsg").style.display = "none"; 
			
		switch (state)
		{
			case 5: //CA
				getElem("region"+regstates[0]).style.display = "inline";
				getElem("caMsg").style.display = "inline"; 
			break;
			case 10: //FL
				getElem("region"+regstates[1]).style.display = "inline";
			break;
			case 23: //MI
				getElem("region"+regstates[2]).style.display = "inline";
			break;
			case 29: //NV
				getElem("region"+regstates[3]).style.display = "inline";
			break;
			default:
				return;
			break;
		}
	}
	catch(e){}
}
function whatRegState(sc)
{
	for(var i=0;i<regstates.length;i++)
		if(sc == regstates[i]) return sc;
		
	return ""; 
}
function getEmail(frm)
{
	//get the selected state name from value on form
	//if necessary, get region, prompt to select region if not selected
	//use table to get email, check in moz and ie
	var tbl = getElem("tblMgrList");
	var statecode = frm.State.options[frm.State.selectedIndex].text;
	if(whatRegState(statecode)!="")//need to select a region and add that to statecode
	{
		var regsel = getElem("region"+statecode);
		var reg = regsel.options[regsel.selectedIndex].value;
		if(reg == "select")
		{
			alert("Please select a region");
			regsel.focus();
			return ""; 
		}
		else
			statecode += reg.toString();
	}
	
	var bIE = document.all; 
	var tbody = bIE ?  tbl.childNodes[0] : tbl.childNodes[1];
	var trs = tbody.childNodes; //only every other is a tr in Moz
	var tds, sc, eml;
	for(var i=0;i<trs.length;i++)
	{
		if(trs[i].tagName == "TR") //have to check for moz
		{
			tds = trs[i].childNodes; //only some are tds in Moz, 5 and 7 are ones looking for in Moz
			sc = bIE ? tds[2].innerHTML : tds[5].innerHTML;
			if(sc == statecode) //need more for ca, etc....
			{
				eml = bIE ? tds[3].innerHTML : tds[7].innerHTML;
				return eml;
			}
		}
	}
	return "DoNotReply@national.aaa.com"; //default email, in case of error
}
//trims leading and trailing spaces from a string
function trimString(txt) 
{ 
    while (txt.substring(0,1) == ' ') 
        txt = txt.substring(1, txt.length);

    while (txt.substring(txt.length-1,txt.length) == ' ')
        txt = txt.substring(0, txt.length-1);

   return txt;
} 
