
var mx_date_dayMS = 86400000;
var mx_date_LastUTC = new Date().getTime();

function mx_date_MonthMatrix(UTCdate) {
	UTCdate = (UTCdate == null) ? mx_date_LastUTC : UTCdate;
	var MonthMatrix = new Array();
	var StartDate = new Date(UTCdate);
	var MonthStart = new Date(Date.UTC(StartDate.getFullYear(),StartDate.getUTCMonth(),1));
	MonthStart.setHours(MonthStart.getHours() + MonthStart.getTimezoneOffset()/60);
	var DayIteration = 0;
	var thisDate = new Date(MonthStart);
	for(var row = 0; row <=5; row++) {
		MonthMatrix[row] = new Array();
		for(var col = 0; col <= 6; col++) {
			if((col < MonthStart.getDay() && row == 0) || ((thisDate.getMonth() > MonthStart.getMonth() || thisDate.getYear() > MonthStart.getYear()))) {
				MonthMatrix[row][col] = '';
			} else {
				MonthMatrix[row][col] = (thisDate.getDate());
				thisDate.setDate(thisDate.getDate() + 1);
			}
		}
	}
	mx_date_LastUTC = UTCdate;
	return MonthMatrix;
}

function adjLocalTime(utctime){
	retDate = new Date(utctime);
	return retDate.getTimezoneOffset() * 60000;
}

function mx_date_isThisDay(UTCdate) {
	var TESTDATE = new Date(UTCdate).getDay();
	var VALIDATE = new Date().getDay();
	return(TESTDATE==VALIDATE?true:false);
}

function mx_date_isThisMonth(UTCdate) {
	var TESTMONTH = new Date(UTCdate).getMonth();
	var VALIMONTH = new Date().getMonth();
	return(TESTMONTH==VALIMONTH?true:false);
}

function mx_date_MonthDayList(listtype,listnum) {
	var LIST = new Array;
	LIST["MLong"]	= new Array('January','February','March','April','May','June','July','August','September','October','November','December');
	LIST["MShort"]	= new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
	LIST["DLong"]	= new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
	LIST["DShort"]	= new Array('Sun','Mon','Tue','Wed','Thr','Fri','Sat');
	if ((listnum >= 0) && (LIST[listtype][listnum])) {
		return LIST[listtype][listnum];
	} else {
		return LIST[listtype];
	}
}

function mx_date_MonthLength(UTCdate) {
	var thisMonth = new Date(UTCdate);
	thisMonth.setDate(1);
	var nextMonth = new Date(thisMonth);
	nextMonth.setMonth(nextMonth.getMonth()+1);
	return Math.ceil((nextMonth.getTime() - thisMonth.getTime() - (mx_date_dayMS/24))/mx_date_dayMS);
}

function mx_date_DayofYear(UTCdate){
	var tDate = new Date(UTCdate);
	var cDate = new Date(Date.UTC(tDate.getFullYear(),0,1));
	return ((tDate.getTime() - cDate.getTime()) / mx_date_dayMS);
}

var isIE = navigator.userAgent.toLowerCase().indexOf("msie") != -1;
var tForm = "";

function getElement(id) {
 var element=document.getElementById?document.getElementById(id):(document.all?document.all(id):null)
	return element;
}


function createCorners(src,pos) {
	var tImg = new Image(5,5);
	tImg.src = cfgImgRoot + src + ".gif";
	tImg.className = "wFormCorner";
	var aPos = pos.split(";");
	for(var i=0;i<aPos.length;i++){
		eval("tImg.style." + aPos[i]);
		tForm.appendChild(tImg);
	}
}
function writeLayer (id, text) {
	if(text == '') return;
	getElement(id).innerHTML = text;
}

function isEntity(src, index)  {
 var i=0;
	if (src.charAt(index) != "&") { 
		return 0;
	} else {
		for (i=0; i<7; i++) {
			if (src.charAt(index+i) == " ")
				return 0;
			if (src.charAt(index+i+1) == ";")
				return i+1;
		}
	}
	return 0;
}

