var title_entries = {'gmail': "Please enter your entire email, including @gmail.com.",
					 'hotmail': "Please enter your entire email, including @hotmail.com.",
					 'lycos': "Please enter the username you use to log in.",
					 'orkut': "Please enter your entire email, including @gmail.com.",
					 'yahoo': "Please enter your entire email, including @yahoo.com."
};

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function getViewportSize(dimwanted) {
	var viewportwidth;
	var viewportheight;
 
	// the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight
 
	if (typeof window.innerWidth != 'undefined') {
		viewportwidth = window.innerWidth,
		viewportheight = window.innerHeight
	 }
 
	// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)

	else if (typeof document.documentElement != 'undefined' && typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0)
	{
		viewportwidth = document.documentElement.clientWidth,
		viewportheight = document.documentElement.clientHeight
	}
 	// older versions of IE
 
 	else
	{
		viewportwidth = document.getElementsByTagName('body')[0].clientWidth,
		viewportheight = document.getElementsByTagName('body')[0].clientHeight
	}

	if(dimwanted == "width") {
		return viewportwidth;
	}else{
		return viewportheight;
	}
}

function doEmailCheck(field, tdiv){
	//checks if contents of a field is a valid email - if it is will make text green, if not red
	tdiv = document.getElementById(tdiv);
	if(isValidEmail(field.value)){
		try{
		tdiv.innerHTML = "";		
		field.style.color = "Green";
		field.style.borderColor = "";
		}catch(err){
			//do nothing
		}
		return true;
	}else{
		try{
		tdiv.innerHTML = "Please enter a valid email";
		field.style.borderColor = "#FF0000";
		field.style.color = "Red";
		}catch(err){
			//do nothing
		}
		return false;
	}
}

function isValidEmail(anEmail){
	//will check for valid email based on a passed value
	regEmail = /^[A-Za-z0-9\-_]+(\.[A-Za-z0-9\-_]+)*@([A-Za-z0-9\-_\.]+\.)+[A-Za-z]{2,3}$/i;
	return regEmail.test(anEmail);
}

function isValidPass(pass, cpass){
	if(pass.length<6){
		return false;
	}
	if(pass!=cpass){
		return false;
	}
	return true;
}
var lastBlurred = undefined;
function lastBlur(event) {
	lastBlurred = event.element();
}
var field = undefined;
var cfield = undefined;
var targ = undefined;
function disableCheck(event) {
	if(field == undefined || cfield == undefined) {
		return;
	}
	if(event.element == field || event.element == cfield) {
		$(targ).update('').hide();
		field.removeClassName("err");
		cfield.removeClassName("err");
	}
}

function checkPass(event, form, f, cf, tdiv){
	f = $(f);
	cf = $(cf);
	if(field == undefined || cfield == undefined) {
		field = f;
		cfield = cf;
		targ = tdiv;
		return;
	}
	
	if(f.getValue().length<5){
		try{
		$(tdiv).update("Password must be at least 6 characters").show();
		f.addClassName("err");
		/* field.style.borderColor = "#FF0000";
		field.style.color = "Red"; */
		}catch(err){
			//do nothing
		}
	}else if(field.getValue() != cfield.getValue()){
		try{
		$(tdiv).update("Passwords do not match").show();
		f.addClassName("err");
		cf.addClassName("err");
		/* field.style.borderColor = "#FF0000";
		field.style.color = "Red";
		cfield.style.borderColor = "#FF0000";
		cfield.style.color = "Red";*/
		}catch(err){
			//do nothing
		}
	
	}else{
		try{
		$(tdiv).update('').hide();
		f.removeClassName("err");
		cf.removeClassName("err");
		/* field.style.borderColor = "";
		field.style.color = "Black";
		cfield.style.borderColor = "";
		cfield.style.color = "Black";*/
		}catch(err){
			//do nothing
		}
	}
}

function addClassToObject(obj, className) {
	var classes = obj.className;
	if(classes == '') {
		classes = new Array();
	}else{
		classes = classes.split(' ');
	}
	classes[classes.length] = className;
	obj.className = classes.join(' ');
	return true;
}

