// JavaScript Document
var hostname = location.hostname;
var secureProtocol = "https";

if (hostname == 'undefined' ||
		hostname == null ||
		(hostname != 'localhost' && hostname.indexOf(".") == -1)
	 )
{
		hostname = "www.usaselfemployed.com";
}
else if (hostname.indexOf("usaselfemployed.com") == -1)
{
	secureProtocol = "http";
}

if (hostname == "localhost")
	hostname += (":" + location.port);

/**
 * Auto-tabs to next field if size of current field is
 * met.
 * 
 * @param callerFieldId - Id of current form field
 * @param sizeLimit - Max size of current form field
 * @param tabToField - Id of next form field to tab to 
 * once max size limitation is reached.
 */
function autoTab(callerFieldId, sizeLimit, tabToFieldId)
{
	var tabToField = document.getElementById(tabToFieldId);
	var callerField = document.getElementById(callerFieldId);

	if ((tabToField != null && callerField != null) &&
		(tabToField != 'undefined' && callerField != 'undefined') &&
		callerField.value.length >= sizeLimit)
	{
		// Safety net
		callerField.value = callerField.value.substr(0, sizeLimit);
		
		if (tabToField.type == 'text' || tabToField.type == 'button' || tabToField.type == 'submit')
			tabToField.focus();
		else if (tabToField.type == 'radio')
		{
			var tabToRadios = document.getElementsByName(tabToFieldId);
		
			for (var i=0; i < tabToRadios.length; i++)
			{
				if (!tabToRadios[i].disabled)
				{
					tabToRadios[i].focus();
					break;
				}
			}
		}
	}
}

/**
 * Phone number validation (Format must be a 10 digit value)
 * 
 * @param phoneNumber - Phone number to validate
 * @return result - Boolean result of validation test
 */
function validatePhoneNumber(phoneNumber)
{
	var phoneRE = new RegExp("^[0-9]{10}$")
	var result = phoneRE.test(phoneNumber);
	
	return result;
}

/**
 * E-mail address validadtion
 *
 * @param emailAddr - E-mail address to validate
 * @return result - Boolean result of validation test
 */
function validateEmail(emailAddr)
{
	//var emailRE = new RegExp("/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{1,3})+$/");
	var result = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(emailAddr);
	
	//if (!result)
	//alert("Invalid E-mail Address! Please re-enter.");
	
	return result;
}

/**
 * Get today's date
 * 
 * @return date - Today's date formatted as mm/dd/yyyy
 */
function getCurrentDate()
{
    var date = new Date();
    var mo = (date.getMonth() + 1).toString();
    var da = date.getDate().toString();
    var yr = date.getFullYear();

    // Format for data validation
    mo = mo.length == 1 ? "0" + mo : mo;
    da = da.length == 1 ? "0" + da : da;

    var currentDate = mo + "/" + da + "/" + yr;

	return currentDate;
}

/**
 * Date validation
 * 
 * Tests whether date string passed in is a valid
 * calendar date in format mm/dd/yy or mm/dd/yyyy			
 *
 * @param date - Date string to validate
 * @return result - Boolean result of validation test
 */
function isValidDate(date)
{
	var result = parseDate(date);
	
	return result[0];
}

/**
 * Date formatter
 * 
 * Takes a date string and returns either a blank string
 * if it's an invalid date or a date formatted as
 * mm/dd/yyyy.Dates must be in format:
 *	mmddyy
 * 	mmddyyyy
 * and can contain /'s, -'s, /'s and -'s and any number
 * of spaces.They will be stripped out prior to validation.
 *
 * @param date - Date string to validate
 * @return result - Boolean result of validation test
 */
function getFormattedDate(date)
{
	var result = parseDate(date);
	
	return result[1];
}

/**
 * Date parser
 *
 * Takes a date string and returns an array with the date validation
 * result and, if validation's successful, a date string formatted as
 * mm/dd/yyyy.
 */
function parseDate(date)
{
	var result = new Array(false, "");
	
	var regExp1 = /\s/gi;		// Remove whitespace
	var regExp2 = /[\/-]/gi;	// Remove '/' or '-'
	
	var today = new Date();
	var curYear = today.getFullYear().toString();
	var yrPrefix = curYear.substr(0, 2);
	
	// Remove whitespace, '/' and '-'
	date = date.replace(regExp1, "");
	date = date.replace(regExp2, "")
	
	// Date should be (mmddyyyy)
	if (date.length != 8 || isNaN(date))
		return result;
		
	/*if (date.length != 6 && date.length != 8)
		return result;
	else if (date.length == 6)
		date = date.substr(0, 4) + yrPrefix + date.substr(4, 2);*/
	
	// We use the built-in JS date object and check that the values parsed
	// and returned from the class functions match what the user provided.
	// JavaScript will cycle over if value is invalid.
	// Eg) getMonth() will return '1' if it the month provided was '13'
	var userMo = date.substr(0, 2);
	var userDa = date.substr(2, 2);
	var userYr = date.substr(4, 4);
	var userFormattedDate = userMo + "/" + userDa + "/" + userYr;
	
	var testDate = new Date(userFormattedDate);
	var testMo = testDate.getMonth() + 1;
	var testDa = testDate.getDate();
	var testYr = testDate.getFullYear();
	
	// Check date is valid
	if (Number(userMo) != testMo ||
		Number(userDa) != testDa ||
		userYr != testYr)
	{
		return result;
	}
	
	result[0] = true;
	result[1] = userFormattedDate;
	
	return result;
}

