// you supply the <select name="sample name"></select> around this
function makeOptionList(optionKeyArray, optionValueArray, inputName, domId, className, selected, containing) {
	var selectedString = selected+'';
	
	var optionString = '';
	optionString += '<select name="'+ inputName + '" class="'+ className +'" id="'+ domId +'">\n';
	optionString += '<option selected value=""></option>\n';

	
	for (var i = 0; i < optionKeyArray.length; i++) {
		 var key = optionKeyArray[i];
		 var value = optionValueArray[i];
		 var keyString = key + '';
		 
		 optionString += '\n<option class="'+ className +'" value="'+ key +'"';
		 
		 if(containing)
		 {
			 if(selectedString.match(keyString))
			 {
				 optionString += 'selected >*';
			 } else
			 {
				 optionString += '>';
			 }
		 } else
		 {
			 if(selected == key)
			 {
				 optionString += 'selected >*';
			 } else
			 {
				 optionString += '>';
			 }
		 }
		 optionString += key+': '+value+'</option>\n';
		 
	}
	optionString += '</select>\n';
	return optionString;
}

function linkURLs(str)
{
	var last = [];
	var resultURLs = [];
	var resultTest = true;
	var newString = "";
	var results = null;
	
	var ahrefStartPre = "<a href=\"";
	var ahrefStartPost = "\" target=\"_blank\">";
	var ahrefEnd = "</a>";
	var lastLast = 0;
	
	var pattURLs = /(http:\/\/)(([\w-]+)(\.))(([\w-]+)(\.))+([\S]+)/g;

	while(resultTest != false)
	{
		results = pattURLs.exec(str);
		if(results)
		{
			resultURLs.push( results);
			last.push(pattURLs.lastIndex);
		} else
		{
			resultTest = false;
		}
	}
	if(resultURLs[0] == null)
	{
		return str;
	} else
	{
		var lastLastiI=-1;
		for(var iter = 0; iter < last.length; iter++)
		{
			if(iter > 0)
			{
				lastLast = last[iter-1];
			}
			newString += str.substr(lastLast,(last[iter]-lastLast-resultURLs[iter][0].length))+ 
				ahrefStartPre+
				resultURLs[iter][0]+
				ahrefStartPost+
				resultURLs[iter][0]+
				ahrefEnd;
			lastLastiI++;
				
		}
		newString += str.substr(last[lastLastiI],(str.length-last[lastLastiI]));
		return newString;
	}
};


function linkEmails(str)
{
	var last = [];
	var resultURLs = [];
	var resultTest = true;
	var newString = "";
	var results = null;
	
	var ahrefStartPre = "<a href=\"mailto:";
	var ahrefStartPost = "\">";
	var ahrefEnd = "</a>";
	var lastLast = 0;
	
	var pattEmails =/([A-Za-z\.-]+)(@)([\w]+)(\.)([\w]{3})/g;
	while(resultTest != false)
	{
		results = pattEmails.exec(str);
		if(results)
		{
			resultURLs.push( results);
			last.push(pattEmails.lastIndex);
		} else
		{
			resultTest = false;
		}
	}
	if(resultURLs[0] == null)
	{
		return str;
	} else
	{
		var lastLastiI=-1;
		for(var iter = 0; iter < last.length; iter++)
		{
			if(iter > 0)
			{
				lastLast = last[iter-1];
			}
			newString += str.substr(lastLast,(last[iter]-lastLast-resultURLs[iter][0].length))+ 
				ahrefStartPre+
				resultURLs[iter][0]+
				ahrefStartPost+
				resultURLs[iter][0]+
				ahrefEnd;
			lastLastiI++;
		}
		newString += str.substr(last[lastLastiI],(str.length-last[lastLastiI]));
		return newString;
	}
};

function formatEmailLabel(str)
{
	var last = [];
	var resultURLs = [];
	var resultTest = true;
	var newString = "";
	var results = null;
	
	var ahrefStartPre = "<br />";
	var thePostfix = ": <a";
	var lastLast = 0;
	
	var pattEmails =/(Email)([\s]+)(<a)/g;
	while(resultTest != false)
	{
		results = pattEmails.exec(str);
		if(results)
		{
			resultURLs.push( results);
			last.push(pattEmails.lastIndex);
		} else
		{
			resultTest = false;
		}
	}
	if(resultURLs[0] == null)
	{
		return str;
	} else
	{
		var lastLastiI=-1;
		for(var iter = 0; iter < last.length; iter++)
		{
			if(iter > 0)
			{
				lastLast = last[iter-1];
			}
			newString += str.substr(lastLast,(last[iter]-lastLast-resultURLs[iter][0].length))+ 
				ahrefStartPre +
				'Email: <a';
			lastLastiI++;
		}
		newString += str.substr(last[lastLastiI],(str.length-last[lastLastiI]));
		return newString;
	}
};