function removeClassFromObject(obj, className) {
	var classes = obj.className.split(' ');
	var result;
	result = new Array();
	result[0] = '';
	var length = classes.length;
	for(var i = 0; i < length; i++) {
		if(classes[i] != className) {
			result[result.length] = classes[i];
		}
	}
	obj.className = resut.join(' ');
	return true;
}

function removeAllClasses(id) {	var tag = document.getElementById(id);	var entries = tag.getElementsByTagName('li');	for(var i = 0; i < entries.length; i++) {		entries[i].className = '';	}
	return;
}

function hasClass(obj, className) {
	var classes = explode(' ', obj.className);
	for(var i = 0; i < classes.length; i++) {
		if(classes[i] == className) {
			return true;
		}
	}
	return false;
}

function popUp(URL,width,height) {
	day = new Date();
	id = day.getTime();
	eval("page" + id + " = window.open('" + URL+"', '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width="+width+",height="+height+",left = 695,top = 425');");
}
/*
function addToFavorites(url,page_name)
{
	if (window.external)
	{
		window.external.AddFavorite(urlAddress,pageName);
	}
	else if (window.sidebar)  // Mozilla Firefox Bookmark
	{
		window.sidebar.addPanel(bookmarktitle, bookmarkurl,"")
	}
	else
	{
		alert("Sorry! Your browser doesn't support this function.");
	}
}
*/

function addToFavorites(bookmarkurl, bookmarktitle)
{
	if (document.all)
		window.external.addFavorite(bookmarkurl , bookmarktitle)
	else if (window.sidebar)  // Mozilla Firefox Bookmark
		window.sidebar.addPanel(bookmarktitle, bookmarkurl,"")
}


function checkAll(field)
{
for (i = 0; i < field.length; i++)
	field[i].checked = true ;
}

function uncheckAll(field)
{
for (i = 0; i < field.length; i++)
	field[i].checked = false ;
}

function useNative(id) {
	if(document.implementation && document.implementation.hasFeature && document.implementation.hasFeature("WebForms", "2.0")) {
		var obj = $(id);
		var img = Element.extend(obj.nextSibling);
		img.hide();
		return true;
	}
	return false;
}

function format_phone(field_id){
	// Attempt to auto-format basic US phone numbers.  This method supports
	// 7 and 10 digit numbers.  Example: (410) 555-1212
	// Get the field that fired the event
	var oField = document.getElementById(field_id);
	// If we have the field and all is well
	if (typeof(oField) != "undefined" && oField != null){
		// Remove any non-numeric characters
		var sTmp = oField.value.replace(/[^0-9]/g, "");
		// If the number is a length we expect and support, format the number
		if(sTmp.length<10){
			document.getElementById(field_id + "err").innerHTML = "Invalid Phone";
			return;
		}
		//strip any preceeding 1's
		if(sTmp.indexOf('1')==0){
			sTmp = sTmp.substr(1);
		}
		switch (sTmp.length){
			/*case "14105551212".length:
				oField.value = sTmp.substr(0,1) + "(" + sTmp.substr(1, 3) + ") " + sTmp.substr(4, 3) + "-" + sTmp.substr(7, 4);
				document.getElementById(field_id + "err").innerHTML = "";
				break;*/
			case "4105551212".length:
				oField.value = "(" + sTmp.substr(0, 3) + ") " + sTmp.substr(3, 3) + "-" + sTmp.substr(6, 4);
				document.getElementById(field_id + "err").innerHTML = "";				
				break;
			default:
				oField.value = "(" + sTmp.substr(0, 3) + ") " + sTmp.substr(3, 3) + "-" + sTmp.substr(6, 4) + " ext " + sTmp.substr(10, sTmp.length-10);
				document.getElementById(field_id + "err").innerHTML = "";				
				break;
		}
	}
}

