var gLocationParse;
/**********************/
/* This will take a text string and convert it to a text URL string to the map*/
/**********************/
function linkLocation(locationText) {
	if (locationText) {
		for (var i in gLocationParse) {
			var to = new RegExp("(" + i + ")", 'ig');
			locationText = locationText.replace(to,'<A HREF="' + gLocationParse[i] + '">$1</A>');
		}
		return locationText.toString()
	} else {
		return;
	}
}

/*********************/
/* Retrieve GET vars */
/*********************/
function readGet(){
	var _GET = new Array();
	var uriStr  = window.location.href.replace(/&amp;/g, '&');
	var paraArr, paraSplit;
	if(uriStr.indexOf('?') > -1) {
		var uriArr  = uriStr.split('?');
		var paraStr = uriArr[1];
	} else {
		return _GET;
	}
	if(paraStr.indexOf('&') > -1) {
		paraArr = paraStr.split('&');
	} else {
		paraArr = new Array(paraStr);
	}
	for(var i = 0; i < paraArr.length; i++) {
		paraArr[i] = paraArr[i].indexOf('=') > -1 ? paraArr[i] : paraArr[i] + '=';
		paraSplit  = paraArr[i].split('=');
		_GET[paraSplit[0]] = decodeURI(paraSplit[1].replace(/\+/g, ' '));
	}
	return _GET;
}

/*********************/
/* Print String		 */
/*********************/
function $(a){document.writeln(a);}

/**************************************/
/* Replace special characters for url */
/**************************************/
function encodeUrl(string) {
	string = encodeURIComponent(string);
	string = string.replace(/'/g,"%27");
	return string;
}


/***************************************/
/* Replace special characters from url */
/***************************************/
function decodeUrl(string) {
	string = decodeURIComponent(string);
	string = string.replace(/%27/g,"'");
	return string;
}

/**************************************/
/* convert a google date string (JSON/ATOM) to a UTC */
/**************************************/
function getUTCDateFromGoogleDate(gCalTime) { 
  // text for regex matches
  var remtxt = gCalTime;

  function consume(retxt) {
    var match = remtxt.match(new RegExp('^' + retxt));
    if (match) {
      remtxt = remtxt.substring(match[0].length);
      return match[0];
    }
    return '';
  }

  // minutes of correction between gCalTime and GMT
  var totalCorrMins = 0;

  var year = consume('\\d{4}');
  consume('-?');
  var month = consume('\\d{2}');
  consume('-?');
  var dateMonth = consume('\\d{2}');
  var timeOrNot = consume('T');

  // if a DATE-TIME was matched in the regex 
  if (timeOrNot == 'T') {
    var hours = consume('\\d{2}');
    consume(':?');
    var mins = consume('\\d{2}');
    consume('(:\\d{2})?(\\.\\d{3})?');
    var zuluOrNot = consume('Z');

    // if time from server is not already in GMT, calculate offset
    if (zuluOrNot != 'Z') {
      var corrPlusMinus = consume('[\\+\\-]');
      if (corrPlusMinus != '') {
        var corrHours = consume('\\d{2}');
        consume(':?');
        var corrMins = consume('\\d{2}');
        totalCorrMins = (corrPlusMinus=='-' ? 1 : -1) * 
            (Number(corrHours) * 60 + 
	    (corrMins=='' ? 0 : Number(corrMins)));
      }
    } 

    // get time since epoch and apply correction, if necessary
    // relies upon Date object to convert the GMT time to the local
    // timezone
    var originalDateEpoch = Date.UTC(year, month - 1, dateMonth, hours, mins);
    var gmtDateEpoch = originalDateEpoch + totalCorrMins * 1000 * 60;
  } else {
	var now = new Date()
	   
	var originalDateEpoch = Date.UTC(year, month - 1, dateMonth, 0, 0);
    var gmtDateEpoch = originalDateEpoch + (now.getTimezoneOffset() * 60 * 1000);
    // if only a DATE was matched ---- TODO
	//    dateString =  parseInt(month) + '/' + parseInt(dateMonth);
  }

  return gmtDateEpoch;
}










var MONTHS = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
	
function formatDate(toFormat) {
	return (generateDateObjectDay(toFormat) + " " + generateDateObjectTime(toFormat));
}

function generateDateObjectTime(NOW) {
	var ampm = "AM"
	var hour = NOW.getHours();
	if (hour == 12) { ampm = "PM"; }
	if (hour == 0) { hour = 12; }
	if (hour > 12) { hour = hour - 12; ampm = "PM"; }
	
	var minutes = NOW.getMinutes();
	if (minutes < 10) {
		minutes = "0" + minutes;
	}
	
	return (hour + ":" + minutes + " " + ampm);
}

function generateDateObjectDay(NOW) {
	var month = MONTHS[NOW.getMonth()];
	var day = NOW.getDate();
	var year = NOW.getYear();
	if (year < 1000) {
		year = year + 1900;
	}
	return (month + " " + day + ", " + year);
}