function cutString (str, maxchars) {
 var i=0;	// loop index
 var bstr=""; // final formatted string
 var elength=0; // result of entity conditions
 var nmax=maxchars;
	for (i=0; i<maxchars; i++) {
		elength=isEntity(str, i);
		nmax+=elength;
	}
	maxchars = nmax;
	if (str.length <= maxchars) return str;
	while ((str.charAt(maxchars) != " ") && (maxchars > 0)) maxchars--;
	bstr = str.slice(0,maxchars);
	bstr = bstr.replace(/[^a-zds]+$/i,'');
	bstr += "&#133;";
 return bstr;
}
function smartCutString(strObj,strFontSize,strString,numCharMax,numLines) {
	var objParent = getElement(strObj);
	var arrFontFactor = new Array();
	if(!strFontSize.match(/10px|11px|12px|14px/i)) {
		strFontSize = "12px";
	}
	arrFontFactor["10px"] = 6;
	arrFontFactor["11px"] = 7;
	arrFontFactor["12px"] = 7.5;
	arrFontFactor["14px"] = 8.5;
	
	numCharMax = (objParent && objParent.offsetWidth) ? Math.floor(objParent.offsetWidth / arrFontFactor[strFontSize]) * numLines : numCharMax;

	return cutString(strString,numCharMax);
}
function mcore_selectItem(elem,toselect,formname) {
	elm = eval("document."+ formname +"." + elem);
	if (elem == 'cycle') {
// djs - preselect the cycle not working correctly
//		for(i=0;i<elm.options.length;i++){
//			elm.options[i].selected = (elm.options[i].value == toselect) ? true : false;
//		}
	} else {
		elm.value = toselect;
	}
} 
function generateOptions(frmObj,optVal,optText,frmName){
	frmObj = eval("document." + ((frmName)?frmName:"mainform") + "." + frmObj);
	var newLength = (optVal)?(typeof optVal == "object")?optVal.length:optVal:(optText)?optText.length:0;
	frmObj.options.length = 0;
	for(var i=0;i<newLength;i++){
		frmObj.options[i] = new Option((optText[i]?optText[i]:i+1),(optVal[i]?optVal[i]:i+1))
	}
}
function stripBullets(str) {
	str = str.replace(/<img src=\"http:\/\/www.aol.com:80\/netfind\/gr\/bullet.gif\">&nbsp;<B>|<img src=&#34;http:\/\/www.aol.com:80\/netfind\/gr\/bullet.gif&#34;>&nbsp;<B>|<\/B>|<BR>/gi,"");
	str = str.replace(/&#34;/gi,String.fromCharCode(34));
	return str;		
}
function cleanArray(arr) {
 var i = 0;
	if(arr.splice) {
		while(i<arr.length){
			(!arr[i])?arr.splice(i,1):i++;
		}
	} else {
		var tmpARR = new Array();
		for(i=0;i<arr.length;i++){
			if(arr[i]) tmpARR[tmpARR.length] = arr[i];
		}
		arr = tmpARR;
	}
	return arr;
}
 var _C_connectionSpeed = '0';
 var _F_encquery = "fertility%20calculator";

 var cycLenOptsValsARR = new Array(25,26,27,28,29,30,31,32,33,34,35);
 var cycLenOptTextARR = new Array("25 days","26 days","27 days","28 days","29 days","30 days","31 days","32 days","33 days","34 days","35 days");
 var dateSTR = new Date();
 var daysARR = new Array();
 var monthARR = new Array('January','February','March','April','May','June','July','August','September','October','November','December');



function genCal(calUTCDate, field, calID) {
	if (!calID) {
		calendarID = 'calID';
	} else {
		calendarID = calID;
	}
	mx_date_LastUTC = dateSTR;
	calUTCDate = new Date(calUTCDate);
	var currMonth = calUTCDate.getUTCMonth();
	var currYear = calUTCDate.getFullYear();
	var pMonth = new Date(Date.UTC(currYear,currMonth - 1,1));
	var nMonth = new Date(Date.UTC(currYear,currMonth + 1,1));
	pMonth = new Date(pMonth.getTime() + adjLocalTime(pMonth));
	nMonth = new Date(nMonth.getTime() + adjLocalTime(nMonth));
	
	var tblHeader = "<table cellpadding=0 cellspacing=0 border=0>\n<tbody>\n";
	if (field && calID) {
		tblHeader += "<tr>\n<td class=\"tHead\"><a href=\"javascript:genCal(" + pMonth.getTime() + ", " + field + ", '" + calID + "')\"><img src=\"/images/calendar_left.gif\" alt=\"\" width=11 height=11 border=0></a></td>\n";
		tblHeader += "<td class=\"tHead\" colspan=5 style=\"text-align: center;width:125px\"><b>" + monthARR[currMonth] + " " + currYear + "</b></td>\n";
		tblHeader += "<td class=\"tHead\"><a href=\"javascript:genCal(" + nMonth.getTime() + ", " + field + ", '" + calID + "')\"><img src=\"/images/calendar_right.gif\" alt=\"\" width=11 height=11 border=0></a></td></tr>";
		tblHeader += "<tr>\n<td class=\"tHead2\">S</td>\n<td class=\"tHead2\">M</td>\n<td class=\"tHead2\">T</td>\n<td class=\"tHead2\">W</td>\n<td class=\"tHead2\">T</td>\n<td class=\"tHead2\">F</td>\n<td class=\"tHead2\">S</td>\n</tr>\n";
	} else {
		tblHeader += "<tr>\n<td class=\"tHead\"><a href=\"javascript:genCal(" + pMonth.getTime() + ")\"><img src=\"/images/calendar_left.gif\" alt=\"\" width=11 height=11 border=0></a></td>\n";
		tblHeader += "<td class=\"tHead\" colspan=5 style=\"text-align: center;width:125px\"><b>" + monthARR[currMonth] + " " + currYear + "</b></td>\n";
		tblHeader += "<td class=\"tHead\"><a href=\"javascript:genCal(" + nMonth.getTime() + ")\"><img src=\"/images/calendar_right.gif\" alt=\"\" width=11 height=11 border=0></a></td></tr>";
		tblHeader += "<tr>\n<td class=\"tHead2\">S</td>\n<td class=\"tHead2\">M</td>\n<td class=\"tHead2\">T</td>\n<td class=\"tHead2\">W</td>\n<td class=\"tHead2\">T</td>\n<td class=\"tHead2\">F</td>\n<td class=\"tHead2\">S</td>\n</tr>\n";
	}
	var tblFooter = "<tr>\n<td colspan=\"7\" style=\"width:175;text-align: center;\"><a href=\"javascript:toggleDisp('" + calendarID + "','hidden');\">close</a></td></tr>\n</tbody>\n</table>";
	var outString = tblHeader;
	var calARR = mx_date_MonthMatrix(calUTCDate);
	
	mx_date_LastUTC = dateSTR;

	for(var row = 0; row < calARR.length; row++) {
		outString += "<tr>\n";
		for(col = 0; col < calARR[row].length; col++) {
			if(calARR[row][col] == "") {
				outString += "<td></td>\n";
			} else {
				currDate = new Date(Date.UTC(currYear,currMonth,calARR[row][col]) + adjLocalTime(Date.UTC(currYear,currMonth,calARR[row][col])));
				if(currDate.getFullYear() == mx_date_LastUTC.getFullYear() && currDate.getMonth() == mx_date_LastUTC.getMonth() && currDate.getDate() == mx_date_LastUTC.getDate()){
					dClass = "sDate";
				} else {	
					dClass = "pDate"; 
				}
				
				if (field && calID) {
					outString += "<td class=\"" + dClass + "\"><a href=\"javascript:returnDate(" + currDate.getTime() + "," + field + ",'" + calID + "')\">" + calARR[row][col] + "</a></td>\n";
				} else {
					outString += "<td class=\"" + dClass + "\"><a href=\"javascript:returnDate(" + currDate.getTime() + ")\">" + calARR[row][col] + "</a></td>\n";
				}
			}
		}
		outString += "</tr>\n";
	}
	outString += tblFooter;
	toggleDisp(calendarID,'visible');
	writeLayer(calendarID,outString);
}



function genCalendar(calUTCDate, field, calID) {
	if (!calID) {
		calendarID = 'calID';
	} else {
		calendarID = calID;
	}
	mx_date_LastUTC = dateSTR;
	calUTCDate = new Date(calUTCDate);

	var currMonth = calUTCDate.getUTCMonth();
	var currYear = calUTCDate.getFullYear();	
	
	var newUTCDate = new Date(Date.UTC(currYear,currMonth + 1,1));
	newUTCDate = new Date(newUTCDate.getTime() + adjLocalTime(newUTCDate));
	
	var newMonth = newUTCDate.getUTCMonth();
	var newYear = newUTCDate.getFullYear();
	var pMonth = new Date(Date.UTC(currYear,currMonth - 1,1));
	var nMonth = new Date(Date.UTC(currYear,currMonth + 1,1));
	pMonth = new Date(pMonth.getTime() + adjLocalTime(pMonth));
	nMonth = new Date(nMonth.getTime() + adjLocalTime(nMonth));

	
	var outHeader = "<table class=\"calendar\" cellpadding=0 cellspacing=0 border=0 width=350px>\n";
	outHeader += "<tr>\n<td>\n";
	var tblHeader = "<table id=\"cal\" cellpadding=0 cellspacing=0 border=0 width=100%>\n<tbody>\n";
	if (field && calID) {
		tblHeader += "<tr>\n<td class=\"tHead\"><a href=\"javascript:genCalendar(" + pMonth.getTime() + ", " + field + ", '" + calID + "')\"><img src=\"/images/calendar_left.gif\" alt=\"\" width=11 height=11 border=0></a></td>\n";
		tblHeader += "<td class=\"tHead\" colspan=5 style=\"text-align: center;width:125px\"><b>" + monthARR[currMonth] + " " + currYear + "</b></td>\n";
		tblHeader += "<td class=\"tHead\"></td></tr>";
		tblHeader += "<tr>\n<td class=\"tHead2\">S</td>\n<td class=\"tHead2\">M</td>\n<td class=\"tHead2\">T</td>\n<td class=\"tHead2\">W</td>\n<td class=\"tHead2\">T</td>\n<td class=\"tHead2\">F</td>\n<td class=\"tHead2\">S</td>\n</tr>\n";
	} else {
		tblHeader += "<tr>\n<td class=\"tHead\"><a href=\"javascript:genCalendar(" + pMonth.getTime() + ")\"><img src=\"/images/calendar_left.gif\" alt=\"\" width=11 height=11 border=0></a></td>\n";
		tblHeader += "<td class=\"tHead\" colspan=5 style=\"text-align: center;width:125px\"><b>" + monthARR[currMonth] + " " + currYear + "</b></td>\n";
		tblHeader += "<td class=\"tHead\"></td></tr>";
		tblHeader += "<tr>\n<td class=\"tHead2\">S</td>\n<td class=\"tHead2\">M</td>\n<td class=\"tHead2\">T</td>\n<td class=\"tHead2\">W</td>\n<td class=\"tHead2\">T</td>\n<td class=\"tHead2\">F</td>\n<td class=\"tHead2\">S</td>\n</tr>\n";
	}

	var tblHeader2 = "<table id=\"cal\" cellpadding=0 cellspacing=0 border=0 width=100%>\n<tbody>\n";	
	if (field && calID) {
		tblHeader2 += "<tr>\n<td class=\"tHead\"></td>\n";
		tblHeader2 += "<td class=\"tHead\" colspan=5 style=\"text-align: center;width:125px\"><b>" + monthARR[newMonth] + " " + newYear + "</b></td>\n";
		tblHeader2 += "<td class=\"tHead\"><a href=\"javascript:genCalendar(" + nMonth.getTime() + ", " + field + ", '" + calID + "')\"><img src=\"/images/calendar_right.gif\" alt=\"\" width=11 height=11 border=0></a></td></tr>";
		tblHeader2 += "<tr>\n<td class=\"tHead2\">S</td>\n<td class=\"tHead2\">M</td>\n<td class=\"tHead2\">T</td>\n<td class=\"tHead2\">W</td>\n<td class=\"tHead2\">T</td>\n<td class=\"tHead2\">F</td>\n<td class=\"tHead2\">S</td>\n</tr>\n";
	} else {
		tblHeader2 += "<tr>\n<td class=\"tHead\"></td>\n";
		tblHeader2 += "<td class=\"tHead\" colspan=5 style=\"text-align: center;width:125px\"><b>" + monthARR[newMonth] + " " + newYear + "</b></td>\n";
		tblHeader2 += "<td class=\"tHead\"><a href=\"javascript:genCalendar(" + nMonth.getTime() + ")\"><img src=\"/images/calendar_right.gif\" alt=\"\" width=11 height=11 border=0></a></td></tr>";
		tblHeader2 += "<tr>\n<td class=\"tHead2\">S</td>\n<td class=\"tHead2\">M</td>\n<td class=\"tHead2\">T</td>\n<td class=\"tHead2\">W</td>\n<td class=\"tHead2\">T</td>\n<td class=\"tHead2\">F</td>\n<td class=\"tHead2\">S</td>\n</tr>\n";
	}

	var tblFooter = "<tr>\n<td colspan=\"2\" class=\"tFoot\" style=\"width:350;text-align:right;\"><a href=\"javascript:toggleDisp('" + calendarID + "','hidden');\">close&nbsp;</a></td></tr>\n</table>";
	
	var calARR = mx_date_MonthMatrix(calUTCDate);
	
	mx_date_LastUTC = dateSTR;

	for(var row = 0; row < calARR.length; row++) {
		tblHeader += "<tr>\n";
		for(col = 0; col < calARR[row].length; col++) {
			if(calARR[row][col] == "") {
				tblHeader += "<td></td>\n";
			} else {
				currDate = new Date(Date.UTC(currYear,currMonth,calARR[row][col]) + adjLocalTime(Date.UTC(currYear,currMonth,calARR[row][col])));
				if(currDate.getFullYear() == mx_date_LastUTC.getFullYear() && currDate.getMonth() == mx_date_LastUTC.getMonth() && currDate.getDate() == mx_date_LastUTC.getDate()){
					dClass = "sDate";
				} else {	
					dClass = "pDate"; 
				}
				
				if (field && calID) {
					tblHeader += "<td class=\"" + dClass + "\"><a href=\"javascript:returnDate(" + currDate.getTime() + "," + field + ",'" + calID + "')\">" + calARR[row][col] + "</a></td>\n";
				} else {
					tblHeader += "<td class=\"" + dClass + "\"><a href=\"javascript:returnDate(" + currDate.getTime() + ")\">" + calARR[row][col] + "</a></td>\n";
				}
			}
		}
		tblHeader += "</tr>\n";
	}
	tblHeader += "</tbody>\n</table>\n";
	
	calARR = mx_date_MonthMatrix(newUTCDate);

	for(var row = 0; row < calARR.length; row++) {
		tblHeader2 += "<tr>\n";
		for(col = 0; col < calARR[row].length; col++) {
			if(calARR[row][col] == "") {
				tblHeader2 += "<td></td>\n";
			} else {
				newDate = new Date(Date.UTC(newYear,newMonth,calARR[row][col]) + adjLocalTime(Date.UTC(newYear,newMonth,calARR[row][col])));
//				if(newDate.getFullYear() == mx_date_LastUTC.getFullYear() && newDate.getMonth() == mx_date_LastUTC.getMonth() && newDate.getDate() == mx_date_LastUTC.getDate()){
//					dClass = "sDate";
//				} else {	
					dClass = "pDate"; 
//				}
				
				if (field && calID) {
					tblHeader2 += "<td class=\"" + dClass + "\"><a href=\"javascript:returnDate(" + newDate.getTime() + "," + field + ",'" + calID + "')\">" + calARR[row][col] + "</a></td>\n";
				} else {
					tblHeader2 += "<td class=\"" + dClass + "\"><a href=\"javascript:returnDate(" + newDate.getTime() + ")\">" + calARR[row][col] + "</a></td>\n";
				}
			}
		}
		tblHeader2 += "</tr>\n";
	}
	tblHeader2 += "</tbody>\n</table>\n";

	var outString = outHeader;
	outString += tblHeader;
	outString += "</td>\n";
	outString += "<td>\n";	
	outString += tblHeader2;		
	outString += "</td>\n</tr>\n";				
	outString += tblFooter;
	toggleDisp(calendarID,'visible');
	writeLayer(calendarID,outString);
}




function checkDate(strForm){
	var thisfield = strForm.name;
	var currdate = new Date();
	var monthLength = 0;
	var monthDay = document.mainform.DD.value;
	var monthVal = (document.mainform.MM.value)-1;

	var thisdate = new Date(Date.UTC(currdate.getFullYear(),monthVal,1));
	thisdate = new Date(thisdate.getTime() + adjLocalTime(thisdate));

	monthLength = mx_date_MonthLength(thisdate.getTime());
	thisdate.setDate(mx_date_MonthLength(thisdate.getTime())<monthDay?monthLength:monthDay);
	dateSTR = thisdate;
//	generateOptions(ddName,monthLength,false,'mainform');
//	mcore_selectItem('date',thisdate.getDate());
}
function toggleDisp(obj,state) {
	document.getElementById(obj).style.visibility = state;
}