function showLoading(header) {
	if(header) {
		var title = "Uploading " + header + "...";
	}else{
		var title = 'Uploading image...';
	}
	var mydiv = new Element('div', {'id': 'loader'})
	.update('<img src="/images/loading.gif" alt="Loading..." /><br />' + title)
	.setStyle({
		'backgroundColor': 'rgb(255,255,255)',
		'color': 'rgb(0,0,0)',
		'border': 'rgb(46, 99, 141) 1px solid',
		'zIndex': 200,
		'width': '160px',
		'height': '80px',
		'padding': '20px',
		'textAlign': 'center',
		'position': 'fixed'
	});
	var width = getViewportSize('width');
	var height = getViewportSize('height');
	var w = ((width/2) - 100);
	if(w < 0) {
		w = 0;
	}
	var h = ((height/2) - 50);
	if(h < 0) {
		h = 0;
	}
	mydiv.setStyle({'top': h + 'px', 'left': w + 'px'});
	var backdrop = $('fade-out');
	backdrop.setStyle({'opacity': 0.0});
	backdrop.appear({'from': 0.0, 'to': 0.5});
	Element.extend(backdrop.parentNode).insert(mydiv);
	return true;
}

function hideLoading(obj) {
	if(obj) {
		var backdrop = obj.document.getElementById('fade-out');
	}else{
		var backdrop = document.getElementById('fade-out');
	}
	backdrop.parentNode.removeChild(backdrop.parentNode.lastChild);
	backdrop.style.display = 'none';
	return true;
}

function confirmRun(commands, type, objstring) {
	var prompt = false;
	switch(type) {
		case 'delete':
			prompt = confirm("Are you sure you want to delete this " + objstring + "?");
			break;
		default:
			prompt = confirm(objstring);
			break;
	}
	if(prompt) {
		eval(commands);
		return true;
	}
	return false;
}

function activateFormElements(element) {
	$(element).select('input, select, textarea').each(function(item) {
		if(item.disabled) {
			item.enable();
		}
	});
}

function deactivateFormElements(element) {
	$(element).select('input, select, textarea').each(function(item) {
		if(!item.disabled) {
			item.disable();
		}
	});
}

function init_wysiwyg(parenttag){
	/*if(parenttag != undefined) {
		var wyg = $A($(parenttag).getElementsByClassName('mceEditor'));
		if(wyg.length == 0) {
			return;
		}
		var entry = new Array();
		wyg.each(function(item) {
			new Insertion.After(item, "<input type='hidden' name='wysiwyg" + item.getAttribute('name') + "' value='true' />")
			entry.push(item.identify());
		});
		var e = entry.join(',');
		var t = tinyMCE.init({
			theme : "advanced",
			mode : "exact",
			elements: e,
			plugins : "",
			//cleanup : false,
			remove_linebreaks : false,
			theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,undo,redo,|,link,unlink,|,image,|,bullist,numlist,|,removeformat,cleanup",
			theme_advanced_buttons2 : "",
			theme_advanced_buttons3 : "",
			content_css : "/css/bb.css",
			theme_advanced_toolbar_location : "top",
			theme_advanced_toolbar_align : "center",
			theme_advanced_styles : "Code=codeStyle;Quote=bb-quote"
		});
	}else{*/
		var wyg = $A(document.getElementsByClassName('mceEditor'));
		if(wyg.length == 0) {
			return;
		}
		var entry = new Array();
		wyg.each(function(item) {
			new Insertion.After(item, "<input type='hidden' name='wysiwyg" + item.getAttribute('name') + "' value='true' />")
			entry.push(item.identify());
		});
		var e = entry.join(',');
		var t = tinyMCE.init({
			theme : "advanced",
			mode : "exact",
			elements: e,
			plugins : "",
			//cleanup : false,
			remove_linebreaks : false,
			theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,undo,redo,|,link,unlink,|,image,|,bullist,numlist,|,removeformat,cleanup",
			theme_advanced_buttons2 : "",
			theme_advanced_buttons3 : "",
			content_css : "",
			theme_advanced_toolbar_location : "top",
			theme_advanced_toolbar_align : "center",
			theme_advanced_styles : ""
		});
	//}
}

function generateProperLink(href, targetLink) {
	if(href.match(/\/tab[a-zA-Z0-9]+$/i)) {
		return href.replace(/\/tab[a-zA-Z0-9]+$/i, '/' + targetLink);
	}else{
		return href + '/' + targetLink;
	}
}

function blankField(event) {
	if($F(this) == 'Share something!') {
		this.clear();
	}
}

function refillField(event) { 
	if($F(this) == '') {
		this.value = 'Share something!';
	}
}

/************************************
*Application Specific Functions		*
*************************************/

