// 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("\\(\\s?\\d{3}\\s?\\)[\\-|\\.|\\s]?\\d{3}[\\-|\\.|\\s]?\\d{4}(?=<|\\s|\\.|\\!|\\?|\\,)",numToExclude);
	iteration[1] = addExclude("\\b\\d{3}\\s?[\\-|\\.|\\s]?\\d{3}[\\-|\\.|\\s]?\\d{4}\\b(?=<|\\s|\\.|\\!|\\?|\\,)",numToExclude);
	iteration[2] = addExclude("\\b(\\d{4}|\\d{5})\\s\\d{3}\\s?(\\d{4}|\\d{3})\\b(?=<|\\s|\\.|\\!|\\?|\\,)",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 > -1){
		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');	
// 		}
// 	}
 	if (mm_replace_ids){
		idSplit = mm_replace_ids.split(",");
		var iCount = idSplit.length - 1;
	
		for (i=0;i<=iCount;i++){
			if (document.getElementById(idSplit[i]))
				document.getElementById(idSplit[i]).innerHTML = document.getElementById(idSplit[i]).innerHTML.replace(input,output); 	
		}
	}else{
		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,numberFormatS){
	var fullExpressionS = "";
	var iterationS=new Array();
	if (numToFindS.substring(0,1) == '0'){
		var areaCode = numToFindS.substring(0,4);
		var exchange = numToFindS.substring(4,7);
		var remain = numToFindS.substring(7,11);
		var exchangeCombo = numToFindS + remain;	
		var areaCode2 = numToFindS.substring(0,5);
		var exchange2 = numToFindS.substring(5,8);
		var remain2 = numToFindS.substring(8,11);
		var exchangeCombo2 = numToFindS + remain2;				
	}else{
		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] = "\\(\\s?"+areaCode+"\\s?\\)[\\-|\\.|\\s]?"+exchange+"[\\-|\\.|\\s]?"+remain+"(?=<|\\s|\\.|\\!|\\?|\\,)";
	iterationS[1] = "\\b"+areaCode+"\\s?[\\-|\\.|\\s]?"+exchange+"[\\-|\\.|\\s]?"+remain+"\\b(?=<|\\s|\\.|\\!|\\?|\\,)";
	iterationS[2] = "\\b("+areaCode+"|"+areaCode2+")\\s("+exchange+"|"+exchange2+")\\s("+remain+"|"+remain2+")\\b(?=<|\\s|\\.|\\!|\\?|\\,)";

	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"); 
	if (numberFormatS > -1){
		outputS = formatnumber(numToInsertS,numberFormatS);
	}else{
		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]);
			if (exNumber.substring(0,1) == '0'){
				var areaCode = exNumber.substring(0,4);
				var exchange = exNumber.substring(4,7);
				var remain = exNumber.substring(7,11);
				var exchangeCombo = exchange + remain;	
				var areaCode2 = exNumber.substring(0,5);
				var exchange2 = exNumber.substring(5,8);
				var remain2 = exNumber.substring(8,11);
				var exchangeCombo2 = exchange2 + remain2;				

			}else{
				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 "\\(\\s?\\d{3}\\s?\\)[\\-|\\.|\\s]?\\d{3}[\\-|\\.|\\s]?\\d{4}(?=<|\\s|\\.|\\!|\\?|\\,)":
					outgoingRegex = outgoingRegex + preEx+"\\(\\s?"+areaCode+"\\s?\\)[\\-|\\.|\\s]?"+exchange+"[\\-|\\.|\\s]?"+remain+postEx;
					break;
				case "\\b\\d{3}\\s?[\\-|\\.|\\s]?\\d{3}[\\-|\\.|\\s]?\\d{4}\\b(?=<|\\s|\\.|\\!|\\?|\\,)":
					outgoingRegex = outgoingRegex + preEx+""+areaCode+"\\s?[\\-|\\.|\\s]?"+exchange+"[\\-|\\.|\\s]?"+remain+postEx;
					break;
				case "\\b(\\d{4}|\\d{5})\\s\\d{3}\\s?(\\d{4}|\\d{3})\\b(?=<|\\s|\\.|\\!|\\?|\\,)":
					outgoingRegex = outgoingRegex + preEx+"("+areaCode+"|"+areaCode2+")\\s("+exchange+"|"+exchange2+")\\s("+remain+"|"+remain2+")"+postEx;
				default: outgoingRegex="";
			}
		}
	}
	return(outgoingRegex+incomingRegex);
}

function mm_action_replace () {
	if (tnarray[0].length==10 || (tnarray[0].length==11 && tnarray[0].charAt(0)==0)){
		if (tnarray[0]==default_number && overwrite_default_number=='N'){
		}else{
			replaceAll(tnarray[0],customer_number_format,exclude_numbers);
		}
	}
}

function mm_action_single () {
	if (tnarray[0].length==10 || (tnarray[0].length==11 && tnarray[0].charAt(0)==0)){
		if (tnarray[0]==default_number && overwrite_default_number=='N'){
		}else{
			if (filter_numbers){
				filterSplit = filter_numbers.split(",");
		
				var eCount = filterSplit.length - 1;
	
				for (e=0;e<=eCount;e++){
					filterNumber = trim(filterSplit[e]);
					replaceSingleRegex(filterNumber,tnarray[0],customer_number_format);
				}
			}
		}
	}
}
