var vWeekDayAbbreviations = new Array('S','M','T','W','T','F','S');
var vWeekDayNames = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
var vMonthNumbers = new Array('01','02','03','04','05','06','07','08','09','10','11','12');
var vMonthNumbersProper = new Array(1,2,3,4,5,6,7,8,9,10,11,12);
var vMonthAbbreviations = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
var vMonthNames = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
var vStateAbbreviations = new Array('AL','AK','AS','AZ','AR','CA','CO','CT','DE','DC','FL','GA','GU','HI','ID','IL','IN','IA','KS','KY','LA','ME','MD','MH','MA','MI','FM','MN','MS','MO','MT','NE','NV','NH','NJ','NM','NY','NC','ND','MP','OH','OK','OR','PW','PA','PR','RI','SC','SD','TN','TX','UT','VT','VA','VI','WA','WV','WI','WY');
var vAccountTypeText = new Array('Parent','Teacher','Family','Faculty','Officer','Student','Non Member');
var vAccountTypeValues = new Array('P','T','M','F','O','S','N');
var vInstantMessengersText = new Array('None','Google','ICQ','AIM','MSN','Yahoo');
var vInstantMessengersValues = new Array('','G','I','A','M','Y');
var vMinOptions = new Array('00','15','30','45','59');
var v24HourOptions = new Array('12AM','1AM','2AM','3AM','4AM','5AM','6AM','7AM','8AM','9AM','10AM','11AM','12PM','1PM','2PM','3PM','4PM','5PM','6PM','7PM','8PM','9PM','10PM','11PM');
var v24HourValues = new Array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23);
var vEnableDisableText = new Array('Enabled','Disabled');
var vEnableDisableValues = new Array('E','D');
var vSurveyRange = new Array('01','02','03','04','05','06','07','08','09','10');
var vYearOptions = new Array('2005','2006','2007','2008','2009','2010');
var vPriorityTypes = new Array('None','Low','Medium','High','Critical');
var vPriorityValues = new Array('0','1','2','3','4');
var vPriorityColors = new Array('Grey','Green','Orange','Red','Maroon');
var editor;

var vAjaxRunning = false;
var http_request;
function f_ajax_transport(vDataString, vReturnFunction)
{
	if(!vAjaxRunning)
	{
		vAjaxRunning = true;
		document.getElementById("ajax_loading").className = "ajax-loading-on";
		var vUrl = "./"+vCore+"/php/core_ajax.php?loc=" + f_gen_random_string(5);
		http_request = false;
		if(window.XMLHttpRequest) 
		{
			http_request = new XMLHttpRequest();
			if(http_request.overrideMimeType) 
			{
				http_request.overrideMimeType('text/xml');
			}
		} 
		else if(window.ActiveXObject) 
		{
			try
			{
				http_request = new ActiveXObject("Msxml2.XMLHTTP");
			} 
			catch (e)
			{
				try
				{
					http_request = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch(e)
				{
					
				}
			}
		}
		if(!http_request) 
		{
			alert("Unable to open AJAX connection. Your browser may not be compatible");
		}
		try
		{
			http_request.open('POST', vUrl, true);
		}
		catch(e)
		{
			alert(e);
		}
		try
		{
			http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); 
		}
		catch(e)
		{
			alert(e);
		}
		http_request.onreadystatechange = function()
		{
			if(http_request.readyState == 4)
			{
				if(vDebugOn)
				{
					f_write_debug(http_request.responseText, "AJAX Receive");
				}
				vAjaxRunning = false;
				document.getElementById("ajax_loading").className = "ajax-loading-off";
				eval(vReturnFunction);
			}
		};
		if(vDebugOn)
		{
			f_write_debug(vDataString, "AJAX Transmit");
		}
		http_request.send(vDataString);
	}
	else
	{
		if(vDebugOn)
		{
			f_write_debug('DUPLICATE ATTEMPT', "AJAX Transmit");
		}
	}
}

function f_write_cookie(vName,vValue)
{
	//var vExpires = "Thu,31-Dec-2020 00:00:00 GMT";
	//document.cookie = vName+"="+vValue+vExpires+"; path=/";
	var date = new Date();
	date.setFullYear(date.getFullYear()+1);
	document.cookie = vName + "=" + escape(vValue) + "; expires=" + date.toUTCString() + "; path=/";
}

function f_read_cookie(vName)
{
	var nameEQ = vName + "=";
	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 f_jump_to_center(vID)
{
	var vTarget = document.getElementById(vID);
	
	var vObjInfo = f_get_element_info(vID);
	var vBrowserInfo = f_get_browser_info();
	
	vTarget.style.position = "absolute";
	
	var endtop = vBrowserInfo.centertop - Math.round(vObjInfo.height/2);
	var endleft = vBrowserInfo.centerleft - Math.round(vObjInfo.width/2);
	
	vTarget.style.top = endtop + "px";
	vTarget.style.left = endleft + "px";
}
var vFader;
function f_change_opacity(vID, vAD, vStepSize, vDelay, vStart, vEnd)
{
	vFader = new Object();
	vFader.target = document.getElementById(vID);
	vFader.afterdone = vAD;
	vFader.stepsize = vStepSize;
	vFader.delay = vDelay;
	vFader.start = vStart;
	vFader.end = vEnd;
	vFader.current = vStart;
	
	f_continue_change_opacity();
}

function f_continue_change_opacity()
{
	if(vFader.current != vFader.end)
	{
		vFader.current += vFader.stepsize;
		if(vFader.current > vFader.end)
		{
			vFader.current = vFader.end;
		}
		
		if (navigator.appName.indexOf("Netscape")!=-1&&parseInt(navigator.appVersion)>=5)
		{
			vFader.target.style.MozOpacity=vFader.current/100;
		}
		else if (navigator.appName.indexOf("Microsoft")!=-1&&parseInt(navigator.appVersion)>=4)
		{
			vFader.target.filters.alpha.opacity=vFader.current;
		}
		setTimeout("f_continue_change_opacity()", vFader.delay);
	}
	else
	{
		eval(vFader.afterdone);
	}
}

function f_get_page_get() 
{
	var vIndex = document.URL.indexOf('?');
	var vGetParams = new Array();
	if (vIndex != -1) 
	{
		vGetParams = document.URL.substring(vIndex+1, document.URL.length).split('&');
		for (var i=0; i < vGetParams.length; i++)
		{
			var vTempArray = vGetParams[i].split('=');
			vGetParams[vTempArray[0]] = vTempArray[1];
		}
	}
	return vGetParams;
}

function f_get_element_info(vID)
{
	var vPosition = new Array();
	var vWhat = document.getElementById(vID);
	var curleft = 0;
	var curtop = 0;
	if (vWhat.offsetParent)
	{
		while (vWhat.offsetParent)
		{
			curleft += vWhat.offsetLeft
			curtop += vWhat.offsetTop
			vWhat = vWhat.offsetParent;
		}
	}
	else if(vWhat.x && vWhat.y)
	{
		curleft += vWhat.x;
		curtop += vWhat.y;
	}
	var vWhat = document.getElementById(vID);
	vPosition.top = curtop;
	vPosition.left = curleft;
	vPosition.height = vWhat.clientHeight;
	vPosition.width = vWhat.clientWidth;
	vPosition.bottom = curtop + vPosition.height;
	vPosition.right = curleft + vPosition.width;
	vPosition.centertop = Math.round(vPosition.top  + (vPosition.height/2));
	vPosition.centerleft = Math.round(vPosition.left  + (vPosition.width/2));
	return vPosition;
}

function f_get_browser_info()
{
	if( typeof( window.innerWidth ) == 'number' )
	{
		var vHow = "1";
		var vBrowserWidth = window.innerWidth;
		var vBrowserHeight = window.innerHeight;
		if(document.body)
		{
			vHow = "1.5";
			if(document.documentElement && document.body.scrollTop != document.documentElement.scrollTop)
			{
				vHow = "1.6";
				var vScrollLeft = document.documentElement.scrollLeft;
				var vScrollTop = document.documentElement.scrollTop;
			}
			else
			{
				vHow = "1.7";
				var vScrollLeft = document.body.scrollLeft;
				var vScrollTop = document.body.scrollTop;
			}
			var vScrollRight = vScrollLeft + vBrowserWidth;
			var vScrollBottom = vScrollTop + vBrowserHeight;
		}
	} 
	else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) 
	{
		var vHow = "2";
		var vBrowserWidth = document.documentElement.clientWidth;
		var vBrowserHeight = document.documentElement.clientHeight;
		var vScrollLeft = document.documentElement.scrollLeft;
		var vScrollTop = document.documentElement.scrollTop;
		var vScrollRight = vScrollLeft + vBrowserWidth;
		var vScrollBottom = vScrollTop + vBrowserHeight;
	}
	else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) 
	{
		var vHow = "3";
		var vBrowserWidth = document.body.clientWidth;
		var vBrowserHeight = document.body.clientHeight;
		var vScrollLeft = document.body.scrollLeft;
		var vScrollTop = document.body.scrollTop;
		var vScrollRight = vScrollLeft + vBrowserWidth;
		var vScrollBottom = vScrollTop + vBrowserHeight;
	}
	var vPosition = new Array();
	vPosition.how = vHow;
	
	vPosition.width = vBrowserWidth;
	vPosition.height = vBrowserHeight;
	
	vPosition.left = vScrollLeft;
	vPosition.top = vScrollTop;
	vPosition.right = vScrollRight;
	vPosition.bottom = vScrollBottom;
	
	vPosition.centertop = Math.round((vPosition.height/2) + vPosition.top);
	vPosition.centerleft = Math.round((vPosition.width/2) + vPosition.left);
	return vPosition;
}

function f_validate_input(vID, vExpression, vMaxLength)
{
	var vTarget = document.getElementById(vID);
	switch(vExpression)
	{
		case "any":
		{
			var vRegEx = new RegExp("[^a-z]", "g");
			break;
		}
		case "text":
		{
			var vRegEx = new RegExp("[^a-zA-Z]", "g");
			break;
		}
		case "textlower":
		{
			var vRegEx = new RegExp("[^a-z]", "g");
			break;
		}
		case "siteurl":
		{
			var vRegEx = new RegExp("[^a-z0-9]", "g");
			break;
		}
		case "textspace":
		{
			var vRegEx = new RegExp("[^a-zA-Z ]", "g");
			break;
		}
		case "numbers":
		{
			var vRegEx = new RegExp("[^0-9]", "g");
			break;
		}
		case "numbersdecimal":
		{
			var vRegEx = new RegExp("[^0-9.]", "g");
			break;
		}
		case "textnumbers":
		{
			var vRegEx = new RegExp("[^a-zA-Z0-9 .]", "g");
			break;
		}
		case "membername":
		{
			var vRegEx = new RegExp("[^a-zA-Z0-9 \'\.\-]", "g");
			break;
		}
		case "login":
		{
			var vRegEx = new RegExp("[^a-zA-Z0-9@._-]", "g");
			break;
		}
		case "zip":
		{
			var vRegEx = new RegExp("[^0-9-]", "g");
			break;
		}
		case "sentence":
		{
			var vRegEx = new RegExp("[^a-zA-Z0-9 \!\@\#\$\%\(\)\=\_\.\,\?\"\'\*\:\;\n\r\+\-]", "g");
			break;
		}
		case "address":
		{
			var vRegEx = new RegExp("[^a-zA-Z0-9 #.@(),-]", "g");
			break;
		}
		case "email":
		{
			var vRegEx = new RegExp("[^a-zA-Z0-9@._-]", "g");
			break;
		}
		case "screenname":
		{
			var vRegEx = new RegExp("[^a-zA-Z0-9 _.-]", "g");
			break;
		}
		case "phone":
		{
			var vRegEx = new RegExp("[^0-9-]", "g");
			break;
		}
		case "password":
		{
			var vRegEx = new RegExp("[^a-zA-Z0-9 !@#$()-_:;.,]", "g");
			break;
		}
		case "special":
		{
			var vRegEx = new RegExp("[^a-zA-Z0-9 !@#$()-_:;.,]", "g");
			break;
		}
		case "url":
		{
			var vRegEx = new RegExp("[^a-zA-Z0-9 :\\/.-]", "g");
			break;
		}
		case "hex":
		{
			var vRegEx = new RegExp("[^a-zA-Z0-9]", "g");
			break;
		}
		default:
		{
			alert("Bad Data Type Check");
			var vRegEx = new RegExp("[^a-zA-Z0-9]", "g");
			break;
		}
	}
	
	if(vExpression != "any" && vRegEx.test(vTarget.value))
	{
		vTarget.value = vTarget.value.replace(vRegEx, '');
		f_error_flash_on(vID);
	}
	if(vExpression == "phone")
	{
		var re = new RegExp("--", "g");
		vTarget.value = vTarget.value.replace(re, "-");
		
		var vOffset = 0;
		if(vTarget.value.substring(0,1) == "1")
		{
			vOffset = 2;
			if(vTarget.value.length > 1 && vTarget.value.substring(0,2) != "1-")
			{
				vTarget.value = "1-" + vTarget.value.substring(1,99);
			}
		}
		
		if(vTarget.value.length > (3 + vOffset) && vTarget.value.substring((3 + vOffset),(4 + vOffset)) != "-")
		{
			vTarget.value = vTarget.value.substring(0,(3 + vOffset)) + "-" + vTarget.value.substring((3 + vOffset),99);
		}
		
		if(vTarget.value.length > (7 + vOffset) && vTarget.value.substring((7 + vOffset),(8 + vOffset)) != "-")
		{
			vTarget.value = vTarget.value.substring(0,(7 + vOffset)) + "-" + vTarget.value.substring((7 + vOffset),99);
		}
	}
	
	if(vTarget.value.length > vMaxLength)
	{
		vTarget.value = vTarget.value.substring(0, vMaxLength);
		f_error_flash_on(vID);
	}
}

function f_error_flash_and_focus(vID)
{
	document.getElementById(vID).focus();
	f_error_flash_on(vID);
}

function f_error_flash_on(vID)
{
	var vTarget = document.getElementById(vID);
	vTarget.style.backgroundColor = "#ff0000";
	setTimeout('f_error_flash_off(\''+vID+'\')', 200);
}

function f_error_flash_off(vID)
{
	var vTarget = document.getElementById(vID);
	vTarget.style.backgroundColor = "#f4f59b";
}

var vSelectBoxHideIds = new Array();
var vDataCollectInfo = new Array();

