// JavaScript Document
function findAndReplace(searchText, replacement) {
	fullExpression = regexEscape(searchText);
	input = new RegExp(fullExpression,"gi"); 
	output = replacement;
	document.body.innerHTML = document.body.innerHTML.replace(input,output); 
}

function IsNumeric(sText) {
	var ValidChars = "0123456789.";
	var IsNumber=true;
	var Char;
	
	
	for (i = 0; i < sText.length && IsNumber == true; i++) { 
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) {
			IsNumber = false;
		}
	}
	return IsNumber;
}



function replaceAll (numToInsert,numberFormat,numToExclude){
	var fullExpression = "";
	var iteration=new Array();
	
	iteration[0] = addExclude("\\(\\d{3}\\)[^0-9]\\d{3}[^0-9]\\d{4}",numToExclude);
	iteration[1] = addExclude("\\d{3}[^0-9]\\d{3}[^0-9]\\d{4}",numToExclude);
	iteration[2] = addExclude("\\d{3}[^0-9]\\d{7}",numToExclude);
	iteration[3] = addExclude("\\(\\d{3}\\)\\d{3}[^0-9]\\d{4}",numToExclude);
	iteration[4] = addExclude("\\(\\d{3}\\)\\d{7}",numToExclude);
	iteration[5] = addExclude("\\(\\d{3}\\)[^0-9]\\d{7}",numToExclude);	
	iteration[6] = addExclude("\\([^0-9]\\d{3}[^0-9]\\)[^0-9]\\d{7}",numToExclude);
	iteration[7] = addExclude("\\([^0-9]\\d{3}[^0-9]\\)\\d{7}",numToExclude);
	iteration[8] = addExclude("\\([^0-9]\\d{3}[^0-9]\\)\\d{3}[^0-9]\\d{4}",numToExclude);
	iteration[9] = addExclude("\\([^0-9]\\d{3}[^0-9]\\)[^0-9]\\d{3}[^0-9]\\d{4}",numToExclude);

	var iCount = iteration.length - 1;
	for (i=0;i<=iCount;i++){
		if (i == 0){
			fullExpression = iteration[i];			
		}else{
			fullExpression = fullExpression + "|" + iteration[i];
		}
	}
	
	input = new RegExp(fullExpression,"gi"); 
	if (numberFormat){
		output = formatnumber(numToInsert,numberFormat);
	}else{
		output = numToInsert;		
	}
// 	if (numToExclude){
//	 	var numCheck = numToExclude.search(",");
// 		if (numCheck != -1){
// 			excludeSplit = numToExclude.split(",");
//			var eCount = excludeSplit.length - 1;
//			for (e=0;e<=eCount;e++){
// 				replaceSingleRegex(trim(excludeSplit[e]),'xxxyyyzzz'+e);	
// 			}
// 		}else{
// 			replaceSingleRegex(numToExclude,'xxxyyyzzz0');	
// 		}
// 	}
 	
	document.body.innerHTML = document.body.innerHTML.replace(input,output); 

// 	if (numToExclude){
//	 	var numCheck = numToExclude.search(",");
// 		if (numCheck != -1){
// 			excludeSplit = numToExclude.split(",");
//			var eCount = excludeSplit.length - 1;
//			for (e=0;e<=eCount;e++){
// 				replaceSingle('xxxyyyzzz'+e,formatnumber(trim(excludeSplit[e]),numberFormat));	
// 			}
// 		}else{
// 			replaceSingle('xxxyyyzzz0',formatnumber(numToExclude,numberFormat));	
// 		}
// 	}
}

function replaceSingle (numToFind, numToInsert){
	fullExpression = regexEscape(numToFind);
	input = new RegExp(fullExpression,"gi"); 
	output = numToInsert;
	document.body.innerHTML = document.body.innerHTML.replace(input,output); 
}

function replaceSingleRegex (numToFindS, numToInsertS){
	var fullExpressionS = "";
	var iterationS=new Array();
	var areaCode = numToFindS.substring(0,3);
	var exchange = numToFindS.substring(3,6);
	var remain = numToFindS.substring(6,10);
	var exchangeCombo = exchange + remain;
	//alert (areaCode);
	//alert (exchange);
	//alert (remain);
	//alert (exchangeCombo);
	iterationS[0] = "\\("+areaCode+"\\)[^0-9]"+exchange+"[^0-9]"+remain;
	iterationS[1] = areaCode+"[^0-9]"+exchange+"[^0-9]"+remain;
	iterationS[2] = areaCode+"[^0-9]"+exchangeCombo;
	iterationS[3] = "\\("+areaCode+"\\)"+exchange+"[^0-9]"+remain;
	iterationS[4] = "\\("+areaCode+"\\)"+exchangeCombo;
	iterationS[5] = "\\("+areaCode+"\\)[^0-9]"+exchangeCombo;	
	iterationS[6] = "\\([^0-9]"+areaCode+"[^0-9]\\)[^0-9]"+exchangeCombo;
	iterationS[7] = "\\([^0-9]"+areaCode+"[^0-9]\\)"+exchangeCombo;
	iterationS[8] = "\\([^0-9]"+areaCode+"[^0-9]\\)"+exchange+"[^0-9]"+remain;
	iterationS[9] = "\\([^0-9]"+areaCode+"[^0-9]\\)[^0-9]"+exchange+"[^0-9]"+remain;

	var iCountS = iterationS.length - 1;
	for (i=0;i<=iCountS;i++){
		if (i == 0){
			fullExpressionS = iterationS[i];			
		}else{
			fullExpressionS = fullExpressionS + "|" + iterationS[i];
		}
	}
	//alert(fullExpression);
	inputS = new RegExp(fullExpressionS,"gi"); 
	outputS = numToInsertS;
//	if (numToExclude){
//		replaceAll('xxxyyyxxx1');	
//	}
	document.body.innerHTML = document.body.innerHTML.replace(inputS,outputS); 
}

