var urlStr,monthArray = new Array(13);
var bvDebug,tYear,tMonth,tDay,tHour,tMinute;
var tdelay=3000,secondsInDay=86400,secondsInHour=3600;
var nowDate,targetDate;
var targetNumberA,signUpRateA,counterNumA,inkA;
var targetNumberB,signUpRateB,counterNumB,inkB;


var targetNumbers = new Array();
var signupRates = new Array();
var counterNums = new Array();
var inks = new Array();

//target number is the begin_connection number from the feed
//rate = (end connections – start connections) / 7884000
//prefix used for image either eg hspa and wcdma use a different image name
function DisplayCounter(id, newTargetNumber, rate, prefix, phpdate)
{
	PrintCounter(prefix);
	setTimer(id, newTargetNumber, rate, prefix, phpdate);
}


function setTimer(id, newTargetNumber, rate, prefix, phpdate)
{
	arrphpdate = phpdate.split( "," );
	nowDate = new Date(arrphpdate[0], arrphpdate[1]-1, arrphpdate[2], arrphpdate[3], arrphpdate[4], arrphpdate[5]);
	setUpTargetsDate(id, newTargetNumber, rate, phpdate);
	primeCounterNumber(id);
	inks[id]=signupRates[id]*(tdelay/1000);
	inkCt(id, prefix);
}


function setUpTargetsDate(id, newTargetNumber, rate, phpdate)
{
	urlStr = new String(document.URL);
	targetNumbers[id]=getQueryString("tNum"+id+"=",newTargetNumber);

	signupRates[id]=getQueryString("rate"+id+"=",rate);

	/* The targetDate should be set for the end of the current quarter*/
	arrphpdate = phpdate.split( "," );

	if ((arrphpdate[1] == 01) || (arrphpdate[1] == 02) || (arrphpdate[1] == 03)){
		var currentTime = new Date(arrphpdate[0], 03-1, 31, 12, 12, 12);
	} else if ((arrphpdate[1] == 04) || (arrphpdate[1] == 05) || (arrphpdate[1] == 06)){
		var currentTime = new Date(arrphpdate[0], 06-1, 30, 12, 12, 12);
	} else if ((arrphpdate[1] == 07) || (arrphpdate[1] == 08) || (arrphpdate[1] == 09)){
		var currentTime = new Date(arrphpdate[0], 09-1, 30, 12, 12, 12);
	} else if ((arrphpdate[1] == 10) || (arrphpdate[1] == 11) || (arrphpdate[1] == 12)){
		var currentTime = new Date(arrphpdate[0], 12-1, 31, 12, 12, 12);
	}	else {
		//set current if not known
		var currentTime = new Date(arrphpdate[0], arrphpdate[1]-1, arrphpdate[2], arrphpdate[3], arrphpdate[4], arrphpdate[5]);
	}

	tYear = currentTime.getFullYear();
	tMonth = currentTime.getMonth() + 1;
	tDay = currentTime.getDate();
	tHour = currentTime.getHours();
	tMinute = currentTime.getMinutes();

	targetDate = new Date(tYear, tMonth-1, tDay, tHour, tMinute,0);
	setUpMonthArray();
}


function primeCounterNumber(id)
{
	var totalSecs=secondsBetween2Dates(nowDate,targetDate);
	if(dateBefore(nowDate,targetDate)) {
		counterNums[id] = parseInt(targetNumbers[id]) - parseInt(signupRates[id]*totalSecs);
	} else {
		counterNums[id] = parseInt(targetNumbers[id]) + parseInt(signupRates[id]*totalSecs);
	}
}


function inkCt(id, prefix)
{
	layoutGNumbers((counterNums[id]+=inks[id]), prefix);
	window.setTimeout("inkCt(" + id + ", '" + prefix + "')",tdelay);
	return true;
}









function PrintCounter(prefix)
{
	document.write ('<span class="wi_counter" id="wi_counter_' + prefix + '"></span>');
}


