
/////////////////////--- Common Functions -- ///////////////////////////////

/* 
 * Common performAction() function used to dynamically generate urls and submission
 * of forms within the jsp.
 * Parameters: 
 * - form = form used in function.
 * - redirectPage = Redirector page.
 * - cusArgs = arguments bing passed to the cube.
 * - windowSpecs = open a window with these specifications.
 * - hlinkType = Type of hyperlink to build.
 * - appends the time of the click took place
 */

function performAction(pObj, redirectPage, cusArgs, windowSpecs ,hlinkType, web) 
{
	// Check if form has not been passed. Since decorator classes are being utilized in 
    // multiple pagination pages, common decorators will generate performAction() call with
	// the form as ''. A global variable of 'globalForm' must be set in each jsp that uses
	// pagination.
	 
	// Check if form object has been passed to function.
		if (typeof(pObj) != "object")
		{
			// Check if string has been passed instead of form object.
			if (typeof(pObj) == "string" && pObj.length > 0)
			{
				alert('A HTML Object must be passed into the performAction() function.');
				return;
			}
			// Use the globalForm variable for jsps using pagination.
			if (pObj == '' && globalForm != null) 
			{
				pObj = globalForm;
			}
			else 
			{
				alert('A global variable named globalForm needs to be set in this jsp.');
				return;
			}
		}
		
		var randomnumber = Math.floor(Math.random()*15841);
		var wnd_name = 'openWindow' + randomnumber;
		
		//Offermatica Add-ons
		if (s_brm.prop2=="mtg" || (s_brm.prop2=="loan")) 
		{
			try 
			{
				var lOffValue=mboxFactoryDefault.getPCId().getId();
			} 
			catch(e) 
			{
				var lOffValue=null;
			}
		}
		else
			var lOffValue=null;
		
		//split out the custom arguments		
		arr = cusArgs.split('||');
		var currentDT = createDateTime();
		oArr = arr[1].split(',');
											//Obj – Label or hyperlink 
		try
		{	var lsvyUid  = oArr[0];	}		//CC:campaign (discover, chase, empty etc)
		catch(e)							//Other Channels: svy_inst_uid
		{	var lsvyUid  = null;	}		
				
		try
		{	var lSt  = oArr[1];	}			//market (Populating market only for now)
		catch(e)
		{	var lSt  = null;		}		

		try
		{	var lMkt  = oArr[1];	}		//market
		catch(e)
		{	var lMkt  = null;		}		

		try
		{	var lprodUid  = oArr[2];	}	//Other Channels:product id
		catch(e)							//CC: Product category, Classification id 
		{	var lprodUid  = null;		}		

		try
		{	var lAmt	= oArr[3];	}		//Cost per click
		catch(e)
		{	var lAmt	= null;		}		

		try
		{	var lApr  = oArr[4];	}		//apr, intrest rate etc
		catch(e)
		{	var lApr  = null;		}		

		try
		{	var lPos  = oArr[5];	}		//position
		catch(e)
		{	var lPos  = null;		}		

		try
		{	var lWeb  = oArr[6];	}		//web, co-brand, partner etc
		catch(e)
		{	var lWeb  = null;		}		

		try
		{	var llinkType  = hlinkType;	}	//link type id (phone, hyper link etc)
		catch(e)
		{	var llinkType  = null;		}		

		try
		{	var lofferID  = oArr[7];	}	//CC: offer id
		catch(e)
		{	var lofferID  = null;	}		

		try
		{	var ladvType  = oArr[8];	}	//CC: advertiser type, business entity id
		catch(e)
		{	var ladvType  = null;	}		

		try
		{	var lpageNo  = oArr[9];	}		//CFP: display,click page number
		catch(e)
		{	var lpageNo  = null;	}		

		try
		{	var lChannel  = oArr[10];}		//channel, thisprodtype
		catch(e)							//cc, cfp etc
		{	var lChannel  = null;	}	
		
		try
		{	var lCFPersonID  = oArr[11];}	//CFP: personID
		catch(e)
		{	var lCFPersonID  = null;	}

		switch (parseInt(hlinkType)) 
		{
			case 1 :	//phone link
				trackLinkNew(pObj, lsvyUid,  lSt, lMkt, lprodUid, lAmt, lApr, lPos, lWeb, llinkType, lofferID, lOffValue, ladvType, lpageNo, lChannel,lCFPersonID);
				winx=window.open(redirectPage+arr[0]+"&click_date="+currentDT+"&ref_url="+escape(location.href),wnd_name,windowSpecs);
				winx.focus();
				return;
				break;

			case 2 :	//paid advertiser's	
				trackLinkNew(pObj, lsvyUid,  lSt, lMkt, lprodUid, lAmt, lApr, lPos, lWeb, llinkType, lofferID, lOffValue, ladvType, lpageNo, lChannel,lCFPersonID);
				if(web!=null)
		 		{	
		 			winx=window.parent.open(redirectPage+arr[0]+"&click_date="+currentDT+"&ref_url="+escape(location.href), wnd_name,'top=10,left=100,toolbar=yes,location=yes,directories=yes,status=yes,scrollbars=yes,resizable=yes,copyhistory=yes');
					winx.focus();
		 		}
		 		else
		 		{
		 			window.parent.location = redirectPage+arr[0]+"&click_date="+currentDT+"&ref_url="+escape(location.href);
		 		}
				break;		

			case 4 :	//profile link
				trackLinkNew(pObj, lsvyUid,  lSt, lMkt, lprodUid, lAmt, lApr, lPos, lWeb, llinkType, lofferID, lOffValue, ladvType, lpageNo, lChannel,lCFPersonID);
				window.location = redirectPage+arr[0]+"&click_date="+currentDT+"&ref_url="+escape(location.href);
		 		break;	
			 	
			case 5 :	//comments
				trackLinkNew(pObj, lsvyUid,  lSt, lMkt, lprodUid, lAmt, lApr, lPos, lWeb, llinkType, lofferID, lOffValue, ladvType, lpageNo, lChannel,lCFPersonID);
		 		if(web!=null)
		 		{	
		 			winx=window.open(redirectPage+arr[0]+"&click_date="+currentDT+"&ref_url="+escape(location.href),wnd_name,'top=10,left=100,toolbar=yes,location=yes,directories=yes,status=yes,scrollbars=yes,resizable=yes,copyhistory=yes');
					winx.focus();
		 		}
		 		else
		 		{
		 			window.location = redirectPage+arr[0]+"&click_date="+currentDT+"&ref_url="+escape(location.href);
		 		}
				break;	
			case 6 :	//paid advertiser's	
				trackLinkNew(pObj, lsvyUid,  lSt, lMkt, lprodUid, lAmt, lApr, lPos, lWeb, llinkType, lofferID, lOffValue, ladvType, lpageNo, lChannel,lCFPersonID);
				if(web!=null)
		 		{	
		 			winx=window.parent.open(redirectPage+arr[0]+"&click_date="+currentDT+"&ref_url="+escape(location.href), wnd_name,'top=10,left=100,toolbar=yes,location=yes,directories=yes,status=yes,scrollbars=yes,resizable=yes,copyhistory=yes');
					winx.focus();
		 		}
		 		else
		 		{
		 			window.parent.location = redirectPage+arr[0]+"&click_date="+currentDT+"&ref_url="+escape(location.href);
		 		}
				break;		
			case 7 :	//paid advertiser's	
				trackLinkNew(pObj, lsvyUid,  lSt, lMkt, lprodUid, lAmt, lApr, lPos, lWeb, llinkType, lofferID, lOffValue, ladvType, lpageNo, lChannel,lCFPersonID);
				if(web!=null)
		 		{	
		 			winx=window.parent.open(redirectPage+arr[0]+"&click_date="+currentDT+"&ref_url="+escape(location.href), wnd_name,'top=10,left=100,toolbar=yes,location=yes,directories=yes,status=yes,scrollbars=yes,resizable=yes,copyhistory=yes');
					winx.focus();
		 		}
		 		else
		 		{
		 			window.parent.location = redirectPage+arr[0]+"&click_date="+currentDT+"&ref_url="+escape(location.href);
		 		}
				break;			
		}
}

