// usage: 
// changeSource("your default code", "your tracked link here");
// changeSource("", "your tracked link here");   	// if there is no default code
// changeSource("your default code", ""); 		// if there is no link to track


function changeSource(defaultcode, linktotrack)
{	
	var qsParm = new Array();

	// THIS FUNCTION GETS ALL THE PARAMETERS FROM THE URL

	function qs() 
	{
		var query = parent.location.search.substring(1);
		var parms = query.split('&');
		for (var i=0; i<parms.length; i++) 
		{
			//alert(parms[i]);
			var pos = parms[i].indexOf('=');
   			if (pos > 0) 
			{
      				var key = parms[i].substring(0,pos);
      				var val = parms[i].substring(pos+1);
				qsParm[key] = val;
      			}
   		}
	}


	// INITIALIZING PARAMETERS AND CALLING QS FUNCTION

	qsParm['source'] = null;
	qsParm['Zip'] = null;
	qs();

	var sourcecode = "";
	var thezip = "";
	var zipstring = "";
	var totaladdon = "";

	// CHECKING IF THERE IS A SPECIFIED SOURCE

	if (parent.location.search != "")
	{
		if (qsParm['source'])
		{
			sourcecode = qsParm['source'];
		}

		if (qsParm['Zip'])
		{
			thezip = qsParm['Zip'];
			zipstring = "&Zip=" + thezip;
		}

	}

	
	// IF THERE IS A SPECIFIED SOURCE, CONCATENATE IT TO EVERY LINK:

	if (sourcecode != "")
	{
		totaladdon = "?source=" + sourcecode + zipstring;
		
		// TAKES CARE OF ALL LINKS WITHIN THE PAGE (BUTTON AND TAB) 
		for(i=0; i<document.links.length; i++)
		{
			if ( (document.links[i].target != "_blank") && (document.links[i].className != "notrack") )
			{	
				// CHECK TO SEE IF THERE ARE ANY EXTRA PARAMETERS
				qsindexstart = document.links[i].href.indexOf('?');
				
				// IF THE LINK HAS EXTRA PARAMETERS
				if (qsindexstart > 0)
				{	
					extraparameters = document.links[i].href.substr(qsindexstart + 1);
					totaladdonwithparams = totaladdon + "&" + extraparameters;
					newstarturl = document.links[i].href.substr(0, qsindexstart);
					document.links[i].href = newstarturl + totaladdonwithparams;
				}

				// IF THE LINK IS NORMAL (NO EXTRA PARAMETERS)
				else
				{
					document.links[i].href += totaladdon;	
				}
			}

		}


		// TAKES CARE OF ALL FORMS
		// IMPORTANT: FOR HALLMARK TO PULL THE SOURCE FROM THE FORM, IT NEEDS TO BE IN A HIDDEN FIELD WITH THE NAME "source"
		// THIS IS BECAUSE THE POST METHOD IS BEING USED, SO IT WILL NOT LOOK AT THE URL OR FORM ACTION
		// WE ADD IT TO THE FORM ACTION FOR COSMETIC PURPOSES ONLY.  THIS IS JUST TO LET US SEE WHAT THE HIDDEN INPUT VALUE WAS
		for(j=0; j<document.forms.length; j++)
		{
			if (document.forms[j].action == linktotrack)
			{	
				document.forms[j].source.value = sourcecode;

				if (document.forms[j].Zip)
				{
					document.forms[j].Zip.value = thezip;
				}

				// THIS NEXT STATEMENT IS NOT NECESSARY, BUT ALLOWS US TO SEE WHAT SOURCE WAS PASSED THROUGH THE FORM
				document.forms[j].action += totaladdon;
			}
		}
	}

	// IF NO SOURCE IS SPECIFIED AT TOP URL:

	else
	{
		totaladdon = "?source=" + defaultcode;
		connector = "&";

		// TAKES CARE OF INSTANCES WHEN THERE IS NO DEFAULT CODE
		if (defaultcode == "")
		{
			totaladdon = "";
			connector = "?";
		}

		// TAKES CARE OF INSTANCES WHEN THERE IS NO SPECIFIC LINK TO TRACK
		if (linktotrack == "")
		{
			linktotrack = "";
		}


		// TAKES CARE OF ALL SPECIFIED LINKS TO TRACK WITHIN THE PAGE (BUTTON AND TAB) 
		for(i=0; i<document.links.length; i++)
		{
			// IF THE LINK IS THE SPECIFIC LINK WE ARE TRACKING
			if (document.links[i].href.indexOf(linktotrack) > -1)
			{	
				// CHECK TO SEE IF THERE ARE ANY EXTRA PARAMETERS
				qsindexstart = document.links[i].href.indexOf('?');
				
				// IF THE LINK HAS EXTRA PARAMETERS
				if (qsindexstart > 0)
				{	
					extraparameters = document.links[i].href.substr(qsindexstart + 1);
					totaladdonwithparams = totaladdon + connector + extraparameters;
					newstarturl = document.links[i].href.substr(0, qsindexstart);
					document.links[i].href = newstarturl + totaladdonwithparams;
				}
	
				// IF THE LINK IS NORMAL (NO EXTRA PARAMETERS)
				else
				{
					document.links[i].href += totaladdon;	
				}

			}

		}

		
		// TAKES CARE OF ALL FORMS WHERE THE FORM ACTION IS THE SPECIFIED URL TO TRACK
		// IMPORTANT: FOR HALLMARK TO PULL THE SOURCE FROM THE FORM, IT NEEDS TO BE IN A HIDDEN FIELD WITH THE NAME "source"
		// THIS IS BECAUSE THE POST METHOD IS BEING USED, SO IT WILL NOT LOOK AT THE URL OR FORM ACTION
		// THIS FOR STATEMENT DOES NOT AFFECT ANYTHING.  IT SIMPLY ALLOWS US TO SEE WHAT CODE WAS PASSED THROUGH THE FORM
		// THE DEFAULT CODE IS ALREADY HARDCODED INTO THE FORM
		for(j=0; j<document.forms.length; j++)
		{
			if (document.forms[j].action == linktotrack)
			{
				document.forms[j].action += totaladdon;
			}
		}
		
	}


}
