// edit these variables for localization.var redirect = '\nYou will now be redirected to ';var step_cat = ' the CATEGORY step.';var step_pkg = ' the PACKAGE step.';var step_sched = ' the SCHEDULING step.';var step_conf = ' the CONFIGURE step.';var step_text = ' the ENTER TEXT step.';var step_login = ' the LOGIN step.';var step_pay = ' the PAYMENT step.';var step_customer = ' the CUSTOMERS step.';// non-digit characters which are allowed in phone numbersvar phoneDelims = '.+()- ';//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// This will process any ClassSpeed XML-RPC error returned.function processClassSpeedError( eMsg, track, site ){	var errform = document.forms[0];	var redirURL = '';	var template = '';	var message = '';	var codePart = 'Fault code: ';	var methodPart = 'In method: ';	var messagePart = 'Message: ';	var endPart = 'Error on line:';	if( site.length > 0 && site.indexOf('/') == -1 ) site = '/' + site;	var baseurl = site + '/webentry/url/';	var eCode = parseInt( eMsg.slice( eMsg.indexOf(codePart) + codePart.length, eMsg.indexOf(methodPart) ) );	var eMethod = eMsg.slice( eMsg.indexOf(methodPart) + methodPart.length, eMsg.indexOf(messagePart) );	var eMessage = eMsg.slice( eMsg.indexOf(messagePart) + messagePart.length, eMsg.indexOf(endPart) );	while( eMessage.indexOf('<br />') != -1 ) eMessage = eMessage.replace( '<br />', '' );	switch( eCode )	{		case 3025: // sectOrClass related errors			redirURL = baseurl + track + '/' + track.substr(0,1) + '_category.htm';			if( document.location.href.indexOf(redirURL) == -1 ) eMessage += redirect + step_cat;			break;		case 3042: // rate related errors		case 3044:		case 3045:		case 3059:		case 3069:		case 3074:		case 3093:			template = ( track == 'consumer' ) ? '_package.htm' : '_category.htm';			redirURL = baseurl + track + '/' + track.substr(0,1) + template;			if( document.location.href.indexOf(redirURL) == -1 ) // don't redirect to the page currently on				eMessage += redirect + ( ( track == 'consumer' ) ? step_pkg : step_cat );			break;		case 3017: // scheduling related errors		case 3030:		case 3031:		case 3032:		case 3054:		case 3060:		case 3061:		case 3062:		case 3067:		case 3070:		case 3071:		case 3072:		case 3096:		case 3163:			template = ( track == 'sfa' ) ? '_category.htm' : '_schedule.htm';			redirURL = baseurl + track + '/' + track.substr(0,1) + template;			if( document.location.href.indexOf(redirURL) == -1 ) eMessage += redirect + step_sched;			break;		case 3019: // ad text or formatting related errors		case 3040:		case 3041:		case 3052:		case 3053:		case 3057:		case 3058:		case 3063:		case 3064:		case 3065:		case 3066:		case 3079:		case 3112:			if ( track == 'rop' || track == 'wrop' || track == 'sfa' ) {				template = '_configure.htm';				message = step_conf;			}			else if ( track == 'consumer' ) {				template = '_entertext.htm';				message = step_text;			}			else {				template = '_createad.htm';				message = step_text;			}			redirURL = baseurl + track + '/' + track.substr(0,1) + template;			if( document.location.href.indexOf(redirURL) == -1 ) // don't redirect to the page currently on				eMessage += redirect + message;			break;		case 3068:			if ( track == 'sfa' ) {				template = '_category.htm';				message = step_conf;			}			else {				template = '_schedule.htm';				message = step_text;			}			redirURL = ( eMessage.indexOf('0 unit') == -1 ) ? baseurl + track + '/' + track.substr(0,1) + template : '';			if( document.location.href.indexOf(redirURL) == -1 && eMessage.indexOf('0 unit') == -1 ) eMessage += redirect + step_text;			break;		case 3033: // customer information related errors		case 3035:		case 3048:		case 3076:		case 3084:		case 3085:		case 3095:		case 3104:		case 3179:			if ( track == 'consumer' ) {				template = '_pay.htm';				message = step_pay;			}			else if ( track == 'sfa' ) {				template = '_customers.htm';				message = step_customer;			}			else {				template = '_login.htm';				message = step_login;			}			redirURL = baseurl + track + '/' + track.substr(0,1) + template;			if( document.location.href.indexOf(redirURL) == -1 ) // don't redirect to the page currently on				eMessage += redirect + message;			break;		case 3016:		case 3118:			redirURL = '';			break;		case 3171: // Discount related errors		case 3172:		case 3173:		case 3174:		case 3175:			redirURL = baseurl + track + '/' + track.substr(0,1) + '_summary.htm';			if( document.location.href.indexOf(redirURL) == -1 ) eMessage += redirect + step_cat;			break;		default:			redirURL = baseurl + 'common/sorry.htm';			break;	}	if( eMessage == '' ) eMessage = 'There was an unspecified error.';	eMessage += ' (Fault Code: ' + eCode + ')';	//document.body.style.visibility = 'hidden';	if( eMessage.length > 0 ) alert( eMessage );	if( redirURL != '' && eMessage.indexOf('Debugging Message:') == -1 && document.location.href.indexOf(redirURL) == -1 )	{		if( errform && errform.DATA_failure_reason_message && errform.DATA_failure_message )		{			errform.action = redirURL;			errform.method = 'post';			errform.DATA_failure_reason_message.value = eMessage;			errform.submit();		}		else			parent.location.replace( redirURL + '?DATA_failure_reason_message=' + eMessage );	}	else		document.body.style.visibility = 'visible';	return;}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// This will process any ClassSpeed XML-RPC error returned.function prohibitedWordsError(track, site) {	var errform = document.forms[0];	var redirURL = '';	var template = '';	if( site.length > 0 && site.indexOf('/') == -1 ) site = '/' + site;	var baseurl = site + '/webentry/url/';	template = ( track == 'consumer' ) ? '_entertext.htm' : '_createad.htm';	redirURL = baseurl + track + '/' + track.substr(0,1) + template;	if( document.location.href.indexOf(redirURL) == -1 ) // don't redirect to the page currently on	errform.action = redirURL;	errform.method = 'post';	errform.submit();	return;}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// delHTML - make word clean of html stringsfunction delHTML( word ){  word = word.replace( '<', ')' );  word = word.replace( '&lt', '(' );  word = word.replace( '>', ')' );  word = word.replace( '&gt', ')' );  word = word.replace( '&#60', '(' );  word = word.replace( '&#62', ')' );  return word;}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////function stripDoubleQuotes(text){	while( text.indexOf('"') != -1 ) text = text.replace('"', '\'');	return text;}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// removes any extra spaces and clears out single-space results.function stripSpaces( str ){	if( IEMAC ) return str; // old mac IE doesn't get along with the regular expression	str = str.replace(/ {2,}/gi.exec(str),'');	if( str == " " ) str = "";	return str;}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// removes any extra white space and clears out single-space results.function stripWhiteSpace( str ){	if( IEMAC ) return str; // old mac IE doesn't get along with the regular expression	str = str.replace(/\s{2,}/gi.exec(str),'');	str = str.replace(/\t{1,}/gi.exec(str),'');	str = str.replace(/\n{1,}/gi.exec(str),'');	if( str == " " ) str = "";	return str;}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// removes all non-digit characters from the phone number, etc...function cleanNumber(num){	retNumber = "";	for( var i = 0; i < num.length; i++ )	{		// Check that current character is number.		var c = num.charAt(i);		if( ((c >= '0') && (c <= '9')) ) retNumber += c;	}	// return clean number	return retNumber;}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// returns false if invalid characters are used.function hasValidChars(daChar){	daChar = daChar.toUpperCase();	var validChars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' + phoneDelims;	for( var i = 0; i < daChar.length; i++ ) if( validChars.indexOf(daChar.charAt(i)) == -1 ) return false;	return true; // All characters are valid symbols.}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// isEmpty - tests for an empty valuefunction isEmpty(inputStr){	if( inputStr == null || inputStr == '' ) return true;	return false;}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// returns the LEAST value of the index of a multidimensional array.function get_min_value_by_index( arr, index ){	val = '';	for( i = 0; i < arr.length; i++ )		val = ( val == '' || val > ''+arr[i][index] ) ? ''+arr[i][index] : val;	return val;}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// returns the MOST value of the index of a multidimensional array.function get_max_value_by_index( arr, index ){	val = '';	for( i = 0; i < arr.length; i++ )		val = ( val == '' || val < ''+arr[i][index] ) ? ''+arr[i][index] : val;	return val;}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// this function was created to be more compatable with mac browsers.function setSelection( obj, val ){	if( !obj ) return;	if( obj.type == 'text' || obj.type == 'textarea' )	{		obj.value = val;	}	else if( obj.type == 'select-one' || obj.type == 'select-multiple' )	{		for( var i = 0; i < obj.length; i++ )		{			if( obj[i].value == val )			{				obj[i].selected = true;				return;			}		}	}	else if( ( obj.type == 'checkbox' || obj.type == 'radio' ) )	{		if( obj.length > 1 )		{			for( var i = 0; i < obj.length; i++ )			{				if( obj[i].value == val )				{					obj[i].checked = true;					return;				}			}		}		else if( obj.value == val )			obj.checked = true;	}	return;}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////function valid_date_format( obj ){	var datesep = '/'; // U.S. separator	var olddate = obj.value;	while( obj.value.indexOf('-') != -1 ) obj.value = obj.value.replace('-',datesep);	while( obj.value.indexOf(',') != -1 ) obj.value = obj.value.replace(',',datesep);	while( obj.value.indexOf('\\') != -1 ) obj.value = obj.value.replace('\\',datesep);	while( obj.value.indexOf('.') != -1 ) obj.value = obj.value.replace('.',datesep); // COMMENT OUT FOR NON U.S.	//while( obj.value.indexOf('/') != -1 ) obj.value = obj.value.replace('/',datesep); // UNCOMMENT FOR NON U.S.	for( var i = 0; i < obj.value.length; i++ )		if( ( obj.value.charAt(i) < '0' || obj.value.charAt(i) > '9') && obj.value.charAt(i) != datesep ) return false;	var datearr = obj.value.split('/');	if( datearr.length != 3 ) return false;	if( datearr[0].length == 0 || datearr[0].length > 2 ) return false; // 2 digit month	if( datearr[1].length == 0 || datearr[1].length > 2 ) return false; // 2 digit day	if( datearr[2].length != 4 ) return false; // 4 digit year	return true;}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// return bool - email address validationfunction validEmail( email ){	if( !email ) return false;	if( email.indexOf('@') == -1 || email.indexOf('.') == -1 ||			email.indexOf('@') != email.lastIndexOf('@') ||			email.indexOf('@') == 0 || email.indexOf('@') == email.length ||			email.indexOf('.') == 0 || email.indexOf('.') == email.length ||			email.lastIndexOf('.') == email.indexOf('@')+1 ||			email.indexOf('@') > email.lastIndexOf('.') )	{		return false;	}	return true;}//////////////////////////////////////////////////////////////////////////////////////////////////////function writeFrame( frame, text ){	if( !frame ) return false;	frame.open();	frame.write( text );	frame.close();	return true;}/////////////////////////////////////////////////////////////////////////////////////////////////////////////// This function will add a form element to the document. In MOZ, you will need to add the object// to the form directly before submitting, in IE, you can simply add it to any object that resides within// the 'form' that is going to be submitted.function createInput( dObj, dType, dName, dId, dValue, destObj ){	var newInput = ( dObj ) ? dObj : document.createElement("input");	if( dType ) newInput.setAttribute("type", dType);	if( dName ) newInput.setAttribute("name", dName);	if( dId ) newInput.setAttribute("id", dId);	if( dValue ) newInput.setAttribute("value", dValue);	if( dValue ) newInput.value = dValue;	if( destObj ) destObj.appendChild(newInput);	return newInput;}/////////////////////////////////////////////////////////////////////////////////////////////////////////////// This function will re-rate an ad without loading the entire page.// The function requries that a hidden iframe named 'workingframe' exists on the page.function rateAd(){	if( ! parent.workingframe ) return;	var tbls = document.getElementById('adbasket_table').getElementsByTagName('TABLE');	tbls[0].style.visibility = 'hidden';	var origtarget = dm.target;	var origaction = dm.action;	dm.target = 'workingframe';	submitMainForm('business/b_rate.htm');	dm.target = origtarget;	dm.action = origaction;	showMessage( '<br><div style="font-weight:bold;font-family:tahoma,helvetica,arial;text-align:center;">Rating Changes...</div><br>', 130 );	return;}//////////////////////////////////////////////////////////////////////////////////////////////////////// This function is used to display a pretty floating message on the screen.function showMessage(message, width, classname){	if( !messagebox ) messagebox = document.getElementById('messagediv');	if( !messagebox ) return;	width = ( width ) ? Number(width)/2 : 0;	var xpos = ( IE ) ? (document.body.clientWidth/2)-width : (window.outerWidth/2)-width;	var ypos = ( IE ) ? document.body.clientHeight/2-100 : window.outerHeight/2-100;	var shadowfilter = 'filter:progid:DXImageTransform.Microsoft.Shadow(color=\'#888888\',Direction=135,Strength=5)';	if( IE && !messagebox.filters.length ) messagebox.style.cssText += '; ' + shadowfilter;	messagebox.style.backgroundColor = '#ffffee';	messagebox.style.left = xpos + 'px';	messagebox.style.top = ypos + 'px';	messagebox.style.width = (width*2.1) + 'px';	messagebox.style.zIndex = 99;	messagebox.innerHTML = message;	messagebox.style.display = 'inline';	if( classname ) messagebox.className = classname;	if( IE && true )	{		ifrm = ( document.getElementById('divshim') ) ? document.getElementById('divshim') : document.createElement('iframe');		ifrm.id = ifrm.name = 'divshim';		ifrm.src = 'javascript:false;';		ifrm.scrolling = 'no';		ifrm.frameBorder = '0';		ifrm.style.position = 'absolute';		ifrm.style.width = messagebox.offsetWidth;		ifrm.style.height = messagebox.offsetHeight;		ifrm.style.top = messagebox.style.top;		ifrm.style.left = messagebox.style.left;		ifrm.style.zIndex = messagebox.style.zIndex - 1;		ifrm.style.display = 'block';		document.body.appendChild(ifrm);	}	return;}//////////////////////////////////////////////////////////////////////////////////////////////////////// This function hides the message shown in the 'showMessage' function.function hideMessage(){	if( !messagebox ) messagebox = document.getElementById('messagediv');	if( !messagebox ) return;	messagebox.style.display = 'none';	if( document.getElementById('divshim') ) document.getElementById('divshim').style.display = 'none';	return;}