function createDateTime()
{
		var today = new Date();
		var year = today.getFullYear();
		var month = today.getMonth()+1;
		var date = today.getDate();
		var hour = today.getHours();
		var minute = today.getMinutes();
		var second = today.getSeconds();
		var millisecond = today.getMilliseconds();
		currentDT = month+"/"+date+"/"+year+" "+hour+":"+minute+":"+second+"."+millisecond;
		return currentDT;
}
function getState()
{
	 var query = location.search.substring(1); 
	 var pairs = query.split("&"); 
	
	// Begin loop through the querystring
	for(var i = 0; i < pairs.length; i++) {

		// Look for "name=value"
		var pos = pairs[i].indexOf('='); 
		
		// if not found, skip to next
		if (pos == -1) continue; 
		// Extract the name
		var argname = pairs[i].substring(0,pos); 
		alert(argname);
		// Extract the value
		var value = pairs[i].substring(pos+1); 
		// Store as a property
		//args[argname] = unescape(value); 
	}
	//return args; // Return the Object
	//get state
}
function isNumeric(fieldValue)
 {
     var numericField = true;
     if (isNaN(fieldValue))
     {
         numericField = false;
     }
     if (fieldValue == "")
     {
         numericField = false;
     }
     return numericField;
 }

function closeWindow() // v1.0
{
	window.close();
}

