// JavaScript Document

function sendEmail(name, domainname, toplevel, subject)
{
   var prefix ='mai'+'lto:';
   var at='@';
   var url= prefix + name + at + domainname + '.' + toplevel;
   if (subject != "")
   	url = url + '?subject=' + subject;
   document.location.href=eval('"'+url+'"');
}

// functions to encrypt an email address
function CryptMailto()
{
	var n = 0;
    var r = "";
    var s = "mailto:"+document.forms[0].emailField.value;
    var e = document.forms[0].emailField.value;

    e = e.replace( /@/, " [at] ");
    e = e.replace( /\./g, " [dot] ");

    for( var i=0; i < s.length; i++ )
    {
    	n = s.charCodeAt( i );
	    if( n >= 8364 )
        {
        	n = 128;
        }
		r += String.fromCharCode(n+1);
    }
    document.forms[0].cyptedEmailField.value = r;
    document.forms[0].HTMLCyptedEmailField.value = "<a hr" + "ef=\"javascript:linkTo_UnCryptMailto('"+ r +"');\">"+ e +"</a>";
}
function UnCryptMailto( s )
{
	var n = 0;
    var r = "";
    for( var i = 0; i < s.length; i++)
    {
    	n = s.charCodeAt( i );
    	if( n >= 8364 )
    	{
    		n = 128;
    	}
    	r += String.fromCharCode( n - 1 );
    }
    return r;
}
function linkTo_UnCryptMailto( url, subject )
{
	var addr = UnCryptMailto( url );
	if (subject != "")
		addr = addr + '?subject=' + subject;
	location.href = addr;
}
// use the above as per:
// <a href="javascript:linkTo_UnCryptMailto('nbjmup;dibjsAdvmmpnqupogbsnfstnbslfu/dpn', 'Farmers\' Market Enquiry');">Dorothy Anderson</a>


/*********** DATE FUNCTIONS ************/

var dateNow = new Date();
// TESTING: let's pretend that today is 16th of month, so we get next month
//dateNow.setDate(14);
//dateNow.setMonth(01);
//dateNow.setYear(2009);
//dateNow.setHours(11);
//dateNow.setMinutes(29);

// CFM is second Saturday of the month
var market_day = 6;	// day of week of market, 0 = Sun, 1 = Mon, etc	- NB code currently only works for Saturdays!
var market_date = 2;	// Nth xxxday of month - i.e. 2nd
var market_close_time_hours = 12; // 12.30
var market_close_time_minutes = 30; // 12.30

var monthname = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
var dayname = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");

// Get today's date as a string, for displaying if we want to
// (ensure correct for language. English is "January 1, 2004")
var TODAY = dayname[dateNow.getDay()] + " " + monthname[dateNow.getMonth()] + " " + dateNow.getDate() + ", " + dateNow.getFullYear();

// calculate market dates
// if market is always second Saturday of month, earliest possible is 8th, latest possible is 14th
// so start at 8th, and - if not a Saturday - move on to next Saturday
function getNextMarket(dateStart)
{
	// NB: Careful: date/year are one-indexed, month/day are zero-indexed
	var earliest_date = 1 + ((market_date - 1) * 7);
	var date = earliest_date;	// start from earliest possible date
	var month = dateStart.getMonth();	// 0 = Jan ... 12 = Dec
	var year = dateStart.getFullYear();
	var dateNext = new Date(year, month, date, 0, 0, 0, 0);
	var day = dateNext.getDay();	// 0 = Sun ... 6 = Sat
	date = date + (market_day - day); // add on days since Saturday, to get to next Saturday
	if (date < dateStart.getDate() || (date == dateStart.getDate() && dateStart.getHours() >= (market_close_time_hours - 1) && dateStart.getMinutes() >= market_close_time_minutes))
	{
		date = earliest_date;
		month++;
		if (month == 12)
		{
			month = 0;
			year++;
			dateNext.setYear(year);
		}
		dateNext.setMonth(month);
		dateNext.setDate(date);
		day = dateNext.getDay();	// 0 = Sun ... 6 = Sat
		date = date + (market_day - day); // add on days since Saturday, to get to next Saturday
	}
	dateNext.setDate(date); // and set the date object's date
	return dateNext;
};

var dateNext = getNextMarket(dateNow);

function isMarketDay()
{
	if (dateNow.getDay() == dateNext.getDay() && 
			dateNow.getMonth() == dateNext.getMonth() && 
			dateNow.getYear() == dateNext.getYear())
		return "TODAY - ";
	return "";
};

var NEXT_MARKET = isMarketDay() + "Saturday " + monthname[dateNext.getMonth()] + " " + dateNext.getDate() + ", " + dateNext.getFullYear();

function calculateMarkets()
{
	var MARKETS = new Array();

	MARKETS.push(dateNext);

	var numMarkets = 12;
	for (n = 1; n < numMarkets; n++)
	{
		dateStart = new Date(dateNext);
		dateStart.setDate(32);	// force move on to next month
		dateNext = getNextMarket(dateStart);
		MARKETS.push(dateNext);
	}
	return MARKETS;
}

function parseXML(fileName)
{
	var xmlDoc;
	try //Internet Explorer
	{
  		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
	}
	catch(e)
	{
		try //Firefox, Mozilla, Opera, etc.
		{
			xmlDoc = document.implementation.createDocument("", "", null);
		}
		catch(e)
		{
			//alert(e.message);
			return;
		}
	}
	xmlDoc.async = false;
	xmlDoc.load(fileName);

	return xmlDoc;
}