function formatURLLabel(str)
{
	var last = [];
	var resultURLs = [];
	var resultTest = true;
	var newString = "";
	var results = null;
	
	var ahrefStartPre = "<br />";
	var thePostfix = ": <a";
	var lastLast = 0;
	
	var pattEmails =/(Website)([\s]+)(<a)/g;
	while(resultTest != false)
	{
		results = pattEmails.exec(str);
		if(results)
		{
			resultURLs.push( results);
			last.push(pattEmails.lastIndex);
		} else
		{
			resultTest = false;
		}
	}
	if(resultURLs[0] == null)
	{
		return str;
	} else
	{
		var lastLastiI=-1;
		for(var iter = 0; iter < last.length; iter++)
		{
			if(iter > 0)
			{
				lastLast = last[iter-1];
			}
			newString += str.substr(lastLast,(last[iter]-lastLast-resultURLs[iter][0].length))+ 
			ahrefStartPre +
			'Website: <a';
			lastLastiI++;
		}
		newString += str.substr(last[lastLastiI],(str.length-last[lastLastiI]));
		return newString;
	}
};


function htmlizeSpecialEntities(newString)
{
	//{ dealing with special characters
	newString = newString.replace(/—/g,"&mdash;");
	newString = newString.replace(/“/g,"&ldquo;");
	newString = newString.replace(/”/g,"&rdquo;");
	newString = newString.replace(/‘/g,"&lsquo;");
	newString = newString.replace(/’/g,"&rsquo;");
	newString = newString.replace(/–/g,"&ndash;");
	//}
	return newString;
}



function creatEventDetailsHTML(event)
{
	if(event)
	{
		var startTime = event.getTimes()[0].startTime;
		var gStartTime = google.gdata.DateTime.fromIso8601(startTime);
		var endTime = event.getTimes()[0].endTime;
		var gEndTime = google.gdata.DateTime.fromIso8601(endTime);
		
		var jStartTime = new Date();
		var jEndTime = new Date();
		jStartTime = gStartTime.getDate();
		jEndTime = gEndTime.getDate()
		
		var dayAfterStartTime = new Date();
		var dayMore = jStartTime.getTime();
		dayMore += 3600*1000*24; // 1/28 of 28 days later
		dayAfterStartTime.setTime(dayMore);
		
		
		var whenString = '';
		
		if(jEndTime.getTime() > dayAfterStartTime.getTime())
		{
		  whenString += jQuery.datepicker.formatDate('D, MM d', jStartTime) +
		  '&nbsp;&nbsp;' + jStartTime.getFormattedTimeString() +
		  ' - <br />' +
		  jQuery.datepicker.formatDate('D, MM d, yy', jEndTime) +
		  '&nbsp;&nbsp;' + jEndTime.getFormattedTimeString();
		} else
		{
		  whenString += jQuery.datepicker.formatDate('D, MM d, yy', jStartTime) +
		  '&nbsp;&nbsp;' + jStartTime.getFormattedTimeString() + 
		  ' - ' +
		  jEndTime.getFormattedTimeString();
		}
		
		var content = event.getContent().getText();
		
		newString = linkURLs(content);
		newString = linkEmails(newString);
		newString = formatURLLabel(newString);
		newString = formatEmailLabel(newString);
		newString = htmlizeSpecialEntities(newString);
		
		content = newString;
		
      
		var detailHTML = "<div class=\"eventDetailsMapped\">"+"<span class=\"eventDetailTitle\">"+
			htmlizeSpecialEntities(event.getTitle().getText())+"</span>" +
			"<br /><span class=\"eventDetailTime\">"+whenString+"</span>"+
			"<br /><span class=\"eventDetailcontent\">"+content+"</span></div>"+
         "<div class=\"clearing\"></div>"
		return detailHTML;
	}
   return "";
};


Date.prototype.getFormattedTimeString = function()
{
	var me = this;
	
	var aTimeString = '';
	
	var a_p = "";
	var curr_hour = me.getHours();
	if (curr_hour < 12)
	{
		a_p = "AM";
	}
	else
	{
		a_p = "PM";
	}
	if (curr_hour == 0)
	{
	   curr_hour = 12;
	}
	if (curr_hour > 12)
	{
		curr_hour = curr_hour - 12;
	}
	   
	
	var curr_min = me.getMinutes();
	
	curr_min = curr_min + "";
	
	if (curr_min.length == 1)
	   {
	   curr_min = "0" + curr_min;
	   }
	
	aTimeString += curr_hour + ":" + curr_min + " " + a_p;

	
	return aTimeString;
}