function regexEscape (safesearch){
	bs=String.fromCharCode(92);  
	unsafe=bs+".+*?[^]$(){}=!<>¦:";  
	for (i=0;i<unsafe.length;++i){  
		safesearch=safesearch.replace(new RegExp("\\"+unsafe.charAt(i),"g"),bs+unsafe.charAt(i)); 
	}
	return safesearch;
}

function getURLVariable( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}

function addExclude (incomingRegex, numExclude){
	//alert(incomingRegex);
	//alert(numExclude);
	var outgoingRegex = "";
	var preEx = "(?!";
	var postEx = "\\b)";
	
	if (numExclude){
		excludeSplit = numExclude.split(",");
		
		var eCount = excludeSplit.length - 1;
	
		for (e=0;e<=eCount;e++){
			exNumber = trim(excludeSplit[e]);
			var areaCode = exNumber.substring(0,3);
			var exchange = exNumber.substring(3,6);
			var remain = exNumber.substring(6,10);
			var exchangeCombo = exchange + remain;
			switch(incomingRegex){
				case "\\(\\d{3}\\)[^0-9]\\d{3}[^0-9]\\d{4}":
					outgoingRegex = outgoingRegex + preEx+"\\("+areaCode+"\\)[^0-9]"+exchange+"[^0-9]"+remain+postEx;
					break;
				case "\\d{3}[^0-9]\\d{3}[^0-9]\\d{4}":
					outgoingRegex = outgoingRegex + preEx+areaCode+"[^0-9]"+exchange+"[^0-9]"+remain+postEx;
					break;
				case "\\d{3}[^0-9]\\d{7}":
					outgoingRegex = outgoingRegex + preEx+areaCode+"[^0-9]"+exchangeCombo+postEx;
					break;
				case "\\(\\d{3}\\)\\d{3}[^0-9]\\d{4}":
					outgoingRegex = outgoingRegex + preEx+"\\("+areaCode+"\\)"+exchange+"[^0-9]"+remain+postEx;
					break;	
				case "\\(\\d{3}\\)\\d{7}":
					outgoingRegex = outgoingRegex + preEx+"\\("+areaCode+"\\)"+exchangeCombo+postEx;
					break;
				case "\\(\\d{3}\\)[^0-9]\\d{7}":
					outgoingRegex = outgoingRegex + preEx+"\\("+areaCode+"\\)[^0-9]"+exchangeCombo+postEx;
					break;
				case "\\([^0-9]\\d{3}[^0-9]\\)[^0-9]\\d{7}":
					outgoingRegex = outgoingRegex + preEx+"\\([^0-9]"+areaCode+"[^0-9]\\)[^0-9]"+exchangeCombo+postEx;
					break;
				case "\\([^0-9]\\d{3}[^0-9]\\)\\d{7}":
					outgoingRegex = outgoingRegex + preEx+"\\([^0-9]"+areaCode+"[^0-9]\\)"+exchangeCombo+postEx;
					break;
				case "\\([^0-9]\\d{3}[^0-9]\\)\\d{3}[^0-9]\\d{4}":
					outgoingRegex = outgoingRegex + preEx+"\\([^0-9]"+areaCode+"[^0-9]\\)"+exchange+"[^0-9]"+remain+postEx;
					break;
				case "\\([^0-9]\\d{3}[^0-9]\\)[^0-9]\\d{3}[^0-9]\\d{4}":
					outgoingRegex = outgoingRegex + preEx+"\\([^0-9]"+areaCode+"[^0-9]\\)[^0-9]"+exchange+"[^0-9]"+remain+postEx;
					break;
				default: outgoingRegex="";
			}
		}
	}
	return(outgoingRegex+incomingRegex);
}

function mm_action_replace () {
	if (typeof customer_number_format == 'undefined')
		customer_number_format='2';
	if (typeof exclude_numbers == 'undefined')
		exclude_numbers='';
	if (tnarray[0].length==10)
		replaceAll(tnarray[0],customer_number_format,exclude_numbers);
}