function f_reset_gen_collects()
{
	vSelectBoxHideIds = new Array();
	vDataCollectInfo = new Array();
	if(editor)
	{
		f_stop_ck();
	}
}
var vFCKInfo;
function f_gen_input(vVar)
{
	var vTempHTML = "";
	switch(vVar[0])
	{
		case 'text':	{vTempHTML += '<input type="text" ';break;}
		case 'textarea':{vTempHTML += '<textarea ';break;}
		case 'select':{vTempHTML += '<select ';break;}
		case 'checkbox':{vTempHTML += '<input type="checkbox" ';break;}
		case 'radio':{vTempHTML += '<input type="radio" ';break;}
		case 'hidden':{vTempHTML += '<input type="hidden" ';break;}
		case 'password':{vTempHTML += '<input type="password" ';break;}
		case 'pre_password':{vTempHTML += '<input type="password" ';break;}
		case 'date':{vTempHTML += '<button ';break;}
		case 'group':{vTempHTML += '<button ';break;}
		case 'icon':{vTempHTML += '<button ';break;}
		case 'fck':{vTempHTML += '<div id="editor" ';break;}
		default:{return vVar;}
	}
	//case 'fck':{vTempHTML += '<div id="editorarea"><div id="fckloading">Loading</div><textarea ';break;}
	if(!vVar[1])
	{
		vVar[1] = f_gen_random_string(10);
	}
	if(!vVar[2])
	{
		vVar[2] = vVar[1];
	}
	if(vVar[0] != "fck")
	{
		vTempHTML += 'id="'+vVar[1]+'" name="'+vVar[2]+'" ';
	}
	
	
	if(!vVar[18] && (vVar[0] == "text" || vVar[0] == "textarea" || vVar[0] == "select" || vVar[0] == "password" || vVar[0] == "pre_password"))
	{
		vTempHTML += 'style="background-color:#f4f59b;" ';
	}
	
	
	if(vVar[3] && (vVar[0] == "text" || vVar[0] == "password" || vVar[0] == "pre_password"))
	{
		vTempHTML += 'size="'+vVar[3]+'" ';
	}
	else if(vVar[4] && vVar[5] && vVar[0] == "textarea")
	{
		vTempHTML += 'rows="'+vVar[4]+'" cols="'+vVar[5]+'" ';
	}
	else if((vVar[6] && vVar[6] != 'N' && vVar[0] == "checkbox") || (vVar[6] == vVar[7] && vVar[0] == "radio"))
	{
		vTempHTML += 'checked ';
	}
	
	
	if(vVar[6] && (vVar[0] == "text" || vVar[0] == "hidden" || vVar[0] == "password" || vVar[0] == "pre_password"))
	{
		vTempHTML += 'value="'+f_convert_special_to_safe(vVar[6])+'" ';
	}
	else if(vVar[7] && vVar[0] == "radio")
	{
		vTempHTML += 'value="'+vVar[7]+'" ';
	}
	else if(vVar[0] == "date")
	{
		var vTempDate = new Date();
		vTempDate.setUTCMinutes(0);
		vTempDate.setUTCSeconds(0);
		vTempDate.setUTCMilliseconds(0);
		vTempDate.setTime(vTempDate.getTime() - (vTempDate.getTimezoneOffset() * 60000));
		if(vVar[6])
		{
			vTempDate.setTime(f_convert_to_javascript_time_string(vVar[6]));
		}
		vTempHTML += 'class="'+vTempDate.getTime()+'" ';
	}
	else if(vVar[0] == "group")
	{
		vTempHTML += 'class="'+vVar[6]+'" ';
	}
	else if(vVar[0] == "icon")
	{
		if(!vVar[6])
		{
			//vVar[6] = 'bullet_black.png';
			vVar[6] = 'empty.png';
		}
		vTempHTML += 'class="'+vVar[6]+'" ';
	}
	
	if(vVar[12] && (vVar[0] == "text" || vVar[0] == "textarea" || vVar[0] == "password" || vVar[0] == "pre_password"))
	{
		vTempHTML += 'onKeyUp="f_validate_input(\''+vVar[1]+'\', \''+vVar[13]+'\', \''+vVar[14]+'\');';
	}
	else if(vVar[0] == "select")
	{
		vTempHTML += 'onChange="';
	}
	else if(vVar[0] == "checkbox" || vVar[0] == "radio" || vVar[0] == "date" || vVar[0] == "group" || vVar[0] == "icon")
	{
		vTempHTML += 'onClick="';
		if(vVar[0] == "date")
		{
			vTempHTML += 'f_mini_cal_create(this.className, this.id);return false;';
		}
		else if(vVar[0] == "group")
		{
			vTempHTML += 'f_group_select(this.className, this.id);return false;';
		}
		else if(vVar[0] == "icon")
		{
			vTempHTML += 'f_icon_select(this.id);return false;';
		}
	}
		
	if(vVar[11])
	{
		vTempHTML += vVar[11];
	}
	
	if(vVar[0] != 'hidden' && vVar[0] != 'fck' && vVar[12])
	{
		vTempHTML += '">';
	}
	else if(vVar[0] == "checkbox" || vVar[0] == "radio" || vVar[0] == "date" || vVar[0] == "group" || vVar[0] == "icon" || vVar[0] == "select")
	{
		vTempHTML += '">';
	}
	else
	{
		vTempHTML +='>';
	}
	
	if(vVar[0] == "date")
	{
		vTempHTML += f_convert_time_stamp_to_date(vTempDate.getTime());
	}
	else if(vVar[0] == "group")
	{
		vTempHTML += 'Select Groups';
	}
	else if(vVar[0] == "icon")
	{
		if(vVar[6])
		{
			vTempHTML += '<img class="small-icon" style="position:relative;top:3px;" src="/images/icon_pack/'+vVar[6]+'" />';
		}
		else
		{
			vTempHTML += '<img style="small-icon" src="/images/icon_pack/default.png" />';
		}
		vTempHTML += '&nbsp;&nbsp;&nbsp;&nbsp;Select Icon';
	}
	else if(vVar[0] == "textarea")
	{
		var re = new RegExp("<br/>", "g");
		vTempHTML += vVar[6].replace(re, "\n");
	}
	else if(vVar[0] == "select")
	{
		if(vVar[10])
		{
			vSelectBoxHideIds.push(vVar[1]);
		}
		if(vVar[6] == '')
		{
			var vOptions = '<option value=""></option>';
		}
		else
		{
			var vOptions = "";
		}
		for(var i=0; i < vVar[8].length; i++)
		{
			vOptions += '<option ';
			if(vVar[8][i] == vVar[6])
			{
				vOptions += 'selected ';
			}
			vOptions += 'value="'+vVar[8][i]+'">'+vVar[9][i]+'</option>';
		}
		vTempHTML += vOptions;
	}
	else if(vVar[0] == "fck")
	{
		vFCKInfo = vVar[6];
	}
	
	if(vVar[15])
	{
		vDataCollectInfo.push([vVar[0], vVar[1], vVar[2], vVar[16], vVar[17], vVar[18]]);
	}
	switch(vVar[0])
	{
		case 'text':	{vTempHTML += '</input>';break;}
		case 'textarea':{vTempHTML += '</textarea>';break;}
		case 'select':{vTempHTML += '</select>';break;}
		case 'checkbox':{vTempHTML += '</input>';break;}
		case 'radio':{vTempHTML += '</input>';break;}
		case 'hidden':{vTempHTML += '';break;}
		case 'password':{vTempHTML += '</input>';break;}
		case 'pre_password':{vTempHTML += '</input>';break;}
		case 'date':{vTempHTML += '</button>';break;}
		case 'group':{vTempHTML += '</button>';break;}
		case 'icon':{vTempHTML += '</button>';break;}
		case 'fck':{vTempHTML += '</div>';break;}
	}
	//case 'fck':{vTempHTML += '</textarea></div>';break;}
	return vTempHTML;
}

function f_gen_help_vid_link(vModule)
{
	return '<a class="help-video" href="http://helpvideos.webptn.com/help/'+vModule+'/index.html" onclick="f_open_help_vid(\''+vModule+'\');return false;" target="_none"><img src="/'+vCore+'/images/icons/menu_help_video.png" /> View Help Video</a>';
}

function f_open_help_vid(vModule)
{
	var win = window.open('http://helpvideos.webptn.com/help/'+vModule+'/index.html','Help Video','width=600, height=800, location=no, menubar=no, status=no, toolbar=no, scrollbars=no, resizable=no');
	win.resizeTo(972, 891);
	win.focus();
}

function f_fix_string_length(vString, vLimit)
{
	//alert(vString.search(/1(.*)9/));
	if(vString.search(/<(.*)>/) === -1)
	{
		//return vString;
		return vString.substring(0, vLimit)+((vString.length > vLimit)?'..':'');
	}
	return vString;
}

function f_gen_layout(vData)
{
	var vTempHTML = "";
	for(var i=0;i<vData.length;i++)
	{
		vTempHTML += f_gen_block(vData[i]);
	}
	return vTempHTML;
}

function f_gen_block(vData)
{
	var vTempHTML = "";
	switch(vData[0])
	{
		case "E"://Empty
			vTempHTML += '';
			break;
		case "B":
			vTempHTML += '\
			<a href="'+vData[3]+'" onclick="'+vData[4]+((vData[3])?'':'return false')+'" '+((vData[3])?'target="_blank"':'')+' class="module-button">\
				<img src="/'+vCore+'/images/icons/'+vData[2]+'.png" />\
				'+vData[1]+'\
			</a>\
			';
			break;
		case "F"://Fields - for input.
			vTempHTML += '\
				<table style="width:100%;">\
					<tr>\
			';
			if(vData[1][0])
			{
				vTempHTML += '\
							<td style="text-align:left;padding:0px 5px 0px 0px;font-weight:bold;width:50%;line-height:14px;font-size:16px;border-style:dotted;border-width:0px 0px 1px 0px;border-color:#AAAAAA;" nowrap>' + vData[1][0] + '</td>\
							<td style="text-align:right;padding:0px 5px 0px 0px;width:50%;line-height:14px;font-size:14px;" nowrap></td>\
						</tr>\
						<tr>\
				';
			}
			for(var i=1; i<vData[1].length; i++)
			{
				vTempHTML += '\
				<td style="text-align:right;padding:0px 5px 0px 0px;font-weight:bold;width:50%;line-height:14px;font-size:14px;" nowrap>'+vData[1][i][0]+'</td>\
				<td style="text-align:left;padding:0px 5px 0px 0px;width:50%;line-height:14px;font-size:14px;" nowrap>'+f_gen_input(vData[1][i][1])+'</td>\
				';
				if(i + 1 != vData[1].length)
				{
					vTempHTML += '</tr><tr>';
				}
			}
			vTempHTML += '</tr></table>';
			if(vData[1][0])
			{
				vTempHTML += '';
			}
			break;
		case "D_S"://Data List - Safe string, and length maxed at 50;
			vTempHTML += '\
				<table style="width:100%;">\
					<tr>\
			';
			if(vData[1][0])
			{
				vTempHTML += '\
							<td style="text-align:left;padding:0px 5px 0px 0px;font-weight:bold;width:50%;line-height:14px;font-size:16px;border-style:dotted;border-width:0px 0px 1px 0px;border-color:#AAAAAA;" nowrap>' + vData[1][0] + '</td>\
							<td style="text-align:right;padding:0px 5px 0px 0px;width:50%;line-height:14px;font-size:14px;" nowrap></td>\
						</tr>\
						<tr>\
				';
			}
			for(var i=1; i<vData[1].length; i++)
			{
				vTempHTML += '\
				<td style="text-align:right;padding:0px 5px 0px 0px;font-weight:bold;width:50%;line-height:14px;font-size:14px;" nowrap>'+vData[1][i][0]+'</td>\
				<td style="text-align:left;padding:0px 5px 0px 0px;width:50%;line-height:14px;font-size:14px;" nowrap>'+f_fix_string_length(f_convert_special_to_safe(vData[1][i][1]),50)+'</td>\
				';
				if(i + 1 != vData[1].length)
				{
					vTempHTML += '</tr><tr>';
				}
			}
			vTempHTML += '</tr></table>';
			if(vData[1][0])
			{
				vTempHTML += '';
			}
			break;
		case "D_U"://Data List - No checking;
			vTempHTML += '\
				<table style="width:100%;">\
					<tr>\
			';
			if(vData[1][0])
			{
				vTempHTML += '\
							<td style="text-align:left;padding:0px 5px 0px 0px;font-weight:bold;width:50%;line-height:14px;font-size:16px;border-style:dotted;border-width:0px 0px 1px 0px;border-color:#AAAAAA;" nowrap>' + vData[1][0] + '</td>\
							<td style="text-align:right;padding:0px 5px 0px 0px;width:50%;line-height:14px;font-size:14px;" nowrap></td>\
						</tr>\
						<tr>\
				';
			}
			for(var i=1; i<vData[1].length; i++)
			{
				vTempHTML += '\
				<td style="text-align:right;padding:0px 5px 0px 0px;font-weight:bold;width:50%;line-height:14px;font-size:14px;" nowrap>'+vData[1][i][0]+'</td>\
				<td style="text-align:left;padding:0px 5px 0px 0px;width:50%;line-height:14px;font-size:14px;" nowrap>'+vData[1][i][1]+'</td>\
				';
				if(i + 1 != vData[1].length)
				{
					vTempHTML += '</tr><tr>';
				}
			}
			vTempHTML += '</tr></table>';
			if(vData[1][0])
			{
				vTempHTML += '';
			}
			break;
		case "L"://List with Image, Link Text, and a description underneath.  Link opens in a new window.
			vTempHTML += '\
			<a class="module-link" href="'+vData[4]+'" onclick="'+vData[5]+'" target="_blank">\
				<img src="'+vData[3]+'" />'+f_convert_special_to_safe(vData[1])+'<br/>\
				<font  style="font-size:12px;color:black;text-decoration:none;">'+f_convert_special_to_safe(vData[2])+'</font>\
			</a>\
			';
			break;
		case "IL"://List with Image, Link Text, and a description underneath.  Link opens in current window.
			vTempHTML += '\
			<a class="module-link" href="'+vData[4]+'" onclick="'+vData[5]+'">\
				<img src="'+vData[3]+'" />'+f_convert_special_to_safe(vData[1])+'<br/>\
				<font style="font-size:12px;color:black;text-decoration:none;">'+f_convert_special_to_safe(vData[2])+((vData[2] == ' ')?'&nbsp;':'')+'</font>\
			</a>\
			';
			break;
		case "ST"://Super Table
			vTempHTML += '<div id="super_table"></div>';
			break;
		case "FCK"://Fck editor area.
			vTempHTML += f_gen_input(vData[1]);
			break;
		case "TXT"://Text, converted to safe.
			vTempHTML += f_convert_special_to_safe(vData[1]);
			break;
		case "HTML"://HTML, not safe.
			vTempHTML += vData[1];
			break;
		case "PIC"://An image with onclick, etc.
			vTempHTML += '\
			<img src="'+vData[1]+'" onclick="'+vData[2]+'" style="width:'+vData[3]+';height:'+vData[4]+';" />\
			';
			break;
		case "WB"://White box, that generates more block info in the middle area of it.
			vTempHTML += f_gen_content_box('White',vData[1],vData[2],f_gen_block(vData[3]),vData[4],vData[5]);
			break;
		case "CWB"://Collapasable box, can default open or closed, with white box inside, that genterates more block info in the middle area of it.
			vTempHTML += f_gen_content_box('HiddenWhite',vData[1],vData[2],f_gen_block(vData[3]),vData[4],vData[5]);
			break;
		case "2_O"://2 items, pushed to the outside, 100% width.
			vTempHTML += '\
				<table style="width:100%">\
					<tr>\
						<td style="text-align:left;width:50%;">\
							'+f_gen_block(vData[1])+'\
						</td>\
						<td style="text-align:right;width:50%;">\
							'+f_gen_block(vData[2])+'\
						</td>\
					</tr>\
				</table>\
			';
			break;
		case "2_C"://2 items, centered in each area, 100% width.
			vTempHTML += '\
				<table style="width:100%;">\
					<tr>\
						<td style="vertical-align:top;width:50%;text-align:center;">\
							'+f_gen_block(vData[1])+'\
						</td>\
						<td style="vertical-align:top;width:50%;text-align:center;">\
							'+f_gen_block(vData[2])+'\
						</td>\
					</tr>\
				</table>\
			';
			break;
		case "3_C"://3 items, 1 left, 1 center, 1 right, 100% width;
			vTempHTML += '\
				<table style="width:100%;">\
					<tr>\
						<td style="vertical-align:top;width:33%;text-align:left;">\
							'+f_gen_block(vData[1])+'\
						</td>\
						<td style="vertical-align:top;width:34%;text-align:center;">\
							'+f_gen_block(vData[2])+'\
						</td>\
						<td style="vertical-align:top;width:33%;text-align:right;">\
							'+f_gen_block(vData[3])+'\
						</td>\
					</tr>\
				</table>\
			';
			break;
		case "M_V"://Multiple vertical colums. 100% width;
			vTempHTML += '\
				<table style="width:100%">\
			';
				for(var i=1;i<vData.length;i++)
				{
					vTempHTML += '\
						<tr>\
							<td style="text-align:left;">\
								'+f_gen_block(vData[i])+'\
							</td>\
						</tr>\
					';
				}
			vTempHTML += '\
				</table>\
			';
			break;
		case "M_H"://multiple horizontal colums, minimal width.
			vTempHTML += '\
				<table style="width:1%;">\
					<tr>\
			';
				for(var i=1;i<vData.length;i++)
				{
					vTempHTML += '\
						<td style="vertical-align:top;text-align:left;" nowrap>\
							'+f_gen_block(vData[i])+'\
						</td>\
					';
				}
			vTempHTML += '\
					<tr>\
				</table>\
			';
			break;
		case "M_H_R"://Multiple horizontal colums, minimal width, adjusted right.
			vTempHTML += '\
				<table style="width:1%;">\
					<tr>\
			';
				for(var i=1;i<vData.length;i++)
				{
					vTempHTML += '\
						<td style="vertical-align:top;text-align:right;" nowrap>\
							'+f_gen_block(vData[i])+'\
						</td>\
					';
				}
			vTempHTML += '\
					<tr>\
				</table>\
			';
			break;
		default://The default when you mess up, alerts and blinks to let you know whats up.
			alert('NO TYPE SET - '+vData[0]+" - "+vData[1]);
			vTempHTML += '<blink style="color:red">NO TYPE SET</blink>';
			break;
	}
	return vTempHTML;
}

function f_write_content(vWhat)
{
	document.getElementById("content").innerHTML = vWhat;
}

function f_write_popup(vWhat)
{
	document.getElementById("popup_box").innerHTML = vWhat;
}

function f_write_mini_cal(vWhat)
{
	document.getElementById("mini_cal").innerHTML = vWhat;
}

function f_popup_close_link()
{
	return '<a href="" class="popup-close-link" onclick="f_hide_popup();return false;"><img src="./'+vCore+'/images/icons/menu_delete.png" /> Close</a>';
}

function f_show_hide_wb(vWhat)
{
	if(document.getElementById(vWhat+'_1').style.display == 'none')
	{
		document.getElementById(vWhat+'_R').innerHTML = '<a href="" style="text-decoration:none;" onclick="f_show_hide_wb(\''+vWhat+'\');return false;"><img class="small-icon" src="./'+vCore+'/images/icons/menu_up.png" /> Click To Contract</a>';
		document.getElementById(vWhat+'_L').style.borderStyle='none';
		document.getElementById(vWhat+'_L').style.borderWidth='0px 0px 0px 0px';
		document.getElementById(vWhat+'_R').style.borderStyle='none';
		document.getElementById(vWhat+'_R').style.borderWidth='0px 0px 0px 0px';
		document.getElementById(vWhat+'_1').style.display = '';
		document.getElementById(vWhat+'_2').style.display = '';
		document.getElementById(vWhat+'_3').style.display = '';
		document.getElementById(vWhat+'_4').style.display = '';
	}
	else
	{
		document.getElementById(vWhat+'_R').innerHTML = '<a href="" style="text-decoration:none;" onclick="f_show_hide_wb(\''+vWhat+'\');return false;"><img class="small-icon" src="./'+vCore+'/images/icons/menu_down.png" /> Click To Expand</a>';
		document.getElementById(vWhat+'_L').style.borderStyle='dotted';
		document.getElementById(vWhat+'_L').style.borderWidth='0px 0px 1px 0px';
		document.getElementById(vWhat+'_L').style.borderColor='#AAAAAA';
		document.getElementById(vWhat+'_R').style.borderStyle='dotted';
		document.getElementById(vWhat+'_R').style.borderWidth='0px 0px 1px 0px';
		document.getElementById(vWhat+'_R').style.borderColor='#AAAAAA';
		document.getElementById(vWhat+'_1').style.display = 'none';
		document.getElementById(vWhat+'_2').style.display = 'none';
		document.getElementById(vWhat+'_3').style.display = 'none';
		document.getElementById(vWhat+'_4').style.display = 'none';
	}
}