function tellMe()
{
	alert("common functions ");
}
//+"&recipe=new rate flow" was added to test the new rate process flow -- 2/3/2006-- SG
function brm_goToStep2(goToPage)
{
		var refi = document.getElementById("refi").value;	
		window.parent.location = goToPage+"?refi="+refi+"&recipe=freshRTC";		
}
function brm_goToStep3(goToPage, amount, refi, product)
{
	var state = document.getElementById("state").value;	
	if(state.length==0)
	{
		alert("Please select a state!");
	}
	else
	{
		window.location = goToPage+"?params="+amount+","+state+"&refi="+refi+"&product="+product;
	}
}

function brm_goToStep4(goToPage, state, amount, refi, product)
{
	var mkt = document.getElementById("market").value;	
	if(mkt.length==0)
	{
		alert("Please select a city!");
	}
	else
	{
		window.location = goToPage+"?params="+amount+","+state+","+mkt+"&refi="+refi+"&product="+product;
	}
}
function brm_goToStep5(goToPage, market, state, refi, product)
{	
	var loanAmount = striploanAmount(document.getElementById("loanAmount").value);	
	if(finalValidateLoanAmount(loanAmount)==true)
	{
		window.location = goToPage+"?params="+loanAmount+","+state+","+market+"&refi="+refi+"&product="+product;
	}		
}
function finalValidateLoanAmount(loanAmount)
{
	errorMsg = "Requested Amount not a valid number.";
	if(loanAmount.length==0)
	{
			alert(errorMsg);
			document.getElementById("loanAmount").select();
			return false;
	}
	//does it float?
	if(!parseFloat(loanAmount))
	{
		alert(errorMsg);
		document.getElementById("loanAmount").select();		
		return false;
	}
		
	//any characters?
	if(loanAmount.length>0)
	{
		re=/[a-zA-Z]/i;
		if (loanAmount.search(re) != -1)
		{
			alert(errorMsg);
			document.getElementById("loanAmount").select();
			return false;
		}
	}
		return true;
}
function validateloanAmount(loanAmount, opt)
{
	errorMsg = "Requested Amount not a valid number.";
	//does it float?
	if(loanAmount.length==0){return true;}
	
	if(!parseFloat(loanAmount))
	{
		alert(errorMsg);
		document.getElementById("loanAmount").select();		
		return false;
	}
		
	//any characters?
	if(loanAmount.length>0)
	{
		re=/[a-zA-Z]/i;
		if (loanAmount.search(re) != -1)
		{
			alert(errorMsg);
			document.getElementById("loanAmount").select();
			return false;
		}
	}
		return true;
}