//Trim functions
function ltrim (s1)
{
	return s1.replace(/^\s*/, "")
}

function rtrim (s2)
{
	return s2.replace(/\s*$/, "");
}

function trim (s3)
{
	return rtrim(ltrim(s3));
}

//-------------------------------------------------------------------
// isBlank(value)
//   Returns true if value only contains spaces
//-------------------------------------------------------------------
function isBlank(val){
	if(val==null)
		return true;
	for(var i=0;i<val.length;i++) {
		if ((val.charAt(i)!=' ')&&(val.charAt(i)!="\t")&&(val.charAt(i)!="\n")&&(val.charAt(i)!="\r"))
			return false;
	}
	return true;
}

//-------------------------------------------------------------------
// isDigit(value)
//   Returns true if value is a 1-character digit
//-------------------------------------------------------------------
function isDigit(num) {
	if (num.length>1)
		return false;
	var string="1234567890";
	if (string.indexOf(num)!=-1)
		return true;
	return false;
}

//-------------------------------------------------------------------
// isInteger(value)
//   Returns true if value contains all digits
//-------------------------------------------------------------------
function isInteger(val){
	if (isBlank(val))
		return false;
	for(var i=0;i<val.length;i++){
		if(!isDigit(val.charAt(i)))
			return false;
	}
	return true;
}

function isNumeric(sText)
{
   var validChars = "0123456789.";
   var isNumber=true;
   var character;

 
   for (i = 0; i < sText.length && isNumber == true; i++) 
   { 
      character = sText.charAt(i); 
      if (validChars.indexOf(character) == -1) 
      {
         isNumber = false;
      }
   }
   return isNumber;
}

/**
 * Default dropdown list select entry to its initial value
 *    dropdownFieldID: ID of the dropdown form field
 *    valueFieldID   : ID of the initial value
 */
function setDropdownFieldValue(dropdownFieldID, valueFieldID) {
	var value = pwr.util.getValue(valueFieldID);
	var dropdownField = document.getElementById(dropdownFieldID);
	for (var i = 0; i <dropdownField.length; i++) {
		if (dropdownField[i].value == value) {
			dropdownField[i].selected = true;
		}
	}
}

/**
 * Opens and centers window
 */
function openAndCenterWindow(url, name, h, w, settings)
{
	var openedWindow = null;
					
	if (screen.width)
	{
		var winl = (screen.width-w) / 2;
		var wint = (screen.height-h) / 2;
	}
	else
	{
		winl = 0;
		wint = 0;
	}
				
	if (winl < 0) winl = 0;
	if (wint < 0) wint = 0;
	
	if (settings == null || settings == 'undefined')
		settings = "";
	else
		settings += ",";
		
	settings += 'height=' + h;
	settings += ',width=' + w;
	settings += ',top=' + wint;
	settings += ',left=' + winl;
			
	openedWindow = window.open(url, name, settings);
	
	return openedWindow;
}

function vardump(val)
{
	var printOutput = "";
	var tabCnt = 0;
	var tabLim = 2;
	
	for (var key in val)
	{
		printOutput += (key + "=" + val[key] + '\t');
		if (tabCnt++ > tabLim)
		{
			printOutput += '\n';
			tabCnt = 0;
		}
	}
	
	alert(printOutput);
}

/**
 * Adjust IFRAME
 *
 * Set the 'marginWidth' value on an iframe to 0
 */
function adjustIFrame(iframeName)
{
	var iframe = window.frames[iframeName];
	
	if (iframe != 'undefined' && iframe != null)
	{
		var fe = iframe.frameElement;
		var feOuterHtml = fe.outerHTML;
		var re = /marginWidth=\"?([0-9]*)?\"?/
		var feOuterHtml = feOuterHtml.replace(re, "");
		
		feOuterHtml = feOuterHtml.replace("<IFRAME", "<IFRAME marginWidth=\"0\"");
		fe.outerHTML = feOuterHtml;
	}
}