function f_gen_content_box(vType, vTL,vTR,vC,vBL,vBR)
{
	if(vType == "White")
	{
		return f_gen_box("w",vTL,vTR,vC,vBL,vBR);
	}
	if(vType == "HiddenWhite")
	{
		return f_gen_box("hw",vTL,vTR,vC,vBL,vBR);
	}
	else if(vType == "Primary")
	{
		return f_gen_box("p","","",f_gen_box("w",vTL,vTR,vC,vBL,vBR),"","");
	}
	else
	{
		alert("NO TYPE SET");
		return '<blink style="color:red">NO TYPE SET</blink>';
	}
}

function f_gen_box(vS,vTL,vTR,vC,vBL,vBR)
{
	var vHidden = false;
	var vHiddenId = f_gen_random_string(4);
	if(vS == 'hw')
	{
		vS = 'w';
		vHidden = true;
	}
	var vTempHTML = '\
	<table class="box-c-'+vS+'">\
		<tr>\
			<td class="box-c-'+vS+'-h">\
				<table class="box-c-'+vS+'-h-t">\
					<tr>\
						<td class="box-c-'+vS+'-h-l" '+((vHidden)?'style="border-style:dotted;border-width:0px 0px 1px 0px;border-color:#AAAAAA;" id="'+vHiddenId+'_L"':'')+'>'+((vHidden)?'<a href="" style="text-decoration:none;" onclick="f_show_hide_wb(\''+vHiddenId+'\');return false;">':'')+f_fix_string_length(vTL,100)+((vHidden)?'</a>':'')+'</td>\
						<td class="box-c-'+vS+'-h-r" '+((vHidden)?'style="border-style:dotted;border-width:0px 0px 1px 0px;border-color:#AAAAAA;" id="'+vHiddenId+'_R"':'')+'>'+((vHidden)?'<a href="" style="text-decoration:none;" onclick="f_show_hide_wb(\''+vHiddenId+'\');return false;"><img class="small-icon" src="./'+vCore+'/images/icons/menu_down.png" /> Click To Expand':f_fix_string_length(vTR,100))+((vHidden)?'</a>':'')+'</td>\
					</tr>\
				</table>\
			</td>\
		</tr>\
		<tr '+((vHidden)?'style="display:none" id="'+vHiddenId+'_1"':'')+'>\
			<td class="box-c-'+vS+'-t">\
				<table class="box-c-'+vS+'-t-t">\
					<tr>\
						<td class="box-c-'+vS+'-t-l"><img src="/'+vCore+'/images/special/transparent.gif" style="width:120px;height:1px;line-height:0px;" /></td>\
						<td class="box-c-'+vS+'-t-c">&nbsp;</td>\
						<td class="box-c-'+vS+'-t-r"><img src="/'+vCore+'/images/special/transparent.gif" style="width:120px;height:1px;line-height:0px;" /></td>\
					</tr>\
				</table>\
			</td>\
		</tr>\
		<tr '+((vHidden)?'style="display:none" id="'+vHiddenId+'_2"':'')+'>\
			<td class="box-c-'+vS+'-c">\
				<table class="box-c-'+vS+'-c-t">\
					<tr>\
						<td class="box-c-'+vS+'-c-l"><div class="box-c-'+vS+'-c-l-d"></td>\
						<td class="box-c-'+vS+'-c-c">'+vC+'</td>\
						<td class="box-c-'+vS+'-c-r"><div class="box-c-'+vS+'-c-r-d"></td>\
					</tr>\
				</table>\
			</td>\
		</tr>\
		<tr '+((vHidden)?'style="display:none" id="'+vHiddenId+'_3"':'')+'>\
			<td class="box-c-'+vS+'-b">\
				<table class="box-c-'+vS+'-b-t">\
					<tr>\
						<td class="box-c-'+vS+'-b-l"></td>\
						<td class="box-c-'+vS+'-b-c">&nbsp;</td>\
						<td class="box-c-'+vS+'-b-r"></td>\
					</tr>\
				</table>\
			</td>\
		</tr>\
		<tr '+((vHidden)?'style="display:none" id="'+vHiddenId+'_4"':'')+'>\
			<td class="box-c-'+vS+'-f">\
				<table class="box-c-'+vS+'-f-t">\
					<tr>\
						<td class="box-c-'+vS+'-f-l">'+f_fix_string_length(vBL,100)+'</td>\
						<td class="box-c-'+vS+'-f-r">'+f_fix_string_length(vBR,100)+'</td>\
					</tr>\
				</table>\
			</td>\
		</tr>\
	</table>\
	';
	return vTempHTML;
}

function f_gen_module_icons(vData)
{
	if(vData.length > 0)
	{
		var vTempHTML = '\
		<table>\
			<tr>\
				<td class="module-icon-l"></td>\
				<td class="module-icon-c" nowrap>\
					<table>\
						<tr>\
		';
		
		for(var i=0; i<vData.length; i++) 
		{
			vTempHTML += '\
			<td style="text-align:center;" nowrap>\
				<a href="" onclick="'+vData[i][1]+' return false;"><img src="./'+vCore+'/images/icons/'+vData[i][2]+'.png" /></a>\
			</td>\
			';
		}
		vTempHTML += '\
			</tr>\
			<tr>\
		';
		for(var i=0; i<vData.length; i++) 
		{
			vTempHTML += '\
			<td style="text-align:center;padding:0px 9px 0px 9px;" nowrap>\
				<a href="" onclick="'+vData[i][1]+' return false;">'+vData[i][0]+'</a>\
			</td>\
			';
		}
		
		vTempHTML += '\
						</tr>\
					</table>\
				</td>\
				<td class="module-icon-r"></td>\
			</tr>\
		</table>\
		';
		document.getElementById("module-icons-hold").innerHTML = vTempHTML;
	}
	else
	{
		document.getElementById("module-icons-hold").innerHTML = "";
	}
}

function f_gen_page_list(vFLeft,vFRight,vData)
{
		var vTempHTML = '\
			<a href="#" style="text-decoration:none" onClick="'+vFLeft+'">\
				<img class="medium-icon" src="'+vCore+'/images/icons/menu_back_medium.png" />\
			</a>&nbsp;\
			<a href="#" style="text-decoration:none" onClick="'+vFRight+'">\
				<img class="medium-icon" src="'+vCore+'/images/icons/menu_forward_medium.png" />\
			</a>\
			'+vData+'\
		';
	return vTempHTML;
}

function f_gen_member_link(vID, vFirstName, vLastName)
{
	if(vMember != '')
	{
		var vTempHTML = '<a style="text-decoration:none;" href="/index.php?module=member_profile&level=main&page='+vID+'">'+vFirstName+' '+vLastName+'</a>';
		return vTempHTML;
	}
	else
	{
		return vFirstName+' '+vLastName;
	}
}

function f_map(address1, address2, city, state, zip) 
{
	var vData = new Array(address1, address2, city, state, zip);
	if ( address1 && (zip || (city && state))) { 
		for (var i=0; i < vData.length; i++) { 
			vData[i] = vData[i].replace(/ /g,"+"); 
			if (vData[i] == false) {
				vData.splice(i,1);
			} 
		} 
	} else	{
		return false;
	}
	var vTempHTML = "http://maps.google.com/maps?f=q&hl=en&q="+vData.join("+");
	return vTempHTML;
}

function f_gen_random_string(vLength)
{
	var vChars = new Array('a','b','c','d','e','f','g','h','k','p','q','r','s','t','w','x','y','z','2','3','4','5','6','7','8','9');
	var vTempHTML = "";
	for(var i=0; i<vLength;i++)
	{
		vTempHTML += vChars[Math.floor(Math.random()*25)];
	}
	return vTempHTML;
}

function f_collect_data(vGroup)
{
	var vData = "";
	var vTempVal = "";
	var vRadioGroupsFinished = new Array();
	for(var i=0;i<vDataCollectInfo.length;i++)
	{
		if(vDataCollectInfo[i][3] == vGroup)
		{
			if(vDataCollectInfo[i][0] == 'text' || vDataCollectInfo[i][0] == 'hidden' || vDataCollectInfo[i][0] == 'password' || vDataCollectInfo[i][0] == 'pre_password' || vDataCollectInfo[i][0] == 'select')
			{
				vTempVal = document.getElementById(vDataCollectInfo[i][1]).value;
				if(vTempVal == "" & !vDataCollectInfo[i][5])
				{
					alert("You must fill in the "+vDataCollectInfo[i][2]+" field to continue.");
					f_error_flash_and_focus(vDataCollectInfo[i][1]);
					return false;
				}
				if(vDataCollectInfo[i][0] == 'password')
				{
					vData += vDataCollectInfo[i][4] + "[!F]"+encodeURIComponent(f_prep_pass(vTempVal))+"[!F][!R]";
				}
				else if(vDataCollectInfo[i][0] == 'pre_password')
				{
					vData += vDataCollectInfo[i][4] + "[!F]"+encodeURIComponent(f_pre_pass(vTempVal))+"[!F][!R]";
				}
				else
				{
					vData += vDataCollectInfo[i][4] + "[!F]"+encodeURIComponent(vTempVal)+"[!F][!R]";
				}
			}
			else if(vDataCollectInfo[i][0] == 'date')
			{
				vTempVal = document.getElementById(vDataCollectInfo[i][1]).className;
				vTempVal = f_convert_to_unix_time_string(vTempVal);
				vData += vDataCollectInfo[i][4] + "[!F]"+encodeURIComponent(vTempVal)+"[!F][!R]";
			}
			else if(vDataCollectInfo[i][0] == 'group')
			{
				vTempVal = document.getElementById(vDataCollectInfo[i][1]).className;
				vData += vDataCollectInfo[i][4] + "[!F]"+encodeURIComponent(vTempVal)+"[!F][!R]";
			}
			else if(vDataCollectInfo[i][0] == 'icon')
			{
				vTempVal = document.getElementById(vDataCollectInfo[i][1]).className;
				vData += vDataCollectInfo[i][4] + "[!F]"+encodeURIComponent(vTempVal)+"[!F][!R]";
			}
			else if(vDataCollectInfo[i][0] == 'fck')
			{
				//vTempVal = encodeURIComponent(editor.GetXHTML("text"));
				vTempVal = encodeURIComponent(editor.getData());
				//alert(vTempVal);
				if((vTempVal == "" || vTempVal == "%3Cbr%20%2F%3E%0A") & !vDataCollectInfo[i][5])
				{
					alert("You must fill in the "+vDataCollectInfo[i][2]+" area to continue.");
					return false;
				}
				vData += vDataCollectInfo[i][4] + "[!F]"+vTempVal+"[!F][!R]";
			}
			else if(vDataCollectInfo[i][0] == 'checkbox')
			{
				vTempVal = ((document.getElementById(vDataCollectInfo[i][1]).checked) ? "Y" : "N");
				if(vTempVal == "N" & !vDataCollectInfo[i][5])
				{
					alert("You must check the "+vDataCollectInfo[i][2]+" checkbox to continue.");
					return false;
				}
				vData += vDataCollectInfo[i][4] + "[!F]"+vTempVal+"[!F][!R]";
			}
			else if(vDataCollectInfo[i][0] == 'textarea')
			{
				vTempVal = '' + document.getElementById(vDataCollectInfo[i][1]).value + '';
				if(vTempVal == "" & !vDataCollectInfo[i][5])
				{
					alert("Please enter information in the "+vDataCollectInfo[i][2]+" field to continue.");
					f_error_flash_and_focus(vDataCollectInfo[i][1]);
					document.getElementById(vDataCollectInfo[i][1]).focus();
					return false;
				}
				vTempVal=vTempVal+'';
				var re = new RegExp("\n", "g");
				vTempVal = vTempVal.replace(re, "<br/>");
				vData += vDataCollectInfo[i][4] + "[!F]"+encodeURIComponent(vTempVal)+"[!F][!R]";
			}
			else if(vDataCollectInfo[i][0] == 'radio')
			{
				var vGroupDone = false;
				for(var j=0;j<vRadioGroupsFinished.length;j++)
				{
					if(vDataCollectInfo[i][2] == vRadioGroupsFinished[j])
					{
						vGroupDone = true;
					}
				}
				if(!vGroupDone)
				{
					var vGroupVal = false;
					for(var j=0;j<vDataCollectInfo.length;j++)
					{
						if(vDataCollectInfo[j][0] == 'radio' && vDataCollectInfo[j][2] == vDataCollectInfo[i][2])
						{
							if(document.getElementById(vDataCollectInfo[j][1]).checked)
							{
								vGroupVal = j;
							}
						}
					}
					vRadioGroupsFinished.push(vDataCollectInfo[i][2]);
					if(vGroupVal === false & !vDataCollectInfo[i][5])
					{
						alert("Please enter a selection for the "+vDataCollectInfo[i][2]+" radio button group.");
						return false;
					}
					else if(vGroupVal === false)
					{
						vData += vDataCollectInfo[i][4] + "[!F][!F][!R]";
					}
					else
					{
						vData += vDataCollectInfo[i][4] + "[!F]"+encodeURIComponent(document.getElementById(vDataCollectInfo[vGroupVal][1]).value)+"[!F][!R]";
					}
				}
			}
		}
	}
	return vData;
}