function striploanAmount(loanAmt)
{	
	loanAmt = loanAmt.toLowerCase();
	loanAmt = loanAmt.replace('k','000');
	loanAmt = loanAmt.replace('$','');
	while(loanAmt.indexOf(',')>-1)
	{
		loanAmt = loanAmt.replace(',','');
	}
	return loanAmt;
}
function brm_goToStep6(goToPage, market, state, refi, product, loanAmount)
{			
	var productInfo	= RadioOptions("product");	
	var arrProd		= productInfo.split('_');
	var prods		= arrProd[0];
	var pType		= arrProd[1];
	var points		= 6;
	if( parseInt(refi) < 2)
	{	
		points		= RadioOptions("rPoints");	
	}	
	
	if(prods.length==0)
	{
		alert("Please select a product!");
	}
	else
	{
		window.location = goToPage+"?params="+loanAmount+","+state+","+market+"&product="+prods+"&points="+points+"&pType="+pType+"&refi="+refi;
	}
}
function RadioOptions(rName)
{
	var tmpValue='', len=0;
	if(document.all){len = document.all(rName).length;}
	if(!document.all && document.getElementById){len = document.getElementsByName(rName).length;}	
	for(j=0;j<len;j++)
	{
		if(document.getElementsByName(rName)[j].checked == true)
		{
				tmpValue = document.getElementsByName(rName)[j].value;
		}
	}
	return tmpValue;
}
function postNewValue(ART, ARV)
{
	var params = '?';
	var qrStr = window.location.search;
	var spQrStr = qrStr.substring(1);
	var arrQrStr = new Array();
        var artSet = 0;
        var arvSet = 0;
	var arr = spQrStr.split('&');
	for (var i = 0; i < arr.length; i++)
	{
            var keyValuePair = arr[i].split('=');
	    if (keyValuePair.length == 2)
            {
               if (keyValuePair[0] != 'art' && keyValuePair[0] != 'arv')
               {
                 params += keyValuePair[0] + '=' + keyValuePair[1] + '&';
               }
               else
               {
                 if (keyValuePair[0] == 'art')
                 {
                   params += 'art=' + ART + '&';
                   artSet = 1;
                 }
                 else
                 {
                   params += 'arv=' + ARV + '&';
                   arvSet = 1;
                 }
               }
	    }
	}
        if (artSet < 1)
        {
          params += 'art' + '=' + ART + '&';
        }
        if (arvSet < 1)
        {
          params += 'arv' + '=' + ARV;
        }
	window.location.href = 'http://localhost:1791/BanrkateOvernightAverages/Default.aspx' + params;
}

function displayRangeType(doc)
{
  var ids = doc.getElementById('MarketTypeSelection').value;
  if (ids == 'state')
  {
    writeState(doc);
  }
  if (ids == 'market')
  {
    writeMarket(doc);
  }
  if (ids == 'zipCode')
  {
    writeZipCode(doc);
  }
  if (ids == 'none')
  {
    writeMarketTypeOnly();
  }
  if (ids == 'national')
  {
    postNewValue('national','ZZ');
  }
}

function setStyleDisplay(control, displayValue)
{
  if (control != null)
  {
    control.style.display = displayValue;
  }
}

function writeMarketTypeOnly()
{
  setStyleDisplay(document.getElementById('MarketTypeSelection'), 'block');
  setStyleDisplay(document.getElementById('StateSelection'), 'none');
  setStyleDisplay(document.getElementById('MarketSelection'), 'none');
  setStyleDisplay(document.getElementById('zipText'), 'none');
  setStyleDisplay(document.getElementById('zipTextBox'), 'none');
  setStyleDisplay(document.getElementById('zipButton'), 'none');
}

function writeState(doc)
{
  setStyleDisplay(doc.getElementById('MarketTypeSelection'), 'block');
  setStyleDisplay(doc.getElementById('StateSelection'), 'block');
  setStyleDisplay(doc.getElementById('MarketSelection'), 'none');
  setStyleDisplay(doc.getElementById('zipText'), 'none');
  setStyleDisplay(doc.getElementById('zipTextBox'), 'none');
  setStyleDisplay(doc.getElementById('zipButton'), 'none');
}

function writeMarket(doc)
{
  setStyleDisplay(doc.getElementById('MarketTypeSelection'), 'block');
  setStyleDisplay(doc.getElementById('StateSelection'), 'none');
  setStyleDisplay(doc.getElementById('MarketSelection'), 'block');
  setStyleDisplay(doc.getElementById('zipText'), 'none');
  setStyleDisplay(doc.getElementById('zipTextBox'), 'none');
  setStyleDisplay(doc.getElementById('zipButton'), 'none');
}

function writeZipCode(doc)
{
  setStyleDisplay(doc.getElementById('MarketTypeSelection'), 'block');
  setStyleDisplay(doc.getElementById('StateSelection'), 'none');
  setStyleDisplay(doc.getElementById('MarketSelection'), 'none');
  setStyleDisplay(doc.getElementById('zipText'), 'block');
  setStyleDisplay(doc.getElementById('zipTextBox'), 'block');
  setStyleDisplay(doc.getElementById('zipButton'), 'block');
}