function getQueryString(qsName,defaultValue)
{
	var dumStr = new String(qsName);
	var qsPos,qsStr = new String();

	qsStr=defaultValue;

	if((qsPos=urlStr.indexOf(dumStr))>0) {
		qsStr=urlStr.substring(qsPos+dumStr.length,urlStr.length);
		if(qsStr.indexOf("&")>-1) {
			dumStr=qsStr.substring(0,qsStr.indexOf("&"));
			qsStr=dumStr;
		}
	}

	return qsStr;
}


function setUpMonthArray()
{
	monthArray[0]=31;
	monthArray[1]=28;
	monthArray[2]=31;
	monthArray[3]=30;
	monthArray[4]=31;
	monthArray[5]=30;
	monthArray[6]=31;
	monthArray[7]=31;
	monthArray[8]=30;
	monthArray[9]=31;
	monthArray[10]=30;
	monthArray[11]=31;
}


function secondsBetween2Dates(dte1,dte2)
{
	var frDate= new Date(),toDate = new Date();
	var frMins,frSec,toMins,toSec;
	var diff;

	if(dateBefore(dte1,dte2)) {
		frDate=dte1;
		toDate=dte2;
	} else {
		frDate=dte2;
		toDate=dte1;
	}


	diff=fullYearsBetweenInSeconds(frDate,toDate);
	if(frDate.getFullYear()<toDate.getFullYear()) {
		diff+=secondsToYearEnd(frDate);
		diff+=secondsFromYearStart(toDate);
	} else {
		diff+=parseInt(secondsFromYearStart(toDate)) - parseInt(secondsFromYearStart(frDate));
	}
	return diff;
}


function fullYearsBetweenInSeconds(fDte,tDte)
{
var n,rtn=0;
	for(n=fDte.getFullYear()+1;n<=tDte.getFullYear()-1;n++) {
		if(! (n%4) ) {
			rtn+=secondsInDay * 366; //Leap Year
		} else {
			rtn+=secondsInDay * 365;
		}
	}
	return rtn;
}


function secondsToYearEnd(theDate)
{
	var endDate,rtn;
	endDate = new Date(theDate.getFullYear(), 11, 31, 23, 59,59);
	rtn=parseInt(secondsFromYearStart(endDate)) - parseInt(secondsFromYearStart(theDate));
	return rtn;
}

function secondsFromYearStart(theDate)
{
	var n,rtn=0;

	for(n=0;n<theDate.getMonth();n++) {
		rtn+=secondsInMonth(n,theDate.getFullYear())
	}

	rtn+=((theDate.getDate()-1) *  secondsInDay);
	rtn+=((theDate.getHours()-1) *  secondsInHour);
	rtn+=((theDate.getMinutes()-1) *  60);
	rtn+=theDate.getSeconds();
	return rtn;
}

function secondsInMonth(theMonth,theYear)
{
	var dayTEOM,rtn;
	dayTEOM=monthArray[theMonth];
	if(theMonth==1 && !(theYear % 4)) { //Trev JS Months Start At 0 So 1=Feb
		dayTEOM++;
	}
	rtn=dayTEOM * secondsInDay;
	return rtn;
}


function dateBefore(chkDate, datumDate)
{//Returns True IF chkDate<datumDate
	if(chkDate.getFullYear() > datumDate.getFullYear()) {return false;} //Too Late
	if(chkDate.getFullYear() == datumDate.getFullYear() ) {
		if(chkDate.getMonth() > datumDate.getMonth()) {return false;} //Month Too Late
		if(chkDate.getMonth() == datumDate.getMonth()) {
			if(chkDate.getDate() >= datumDate.getDate()) {return false;} //Day Too Late
		}
	}
	return true;
}



function layoutGNumbers(num, prefix)
{
	var numStr = new String(parseInt(num));
	document.getElementById('wi_counter_'+ prefix).innerHTML = addCommas(numStr);
}


function addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}