function f_convert_special_to_safe(vString)
{
	vString=vString+'';
	vString=vString.replace(/\&/g,'&amp;');
	vString=vString.replace(/\</g,'&lt;');
	vString=vString.replace(/\>/g,'&gt;');
	vString=vString.replace(/\‹/g,'&lsaquo;');
	vString=vString.replace(/\›/g,'&rsaquo;');
	vString=vString.replace(/\"/g,'&quot;');
	vString=vString.replace(/\‘/g,'&lsquo;');
	vString=vString.replace(/\’/g,'&rsquo;');
	vString=vString.replace(/\‚/g,'&sbquo;');
	vString=vString.replace(/\“/g,'&ldquo;');
	vString=vString.replace(/\”/g,'&rdquo;');
	vString=vString.replace(/\„/g,'&bdquo;');
	vString=vString.replace(/\'/g,'&rsquo;');
	return vString;
}

function f_remove_line_feeds(vString)
{
	vString=vString+'';
	vString=vString.replace(/\%0A/g,'');
	return vString;
}

function f_convert_time_stamp_to_date(vTimeStamp)
{
	vTimeStamp += "";
	if(!vTimeStamp || vTimeStamp == '' || vTimeStamp.length < 10)
	{
		return '';
	}
	vTimeStamp = f_convert_to_javascript_time_string(vTimeStamp);
	var vTempDate = new Date();
	vTempDate.setTime(vTimeStamp);
	
	var vHours = vTempDate.getUTCHours();
	var vAmPm = 'AM';
	if(vHours > 11)
	{
		vAmPm = 'PM';
	}
	
	if(vHours == 0)
	{
		vHours = 12;
	}
	else if(vHours > 12)
	{
		vHours = vHours - 12;
	}
	
	var vDisplayDate = vTempDate.getUTCFullYear() + "-" + vMonthAbbreviations[vTempDate.getUTCMonth()] + "-" + (vTempDate.getUTCDate() < 10 ? "0" + vTempDate.getUTCDate() : vTempDate.getUTCDate()) + "&nbsp;" + vHours + ":" + (vTempDate.getUTCMinutes() < 10 ? "0" + vTempDate.getUTCMinutes() : vTempDate.getUTCMinutes()) + '&nbsp;' + vAmPm;
	return vDisplayDate;
}

function f_convert_time_stamp_to_local_date(vTimeStamp)
{
	if(!vTimeStamp || vTimeStamp == '' || vTimeStamp.length < 10)
	{
		return '';
	}
	vTimeStamp = f_convert_to_javascript_time_string(vTimeStamp);
	var vTempDate = new Date();
	vTempDate.setTime(vTimeStamp);
	
	vTempDate.setTime(vTempDate.getTime() - (vTempDate.getTimezoneOffset() * 60000));
	
	var vHours = vTempDate.getUTCHours();
	var vAmPm = 'AM';
	if(vHours > 11)
	{
		vAmPm = 'PM';
	}
	
	if(vHours == 0)
	{
		vHours = 12;
	}
	else if(vHours > 12)
	{
		vHours = vHours - 12;
	}
	
	var vDisplayDate = vTempDate.getUTCFullYear() + "-" + vMonthAbbreviations[vTempDate.getUTCMonth()] + "-" + (vTempDate.getUTCDate() < 10 ? "0" + vTempDate.getUTCDate() : vTempDate.getUTCDate()) + "&nbsp;" + vHours + ":" + (vTempDate.getUTCMinutes() < 10 ? "0" + vTempDate.getUTCMinutes() : vTempDate.getUTCMinutes()) + '&nbsp;' + vAmPm;
	return vDisplayDate;
}

function f_convert_yn_to_img(vWhat)
{
	if(vWhat != 'N' || !vWhat)
	{
		return "<img class='small-icon' src=\'/"+vCore+"/images/icons/menu_check.png\' />"
	}
	return "<img class='small-icon' src=\'/"+vCore+"/images/icons/menu_check_off.png\' />"
}

function f_convert_account_type_to_text(vWhat)
{
	var vACType = "Unknown";
	if(vWhat == "P")
	{
		vACType = "Parent";
	}
	else if(vWhat == "T")
	{
		vACType = "Teacher";
	}
	else if(vWhat == "M")
        {
                vACType = "Family";
        }
	else if(vWhat == "F")
	{
		vACType = "Faculty";
	}
	else if(vWhat == "O")
	{
		vACType = "Officer";
	}
	else if(vWhat == "S")
	{
		vACType = "Student";
	}
	else if(vWhat == "N")
	{
		vACType = "Non Member";
	}
	return vACType;
}

function f_convert_screen_name_to_text(vWhat)
{
	var vACType = "";
	if(vWhat == "G")
	{
		vACType = "Google";
	}
	else if(vWhat == "I")
	{
		vACType = "ICQ";
	}
	else if(vWhat == "A")
	{
		vACType = "AIM";
	}
	else if(vWhat == "M")
	{
		vACType = "MSN";
	}
	else if(vWhat == "Y")
	{
		vACType = "Yahoo";
	}
	return vACType;
}

function f_convert_account_status_to_text(vWhat)
{
	var vPType = "Unknown";
	if(vWhat == 'A')
	{
		vPType = "Active";
	}
	else if(vWhat == 'P')
	{
		vPType = "Pending";
	}
	else if(vWhat == 'D')
	{
		vPType = "Disabled";
	}
	return vPType;
}

function f_convert_account_level_to_text(vWhat)
{
	var vAType = "Unknown";
	if(vWhat == 'admin')
	{
		vAType = "Admin";
	}
	else if(vWhat == 'member')
	{
		vAType = "Member";
	}
	return vAType;
}

function f_convert_to_javascript_time_string(vTimeString)
{
	vTimeString += "";
	if(vTimeString.length == 10)
	{
		vTimeString += '000';
	}
	vTimeString = vTimeString * 1;
	return vTimeString;
}

function f_convert_to_unix_time_string(vTimeString)
{
	vTimeString += "";
	if(vTimeString.length == 13)
	{
		vTimeString = vTimeString.substring(0,10);
	}
	vTimeString = vTimeString * 1;
	return vTimeString;
}

function f_convert_number_to_month_abbreviation(vNumber)
{
	return vMonthAbbreviations[vNumber - 1];
}

function f_convert_number_to_month_name(vNumber)
{
	return vMonthNames[vNumber - 1];
}

function f_sort_array(vArray, vPosition, vDirection)
{
	vSrtPos = vPosition;
	if(vPosition != null)
	{
		if(vDirection == "F")
		{
			eval(vArray + '.sort(f_sort_tier_array_forward)');
		}
		else
		{
			eval(vArray + '.sort(f_sort_tier_array_reverse)');
		}
	}
	else
	{
		if(vDirection == "F")
		{
			eval(vArray + '.sort(f_sort_base_array_forward)');
		}
		else
		{
			eval(vArray + '.sort(f_sort_base_array_reverse)');
		}
	}
}

function f_sort_tier_array_forward(item1, item2)
{
	item1[vSrtPos] += '';
	item2[vSrtPos] += '';
	if(!item1[vSrtPos].match(/\D/) && !item2[vSrtPos].match(/\D/))
	{
		if(item1[vSrtPos] * 1 < item2[vSrtPos] * 1){return -1;}
		else if(item1[vSrtPos] * 1 > item2[vSrtPos] * 1){return 1;}
		else return 0;
	}
	if(item1[vSrtPos].toLowerCase() < item2[vSrtPos].toLowerCase()){return -1;}
	else if(item1[vSrtPos].toLowerCase() > item2[vSrtPos].toLowerCase()){return 1;}
	else return 0;
}

function f_sort_base_array_forward(item1, item2)
{
	item1 += '';
	item2 += '';
	if(!item1.match(/\D/) && !item2.match(/\D/))
	{
		if(item1 * 1 < item2 * 1){return -1;}
		else if(item1 * 1 > item2 * 1){return 1;}
		else return 0;
	}
	if(item1.toLowerCase() < item2.toLowerCase()){return -1;}
	else if(item1.toLowerCase() > item2.toLowerCase()){return 1;}
	else return 0;
}

function f_sort_tier_array_reverse(item1, item2)
{
	item1[vSrtPos] += '';
	item2[vSrtPos] += '';
	if(!item1[vSrtPos].match(/\D/) && !item2[vSrtPos].match(/\D/))
	{
		if(item1[vSrtPos] * 1 > item2[vSrtPos] * 1){return -1;}
		else if(item1[vSrtPos] * 1 < item2[vSrtPos] * 1){return 1;}
		else return 0;
	}
	if(item1[vSrtPos].toLowerCase() > item2[vSrtPos].toLowerCase()){return -1;}
	else if(item1[vSrtPos].toLowerCase() < item2[vSrtPos].toLowerCase()){return 1;}
	else return 0;
}

function f_sort_base_array_reverse(item1, item2)
{
	item1 += '';
	item2 += '';
	if(!item1.match(/\D/) && !item2.match(/\D/))
	{
		if(item1 * 1 > item2 * 1){return -1;}
		else if(item1 * 1 < item2 * 1){return 1;}
		else return 0;
	}
	if(item1.toLowerCase() > item2.toLowerCase()){return -1;}
	else if(item1.toLowerCase() < item2.toLowerCase()){return 1;}
	else return 0;
}

function f_convert_data_string_to_array(vDataString)
{
	var vTempArray = vDataString.split("[!R]");
	vTempArray.pop();
	for(var i=0; i<vTempArray.length; i++)
	{
		vTempArray[i] = vTempArray[i].split("[!F]");
		vTempArray[i].pop();
	}
	return vTempArray;
}

function f_convert_y_n_to_true_false(vData)
{
	if(vData == 'Y')
	{
		return true;
	}
	return false;
}

function f_conver_seconds_to_hms(vData)
{
	vHours = 0;
	vMins = 0;
	vSecs = 0;
	if(vData >= 60)
	{
		vSecs = vData % 60;
		vMins = (vData - vSecs) / 60;
		if(vMins >= 60)
		{
			vMins = vMins % 60;
			vHours = ((vData - vSecs) - (vMins * 60)) / 60 / 60;
		}
	}
	var vReturn = '';
	if(vHours > 0)
	{
		vReturn += vHours + 'h ';
	}
	vReturn += vMins + 'm ';
	if(vSecs > 0)
	{
		vReturn += vSec + 's';
	}
	return vReturn;
}

function f_show_popup()
{
	f_jump_to_center("popup_box");
	f_hide_selects();
	
	var vWindowData = f_get_browser_info();
	
	if(vWindowData.height < document.getElementById("wrapper").clientHeight)
	{
		var vHeight = document.getElementById("wrapper").clientHeight;
		var vWidth = document.getElementById("wrapper").clientWidth;
	}
	else
	{
		var vHeight = vWindowData.height;
		var vWidth = document.getElementById("wrapper").clientWidth;
	}
	
	document.getElementById("popup_background").style.width = vWidth + 'px';
	document.getElementById("popup_background").style.height = vHeight + 'px';
	
	document.getElementById("popup_box").style.visibility = "visible";
	document.getElementById("popup_background").style.visibility = "visible";
	
	f_change_opacity("popup_background", "", 10, 1, 0, 40);
}

function f_hide_popup()
{
	document.getElementById("popup_box").style.visibility = "hidden";
	document.getElementById("popup_background").style.visibility = "hidden";
	document.getElementById("popup_background").style.width = '10px';
	document.getElementById("popup_background").style.height = '10px';
	f_show_selects();
}

function f_hide_selects()
{
	for(var i=0; i<vSelectBoxHideIds.length; i++)
	{
		document.getElementById(vSelectBoxHideIds[i]).style.visibility = "hidden";
	}
}
function f_show_selects()
{
	for(var i=0; i<vSelectBoxHideIds.length; i++)
	{
		document.getElementById(vSelectBoxHideIds[i]).style.visibility = "visible";
	}
}

var vMousePosX = 0;
var vMousePosY = 0;

function f_start_track_mouse()
{
	document.onmousemove = f_update_track_mouse;
}

function f_stop_track_mouse()
{
	document.onmousemove = null;
}

function f_update_track_mouse(e)
{
	if (!e)
	{
		e = window.event;
	}
	if (e.pageX || e.pageY) 	{
		vMousePosX = e.pageX;
		vMousePosY = e.pageY;
	}
	else if (e.clientX || e.clientY) 	{
		vMousePosX = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		vMousePosY = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}
}

var oPopupMenu = new Object();
oPopupMenu.loaded = false;
oPopupMenu.closetimer = "";
oPopupMenu.closetimerround = false;

oPopupMenu.mousedover = function()
{
	if(!oPopupMenu.loaded)
	{
		var vPageGets = f_get_page_get();
		if((vPageGets['module'] == 'dynamic_pages' && vPageGets['page']) || vPageGets['module'] != 'dynamic_pages' && !(vPageGets['level']))
		{
			oPopupMenu.pagelist = new Array();
			oPopupMenu.target = "dynamic_pages_link";
			oPopupMenu.window = document.getElementById("popup_menu");
			oPopupMenu.targetelement = document.getElementById(oPopupMenu.target);
			oPopupMenu.targetloc = f_get_element_info(oPopupMenu.target);
			
			oPopupMenu.getpages();
		}
	}
	else if(oPopupMenu.window.style.visibility != "visible")
	{
		oPopupMenu.showpages();
	}
	f_start_track_mouse();
	oPopupMenu.closetimer = setTimeout('oPopupMenu.checkmouse()',100);
};

oPopupMenu.checkmouse = function()
{
	var vMenuPos = f_get_element_info("popup_menu");
		
	if(vMousePosY < (vMenuPos.top - 30) || vMousePosY > vMenuPos.bottom || vMousePosX < vMenuPos.left || vMousePosX > vMenuPos.right)
	{
		if(oPopupMenu.closetimerround)
		{
			oPopupMenu.hidepages();
		}
		else
		{
			oPopupMenu.closetimerround = true;
			oPopupMenu.closetimer = setTimeout('oPopupMenu.checkmouse()',300);
		}
	}
	else
	{
		oPopupMenu.closetimerround = false;
		oPopupMenu.closetimer = setTimeout('oPopupMenu.checkmouse()',100);
	}
};

oPopupMenu.getpages = function()
{
	var vDataString = "module=dynamic_pages&area=main_page&action=get_dynamic_pages&query_key="+vQueryKey;
	var vReturnFunction = "oPopupMenu.gotpages()";
	f_ajax_transport(vDataString, vReturnFunction);
};
oPopupMenu.gotpages = function()
{
	oPopupMenu.pagelist = f_convert_data_string_to_array(http_request.responseText.split("[!S]")[1]);
	oPopupMenu.layoutpages();
};
oPopupMenu.layoutpages = function()
{
	var vTempHTML = '';
	
	if(oPopupMenu.pagelist.length > 0)
	{
		vTempHTML = '<div style="padding:0px 10px 0px 10px;">';
		for(var i=0;i<oPopupMenu.pagelist.length;i++)
		{
			vTempHTML += '\
			<div class="popup-menu-hidden">\
			<a class="module-link" href="index.php?module=dynamic_pages&level=main&page='+oPopupMenu.pagelist[i][3]+'">';
			
			if(oPopupMenu.pagelist[i][2] != '')
			{
				vTempHTML += '\
					<img src="/images/icon_pack/'+oPopupMenu.pagelist[i][2]+'" />\
				';
			}
			vTempHTML += '\
			'+f_convert_special_to_safe(oPopupMenu.pagelist[i][0])+'</a>';
			if(oPopupMenu.pagelist[i][1] != '')
			{
				vTempHTML += '&nbsp;\
				<span><img class="popup-menu-plus-minus" src="./'+vCore+'/images/icons/bullet_toggle_plus.png" onClick="f_cycle_popup_menu(this.parentNode.parentNode, this.parentNode);return false;" /></span>\
				<div>'+f_convert_special_to_safe(oPopupMenu.pagelist[i][1])+'</div>\
				';
			}
			vTempHTML += '\
				</div>\
			';
		}
		vTempHTML += '</div>';
	}
	else
	{
		vTempHTML += '<p><i>No site pages have been created yet.</i></p>';
	}
	
	oPopupMenu.window.innerHTML = f_gen_content_box('Primary','','',vTempHTML,'','');
	
	oPopupMenu.window.style.top = (oPopupMenu.targetloc.bottom + 0) + "px";
	oPopupMenu.window.style.left = (oPopupMenu.targetloc.left - 13) + "px";
	
	oPopupMenu.loaded = true;
	
	oPopupMenu.showpages();
};

function f_cycle_popup_menu(vTarget, vThis)
{
	if(vTarget.className == "popup-menu-hidden")
	{
		vTarget.className = "popup-menu-display";
		vThis.innerHTML = '<img class="popup-menu-plus-minus" src="./'+vCore+'/images/icons/bullet_toggle_minus.png" onClick="f_cycle_popup_menu(this.parentNode.parentNode, this.parentNode);return false;" />';
	}
	else
	{
		vTarget.className = "popup-menu-hidden";
		vThis.innerHTML = '<img class="popup-menu-plus-minus" src="./'+vCore+'/images/icons/bullet_toggle_plus.png" onClick="f_cycle_popup_menu(this.parentNode.parentNode, this.parentNode);return false;" />';
	}
}

oPopupMenu.showpages = function()
{
	f_hide_selects();
	oPopupMenu.window.style.height = "auto";
	
	var vEnd = f_get_element_info("popup_menu");
	oPopupMenu.window.style.height = "0px";
	oPopupMenu.window.style.visibility = "visible";
	
	oPopupMenu.growpages(0, vEnd.height);
};

oPopupMenu.growpages = function(vNow, vEnd)
{
	if(vNow < vEnd)
	{
		oPopupMenu.window.style.height = (vNow + 30) + "px";
		setTimeout('oPopupMenu.growpages('+(vNow + 30)+', '+vEnd+');',1);
	}
	else
	{
		oPopupMenu.window.style.height = "auto";
	}
};

oPopupMenu.hidepages = function()
{
	if(oPopupMenu.loaded)
	{
		clearTimeout(oPopupMenu.closetimer);
		f_stop_track_mouse();
		oPopupMenu.closetimerround = false;
		oPopupMenu.window.style.visibility = "hidden";
		f_show_selects();
	}
};

function f_clip_art()
{
	var vDataString = "module=admin_menu&area=main_page&action=get_clip_art_dirs&query_key="+vQueryKey;
	var vReturnFunction = "f_clip_art_build()";
	f_ajax_transport(vDataString, vReturnFunction);
}

function f_clip_art_build()
{
	var vClipArtDirs = f_convert_data_string_to_array(http_request.responseText.split("[!S]")[1]);
	var vCategories = ['M_V',['HTML','<div style="height:35px;width:160px"><img class="medium-icon" src="'+vCore+'/images/icons/list_view_medium.png" > Select A Category</div><hr>']];
	
	for(var i=0;i<vClipArtDirs.length;i++)
	{
		vCategories.push(['IL',vClipArtDirs[i][0],'','/images/icon_pack/bullet_black.png','','f_get_clip_art(\''+vClipArtDirs[i][0]+'\');return false;']);
	}
	
	var vLayout = 
		[
			["2_C",
				['M_V',
					vCategories
				],
				['M_V',
					['HTML','<div style="height:35px;" id="clip_menu">&nbsp;</div><hr>'],
					['HTML','<div id="clip_list" style="height:450px;width:450px;">Click a category on the left to display clip art.</div>']
				]
			]
		];
	f_write_popup(f_gen_content_box('Primary','Clip Art',f_popup_close_link(),f_gen_layout(vLayout),'',''));
	f_show_popup();
}

function f_get_clip_art(vDir)
{
	var vData = "dir[!F]"+vDir+"[!F][!R]";
	
	var vDataString = "module=admin_menu&area=main_page&action=get_clip_art&query_key="+vQueryKey+"&data="+vData;
	var vReturnFunction = 'f_clip_art_display(\''+vDir+'\',0)';
	f_ajax_transport(vDataString, vReturnFunction);
}

function f_clip_art_display(vDir, vLoc)
{
	var vClipArt = f_convert_data_string_to_array(http_request.responseText.split("[!S]")[1]);
	
	var vTempHTML = '\
	<table><tr>\
	';
	for(var i=vLoc;i<(vLoc+9);i++)
	{
		if(i >= vClipArt.length)
		{
			break;
		}
		vTempHTML += '<td><a href="" onclick="f_clip_art_done(\''+vDir+'\', \''+vClipArt[i][0]+'\');return false;"><img style="border-width:0px;" src="/images/clip_art_pack/'+vDir+'/'+vClipArt[i][0]+'" /></a></td>';
		if(!((i - 2)%3))
		{
			vTempHTML += '</tr><tr>';
		}
	}
	vTempHTML += '</tr></table>';
	document.getElementById("clip_list").innerHTML = vTempHTML;
	var vLayout = 
		[
			['M_H',
				['HTML','\
				<a href="#" '+((vLoc >= 9)?'onClick="f_clip_art_display(\''+vDir+'\','+(vLoc - 9)+');return false;"><img class="medium-icon" src="'+vCore+'/images/icons/menu_back_medium.png" ':'onClick="return false;"><img class="medium-icon" src="'+vCore+'/images/icons/menu_nothing_medium.png" ')+'/></a>\
				<a href="#" '+((vLoc + 10 <= vClipArt.length)?'onClick="f_clip_art_display(\''+vDir+'\','+(vLoc + 9)+');return false;"><img class="medium-icon" src="'+vCore+'/images/icons/menu_forward_medium.png" ':'onClick="return false;"><img class="medium-icon" src="'+vCore+'/images/icons/menu_nothing_medium.png" ')+'/></a>\
				Displaying Images <strong>' + (vLoc + 1) + ' - ' + (((vLoc + 10 <= vClipArt.length)?vLoc + 9:vClipArt.length)) + '</strong> out of <strong>' + vClipArt.length + '</strong>']
			]
		];
	document.getElementById("clip_menu").innerHTML = f_gen_layout(vLayout);
}


function f_clip_art_done(vDir, vIcon)
{
	editor.insertHtml('<img align="middle" style="border-width:0px;" src="http://'+vSite+'.'+vSub+'.'+vEnd+'/images/clip_art_pack/'+vDir+'/'+vIcon+'" />');
	f_hide_popup();
}

var vSelectedGroups = new Array();
var vGroupList = "";
var vGroupEditId = "";

function f_group_select(vCurrentGroups, vID)
{
	vGroupEditId = vID;
	if(vCurrentGroups.length > 0)
	{
		vSelectedGroups = vCurrentGroups.split("_");
		vSelectedGroups.pop();
		
	}
	else
	{
		vSelectedGroups = new Array();
	}
	var vDataString = "module=admin_menu&area=main_page&action=get_groups&query_key="+vQueryKey;
	var vReturnFunction = "f_group_prep()";
	f_ajax_transport(vDataString, vReturnFunction);
}

function f_group_prep()
{
	vGroupList = f_convert_data_string_to_array(http_request.responseText.split("[!S]")[1]);
	f_group_select_display();
}

function f_group_select_display()
{
	var vTempHTML = '\
	<table>\
		<tr>\
			<td style="height:100px;text-align:top;vertical-align:top;width:200px;">\
				Groups<hr>\
				';
				for(var i=0; i<vGroupList.length;i++)
				{
					if(!f_check_used_group(vGroupList[i][2]))
					{
						vTempHTML += '<a href="" onclick="f_group_add('+vGroupList[i][2]+');return false;">'+vGroupList[i][0]+'</a><br/>';
					}
				}
				vTempHTML += '\
			</td>\
			<td style="height:100px;text-align:top;vertical-align:top;width:200px;">\
				Selected Groups<hr>\
				';
				for(var i=0; i<vSelectedGroups.length;i++)
				{
					vTempHTML += '<a href="" onclick="f_group_remove('+vSelectedGroups[i]+');return false;">'+f_lookup_group(vSelectedGroups[i])+'</a><br/>';
				}
				vTempHTML += '\
			</td>\
		</tr>\
	</table>\
	';
	var vLayout = 
		[
			["M_V",
				['2_O',
					['B','Done','menu_save_medium','','f_group_done();'],
					['B','Cancel','menu_cancel_medium','','f_group_cancel();']
				],
				["HTML",vTempHTML]
			]
		];
	f_write_popup(f_gen_content_box("Primary","Group Select",f_popup_close_link(),f_gen_layout(vLayout),"",""));
	f_show_popup();
}

function f_group_add(vID)
{
	vSelectedGroups.push(vID);
	f_group_select_display();
}

function f_group_remove(vID)
{
	for(var i=0;i<vSelectedGroups.length;i++)
	{
		if(vSelectedGroups[i] == vID)
		{
			vSelectedGroups.splice(i,1);
			break;
		}
	}
	f_group_select_display();
}

function f_group_done()
{
	var vTempData = "";
	for(var i=0;i<vSelectedGroups.length;i++)
	{
		vTempData += vSelectedGroups[i] + "_";
	}
	document.getElementById(vGroupEditId).className = vTempData;
	f_hide_popup();
}

function f_group_cancel()
{
	f_hide_popup();
}

function f_lookup_group(vID)
{
	for(var i=0; i<vGroupList.length; i++)
	{
		if(vID == vGroupList[i][2])
		{
			return vGroupList[i][0];
		}
	}
	return "";
}

function f_check_used_group(vID)
{
	for(var i=0; i<vSelectedGroups.length; i++)
	{
		if(vID == vSelectedGroups[i])
		{
			return true;
		}
	}
	return false;
}

var vIconEditId = "";

function f_icon_select(vID)
{
	vIconEditId = vID;
	var vDataString = "module=admin_menu&area=main_page&action=get_icons&query_key="+vQueryKey;
	var vReturnFunction = "f_icon_select_display()";
	f_ajax_transport(vDataString, vReturnFunction);
}

function f_icon_select_display()
{
	var vIconList = f_convert_data_string_to_array(http_request.responseText.split("[!S]")[1]);
	
	var vTempHTML = '\
	<table>';
	var vTDCount = 0;
	for(var i=0;i<vIconList.length;i++)
	{
		vTempHTML += '<tr>';
		
		for(var j=0;i<vIconList.length;i++,j++)
		{
			vTempHTML += '<td style="padding:5px;"><a href="" onClick="f_icon_done(\''+vIconList[i][0]+'\');return false;"><img class="small-icon" width="16" height="16" src="/images/icon_pack/'+vIconList[i][0]+'"/></a></td>';
			if(j >= 17)
			{
				break;
			}
		}
		vTempHTML += '</tr>';
	}
	vTempHTML += '\
	</table>\
	';
	
	var vLayout = 
		[
			["M_V",
				["HTML",vTempHTML]
			]
		];
	f_write_popup(f_gen_content_box('Primary','Icons',f_popup_close_link(),f_gen_layout(vLayout),'',''));
	f_show_popup();
}

function f_icon_done(vIcon)
{
	document.getElementById(vIconEditId).className = vIcon;
	document.getElementById(vIconEditId).innerHTML = 	'<img class="small-icon" style="position:relative;top:3px;" src="/images/icon_pack/'+vIcon+'" />&nbsp;&nbsp;-&nbsp;&nbsp;Select Icon';
	f_hide_popup();
}

var vFileDirID = new Array();
var vFileDirName = new Array();

function f_file_select()
{
	var vData = "id[!F]"+f_file_dir_loc()+"[!F][!R]";
	
	var vDataString = "module=files&area=main_page&action=get_folder&query_key="+vQueryKey+"&data="+vData;
	var vReturnFunction = "f_file_select_complete()";
	f_ajax_transport(vDataString, vReturnFunction);
}

function f_file_select_complete()
{
	var vDataList = f_convert_data_string_to_array(http_request.responseText.split("[!S]")[1]);
	if(vDataList.length > 0)
	{
		var vLayout = 
			[
				["ST"]
			];
		f_write_popup(f_gen_content_box('Primary',f_file_navigation(),f_popup_close_link(),f_gen_layout(vLayout),'',''));
		var vName = "files_popup_select";
		var vDefaults = ["20", 5, "super_table",false];
		
		var vHeaders = ["Name","Description","Date Added","Size","Type","ID"];
		var vHeaderFieldsOnOff = [true,true,true,true,false,false];
		var vHeaderAlignment = ["left","left","left","center","center","center"];
		var vHeaderWidths = ["210px","210px","120px","50px","50px","50px"];
		
		var vDataTypes = ["file_select_link","text","localdate","file_size","file_type","text"];
		var vDataAlignment = ["left","left","left","center","center","center"];
		var vDataPre = ["","","","","",""];
		var vDataPost = ["","","","","",""];
		
		var vOtherFunctions = []; 
		
		f_build_super_table(vName, vDefaults, vHeaders, vHeaderFieldsOnOff, vHeaderAlignment, vHeaderWidths, vDataList, vDataTypes, vDataAlignment, vDataPre, vDataPost, vOtherFunctions);
		mt.builddisplay();
		
		f_show_popup();
	}
	else
	{
		var vLayout = 
			[
				['HTML', '<i>No Files Avaliable.</i>']
			];
		f_write_popup(f_gen_content_box('Primary',f_file_navigation(),f_popup_close_link(),f_gen_layout(vLayout),'',''));
		f_show_popup();
	}
}

function f_file_dir_loc()
{
	if(vFileDirID.length == 0)
	{
		return "";
	}
	else
	{
		return vFileDirID[vFileDirID.length - 1];
	}
}

function f_file_move(vDirection, vAmount, vID, vName)
{
	if(vDirection == 'up')
	{
		vFileDirID.push(vID);
		vFileDirName.push(vName);
	}
	else
	{
		for(var i=0; i<vAmount; i++)
		{
			vFileDirID.pop();
			vFileDirName.pop();
		}
	}
	f_file_select();
}

function f_file_navigation()
{
	var vTempHTML = "";
	if(vFileDirID.length == 0)
	{
		vTempHTML += '<span class="path-link">Files / </span>';
	}
	else
	{
		vTempHTML += '<a href="" class="path-link" onclick="f_file_move(\'down\',\''+vFileDirID.length+'\',\'\',\'\');return false;"><img src="/'+vCore+'/images/icons/menu_new_folder_medium.png" />Files / </a>';
		for(var i=0;i<vFileDirID.length;i++)
		{
			if(i == (vFileDirID.length - 1))
			{
				vTempHTML += '<span class="path-link" style="font-size:18px;">'+f_convert_special_to_safe(vFileDirName[i])+' / </span>';
			}
			else
			{
				vTempHTML += '<a href="" class="path-link" onclick="f_file_move(\'down\',\''+(vFileDirID.length - 1 - i)+'\',\'\',\'\');return false;"><img src="/'+vCore+'/images/icons/menu_new_folder_medium.png" />'+f_convert_special_to_safe(vFileDirName[i])+' / </a>';
			}
		}
	}
	return vTempHTML;
}

function f_file_done(vFile, vFileName)
{
	var vLastFour = vFileName.substring(vFileName.lastIndexOf('.') + 1, vFileName.length).toLowerCase();
	if(vLastFour == "bmp" || vLastFour == "gif" || vLastFour == "jpg" || vLastFour == "png")
	{
		editor.insertHtml('<img align="middle" style="border-width:0px;" src="http://'+vSite+'.'+vSub+'.'+vEnd+'/file.php?id='+vFile+'" >');
	}
	else
	{
		editor.insertHtml('<a href="http://'+vSite+'.'+vSub+'.'+vEnd+'/file.php?id='+vFile+'">'+f_convert_special_to_safe(vFileName)+'</a>');
	}
	f_hide_popup();
}

var oAdminMenu = new Object();
oAdminMenu.loaded = false;
oAdminMenu.closetimer = "";
oAdminMenu.closetimerround = false;

oAdminMenu.mousedover = function()
{
	if(!oAdminMenu.loaded)
	{
		oAdminMenu.pagelist = new Array();
		oAdminMenu.target = "module_icon";
		oAdminMenu.window = document.getElementById("admin_menu");
		oAdminMenu.targetelement = document.getElementById(oAdminMenu.target);
		oAdminMenu.targetloc = f_get_element_info(oAdminMenu.target);
		
		oAdminMenu.getpages();
	}
	else if(oAdminMenu.window.style.visibility != "visible")
	{
		oAdminMenu.showpages();
	}
	f_start_track_mouse();
	oAdminMenu.closetimer = setTimeout('oAdminMenu.checkmouse()',100);
};

oAdminMenu.checkmouse = function()
{
	var vMenuPos = f_get_element_info("admin_menu");
		
	if(vMousePosY < (vMenuPos.top - 70) || vMousePosY > vMenuPos.bottom || vMousePosX < vMenuPos.left || vMousePosX > vMenuPos.right)
	{
		if(oAdminMenu.closetimerround)
		{
			oAdminMenu.hidepages();
		}
		else
		{
			oAdminMenu.closetimerround = true;
			oAdminMenu.closetimer = setTimeout('oAdminMenu.checkmouse()',300);
		}
	}
	else
	{
		oAdminMenu.closetimerround = false;
		oAdminMenu.closetimer = setTimeout('oAdminMenu.checkmouse()',100);
	}
};

oAdminMenu.getpages = function()
{
	var vDataString = "module=admin_menu&area=main_page&action=get_menu_items&query_key="+vQueryKey;
	var vReturnFunction = "oAdminMenu.gotpages()";
	f_ajax_transport(vDataString, vReturnFunction);
};
oAdminMenu.gotpages = function()
{
	oAdminMenu.pagelist = f_convert_data_string_to_array(http_request.responseText.split("[!S]")[1]);
	oAdminMenu.layoutpages();
};
oAdminMenu.layoutpages = function()
{
	oAdminMenu.pagelist = f_convert_data_string_to_array(http_request.responseText.split("[!S]")[1]);
	var vGroup1 = ['M_V'];
	var vGroup2 = ['M_V'];
	var vGroup3 = ['M_V'];
	
	for(var i=0;i<oAdminMenu.pagelist.length;i++)
	{
		var vTheGroup = oAdminMenu.pagelist[i][2].substring(0,1);
		if(vTheGroup == "1")
		{
			vGroup1.push(['IL',oAdminMenu.pagelist[i][1],'','./'+vCore+'/images/icons/main_menu_'+oAdminMenu.pagelist[i][0]+'.png','/index.php?module='+oAdminMenu.pagelist[i][0]+'&level=admin','']);
		}
		else if(vTheGroup == "2")
		{
			vGroup2.push(['IL',oAdminMenu.pagelist[i][1],'','./'+vCore+'/images/icons/main_menu_'+oAdminMenu.pagelist[i][0]+'.png','/index.php?module='+oAdminMenu.pagelist[i][0]+'&level=admin','']);
		}
		else if(vTheGroup == "3")
		{
			vGroup3.push(['IL',oAdminMenu.pagelist[i][1],'','./'+vCore+'/images/icons/main_menu_'+oAdminMenu.pagelist[i][0]+'.png','/index.php?module='+oAdminMenu.pagelist[i][0]+'&level=admin','']);
		}
	}
	
	var vLayout = 
		[
			["3_C",
				["WB","Site Configuration","",vGroup1,"",""],
				["WB","Member Management","",vGroup2,"",""],
				["WB","Content","",vGroup3,"",""]
			]
		];
	
	oAdminMenu.window.innerHTML = f_gen_content_box('Primary','Admin Menu','',f_gen_layout(vLayout),'','')
	
	oAdminMenu.window.style.top = (oAdminMenu.targetloc.bottom + 0) + "px";
	oAdminMenu.window.style.left = (oAdminMenu.targetloc.left - 13) + "px";
	
	oAdminMenu.loaded = true;
	
	oAdminMenu.showpages();
};

oAdminMenu.showpages = function()
{
	f_hide_selects();
	oAdminMenu.window.style.height = "auto";
	
	var vEnd = f_get_element_info("admin_menu");
	oAdminMenu.window.style.height = "0px";
	oAdminMenu.window.style.visibility = "visible";
	
	oAdminMenu.growpages(0, vEnd.height);
};

oAdminMenu.growpages = function(vNow, vEnd)
{
	if(vNow < vEnd)
	{
		oAdminMenu.window.style.height = (vNow + 30) + "px";
		setTimeout('oAdminMenu.growpages('+(vNow + 30)+', '+vEnd+');',1);
	}
	else
	{
		oAdminMenu.window.style.height = "auto";
	}
};

oAdminMenu.hidepages = function()
{
	if(oAdminMenu.loaded)
	{
		clearTimeout(oAdminMenu.closetimer);
		f_stop_track_mouse();
		oAdminMenu.closetimerround = false;
		oAdminMenu.window.style.visibility = "hidden";
		f_show_selects();
	}
};

function f_write_debug(vDebugInfo, vTitle) 
{
	if(!vTitle)
	{
		vTitle = "";
	}
	if(window.top.debugWindow && ! window.top.debugWindow.closed) 
	{
		var vTempDebugInfo = window.top.debugWindow.document.getElementById("debug").innerHTML;
		
		var vTempLength = vDebugInfo.length;
		var vNewDebugInfo = "";
		if(vTempLength > 130 && false)
		{
			vNumberOfBreaks = Math.ceil(vTempLength/130);
			for(i=0; i < vNumberOfBreaks; i++)
			{
				if(i*130 + 130 > vTempLength)
				{
					vNewDebugInfo += vDebugInfo.substring(i*130, vTempLength);
				}
				else
				{
					vNewDebugInfo += vDebugInfo.substring(i*130, (i+1)*130) + "<br/>";
				}
			}
		}
		else
		{
			vNewDebugInfo = vDebugInfo;
		}
		window.top.debugWindow.document.getElementById("debug").innerHTML = '<b>'+vTitle + '</b><br/>' + f_convert_special_to_safe(vNewDebugInfo) + '<br/><br/><br/>' + vTempDebugInfo.substring(0,13000);
	}
}

function f_show_debug()
{
	if(window.top.debugWindow && ! window.top.debugWindow.closed)
	{
		window.top.debugWindow.document.getElementById("debug").innerHTML = "Debug Started";
	}
	else
	{
		try
		{
			window.top.debugWindow =window.open("","Debug","left=0,top=0,width=950,height=600,scrollbars=yes,"+"status=yes,resizable=yes");
			window.top.debugWindow.opener = self;
			window.top.debugWindow.document.open();
			window.top.debugWindow.document.write("<HTML><HEAD><TITLE>"+vSub+" Debug Window</TITLE><style type='text/css'>.row{background-color: #DDDDDD;}.row2{background-color: #DDDDFF;}</style></HEAD><BODY><div id='debug'></div></BODY></HTML>");
			window.top.debugWindow.document.close();
		}
		catch(e)
		{
		}
	}
}

function f_write_debug_array(vArray, vLevel)
{
	var vData = '';
	if(!vLevel)
	{
		vLevel = 1;
	}
	else
	{
		vLevel++;
	}
	for (arraykey in vArray)
	{
		if(typeof(vArray[arraykey]) == 'object')
		{
			vData += '<table><tr><td style="vertical-align:top;padding:0px 5px 5px 0px;"><b>['+ arraykey + ']--></b></td><td style="border-width:1px;border-style:solid;padding:5px;">';
			vData += f_write_debug_array(vArray[arraykey], vLevel);
			vData += '</td></tr></table>';
		}
		else
		{
			vData += "["+arraykey+"] = "+vArray[arraykey]+"<br/>";
		}
	}
	if(vLevel != 1)
	{
		return vData;
	}
	else
	{
		try
		{
			window.top.debugWindow.document.getElementById("debug").innerHTML = '<div style="border-width:1px;padding:5px;border-style:solid;background-color:#eeeeee;">'+vData+'</div><br/><br/>' + window.top.debugWindow.document.getElementById("debug").innerHTML;
		}
		catch(e)
		{
		}
		return true;
	}
}

function f_gen_graph(vT, vTy, vW, vN, vV, vSV, vLA, vLB)
{
	var vNames = vN;
	var vValues = vV;
	if(vNames.length != vValues.length)
	{
		return "Data does not match a graphable format.";
	}
	vSecondCheck = true;
	if(vV.length != vSV.length)
	{
		vSecondCheck = false;
	}
	if(vSecondCheck)
	{
		vTotal = 0;
		for(i=0;i<vSV.length;i++)
		{
			vTotal = vTotal + vSV[i];
		}
		if(vTotal == 0)
		{
			vSecondCheck = false;
		}
	}
	var vSecondaryValues = vSV;
	var vBiggest = 0;
	for(i=0; i < vValues.length; i++)
	{
		vValues[i] = parseFloat(vValues[i]);
		if(vValues[i] > vBiggest)
		{
			vBiggest = vValues[i];
		}
	}
	if(vSecondCheck)
	{
		for(i=0; i < vSecondaryValues.length; i++)
		{
			vSecondaryValues[i] = parseFloat(vSecondaryValues[i]);
			if(vSecondaryValues[i] > vBiggest)
			{
				vBiggest = vSecondaryValues[i];
			}
		}
	}
	var vMultiplier = vW / vBiggest * 0.9;
	vTempHTML = '\
	<table class="graph-table">\
	';
	if(vTy == 'percent')
	{
		for(i=0; i < vNames.length; i++)
		{
			vTempHTML += '\
			<tr>\
				<td>'+vNames[i]+': </td>\
				<td><div style="display: inline; height: 5px; font-size: 9px; border-color: #000000; border-width: 2px; border-style: solid; background-color: #9999ff;">\
				<img src="test.gif" height="0" style="width:'+(vW - 120)/100*vValues[i]+'px;" />&nbsp;</div> '+vValues[i]+'%</div></td>\
			</tr>\
			<div>\
			</div>\
			';
			if(vSecondCheck)
			{
				vTempHTML += '\
				<tr>\
					<td></td>\
					<td><div style="display: inline; height: 5px; font-size: 9px; border-color: #000000; border-width: 2px; border-style: solid; background-color: #ccccff;">\
					<img src="test.gif" height="0" style="width:'+(vW - 120)/100*vSecondaryValues[i]+'px;" />&nbsp;</div> '+vSecondaryValues[i]+'%</div></td>\
				</tr>\
				';
			}
		}
	}
	if(vTy == 'number')
	{
		for(i=0; i < vNames.length; i++)
		{
			vTempHTML += '\
			<tr>\
				<th>'+vNames[i]+'&nbsp;&nbsp;&nbsp;&nbsp;</th>\
				<td nowrap>\
					<table class="graph-table">\
						<tr>\
							<td class="graph-p-l"></td>\
							<td class="graph-p-c" style="width:'+Math.round(vValues[i]*vMultiplier)+'px;"></td>\
							<td class="graph-p-r"></td>\
							<td class="graph-p-t">'+vValues[i]+'\</td>\
						</tr>\
					</table>\
				</td>\
			</tr>\
			';
			if(vSecondCheck)
			{
			vTempHTML += '\
				<tr>\
					<th nowrap></th>\
					<td nowrap>\
						<table class="graph-table">\
							<tr>\
								<td class="graph-s-l"></td>\
								<td class="graph-s-c" style="width:'+Math.round(vSecondaryValues[i]*vMultiplier)+'px;"></td>\
								<td class="graph-s-r"></td>\
								<td class="graph-s-t">'+vSecondaryValues[i]+'\</td>\
							</tr>\
						</table>\
					</td>\
				</tr>\
			';
			}
		}
	}
	vTempHTML += '</table>';
	if(vLA || vLB)
	{
		vTempHTML += '\
		<br/>\
		<div style="text-align:center;">\
		';
		if(vLA)
		{
			vTempHTML += '\
			<table class="graph-table">\
				<tr>\
					<td class="graph-p-l"></td>\
					<td class="graph-p-c" style="width:1px;"></td>\
					<td class="graph-p-r"></td>\
					<td class="graph-p-t">'+vLA+'\</td>\
				</tr>\
			</table>\
			';
		}
		if(vLA && vLB && vSecondCheck)
		{
			vTempHTML += '\
			&nbsp;&nbsp;&nbsp;&nbsp;\
			';
		}
		if(vLB && vSecondCheck)
		{
			vTempHTML += '\
			<table class="graph-table">\
				<tr>\
					<td class="graph-s-l"></td>\
					<td class="graph-s-c" style="width:1px;"></td>\
					<td class="graph-s-r"></td>\
					<td class="graph-s-t">'+vLB+'\</td>\
				</tr>\
			</table>\
			';
		}
		vTempHTML += '\
		</div>\
		';
	}
	return vTempHTML;
}

function f_pre_pass(vPass)
{
	var vInitial = MD5(vPass);
	if(vDebugOn)
	{
		f_write_debug(vInitial, "Key");
	}
	return vInitial;
}

function f_prep_pass(vPass)
{
	var vInitial = MD5(vPass);
	if(vDebugOn)
	{
		f_write_debug(vInitial, "Key");
	}
	var vSalted = MD5(vInitial + vQueryKey);
	return vSalted;
}

function array(n) {
  for(var i=0;i<n;i++) this[i]=0;
  this.length=n;
}

function integer(n) { return n%(0xffffffff+1); }

function shr(a,b) {
  a=integer(a);
  b=integer(b);
  if (a-0x80000000>=0) {
    a=a%0x80000000;
    a>>=b;
    a+=0x40000000>>(b-1);
  } else
    a>>=b;
  return a;
}

function shl1(a) {
  a=a%0x80000000;
  if (a&0x40000000==0x40000000)
  {
    a-=0x40000000;
    a*=2;
    a+=0x80000000;
  } else
    a*=2;
  return a;
}

function shl(a,b) {
  a=integer(a);
  b=integer(b);
  for (var i=0;i<b;i++) a=shl1(a);
  return a;
}

function and(a,b) {
  a=integer(a);
  b=integer(b);
  var t1=(a-0x80000000);
  var t2=(b-0x80000000);
  if (t1>=0)
    if (t2>=0)
      return ((t1&t2)+0x80000000);
    else
      return (t1&b);
  else
    if (t2>=0)
      return (a&t2);
    else
      return (a&b);
}

function or(a,b) {
  a=integer(a);
  b=integer(b);
  var t1=(a-0x80000000);
  var t2=(b-0x80000000);
  if (t1>=0)
    if (t2>=0)
      return ((t1|t2)+0x80000000);
    else
      return ((t1|b)+0x80000000);
  else
    if (t2>=0)
      return ((a|t2)+0x80000000);
    else
      return (a|b);
}

function xor(a,b) {
  a=integer(a);
  b=integer(b);
  var t1=(a-0x80000000);
  var t2=(b-0x80000000);
  if (t1>=0)
    if (t2>=0)
      return (t1^t2);
    else
      return ((t1^b)+0x80000000);
  else
    if (t2>=0)
      return ((a^t2)+0x80000000);
    else
      return (a^b);
}

function not(a) {
  a=integer(a);
  return (0xffffffff-a);
}

    var state = new array(4);
    var count = new array(2);
	count[0] = 0;
	count[1] = 0;
    var buffer = new array(64);
    var transformBuffer = new array(16);
    var digestBits = new array(16);

    var S11 = 7;
    var S12 = 12;
    var S13 = 17;
    var S14 = 22;
    var S21 = 5;
    var S22 = 9;
    var S23 = 14;
    var S24 = 20;
    var S31 = 4;
    var S32 = 11;
    var S33 = 16;
    var S34 = 23;
    var S41 = 6;
    var S42 = 10;
    var S43 = 15;
    var S44 = 21;

    function F(x,y,z) {
	return or(and(x,y),and(not(x),z));
    }

    function G(x,y,z) {
	return or(and(x,z),and(y,not(z)));
    }

    function H(x,y,z) {
	return xor(xor(x,y),z);
    }

    function I(x,y,z) {
	return xor(y ,or(x , not(z)));
    }

    function rotateLeft(a,n) {
	return or(shl(a, n),(shr(a,(32 - n))));
    }

    function FF(a,b,c,d,x,s,ac) {
        a = a+F(b, c, d) + x + ac;
	a = rotateLeft(a, s);
	a = a+b;
	return a;
    }

    function GG(a,b,c,d,x,s,ac) {
	a = a+G(b, c, d) +x + ac;
	a = rotateLeft(a, s);
	a = a+b;
	return a;
    }

    function HH(a,b,c,d,x,s,ac) {
	a = a+H(b, c, d) + x + ac;
	a = rotateLeft(a, s);
	a = a+b;
	return a;
    }

    function II(a,b,c,d,x,s,ac) {
	a = a+I(b, c, d) + x + ac;
	a = rotateLeft(a, s);
	a = a+b;
	return a;
    }

    function transform(buf,offset) {
	var a=0, b=0, c=0, d=0;
	var x = transformBuffer;

	a = state[0];
	b = state[1];
	c = state[2];
	d = state[3];

	for (var i = 0; i < 16; i++) {
	    x[i] = and(buf[i*4+offset],0xff);
	    for (var j = 1; j < 4; j++) {
		x[i]+=shl(and(buf[i*4+j+offset] ,0xff), j * 8);
	    }
	}

	/* Round 1 */
	a = FF ( a, b, c, d, x[ 0], S11, 0xd76aa478); /* 1 */
	d = FF ( d, a, b, c, x[ 1], S12, 0xe8c7b756); /* 2 */
	c = FF ( c, d, a, b, x[ 2], S13, 0x242070db); /* 3 */
	b = FF ( b, c, d, a, x[ 3], S14, 0xc1bdceee); /* 4 */
	a = FF ( a, b, c, d, x[ 4], S11, 0xf57c0faf); /* 5 */
	d = FF ( d, a, b, c, x[ 5], S12, 0x4787c62a); /* 6 */
	c = FF ( c, d, a, b, x[ 6], S13, 0xa8304613); /* 7 */
	b = FF ( b, c, d, a, x[ 7], S14, 0xfd469501); /* 8 */
	a = FF ( a, b, c, d, x[ 8], S11, 0x698098d8); /* 9 */
	d = FF ( d, a, b, c, x[ 9], S12, 0x8b44f7af); /* 10 */
	c = FF ( c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */
	b = FF ( b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */
	a = FF ( a, b, c, d, x[12], S11, 0x6b901122); /* 13 */
	d = FF ( d, a, b, c, x[13], S12, 0xfd987193); /* 14 */
	c = FF ( c, d, a, b, x[14], S13, 0xa679438e); /* 15 */
	b = FF ( b, c, d, a, x[15], S14, 0x49b40821); /* 16 */

	/* Round 2 */
	a = GG ( a, b, c, d, x[ 1], S21, 0xf61e2562); /* 17 */
	d = GG ( d, a, b, c, x[ 6], S22, 0xc040b340); /* 18 */
	c = GG ( c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */
	b = GG ( b, c, d, a, x[ 0], S24, 0xe9b6c7aa); /* 20 */
	a = GG ( a, b, c, d, x[ 5], S21, 0xd62f105d); /* 21 */
	d = GG ( d, a, b, c, x[10], S22,  0x2441453); /* 22 */
	c = GG ( c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */
	b = GG ( b, c, d, a, x[ 4], S24, 0xe7d3fbc8); /* 24 */
	a = GG ( a, b, c, d, x[ 9], S21, 0x21e1cde6); /* 25 */
	d = GG ( d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */
	c = GG ( c, d, a, b, x[ 3], S23, 0xf4d50d87); /* 27 */
	b = GG ( b, c, d, a, x[ 8], S24, 0x455a14ed); /* 28 */
	a = GG ( a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */
	d = GG ( d, a, b, c, x[ 2], S22, 0xfcefa3f8); /* 30 */
	c = GG ( c, d, a, b, x[ 7], S23, 0x676f02d9); /* 31 */
	b = GG ( b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */

	/* Round 3 */
	a = HH ( a, b, c, d, x[ 5], S31, 0xfffa3942); /* 33 */
	d = HH ( d, a, b, c, x[ 8], S32, 0x8771f681); /* 34 */
	c = HH ( c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */
	b = HH ( b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */
	a = HH ( a, b, c, d, x[ 1], S31, 0xa4beea44); /* 37 */
	d = HH ( d, a, b, c, x[ 4], S32, 0x4bdecfa9); /* 38 */
	c = HH ( c, d, a, b, x[ 7], S33, 0xf6bb4b60); /* 39 */
	b = HH ( b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */
	a = HH ( a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */
	d = HH ( d, a, b, c, x[ 0], S32, 0xeaa127fa); /* 42 */
	c = HH ( c, d, a, b, x[ 3], S33, 0xd4ef3085); /* 43 */
	b = HH ( b, c, d, a, x[ 6], S34,  0x4881d05); /* 44 */
	a = HH ( a, b, c, d, x[ 9], S31, 0xd9d4d039); /* 45 */
	d = HH ( d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */
	c = HH ( c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */
	b = HH ( b, c, d, a, x[ 2], S34, 0xc4ac5665); /* 48 */

	/* Round 4 */
	a = II ( a, b, c, d, x[ 0], S41, 0xf4292244); /* 49 */
	d = II ( d, a, b, c, x[ 7], S42, 0x432aff97); /* 50 */
	c = II ( c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */
	b = II ( b, c, d, a, x[ 5], S44, 0xfc93a039); /* 52 */
	a = II ( a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */
	d = II ( d, a, b, c, x[ 3], S42, 0x8f0ccc92); /* 54 */
	c = II ( c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */
	b = II ( b, c, d, a, x[ 1], S44, 0x85845dd1); /* 56 */
	a = II ( a, b, c, d, x[ 8], S41, 0x6fa87e4f); /* 57 */
	d = II ( d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */
	c = II ( c, d, a, b, x[ 6], S43, 0xa3014314); /* 59 */
	b = II ( b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */
	a = II ( a, b, c, d, x[ 4], S41, 0xf7537e82); /* 61 */
	d = II ( d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */
	c = II ( c, d, a, b, x[ 2], S43, 0x2ad7d2bb); /* 63 */
	b = II ( b, c, d, a, x[ 9], S44, 0xeb86d391); /* 64 */

	state[0] +=a;
	state[1] +=b;
	state[2] +=c;
	state[3] +=d;

    }

    function init() {
	count[0]=count[1] = 0;
	state[0] = 0x67452301;
	state[1] = 0xefcdab89;
	state[2] = 0x98badcfe;
	state[3] = 0x10325476;
	for (var i = 0; i < digestBits.length; i++)
	    digestBits[i] = 0;
    }

    function update(b) {
	var index,i;

	index = and(shr(count[0],3) , 0x3f);
	if (count[0]<0xffffffff-7)
	  count[0] += 8;
        else {
	  count[1]++;
	  count[0]-=0xffffffff+1;
          count[0]+=8;
        }
	buffer[index] = and(b,0xff);
	if (index  >= 63) {
	    transform(buffer, 0);
	}
    }

    function finish() {
	var bits = new array(8);
	var	padding;
	var	i=0, index=0, padLen=0;

	for (i = 0; i < 4; i++) {
	    bits[i] = and(shr(count[0],(i * 8)), 0xff);
	}
        for (i = 0; i < 4; i++) {
	    bits[i+4]=and(shr(count[1],(i * 8)), 0xff);
	}
	index = and(shr(count[0], 3) ,0x3f);
	padLen = (index < 56) ? (56 - index) : (120 - index);
	padding = new array(64);
	padding[0] = 0x80;
        for (i=0;i<padLen;i++)
	  update(padding[i]);
        for (i=0;i<8;i++)
	  update(bits[i]);

	for (i = 0; i < 4; i++) {
	    for (var j = 0; j < 4; j++) {
		digestBits[i*4+j] = and(shr(state[i], (j * 8)) , 0xff);
	    }
	}
    }

function hexa(n) {
 var hexa_h = "0123456789abcdef";
 var hexa_c="";
 var hexa_m=n;
 for (var hexa_i=0;hexa_i<8;hexa_i++) {
   hexa_c=hexa_h.charAt(Math.abs(hexa_m)%16)+hexa_c;
   hexa_m=Math.floor(hexa_m/16);
 }
 return hexa_c;
}


var ascii="01234567890123456789012345678901" +
          " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ"+
          "[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";

function MD5(entree)
{
 var l,s,k,ka,kb,kc,kd;

 init();
 for (k=0;k<entree.length;k++) {
   l=entree.charAt(k);
   update(ascii.lastIndexOf(l));
 }
 finish();
 ka=kb=kc=kd=0;
 for (var i=0;i<4;i++) ka+=shl(digestBits[15-i], (i*8));
 for (i=4;i<8;i++) kb+=shl(digestBits[15-i], ((i-4)*8));
 for (i=8;i<12;i++) kc+=shl(digestBits[15-i], ((i-8)*8));
 for (i=12;i<16;i++) kd+=shl(digestBits[15-i], ((i-12)*8));
 s=hexa(kd)+hexa(kc)+hexa(kb)+hexa(ka);
 return s;
}

var oMiniCal;
function f_mini_cal_create(vCurrentDate, vID)
{
	oMiniCal = new Object();
	oMiniCal.today = new Date();
	oMiniCal.monthstart = new Date();
	oMiniCal.monthend = new Date();
	oMiniCal.displaystart = new Date();
	oMiniCal.displayend = new Date();
	oMiniCal.displaydate = new Date();
	oMiniCal.selecteddate = new Date();
	
	oMiniCal.theid = vID;
	
	oMiniCal.setdatelimits = function()
	{
		oMiniCal.monthstart.setTime(oMiniCal.getmonthstart());
		oMiniCal.monthend.setTime(oMiniCal.getmonthend());
		oMiniCal.displaystart.setTime(oMiniCal.monthstart.getTime() - (oMiniCal.monthstart.getUTCDay() * 86400000));
		oMiniCal.displayend.setTime(oMiniCal.displaystart.getTime() + (86400000 * 35) - 1000);
	};
	
	oMiniCal.nextmonth = function()
	{
		oMiniCal.displaydate.setUTCMonth(oMiniCal.displaydate.getUTCMonth() + 1);
		oMiniCal.setdatelimits();
		oMiniCal.makedisplay();
	};
	
	oMiniCal.previousmonth = function()
	{
		oMiniCal.displaydate.setUTCMonth(oMiniCal.displaydate.getUTCMonth() - 1);
		oMiniCal.setdatelimits();
		oMiniCal.makedisplay();
	};
	
	oMiniCal.getmonthstart = function()
	{
		var vMS = new Date();
		vMS.setTime(oMiniCal.displaydate.getTime());
		vMS.setUTCDate(1);
		vMS.setUTCHours(0);
		vMS.setUTCMinutes(0);
		vMS.setUTCSeconds(0);
		vMS.setUTCMilliseconds(0);
		return vMS.getTime();
	};
	
	oMiniCal.getmonthend = function()
	{
		var vME = new Date();
		vME.setTime(oMiniCal.displaydate.getTime());
		vME.setUTCDate(1);
		vME.setUTCHours(0);
		vME.setUTCMinutes(0);
		vME.setUTCSeconds(0);
		vME.setUTCMilliseconds(0);
		vME.setUTCMonth(vME.getUTCMonth() + 1);
		vME.setTime(vME.getTime() - 1000);
		return vME.getTime();
	};
	
	oMiniCal.makedisplay = function()
	{
		var vDayCounter = new Date();
		vDayCounter.setTime(oMiniCal.displaystart.getTime() + 18000000);
		var vNavigation = f_gen_page_list('oMiniCal.previousmonth();return false;','oMiniCal.nextmonth();',vMonthNames[oMiniCal.displaydate.getUTCMonth()] + ' - ' + oMiniCal.displaydate.getUTCFullYear());
		var vTempHTML = '\
		<table class="mini-cal-table">\
			<tr>\
		';
				for(var j=0; j<7;j++)
				{
					vTempHTML += '<th>'+vWeekDayAbbreviations[j]+'</th>';
					vBoxId++;
				}
		vTempHTML += '\
			</tr>\
		';
		var vBoxId = 0;
		for(var i=0; i<6;i++)
		{
			vTempHTML += '<tr>';
			for(var j=0; j<7;j++)
			{
				vTempHTML += '<td><button ';
				if(vDayCounter.getUTCFullYear() == oMiniCal.selecteddate.getUTCFullYear() && vDayCounter.getUTCMonth() == oMiniCal.selecteddate.getUTCMonth() && vDayCounter.getUTCDate() == oMiniCal.selecteddate.getUTCDate())
				{
					vTempHTML += 'style="background-color:red;width:25px;" ';
				}
				else if(vDayCounter.getUTCMonth() != oMiniCal.monthstart.getUTCMonth())
				{
					vTempHTML += 'style="background-color:grey;width:25px;" ';
				}
				else
				{
					vTempHTML += 'style="background-color:white;width:25px;" ';
				}
				vTempHTML +='onclick="oMiniCal.selecteddate.setUTCFullYear('+vDayCounter.getUTCFullYear()+','+vDayCounter.getUTCMonth()+','+vDayCounter.getUTCDate()+');oMiniCal.makedisplay()">'+vDayCounter.getUTCDate()+'</button></td>';
				vDayCounter.setTime(vDayCounter.getTime() + 86400000);
				vBoxId++;
			}
			vTempHTML += '</tr>';
		}
		vTempHTML += '\
			<tr>\
				<td colspan="7" style="text-align:center">\
					Hour: '+f_gen_input(['select','','','','','',oMiniCal.selecteddate.getUTCHours(),'',v24HourValues,v24HourOptions,false,'oMiniCal.selecteddate.setUTCHours(this.value)','','','',false,'','',false])+'\
					&nbsp;&nbsp;&nbsp;&nbsp;\
					Minute: '+f_gen_input(['select','','','','','',oMiniCal.selecteddate.getUTCMinutes(),'',vMinOptions,vMinOptions,false,'oMiniCal.selecteddate.setUTCMinutes(this.value)','','','',false,'','',false])+'\
				</td>\
			</tr>\
		';
		vTempHTML += '</table>';
		var vLayout = 
		[
			["M_V",
				['2_O',
					['B','Done','menu_save_medium','','oMiniCal.complete();'],
					['B','Cancel','menu_cancel_medium','','oMiniCal.cancel();']
				],
				["HTML",vNavigation],
				["HTML",vTempHTML]
			]
		];
		f_write_mini_cal(f_gen_content_box("Primary","Date Select",'',f_gen_layout(vLayout),"",""));
	};
	
	oMiniCal.complete = function()
	{
		var vTarget = document.getElementById(oMiniCal.theid);
		oMiniCal.selecteddate.setUTCSeconds(0);
		oMiniCal.selecteddate.setUTCMilliseconds(0);
		
		
		vTarget.className = oMiniCal.selecteddate.getTime();
		
		
		vTarget.innerHTML = f_convert_time_stamp_to_date(oMiniCal.selecteddate.getTime());
		oMiniCal.hide();
	};
	
	oMiniCal.cancel = function()
	{
		oMiniCal.hide();
	};
	
	oMiniCal.show = function()
	{
		f_jump_to_center("mini_cal");
		document.getElementById("mini_cal").style.visibility = "visible";
	};
	
	oMiniCal.hide = function()
	{
		document.getElementById("mini_cal").style.visibility = "hidden";
	};
	
	if(vCurrentDate)
	{
		oMiniCal.displaydate.setTime(vCurrentDate);
		oMiniCal.selecteddate.setTime(vCurrentDate);
	}
	
	oMiniCal.setdatelimits();
	oMiniCal.displaydate.setTime(oMiniCal.monthstart.getTime());
	oMiniCal.makedisplay();
	oMiniCal.show();
}

function f_example_init()
{
	vSt = new Array();
	vSt.data = f_convert_data_string_to_array(http_request.responseText.split("[!S]")[1]);
	vSt.name = "test_table";//Used for cookies;
	vSt.target = "container_div";//Target Div;
	vSt.width = "100%";//Overall width;
	vSt.dpp = 10;//Display per page, number or all;
	vSt.nav = true;//Show navigation;
	vSt.search = true;//Search on off;
	vSt.select = false;//Record select on off;
	vSt.dispop = true;//Display options on off;
	vSt.idloc = 'auto';//The location of the records ID, leave auto or specify number.
	vSt.norecmsg = 'There are no records to display.';//No records message.
	vSt.navmsg = 'Displaying Records';//Navigation text.
	vSt.fields = 
		[
			['header_text',data_array_position_number,'data_type','display_yes_no_always_never','sort_type_text_number_off', 'search_type_text_number_date_size_etc','data_type','alignment_left_center_right','width_percent%',nowrap_true_false,make_safe_true_false, limit_length_number_or_zero,'pre_data','post_data']
		];
	vSt.functions = 
		[
			['header_text','icon_name','line_text','function_call','percend_width%']
		];
	f_init_st(vSt);
}


function f_init_st(vWhich)
{
	if(vWhich.idloc == 'auto')
	{
		vWhich.idloc = vWhich.fields.length - 1;
	}
	if(!vWhich.data[0])
	{
		document.getElementById(vWhich.target).innerHTML = "<i>"+vWhich.norecmsg+"</i>";
		return;
	}
	
	for(var i=0;i<vWhich.data.length;i++)
	{
		vWhich.data[i].push(true);
	}
	vWhich.disploc = vWhich.data[0].length - 1;
	
	if(vWhich.select)
	{
		for(var i=0;i<vdata.length;i++)
		{
			vWhich.data[i].push(false);
		}
		vWhich.selectloc = vWhich.data[0].length - 1;
	}
	
	vWhich.dispstart = 0;
	
	f_gen_st(vWhich);
}

function f_gen_st(vWhich)
{
	var vTableHTML = '<table style="width:'+vWhich.width+';"><tr><td>'+f_gen_st_nav(vWhich)+'</td><td>'+f_gen_st_search(vWhich)+f_gen_st_dispop(vWhich)+'</td></tr><tr><td colspan=2>'+f_gen_st_table(vWhich)+'</td></tr></table>';
	document.getElementById(vWhich.target).innerHTML = vTableHTML;
}

function f_gen_st_nav(vWhich)
{
	var vStart = false;
	var vEnd = false;
	var vTotal = false;
	for(var i=0;i<vWhich.data.length;i++)
	{
		if(false)
		{
			
		}
	}
}


function f_build_super_table(vName, vDefaults, vHeaders, vHeaderFieldsOnOff, vHeaderAlignment, vHeaderWidths, vDataArray, vDataTypes, vDataAlignment, vDataPre, vDataPost, vOtherFunctions)
{
	mt = new Object();
	mt.name = vName;
	mt.defaults = vDefaults;
	mt.headers = vHeaders;
	mt.headeronoff = vHeaderFieldsOnOff;
	mt.navigation = new Object();
	mt.navigation.start = 0;
	mt.navigation.displaytotal = mt.defaults[0];
	var vCookieHeaders = f_read_cookie(mt.name+'_h');
	if(vCookieHeaders != null)
	{
		vCookieHeaders = vCookieHeaders.split("_");
		if(vCookieHeaders.length == mt.headeronoff.length + 1)
		{
			for(var i=0;i<vCookieHeaders.length - 1;i++)
			{
				if(vCookieHeaders[i] == 'Y')
				{
					mt.headeronoff[i] = true;
				}
				else
				{
					mt.headeronoff[i] = false;
				}
			}
			mt.navigation.displaytotal = vCookieHeaders[vCookieHeaders.length - 1];
		}
	}
	mt.headeralign = vHeaderAlignment;
	mt.headerwidth = vHeaderWidths;
	mt.dataarray = vDataArray;
	mt.datatype = vDataTypes;
	mt.dataalign = vDataAlignment;
	mt.datapre = vDataPre;
	mt.datapost = vDataPost;
	mt.otherfunctions = vOtherFunctions;
	if(!mt.dataarray[0])
	{
		document.getElementById(mt.defaults[2]).innerHTML = "<i>No records to display</i>";
		mt.builddisplay = function()
		{
			
		};
		return;
	}
	for(var i=0; i<mt.dataarray.length;i++)
	{
		mt.dataarray[i].push(true,false);
	}
	mt.displayloc = mt.dataarray[0].length - 2;
	mt.selectloc = mt.dataarray[0].length - 1;
	// mt.navigation = new Object();
	// mt.navigation.start = 0;
	// mt.navigation.displaytotal = mt.defaults[0];
	mt.idloc = mt.defaults[1];
	mt.useselect = mt.defaults[3];
	
	mt.navigation.totaldisplayedrecords = function()
	{
		var vTotalOn = 0;
		for(var i=0;i<mt.dataarray.length;i++)
		{
			if(mt.dataarray[i][mt.displayloc])
			{
				vTotalOn++;
			}
		}
		return vTotalOn;
	};
	mt.navigation.startnumber = function()
	{
		var vCount = 0;
		for(var i=0; i < mt.navigation.start;i++)
		{
			if(mt.dataarray[i][mt.displayloc])
			{
				vCount++;
			}
		}
		return vCount;
	};
	mt.navigation.endnumber = function()
	{
		var vCount = 0;
		for(var i=mt.navigation.start; i<mt.dataarray.length;i++)
		{
			if(mt.dataarray[i][mt.displayloc])
			{
				vCount++;
			}
			if(vCount >= mt.navigation.displaytotal)
			{
				break;
			}
		}
		return vCount;
	};
	mt.navigation.generate = function()
	{
		var vLayout = 
			[
				['2_O',
					['HTML','<a href="" onClick="mt.navigation.previouspage();return false;"><img class="medium-icon" src="'+vCore+'/images/icons/menu_'+((mt.navigation.startnumber() != 0)?'back':'nothing')+'_medium.png"/></a>&nbsp;&nbsp;&nbsp;<a href="" onClick="mt.navigation.nextpage();return false;"><img class="medium-icon" src="'+vCore+'/images/icons/menu_'+((mt.navigation.endnumber() + mt.navigation.startnumber() != mt.navigation.totaldisplayedrecords())?'forward':'nothing')+'_medium.png"/></a> Displaying Records <strong>' + (mt.navigation.startnumber() + 1) + ' - ' + (mt.navigation.endnumber() + mt.navigation.startnumber()) + '</strong> out of <strong>' + mt.navigation.totaldisplayedrecords() + '</strong>'],
					['HTML','<a class="module-link" href="" onClick="mt.search.display();return false;"><img class="small-icon" src="'+vCore+'/images/icons/menu_search.png" /> Search</a>&nbsp;&nbsp;<a class="module-link" href="" onClick="mt.search.clearsearch();return false;"><img class="small-icon" src="'+vCore+'/images/icons/menu_search_clear.png" /> Clear Search</a>&nbsp;&nbsp;<a class="module-link" href="" onClick="mt.displayoptions.display();return false;"><img class="small-icon" src="'+vCore+'/images/icons/menu_display_options.png" /> Display Options</a>']
				]
			];
		return f_gen_layout(vLayout);
	};
	
	mt.navigation.previouspage = function()
	{
		var vPreviousNum = false;
		var vFound = 0;
		for(var i=mt.navigation.start; i>=0;i--)
		{
			if(mt.dataarray[i][mt.displayloc])
			{
				vFound++;
			}
			if(vFound > mt.navigation.displaytotal)
			{
				vPreviousNum = i;
				break;
			}
		}
		if(vPreviousNum != false)
		{
			mt.navigation.start = vPreviousNum;
		}
		else
		{
			mt.navigation.start = 0;
		}
		mt.builddisplay();
	};
	
	mt.navigation.nextpage = function()
	{
		var vNextNum = false;
		var vFound = 0;
		for(var i=mt.navigation.start; i<mt.dataarray.length;i++)
		{
			if(mt.dataarray[i][mt.displayloc])
			{
				vFound++;
			}
			if(vFound > mt.navigation.displaytotal)
			{
				vNextNum = i;
				break;
			}
		}
		if(vNextNum != false)
		{
			mt.navigation.start = vNextNum;
		}
		mt.builddisplay();
	};
	
	mt.buildheaders = function()
	{
		var vHTML = '\
		<tr class="table-head">\
		';
		if(mt.useselect)
		{
			vHTML += '\
			<th style="width:5%;">\
				<a href="" onclick="mt.select.selectallpage();return false;">Select</a>\
			</th>\
			';
		}
		for(var i=0;i<mt.headers.length;i++)
		{
			if(mt.headeronoff[i])
			{
				vHTML += '\
				<th style="text-align:'+mt.headeralign[i]+';width:'+mt.headerwidth[i]+';" nowrap>\
					<a href="" onClick="mt.sort('+i+');return false;">'+mt.headers[i]+'</a>\
				</th>\
				';
			}
		}
		for(var i=0;i<mt.otherfunctions.length;i++)
		{
			vHTML += '\
			<th style="width:'+mt.otherfunctions[i][4]+';text-align:center;">\
				'+mt.otherfunctions[i][0]+'\
			</th>\
			';
		}
		vHTML += '\
		</tr>\
		';
		return vHTML;
	};
	mt.buildrecordlist = function()
	{
		var vDisplayed = 0;
		var vHTML = '';
		for(var i=mt.navigation.start; i<mt.dataarray.length;i++)
		{
			if(mt.dataarray[i][mt.displayloc])
			{
				vDisplayed++;
				var vTDClass = (vDisplayed%2) ? "super-table-row-2" : "super-table-row-1";
				if(mt.useselect)
				{
					vHTML += '\
					<tr>\
						<td class="'+vTDClass+'" style="">\
							'+f_gen_input(['checkbox','','','','','',mt.dataarray[i][mt.selectloc],'','','','','mt.dataarray['+i+']['+mt.selectloc+'] = this.checked','','','',false,'','',''])+'\
						</td>\
					';
				}
				else
				{
					vHTML += '\
					<tr>\
					';
				}
				for(var j=0; j<mt.headers.length; j++)
				{
					if(mt.headeronoff[j])
					{
						vHTML += '\
						<td class="'+vTDClass+'" style="text-align:'+mt.dataalign[j]+';" '+((mt.datatype[j] == 'file_select_link' || mt.datatype[j] == 'date' || mt.datatype[j] == 'localdate')?'nowrap':'')+'>\
						';
							var vTheSafeData = f_convert_special_to_safe(mt.dataarray[i][j]);
							switch(mt.datatype[j])
							{
								case "text":
								{
									vHTML += mt.datapre[j] + vTheSafeData + mt.datapost[j];
									break;
								}
								case "priority":
								{
									vHTML += mt.datapre[j] + '<b style="color:'+vPriorityColors[vTheSafeData]+';">'+ vPriorityTypes[vTheSafeData] + '</b>' + mt.datapost[j];
									break;
								}
								case "duration":
								{
									vHTML += mt.datapre[j] + f_conver_seconds_to_hms(vTheSafeData) + mt.datapost[j];
									break;
								}
								case "edit":
								{
									vHTML += '<a href="" onclick="f_edit_record('+mt.dataarray[i][mt.idloc]+');return false">'+mt.datapre[j] + vTheSafeData + mt.datapost[j]+'</a>';
									break;
								}
								case "preview":
								{
									vHTML += '<a href="" onclick="f_preview_record('+mt.dataarray[i][mt.idloc]+');return false">'+mt.datapre[j] + vTheSafeData + mt.datapost[j]+'</a>';
									break;
								}
								case "ynswitch":
								{
									vHTML += '\
									<a href="" onclick="f_ynswitch_record('+mt.dataarray[i][mt.idloc]+',\''+((vTheSafeData == 'Y')?'N':'Y')+'\');return false">'+((vTheSafeData == 'Y')?'<img class="small-icon" src="'+vCore+'/images/icons/menu_check.png" />':'<img class="small-icon" src="'+vCore+'/images/icons/menu_check_off.png" />')+'</a>\
									';
									
									break;
								}
								case "check":
								{
									vHTML += '\
									'+((vTheSafeData == 'Y')?'<img class="small-icon" src="'+vCore+'/images/icons/menu_check.png" />':'<img class="small-icon" src="'+vCore+'/images/icons/menu_check_off.png" />')+'\
									';
									
									break;
								}
								case "icon":
								{
									vHTML += '\
									<img class="small-icon" src="/images/icon_pack/'+vTheSafeData+'" />\
									';
									
									break;
								}
								case "read":
								{
									vHTML += '\
									'+((vTheSafeData == 'Y')?'<img class="small-icon" src="'+vCore+'/images/icons/menu_message_read.png" />':'<img class="small-icon" src="'+vCore+'/images/icons/menu_message_new.png" />')+'\
									';
									
									break;
								}
								case "permission":
								{
									vHTML += '\
									'+((vTheSafeData == 'E' || vTheSafeData == 'A')?((vTheSafeData == 'A')?'<img class="small-icon" src="'+vCore+'/images/icons/menu_check.png" /><img class="small-icon" src="'+vCore+'/images/icons/menu_lock.png" />':'<img class="small-icon" src="'+vCore+'/images/icons/menu_check.png" />'):((vTheSafeData == 'N')?'<img class="small-icon" src="'+vCore+'/images/icons/menu_delete.png" /><img class="small-icon" src="'+vCore+'/images/icons/menu_lock.png" />':'<img class="small-icon" src="'+vCore+'/images/icons/menu_delete.png" />'))+'\
									';
									
									break;
								}
								case "order":
								{	
									vHTML += '\
									<a href="" style="display:inline;padding:0px;" onclick="f_order_change(\'down\', '+mt.dataarray[i][mt.idloc]+');return false;">\
										<img class="small-icon" src="'+vCore+'/images/icons/menu_down.png" />\
									</a>\
									'+vTheSafeData+'\
									<a href="" style="display:inline;padding:0px;" onclick="f_order_change(\'up\', '+mt.dataarray[i][mt.idloc]+');return false;">\
										<img class="small-icon" src="'+vCore+'/images/icons/menu_up.png" />\
									</a>\
									';
									
									break;
								}
								case "link":
								{
									vHTML += '<a href="'+mt.datapre[j] + vTheSafeData + mt.datapost[j]+'">'+mt.datapre[j] + vTheSafeData + mt.datapost[j]+'</a>';
									break;
								}
								case "url":
								{
									vHTML += '<a href="http://'+mt.datapre[j] + vTheSafeData + mt.datapost[j]+'" target="_none">'+mt.datapre[j] + vTheSafeData + mt.datapost[j]+'</a>';
									break;
								}
								case "profilelink":
								{
									vHTML += '<a href="index.php?module=member_profile&level=main&page='+mt.dataarray[i][mt.idloc]+'">'+mt.datapre[j] + vTheSafeData + mt.datapost[j]+'</a>';
									break;
								}
								case "email":
								{
									vHTML += '<a href="mailto:'+mt.datapre[j] + vTheSafeData + mt.datapost[j]+'">'+mt.datapre[j] + vTheSafeData + mt.datapost[j]+'</a>';
									break;
								}
								case "month":
								{
									vHTML += mt.datapre[j] + vMonthNames[vTheSafeData - 1] + mt.datapost[j];
									break;
								}
								case "date":
								{
									vHTML += mt.datapre[j] + f_convert_time_stamp_to_date(vTheSafeData) + mt.datapost[j];
									break;
								}
								case "localdate":
								{
									vHTML += mt.datapre[j] + f_convert_time_stamp_to_local_date(vTheSafeData) + mt.datapost[j];
									break;
								}
								
								case "accountlevel":
								{
									var vPType = "Unknown";
									if(vTheSafeData == 'member')
									{
										vPType = "Member";
									}
									else if(vTheSafeData == 'admin')
									{
										vPType = "Admin";
									}
									vHTML += mt.datapre[j] + vPType + mt.datapost[j];
									break;
								}
								case "accountstatus":
								{
									var vPType = "Unknown";
									if(vTheSafeData == 'A')
									{
										vPType = "Active";
									}
									else if(vTheSafeData == 'P')
									{
										vPType = "Pending";
									}
									else if(vTheSafeData == 'D')
									{
										vPType = "Disabled";
									}
									vHTML += mt.datapre[j] + vPType + mt.datapost[j];
									break;
								}
								case "accounttype":
								{
									var vACType = "Unknown";
									if(vTheSafeData == "P")
									{
										vACType = "Parent";
									}
									else if(vTheSafeData == "T")
									{
										vACType = "Teacher";
									}
									else if(vTheSafeData == "M")
                                                                        {
                                                                                vACType = "Family";
                                                                        }
									else if(vTheSafeData == "F")
									{
										vACType = "Faculty";
									}
									else if(vTheSafeData == "O")
									{
										vACType = "Officer";
									}
									else if(vTheSafeData == "N")
									{
										vACType = "Non Member";
									}
									else if(vTheSafeData == "S")
									{
										vACType = "Student";
									}
									vHTML += mt.datapre[j] + vACType + mt.datapost[j];
									break;
								}
								case "file_size":
								{
									var vSize = "0 KB";
									if(vTheSafeData > 999999)
									{
										vTheSafeData += '';
										vSize = vTheSafeData.substring(0, vTheSafeData.length - 6) + "." + vTheSafeData.substring(vTheSafeData.length - 5, vTheSafeData.length - 6) + " MB";
									}
									else if(vTheSafeData > 999)
									{
										vSize = vTheSafeData.substring(0, vTheSafeData.length - 3) + " KB";
									}
									else if(mt.dataarray[i][mt.idloc - 1] == "D")
									{
										vSize = 'Folder';
									}
									vHTML += mt.datapre[j] + vSize + mt.datapost[j];
									break;
								}
								case "file_link":
								{
									if(mt.dataarray[i][mt.idloc - 1] == "D")
									{
										vHTML += '<img class="small-icon" src="/'+vCore+'/images/icons/menu_folder.png" />&nbsp;<b><a href="" onclick="f_move(\'up\',\'\',\''+mt.dataarray[i][mt.idloc]+'\',\''+vTheSafeData+'\');return false;">'+vTheSafeData+'</a>';
									}
									else
									{
										var vLastFour = vTheSafeData.substring(vTheSafeData.lastIndexOf('.') + 1, vTheSafeData.length).toLowerCase();
										var vTypesKnown = new Array("art","bat","bmp","com","doc","dot","exe","gif","gz","hlp","jpeg","jpg","mdb","mde","mov","mp3","mpeg","mpg","pdf","pps","ppt","pub","rar","rtf","tar","tif","tiff","txt","vsd","wav","wpd","xls","xlt","xlw","z","zip");
										var vIcon = 'unknown';
										for(var f = 0; f < vTypesKnown.length; f++)
										{
											if(vLastFour == vTypesKnown[f])
											{
												var vIcon = vLastFour;
											}
										}
										vHTML += mt.datapre[j] + '<img class="small-icon" src="/'+vCore+'/images/icons/files_'+vIcon+'.png" />&nbsp;<a href="/file.php?id='+mt.dataarray[i][mt.idloc]+'" target="blank">'+vTheSafeData+'</a>' + mt.datapost[j];
									}
									break;
								}
								case "walker_link":
								{
									if(mt.dataarray[i][mt.idloc - 1] == "D")
									{
										vHTML += '<img class="small-icon" src="/'+vCore+'/images/icons/menu_folder.png" />&nbsp;<b><a href="" onclick="f_move(\'up\',\'\',\''+mt.dataarray[i][mt.idloc]+'\',\''+vTheSafeData+'\');return false;">'+vTheSafeData+'</a>';
									}
									else
									{
										var vLastFour = vTheSafeData.substring(vTheSafeData.lastIndexOf('.') + 1, vTheSafeData.length).toLowerCase();
										var vTypesKnown = new Array("art","bat","bmp","com","doc","dot","exe","gif","gz","hlp","jpeg","jpg","mdb","mde","mov","mp3","mpeg","mpg","pdf","pps","ppt","pub","rar","rtf","tar","tif","tiff","txt","vsd","wav","wpd","xls","xlt","xlw","z","zip");
										var vIcon = 'unknown';
										for(var f = 0; f < vTypesKnown.length; f++)
										{
											if(vLastFour == vTypesKnown[f])
											{
												var vIcon = vLastFour;
											}
										}
										vHTML += mt.datapre[j] + '<img class="small-icon" src="/'+vCore+'/images/icons/files_'+vIcon+'.png" />&nbsp;<a href="/file.php?file_walker=true&sub_dir='+f_current_loc()+'&name='+mt.dataarray[i][mt.idloc]+'">'+vTheSafeData+'</a>' + mt.datapost[j];
									}
									break;
								}
								case "file_select_link":
								{
									if(mt.dataarray[i][mt.idloc - 1] == "D")
									{
										vHTML += '<img class="small-icon" src="/'+vCore+'/images/icons/menu_folder.png" />&nbsp;<b><a href="" onclick="f_file_move(\'up\',\'\',\''+mt.dataarray[i][mt.idloc]+'\',\''+vTheSafeData+'\');return false;">'+vTheSafeData+'</a>';
									}
									else
									{
										var vLastFour = vTheSafeData.substring(vTheSafeData.lastIndexOf('.') + 1, vTheSafeData.length).toLowerCase();
										var vTypesKnown = new Array("art","bat","bmp","com","doc","dot","exe","gif","gz","hlp","jpeg","jpg","mdb","mde","mov","mp3","mpeg","mpg","pdf","pps","ppt","pub","rar","rtf","tar","tif","tiff","txt","vsd","wav","wpd","xls","xlt","xlw","z","zip");
										var vIcon = 'unknown';
										for(var f = 0; f < vTypesKnown.length; f++)
										{
											if(vLastFour == vTypesKnown[f])
											{
												var vIcon = vLastFour;
											}
										}
										vHTML += mt.datapre[j] + '<img class="small-icon" src="/'+vCore+'/images/icons/files_'+vIcon+'.png" />&nbsp;<a href="" onClick="f_file_done('+mt.dataarray[i][mt.idloc]+',\''+vTheSafeData+'\');return false;">'+vTheSafeData+'</a>' + mt.datapost[j];
									}
									break;
								}
								case "file_type":
								{
									var vACType = "Unknown";
									if(vTheSafeData == "F")
									{
										vACType = "File";
									}
									else if(vTheSafeData == "D")
									{
										vACType = "Folder";
									}
									vHTML += mt.datapre[j] + vACType + mt.datapost[j];
									break;
								}
								default:
								{
									vHTML += '<blink><b>Data Type Not Found</b></blink>';
								}
							}
						vHTML += '\
						</td>\
						';
					}
				}
				
				for(var j=0;j<mt.otherfunctions.length;j++)
				{
					vHTML += '\
					<td class="'+vTDClass+'" style="text-align:center">\
						<a href="" onClick="'+mt.otherfunctions[j][3]+'(\''+mt.dataarray[i][mt.idloc]+'\');return false;">\
						'+((mt.otherfunctions[j][1])?'<img class="small-icon" src="'+vCore+'/images/icons/'+mt.otherfunctions[j][1]+'.png" /> ':'')+'\
						'+((mt.otherfunctions[j][2])?mt.otherfunctions[j][2]:'')+'\
					</td>\
					';
				}
				vHTML += '\
				</tr>\
				';
			}
			if(vDisplayed >= mt.navigation.displaytotal)
			{
				break;
			}
		}
		return vHTML;
	};
	mt.builddisplay = function()
	{
		var vCookieHeaders = new Array();
		for(var i=0;i<mt.headeronoff.length;i++)
		{
			if(mt.headeronoff[i])
			{
				vCookieHeaders[i] = 'Y';
			}
			else
			{
				vCookieHeaders[i] = 'N';
			}
		}
		f_write_cookie(mt.name + '_h',vCookieHeaders.join("_")+"_"+mt.navigation.displaytotal);
		
		var vHTML = '\
		'+mt.navigation.generate()+'\
		<table class="super-table">\
		'+mt.buildheaders()+'\
		'+mt.buildrecordlist()+'\
		</table>\
		';
		document.getElementById(mt.defaults[2]).innerHTML = vHTML;
	};
	mt.sortlast = false;
	mt.sort = function(vWhere)
	{
		if(mt.sortlast !== vWhere)
		{
			f_sort_array("mt.dataarray", vWhere, "F");
			mt.sortlast = vWhere
		}
		else
		{
			f_sort_array("mt.dataarray", vWhere, "R");
			mt.sortlast = false;
		}
		mt.builddisplay();
	};
	mt.search = new Object();
	mt.search.display = function()
	{
		var vText = new Array();
		var vValues = new Array();
		for(var i=0; i<mt.headers.length;i++)
		{
			if(mt.headers[i] && mt.headeronoff[i])
			{
				vText.push(mt.headers[i]);
				vValues.push(i);
			}
		}
		var vFormTop = '<form action="" onSubmit="mt.search.dosearch();return false;">';
		var vFormBottom = '</form>';
		var vLayout = 
			[
				['2_O',
					['B','Search','menu_save_medium','','mt.search.dosearch();'],
					['B','Cancel','menu_cancel_medium','','f_hide_popup();']
				],
				['F',
					['',
						['Search For',['text','iSearchText','iSearchText',20,'','','','','','',false,'',true,'any',50,false,'','',true]],
						['Section',['select','PBiSearchSelect','PBiSearchSelect','','','',0,'',vValues,vText,false,'',false,'',0,false,'','',false]]
					]
				]
			];
		f_write_popup(f_gen_content_box('Primary','Search','',vFormTop + f_gen_layout(vLayout) + vFormBottom,'',''));
		f_show_popup();
		document.getElementById('iSearchText').focus();
	};
	mt.search.dosearch = function()
	{
		var vSearchText = document.getElementById("iSearchText").value.toLowerCase();
		var vSearchLoc = document.getElementById("PBiSearchSelect").value;
		for(var i=0; i<mt.dataarray.length; i++)
		{
			if(mt.dataarray[i][vSearchLoc].toLowerCase().indexOf(vSearchText) != -1)
			{
				mt.dataarray[i][mt.displayloc] = true;
			}
			else
			{
				mt.dataarray[i][mt.displayloc] = false;
			}
		}
		f_hide_popup();
		mt.navigation.start = 0;
		mt.builddisplay();
	};
	mt.search.clearsearch = function()
	{
		for(var i=0; i<mt.dataarray.length; i++)
		{
			mt.dataarray[i][mt.displayloc] = true;
		}
		mt.navigation.start = 0;
		mt.builddisplay();
	};
	mt.displayoptions = new Object();
	mt.displayoptions.display = function()
	{
		var vText = new Array();
		var vValues = new Array();
		for(var i=0; i<mt.headers.length;i++)
		{
			if(mt.headers[i])
			{
				vText.push(mt.headers[i]);
				vValues.push(i);
			}
		}
		var vDisplayOptions = new Array(1,5,10,15,20,50,100);
		var vFieldList1 = ['Fields To Display'];
		var vFieldList2 = ['&nbsp;'];
		
		for(var i=0; i<vText.length;i++)
		{
			if(vText[i] != 'ID')
			{
				if(i>=(vText.length - 1)/2)
				{
					vFieldList2.push([vText[i], ['checkbox','','','','','',mt.headeronoff[vValues[i]],'','','',false,'mt.headeronoff['+vValues[i]+'] = this.checked',false,'',0,false,'','',true]]);
				}
				else
				{
					vFieldList1.push([vText[i], ['checkbox','','','','','',mt.headeronoff[vValues[i]],'','','',false,'mt.headeronoff['+vValues[i]+'] = this.checked',false,'',0,false,'','',true]]);
				}
			}
		}
		
		var vLayout = 
			[
				['2_O',
					['B','Done','menu_save_medium','','mt.builddisplay();f_hide_popup();'],
					['B','Cancel','menu_cancel_medium','','f_hide_popup();']
				],
				['F',
					['Records To Display',
						['Per Page',['select',false,false,'','','',mt.navigation.displaytotal,'',vDisplayOptions,vDisplayOptions,false,'mt.navigation.displaytotal = this.value',false,'',0,false,'','',false]]
					]
				],
				['2_C',
					['F',
						vFieldList1
					],
					['F',
						vFieldList2
					]
				]
			];
		f_write_popup(f_gen_content_box('Primary','Display Options','',f_gen_layout(vLayout),'',''));
		f_show_popup();
	};
	mt.select = new Object();
	mt.select.selectallpage = function()
	{
		var vDisplayed = 0;
		for(var i=mt.navigation.start; i<mt.dataarray.length;i++)
		{
			if(mt.dataarray[i][mt.displayloc])
			{
				vDisplayed++;
				if(mt.dataarray[i][mt.selectloc] == true)
				{
					mt.dataarray[i][mt.selectloc] = false;
				}
				else
				{
					mt.dataarray[i][mt.selectloc] = true;
				}
			}
			if(vDisplayed >= mt.navigation.displaytotal)
			{
				break;
			}
		}
		mt.builddisplay();
	};
	mt.select.unselectall = function()
	{
		for(var i=0; i<mt.dataarray.length;i++)
		{
			mt.dataarray[i][mt.selectloc] = false;
		}
		mt.builddisplay();
	};
	mt.select.getselectedidarray = function()
	{
		var vTempArray = new Array();
		for(var i=0; i<mt.dataarray.length;i++)
		{
			if(mt.dataarray[i][mt.selectloc] == true)
			{
				vTempArray.push(mt.dataarray[i][mt.idloc]);
			}
		}
		return vTempArray;
	};
}

