var locked;
var old_modcat = old_id = false;
var lo_group = false;

if(navigator.userAgent.indexOf('Safari')!==-1)
{
	browser = 'Safari';
	browserVersion = navigator.userAgent.substring((navigator.userAgent.indexOf('Version/')+8),(navigator.userAgent.indexOf('Version/')+11));
	browserVersion = parseFloat(browserVersion);

}
else if(navigator.userAgent.indexOf('MSIE')!==-1)
{
	browser = 'IE';
	browserVersion = navigator.userAgent.substring((navigator.userAgent.indexOf('MSIE')+5),(navigator.userAgent.indexOf('MSIE')+8));
	browserVersion = parseFloat(browserVersion);
}
else if(navigator.userAgent.indexOf('Opera')!==-1)
{
	browser = 'Opera';
	browserVersion = navigator.appVersion.substring(0,3);
	browserVersion = parseFloat(browserVersion);
}
else
{
	browser = 'FFox';
	browserVersion = jQuery.browser.version;
	browserVersion = parseFloat(browserVersion);
}

function getQueryString(win) {
    var qs = win.location.search;
    var multimap = {};
    if (qs.length > 1) {
        qs = qs.substr(1);
        qs.replace(/([^=&]+)=([^&]*)/g, function(match, hfname, hfvalue) {
            var name = decode(hfname);
            var value = decode(hfvalue);
            if (name.length > 0) {
                if (!multimap.hasOwnProperty(name)) {
                    multimap[name] = [];
                }
                multimap[name].push(value);
            }
        });
    }
    return multimap;
}

function decode(s) {
    try {
        return decodeURIComponent(s).replace(/\r\n|\r|\n/g, "\r\n");
    } catch (e) {
        return "";
    }
}

(function($){$(function()
{
	//Dropwdown Menus
	(function()
	{
		var wnd			= $(window);
		var wndHeight	= wnd.height();
		var menu		= $('#menu');
		var section		= menu.children();
		var showMenu	= false;

		section
			.click(function(e)
			{
				if((e.which == 1 || !e.which) && !$(this).hasClass('show') && !$(this).is('a'))
				{
					showMenu = true;
					$(this).siblings().removeClass('show');
					$(this).addClass('show');
					var submenu = $(this).children().last();
					submenu.scrollTop(0).css('max-height',wndHeight-submenu.offset().top-3);
					e.stopPropagation();
				}
			})
			.bind('touchstart',function(e)
			{
				e.stopPropagation();
			})
			.mouseover(function()
			{
				if(!$(this).hasClass('show') && showMenu) $(this).click();
			})
			.children().not('img').each(function()
			{
				$(this).css('width',($(this).width()+25)+'px');
			});

		menu.removeClass('size');

		wnd.add(document)
			.bind('click touchstart',function(e)
			{
				if((e.which == 1 || !e.which) && showMenu)
				{
					showMenu = false;
					section.filter('.show').removeClass('show');
				}
			})
			.resize(function()
			{
				wndHeight = wnd.height();
			});
	})();

	//Session Timeout
	(function()
	{
		if(window.parent != window.top)
			return false;

		var popup = $('#timeoutAlert');
		if(popup.length == 0) return false;

		popup.login		= $('#sessionLogin');
		popup.active	= false;

		popup.warning	= popup.children('div');
		popup.extend	= popup.warning.children('button');

		popup.seconds	= popup.warning.find('s');
		popup.visible	= false;

		popup.leeway	= 10;
		popup.timeout	= window.top.originalTimeout-popup.leeway;
		popup.session	= window.top.session;

		popup.close		= function()
		{
			popup.hide().visible = false;
			popup.timeout = window.top.originalTimeout-popup.leeway;
			popup.login.hide().attr('src','about:blank');
			if(typeof(window.top.help) != 'undefined')
				$('body',window.top.help.document).show();

			$.post('refreshSession.php',{session:popup.session},function(data)
			{
				if(data != '1')
					window.top.location = 'index.php?modfunc=logout';
			});

			popup.active = false;
			window.top.popup = popup;
		}

		function checkTimeout()
		{
			popup.timeout--;

			if(popup.timeout < 60)
			{
				if(!popup.visible)
				{
					popup.warning.show().visible = true;
					popup.show().visible = true;
				}

				if(popup.timeout > 0)
					popup.seconds.html(popup.timeout+(popup.timeout != 1 ? ' seconds' : ' second'));
				else if(popup.warning.visible)
				{
					popup.warning.hide().visible = false;
					popup.active = true;
					window.top.popup = popup;
					if(typeof(window.top.help) != 'undefined')
						$('body',window.top.help.document).hide();
					popup.login.show().attr('src','index.php?modfunc=logout');
				}
			}

		}
		setInterval(checkTimeout,1000);

		popup.extend.click(function()
		{
			$.post('refreshSession.php',function(data)
			{
				if(data == '1')
				{
					popup.timeout = window.top.originalTimeout-popup.leeway;
					popup.hide().visible = false;
				}
				else window.top.location = 'index.php?modfunc=logout';
			});
		});

		return true;
	})();

	//DatePickers
	(function()
	{
		$('.datePickerTrigger')
			.live('click',function()
			{
				if(typeof(this.bound) == 'undefined')
					$(this).trigger('datepicker');

				this.picker.focus();
			})
			.live('datepicker',function()
			{
				this.picker = $(this).siblings('.datePicker');
				var pickerElement = this.picker.get(0);

				if(typeof(pickerElement.year) == 'undefined')
				{
					var min			= false;
					var max			= false;

					pickerElement.month			= this.picker.siblings('select[id*=month]');
					pickerElement.monthOptions	= pickerElement.month.children('option');
					pickerElement.monthOffset	= pickerElement.month.children('option[value=""]').length > 0 ? 0 : 1;

					pickerElement.day			= this.picker.siblings('select[id*=day]');
					pickerElement.dayOptions	= pickerElement.day.children('option');
					pickerElement.dayOffset		= pickerElement.day.children('option[value=""]').length > 0 ? 0 : 1;

					pickerElement.year			= this.picker.siblings('select[id*=year]');
					pickerElement.yearOptions	= pickerElement.year.children('option');
					pickerElement.yearLength	= pickerElement.year.children('option[value!=""]').attr('value').length;


					pickerElement.yearOptions.not('option[value=""]').each(function()
					{
						var value	= $(this).attr('value');
						if(pickerElement.yearLength == 2) value = (parseInt(value,10) <= 30 ? '20' : '19')+''+value;
						if(min == false || value < min) min = value;
						if(max == false || value > max) max = value;
					});
					pickerElement.yearRange = min && max ? min+':'+max : false;
				}

				this.picker.datepicker(
				{
					showOn:'focus',
					changeYear:true,
					yearRange:pickerElement.yearRange,
					onSelect:function(date)
					{
						date		= date.split('/');
						var month	= parseInt(date[0],10)-this.monthOffset;
						var day		= parseInt(date[1],10)-this.dayOffset;
						var year	= date[2];

						this.monthOptions.removeAttr('selected');
						this.dayOptions.removeAttr('selected');
						this.yearOptions.removeAttr('selected');

						this.month.find('option').eq(month).attr('selected',true);
						this.day.find('option').eq(day).attr('selected',true);
						this.year.find('option[value='+year.substr(4-this.yearLength)+']').attr('selected',true);

						this.year.change();
					}
				});

				this.bound = true;
			});

		//Update the date picker when the drop downs change
		$('select[id*=month],select[id*=day],select[id*=year]').live('change',function()
		{
			if(typeof(this.picker) == 'undefined')
			{
				$(this).siblings('.datePickerTrigger').trigger('datepicker');
				this.picker			= $(this).siblings('.datePicker');
				this.pickerElement	= this.picker.get(0);
			}

			var month	= this.pickerElement.month.children('option[selected]').index()+this.pickerElement.monthOffset;
			var day		= this.pickerElement.day.children('option[selected]').index()+this.pickerElement.dayOffset;
			var year	= this.pickerElement.year.children('option[selected]').attr('value');

			if(month < 10)							month	= '0'+month.toString();
			if(day < 10)							day		= '0'+day.toString();
			if(this.pickerElement.yearLength == 2)	year	= parseInt((parseInt(year,10) <= 30 ? '20' : '19')+year.toString());

			this.picker.val(month+'/'+day+'/'+year);
		});
	})();


	//Input Validation
	(function()
	{
		//Simple Date
		$('input.simple_date')
			.live('keyup change click',function(e)
			{
				var caret = $(this).caret().start;
				var value = $(this).val();
				var rawValue = value.replace(/[^0-9]/g,'');
				var slash1,slash2,month,day,year,slash1Offset = slash2Offset = 0;

				if(typeof(this.lastValue) == 'undefined')	this.lastValue = value;


				if(value.substr(1,1) == '/')				slash1Offset = 1;
				if(value.substr(4-slash1Offset,1) == '/')	slash2Offset = 1;


				month	= rawValue	.substr(0,2-slash1Offset);
				slash1	= value		.substr(2-slash1Offset,1) != '/' ? '' : '/';
				day		= rawValue	.substr(2-slash1Offset,2-slash2Offset);
				slash2	= value		.substr(5-(slash1Offset+slash2Offset),1) != '/' ? '' : '/';
				year	= rawValue	.substr(4-(slash1Offset+slash2Offset),4)

				if(!slash1 && day)
				{
					slash1	= '/';
					if(caret > 2-slash1Offset) caret++;
				}
				if(!slash2 && year)
				{
					slash2	= '/';
					if(caret > 5-(slash1Offset+slash2Offset)) caret++;
				}

				if(this.lastValue != value)
				{
					value = !month ? '' : month + slash1 + (!day ? '' : day + slash2 + (!year ? '' : year));
					$(this).val(value).caret({start:caret,end:caret});
					this.lastValue = value;
				}

			})
			.live('blur validate',function(e)
			{
				//Do one last check to make sure the date is properly formatted
				//Then take the date and plug it into the hidden input to be submitted
				var error = false;
				var value = $(this).val();

				if(value.length > 0)
				{
					var values = value.split('/');

					if(values[2])
					{
						//Fix shorthand months
						if(values[0].length == 1) values[0] = '0'+values[0];

						//Fix shorthand days
						if(values[1].length == 1) values[1] = '0'+values[1];

						//Fix shorthand years
						if(values[2].length == 2)		values[2] = (values[2] > 49 && values[2] < 100 ? '19' : '20')+values[2];
						else if(values[2].length == 1)	values[2] = '200'+values[2];
						else if(values[2].length == 3)	error = true;

						$(this).val(values.join('/'));

						if(values[0] <= 0 || values[0] > 12 || values[1] <= 0 || values[1] > 31) error = true;
						else $(this).siblings('input.simple_date_formatted').val(values[2]+'-'+values[0]+'-'+values[1]);
					}
					else error = true;

					if(error)
					{
						$(this).addClass('invalid');
						$(this).siblings('input.simple_date_formatted').val('');
					}
					else $(this).removeClass('invalid');
				}
			})
			.live('blur',function(e)
			{
				$('#simple_date_alert').fadeOut(300);
			})
			.live('focus',function(e)
			{
				var position = $(this).offset();
				var popup = $('#simple_date_alert');
				if(popup.length <= 0) popup = $('<div id=simple_date_alert style="position:absolute;z-index:1000;display:none;border:1px solid #666;background-color:#FFFAEA;color:#000;padding:3px">mm/dd/yyyy</div>').appendTo($('body'));

				popup
					.css({'left':position.left+$(this).outerWidth()+5,'top':position.top})
					.fadeIn(300);
			});


		//Numeric
		$('input.input_numeric,input.input_int,input.input_positive_numeric,input.input_positive_int').live('keyup change click',function(e)
		{
			var value = $(this).val();
			var error = false;
			var parsedValue = value;
			var type = 'Numeric';

			if(value.substr(0,1) == '.') value = parsedValue = '0'+value;

			if(typeof(this.lastValue) == 'undefined') this.lastValue = isNaN(value) ? '' : value;

			if(value.length > 0)
			{
				if($(this).is('.input_int,.input_positive_int'))
				{
					parsedValue = parseInt(value);
					type = 'Integer';
					if(value.indexOf('.') >= 0) error = 'Integer Values Only';
				}
				else parsedValue = parseFloat(value);

				if(!error)
					if(($(this).is('.input_positive_numeric,.input_positive_int')) && (value == '-' || parsedValue < 0))
						error = 'Positive Values Only';
					else if(value == '-') parsedValue = '-';

				if(!error && (value != parsedValue || value.indexOf(' ') > -1)) error = type+' Values Only';

				if(error)
				{
					$(this).val(this.lastValue);

					var position = $(this).offset();
					var popup = $('#restricted_input_alert');
					if(popup.length <= 0) popup = $('<div id=restricted_input_alert style="position:absolute;z-index:1000;display:none;border:1px solid #666;background-color:#FFFAEA;color:#000;padding:3px"></div>').appendTo($('body'));

					popup
						.css({'left':position.left+$(this).outerWidth()+5,'top':position.top,'display':'none'})
						.text(error)
						.fadeIn(600,function(){setTimeout(function(){popup.fadeOut(600);},1000);});
				}
				else
				{
					this.lastValue = value;
					if($(this).val() != this.lastValue) $(this).val(this.lastValue);
				}
			}
			else this.lastValue = '';
		})
		.live('change',function()
		{
			var value = $(this).val();
			if(value.substr(value.length-1) == '.')
				$(this).val(value.substr(0,value.length-1));
		})
		.live('focus',function()
		{
			var value = $(this).val();
			if(typeof(this.lastValue) == 'undefined') this.lastValue = isNaN(value) ? '' : value;
		});


		//Regex
		$('input.input_regex').live('keyup change click',function(e)
		{
			var value = $(this).val();
			var pattern = $(this).attr('data-pattern');
			var patternFlag = $(this).attr('data-pattern_flag');

			if(value.length > 0 && pattern && pattern.length > 0)
			{
				pattern = decodeURIComponent((pattern+'').replace(/\+/g, '%20'));

				if(typeof(this.lastValue) == 'undefined') this.lastValue = '';

				var error = $(this).attr('data-error');
				var parsedValue = new RegExp(pattern,patternFlag).exec(value);

				if(parsedValue == null || parsedValue != value)
				{
					$(this).val(this.lastValue);

					var position = $(this).offset();
					var popup = $('#restricted_input_alert');
					if(popup.length <= 0) popup = $('<div id=restricted_input_alert style="position:absolute;z-index:1000;display:none;border:1px solid #666;background-color:#FFFAEA;color:#000;padding:3px"></div>').appendTo($('body'));

					popup
						.css({'left':position.left+$(this).outerWidth()+5,'top':position.top})
						.fadeIn(600,function(){setTimeout(function(){popup.fadeOut(600);},1000);})
						.text(decodeURIComponent((error+'').replace(/\+/g, '%20')));
				}
				else this.lastValue = value;
			}
			else this.lastValue = '';
		});
	})();

})})(jQuery);

function include(url)
{
  var script = document.createElement('script');
  script.setAttribute('type', 'text/javascript');
  script.setAttribute('src', url);
  document.getElementsByTagName('head').item(0).appendChild(script);
}

function check_cf()
{
	if (submit_is_red&&!submit_pressed)
	{
		return "Your changes are not saved!";
	}
}

function doOnload()
{
	var root = window.addEventListener || window.attachEvent ? window : document.addEventListener ? document : null;
	if (typeof(root.onbeforeunload) != "undefined")root.onbeforeunload = check_cf;

	var layer;

	window.onresize = doOnresize;
//	window.setInterval('doOnscroll()',50);
	window.onscroll = doOnscroll;

	if(typeof positionMenus == "function")
		positionMenus();

	// fix for story id 11445509 - FFox likes to autocomplete remembered passwords
	var pwelement = root.document.getElementById('currentPassword');
	if (browser == 'FFox' && (pwelement) )
		root.document.getElementById('currentPassword').value = "";
}

function getBounds(element)
{
	var left = element.offsetLeft;
	var top = element.offsetTop;
	for (var parent = element.offsetParent; parent; parent = parent.offsetParent)
	{
		left += parent.offsetLeft - parent.scrollLeft;
		top += parent.offsetTop - parent.scrollTop;
	}

	return {left: left, top: top, width: element.offsetWidth, height: element.offsetHeight};
}

submit_is_red = false;
submit_pressed=false;

function redSubmit()
{
	if(submit_is_red==false)
	{
		submit_is_red = true;
		var buttons = $('#top_submit');
		if (buttons.length > 0)
		{
			handleContainerResize();
		}
		buttons = buttons.add('#bottom_submit, #savebutton');
		buttons.addClass('RedSubmit');
	}
}

function synchronizeFields(obj) {
	return 1;
}

function doOnresize()
{
	/**************************************Handle ListOutput Window Resize**************************************************/
	resizeTimeBuffer(); //buffered container resize
	doOnload();
	doOnscroll();
	setMenuOffsets();
}

var unlocking = false;

var old_modcat = false;
var opened = false;

function doOnBodyClick()
{
	if(old_modcat!=false && opened==false)
	{
		old_modcat.style.backgroundPosition = "0px 0px";
		old_modcat.style.backgroundColor = "";
		old_modcat.style.color = "#212121";
		jQuery(old_modcat.childNodes[0].childNodes[0]).css('display', 'none');
		old_modcat = false;
	}
	opened = false;
}

function doOnscroll()
{
	if(browser=="IE")
	{
		var rh=(document.body.offsetHeight-parseInt(document.getElementById('Page_Content').currentStyle.top,10))+"px";
		jQuery('#Page_Content').css('height', rh );
	}
	return true;
}

function getLeft(column_number)
{
	return true;
}

function getTop(row_number)
{
	var y = 0;
	if(document.layers)
		y = document.layers['LOy'+row_number].pageY;
	else if(document.all || document.getElementById)
	{
		var cell = document.all ? document.all['LOy'+row_number] : document.getElementById('LOy'+row_number);
		while(cell)
		{
			y += cell.offsetTop;
			cell = cell.offsetParent;
		}
	}
	return y-6;
}

function getListTop()
{
	return true;
}

function getListBottom(column_number)
{
	return true;
}

var runPutFocus = true;

function putFocus()
{
	var i,o,y=0, x=0;
	if(document.forms.length > 0 && runPutFocus==true)
	{
		// we don't want this function to do anything if it's being called a second time (for instance if a hidden field is clicked)
		runPutFocus = false;
		if(document.getElementById("red_button_form"))
		{
			with(document.getElementById('red_button_form'))
			{
				for(i=0;i<length;i++)
				{
					var element = elements[i];
					if(!element.attributes['nored'] || element.attributes['nored'].value!='nored')
					{
						if(element.type == "checkbox" || element.type == "radio")
						{
							element.prioronclick = element.onclick;
							element.onclick = function()
							{
								var ret = true;
								if(this.prioronclick)
									ret = this.prioronclick();

								redSubmit();
								return ret;
							};
							element.prioronkeypress = element.onkeypress;
							element.onkeypress = function()
							{
								var ret = true;
								if(this.prioronkeypress)
								{
									ret = this.prioronkeypress();
								}
								redSubmit();
								return ret;
							};
						}
						else
						{
							element.prioronchange = element.onchange;
							element.onchange = function()
							{
								var ret = true;
								if(this.prioronchange)
								{
									ret = this.prioronchange();
								}
								redSubmit();
								return ret;
							};
						}
					}
				}
			}
		}

		for(o=0;o<document.forms.length;o++)
		{
			for(i=0;i<document.forms[o].elements.length;i++)
			{
				if(document.forms[o].elements[i].type=='text' && document.forms[o].elements[i].name!='LO_search')
				{
					try
					{
						var cell = document.forms[o].elements[i];
						while(cell)
						{
							y += cell.offsetTop;
							x += cell.offsetLeft;
							cell = cell.offsetParent;
						}
						if(y<getWindowHeight() && x<getWindowWidth())
							document.forms[o].elements[i].focus();
						return;
					}
					catch(err)
					{}
				}
			}
		}
	}
}

function getWindowHeight()
{
	if(window.innerHeight)
		return window.innerHeight;
	else if(document.documentElement && document.documentElement.clientHeight)
		 return document.documentElement.clientHeight;
	else if(document.body)
		 return document.body.clientHeight;
}

function getWindowWidth()
{
	if(window.innerWidth)
		return window.innerWidth;
	else if(document.documentElement && document.documentElement.clientWidth)
		 return document.documentElement.clientWidth;
	else if(document.body)
		return document.body.clientWidth;
}

function addHTML(html,id,replace)
{
	if(locked!=false)
	{
		if(replace==true)
			document.getElementById(id).innerHTML = html;
		else
			document.getElementById(id).innerHTML = document.getElementById(id).innerHTML + html;
		if(!unlocking)
		{
			onClickResize(document.getElementById(id));
		}
	}
}

function changeHTML(show,hide)
{
	for(key in show)
		document.getElementById(key).innerHTML = document.getElementById(show[key]).innerHTML;
	for(i=0;i<hide.length;i++)
		document.getElementById(hide[i]).innerHTML = '';
}

function checkAll(form,value,name_like)
{
	if(value==true)
		checked = true;
	else
		checked = false;

	for(i=0;i<form.elements.length;i++)
	{
		if(form.elements[i].type=='checkbox' &&
		   form.elements[i].name!='controller' &&
		   form.elements[i].name.indexOf(name_like) == 0 &&
		   form.elements[i].disabled == false)
		   {
				form.elements[i].checked = checked;
			}
	}
}

function checkChildren(id,self,name_like)
{
	var ObjectRange = document.getElementById(id);

	inputItems = ObjectRange.getElementsByTagName('input');

	for (i=0;i<inputItems.length;i++)
	{
		if(inputItems[i].type=='checkbox' && inputItems[i].disabled == false)
		{
			if (name_like != false)
			{
				if (inputItems[i].name.indexOf(name_like) != -1)
				{
					if (inputItems[i].checked == true)
						inputItems[i].checked = self.checked;
					else
				 		inputItems[i].checked = self.checked;
				}
			}
			else
			{
				if (inputItems[i].checked == true)
					inputItems[i].checked = self.checked;
				else
			 		inputItems[i].checked = self.checked;
			}

		}
	}
}

function openMenu(modcat)
{
	document.getElementById("menu_"+modcat).display = 'block';
	if(old_modcat!=false)
		document.getElementById("menu_"+old_modcat).display = 'none';
	if(old_modcat==modcat)
		old_modcat = false;
	else
		old_modcat = modcat;
}

function getXPos(id)
{
	var x = 0;
	if(document.layers)
		x = document.layers[id].pageX;
	else if(document.all || document.getElementById)
	{
		var cell = document.all ? document.all[id] : document.getElementById(id);
		while(cell)
		{
			x += cell.offsetLeft;
			cell = cell.offsetParent;
		}
	}
	return x;
}

function getYPos(id)
{
	var y = 0;
	if(document.layers)
		y = document.layers[id].pageY;
	else if(document.all || document.getElementById)
	{
		var cell = document.all ? document.all[id] : document.getElementById(id);
		while(cell)
		{
			y += cell.offsetTop;
			cell = cell.offsetParent;
		}
	}
	return y;
}


function replaceAll(haystack,needle,replacement)
{
	haystack = haystack.replace(needle,replacement);
	if(haystack.match(needle))
		haystack = replaceAll(haystack,needle,replacement);
	return haystack;
}

function switchMenu(id, time)
{
	if(isNaN(time))
		time = 300;
	if(document.getElementById(id).style.display=='none' || jQuery('#'+id).css('display') == 'none')
	{
		if(arrow = document.getElementById(id+'_arrow'))
			arrow.src = 'assets/arrow_down.gif';

		jQuery('#'+id).slideDown((time - 100), function(){handleContainerResize();});


	}
	else
	{
		if(arrow = document.getElementById(id+'_arrow'))
			arrow.src = 'assets/arrow_right.gif';

		jQuery('#'+id).slideUp(time, function(){handleContainerResize();});


	}
	if(typeof positionMenus == "function")
		positionMenus();
}

function setSI(id,value)
{
	if(value)
	{
		for(i=0;i<=document.getElementById(id).options.length;i++)
		{
			if(document.getElementById(id).options[i].value==value)
			{
				document.getElementById(id).options[i].selected=true;
				return true;
			}
		}
	}
}

var single_quote = "'";
var double_quote = '``';

function hl_cb(cb)
{
	if(browser!="IE")
	{
		cb.checked=!cb.checked;
		hilite_checked(cb);
	}
}

function hilite_checked(cb, row)
{
	if(browser!="IE" && false)
	{
		if(!row || row.tagName.toLowerCase()!='tr')
		{
			var i = 0;
			row = cb;
			do
			{
				row = row.parentNode;
				i++;
			} while (row.tagName.toLowerCase() != "tr" && i<5);
		}
		if(cb.checked)
		{
			row.className+=' hilite';
		}
		else
		{
			row.className=row.className.replace(/hilite/g,'');
		}
	}
}


function CheckAll_hilite(form,value,name_like)
{
	for(i=0;i<form.elements.length;i++)
	{
		if(form.elements[i].type=='checkbox' && form.elements[i].name!='controller' && form.elements[i].name.substr(0,name_like.length)==name_like)
		{
			hilite_checked(form.elements[i]);
		}
	}
}

function hilite(obj)
{
	if(typeof obj == 'object')
	{
		$(obj).addClass('hilite1');
	}
	else
	{
		$('#'.obj).addClass('hilite1');
	}
}

function unlite(obj)
{
	if(typeof obj == 'object')
	{
		$(obj).removeClass('hilite1');
	}
	else
	{
		$('#'.obj).removeClass('hilite1');
	}
}

function enable_input(input, cb)
{
	document.getElementById(input).disabled = cb.checked;
}

function enable_all_inputs(form, name_like, enable)
{
	for(i=0;i<form.elements.length;i++)
	{
		if((form.elements[i].type=='select-one' || form.elements[i].type=='checkbox' || form.elements[i].type=='text' || form.elements[i].type=='radio' ) && form.elements[i].name.substr(0,name_like.length)==name_like)
		{
			form.elements[i].disabled = !enable;
		}
	}
}

function add_benchmark_card_longer_comments(form, name_like, value, replace)
{
	for(i=0;i<form.elements.length;i++)
	{
		if((form.elements[i].type=='textarea') && form.elements[i].name!='controller' && form.elements[i].name.indexOf(name_like)!=-1)//substr(0,name_like.length)==name_like)
		{
			if(replace)
			{
				form.elements[i].value = value;
			}
			else
			{
				form.elements[i].value+=value;
			}
		}
	}
}


function Delete_file(Upload_file_field_id,FileID,log_field_name)
{
	if(confirm('Are you sure you want to delete file?'))
	{
		if(document.student)
		{
			document.student.action = document.student.action + '&log_field_name='+log_field_name+ '&DeleteFileOK=1&FileID=' + FileID + '&Upload_file_field_id=' + Upload_file_field_id;
			document.student.submit();
		}
		if(document.user)
		{
			document.user.action = document.user.action +'&log_field_name='+log_field_name+  '&DeleteFileOK=1&FileID=' + FileID + '&Upload_file_field_id=' + Upload_file_field_id;
			document.user.submit();
		}
		if(document.school)
		{
			_submitSchoolForm('save'+'&log_field_name='+log_field_name+  '&DeleteFileOK=1&FileID=' + FileID + '&Upload_file_field_id=' + Upload_file_field_id);
		}
		if(document.intervention)
		{
			document.intervention.action = document.intervention.action + '&log_field_name='+log_field_name+ '&DeleteFileOK=1&FileID=' + FileID + '&Upload_file_field_id=' + Upload_file_field_id;
			document.intervention.submit();
		}
	}
}

function togglePageContentFullScreen(img)
{
	jQuery("#Header").toggle();

	lo_box = jQuery(img).parents('.listoutputbox').first();

	if(lo_box.css('position') == 'fixed')
		lo_box.css({'position':'','width':'','z-index':'','height':'', 'top':'', 'left':''});
	else
		lo_box.css({'position':'fixed','width':'100%','z-index':'5000','height':'100%', 'top':'0px', 'left':'0'});

	handleContainerHeightResize(lo_box.find('.lo_container').first());
}

//shift menu buttons over if they break page width
jQuery(window).load(function() {
	setMenuOffsets();

	jQuery('#Page_Content').css('overflow-y', 'auto');

	jQuery('TD[class="SelectedTopTab"]').click(function(){openModcat(this);});
	jQuery('TD[class="SelectedTopTab"]').mouseover(function(){openRollover(this);});
	jQuery('TD[class="UnselectedTopTab"]').click(function(){openModcat(this);});
	jQuery('TD[class="UnselectedTopTab"]').mouseover(function(){openRollover(this);});

	if(browser != 'IE')
	{
		jQuery('.lo_container TBODY TR.lo_row').live('mouseover', function(){
			LOSetRowClass(jQuery(this), "hilite1", true);
		});

		jQuery('.lo_container TBODY TR.lo_row').live('mouseout', function(){
			LOSetRowClass(jQuery(this), "hilite1", false);
		});
	}

});


/**
 * Given a row in a ListOutput table, add or remove the specified class to the row itself, and corresponding
 * rows in the other panes.
 *
 * @param row a jQuery object containing a ListOutput tr
 * @param clazz the class to add or remove
 * @param state true to add the class, false to remove
 */
function LOSetRowClass(row, clazz, state) {
	var class_attr = row.attr('id').replace(' ','.');
	if (class_attr != '' && class_attr != undefined && class_attr != null)
	{
		var index = row.closest("TABLE.lo_table>TBODY").children('TR.lo_row').index(row);
		row.closest('.lo_container, #legacy_table').find("#center_container, #left_container, #right_container").children("TABLE.lo_table").children("TBODY").each(function()
		{
			if (state) {
				jQuery(this).children("TR.lo_row").eq(index).addClass(clazz);
			} else {
				jQuery(this).children("TR.lo_row").eq(index).removeClass(clazz);
			}
		});
	}
}
function setMenuOffsets()
{
	var left = 0;
	var body_pos = jQuery("#BodyDivContainer").offset();
	if(body_pos != undefined)
		left = body_pos.left;
	var window_width = jQuery("#BodyDivContainer").width() + left;
	var offset = "-1px";

	var Page_Content_Height = jQuery('#Page_Content').height();
	jQuery(".Top_Menu_Hidden").each(function(index, html)
	{
		//set the div to be hidden but displayed so that we can calculate width and pos
		jQuery(this).css("visibility", "visible");
		jQuery(this).show();
		//set all the positions back to left aligned to get an accurate account of how far off the page they display
		jQuery(this).css('right', '');
		jQuery(this).css('left', '-1px');

		//get position and width
		var position = jQuery(this).offset();
		var width = jQuery(this).find(".Top_Menu_Dropdown_UL").width();

		//if object pushes off the side of the page, swap it to be right aligned
		if((position.left + width) > window_width)
		{
			jQuery(this).css('right', '1px');
			jQuery(this).css('left', '');
		}
		jQuery(this).height(jQuery(this).find(".Top_Menu_Dropdown_UL").outerHeight(true));

		if(jQuery(this).find(".Top_Menu_Dropdown_UL").height() > Page_Content_Height)
		{
			jQuery(this).height(Page_Content_Height-2);
			jQuery(this).css("overflow", "auto");

			if(browser == "IE")
			{
				var drop_down_width = jQuery(this).find(".Top_Menu_Dropdown_UL").width();
				jQuery(this).find(".Top_Menu_Dropdown_UL").width(drop_down_width);
				jQuery(this).find("#iframe_cover").css({"width" : width, "height" : jQuery(this).find(".Top_Menu_Dropdown_UL").height()});
				jQuery(this).width(drop_down_width + 20);
				jQuery(this).css({'overflow-x' : 'hidden'});
			}
			else
			{
				jQuery(this).width('');
				jQuery(this).width(jQuery(this).find(".Top_Menu_Dropdown_UL").outerWidth(true)+15);
			}
		}
		else
		{
			jQuery(this).width(jQuery(this).find(".Top_Menu_Dropdown_UL").outerWidth(true)-2);
		}
		//if IE, draw a iframe below the dropdown and set it's width and height equal to it to fix select box hack
		//reset the style of display
		jQuery(this).css("visibility", "visible");
		jQuery(this).hide();

	});

}

// This will one day replace addHTML()
function inputReplace(element)
{
	jQuery(element).unbind("click");
	jQuery(element).removeAttr("class");
	var jsonObject = element.getAttribute("value");
	var input;
	var inputs = new Array;
	jsonObject = eval('(' + jsonObject + ')');

	switch(jsonObject.tag)
	{
		case "input":
			if(jsonObject.elements)
			{
				input = new Array();
				for(var i in jsonObject.elements)
				{
					inputs.push(createInput(element, jsonObject.elements[i]));
				}
			}
			else
			{
				input = createInput(element, jsonObject);
			}
			break;

		case "select":
			input = createSelect(element, jsonObject);
			break;

		case "multi-select":
			input = createMultiSelect(element, jsonObject);
			break;

		case "textarea":
			input = createTextarea(element, jsonObject);
			break;

		case "weekdays":
			inputs = createWeekDays(element, jsonObject);
			element.style.width="200px";
			break;
	}
	if(inputs.length > 0)
	{
		var fill_div = document.createElement("div");
		for(var i in inputs)
		{
			fill_div.innerHTML += inputs[i].parent.innerHTML;
		}
		jQuery(element).html(fill_div.innerHTML);
	}
	else
	{
		jQuery(element).append(input);
	}
}

function createInput(element, jsonObject)
{
	var input = document.createElement('input');
	input.setAttribute('type',jsonObject.type);
	if(jsonObject.attributes)
	{
		for(var i in jsonObject.attributes)
		{
			input.setAttribute(i, jsonObject.attributes[i]);
		}
	}

	if(jsonObject.attributes['value'])
	{
		input.setAttribute('value', jsonObject.attributes['value']);
	}
	else
	{
		input.setAttribute('value', jQuery(element).text());
	}
	element.innerHTML = "";
	if(jsonObject.label)
	{
		var l = document.createElement('label');
		l.setAttribute('for', jsonObject.attributes['id']);
		for(var i in jsonObject.label.attributes)
		{
			l.setAttribute(i, jsonObject.label.attributes[i]);
		}
		switch(jsonObject.label['pos'])
		{
			case 'top':
				l.innerHTML=jsonObject.label['text'] + '<BR>';
				l.appendChild(input);
				break;
			case 'left':
				l.innerHTML=jsonObject.label['text'];
				l.appendChild(input);
				break;
			case 'bottom':
				l.appendChild(input);
				l.innerHTML += '<BR>'+jsonObject.label['text'];
				break;
			case 'right':
			default:
				l.appendChild(input);
				l.innerHTML+=jsonObject.label['text'];
				break;
		}
		return l;
	}
	return input;
}

function createTextarea(element, jsonObject)
{
	var input = document.createElement('textarea');
	if(jsonObject.attributes)
	{
		for(var i in jsonObject.attributes)
		{
			input.setAttribute(i, jsonObject.attributes[i]);
		}
	}
	input.innerHTML = element.innerHTML;
	element.innerHTML = "";
	return input;
}

function createSelect(element, jsonObject){}

function createMultiSelect(element, jsonObject){}

function createWeekDays(element, jsonObject)
{
	var pos;
	var id = jsonObject.attributes["name"];
	var inputs = new Array();
	var letter = new Array('S','M','T','W','H','F','S');
	var ids = new Array('U','M','T','W','H','F','S');
	var acronym = new Array('Sun','Mon','Tues','Wed','Thur','Fri','Sat');
	var full = new Array('Sunday','Monday','Tuesday','Wed','Thursday','Friday','Saturday');
	var display;
	if(jsonObject.pos)
		pos = jsonObject.pos;
	else
		pos = "bottom";
	switch(jsonObject.display)
	{
		case "full":
			display = full;
			break;
		case "acro":
			display = acronym;
			break;
		case "letter":
		default:
			display = letter;
			break;
	}
	for(i in jsonObject.checked)
	{
		var checked = '';
		if(jsonObject.checked[i] == "T")
			checked = ',"checked":"checked"';
		new_checkbox = '{"type":"checkbox","label":{"pos":"'+pos+'","text":"'+display[i]+'","attributes":{"text-align":"center", "style":"float:left; display:inline;"}},"attributes":{"value":"Y" '+checked+',"id":"'+id+'[DAYS]['+ids[i]+']", "name":"'+id+'[DAYS]['+ids[i]+']"}}';
		new_checkbox = eval('(' + new_checkbox + ')');
		inputs.push(createInput(element, new_checkbox));
	}
	return inputs;

}

jQuery( function(){
	//Global function for showing JS error messages
	jQuery.showMessage = function(msg){
		if(jQuery('.'+msg.cssName).length == 0)
		{
			jQuery('#'+msg.target).before('<div class="'+msg.cssName+'">'+msg.Text+'</div>');
			jQuery('.'+msg.cssName).fadeIn(500);
		}
		else
		{
			jQuery('.'+msg.cssName).fadeOut(1);
			jQuery('.'+msg.cssName).html(msg.Text);
			jQuery('.'+msg.cssName).fadeIn(500);
		}
	};
});

//jCaret - Manipulates the caret in a textfield - http://www.examplet.buss.hk/jquery/caret.php
(function(k,e,i,j){k.fn.caret=function(b,l){var a,c,f=this[0],d=k.browser.msie;if(typeof b==="object"&&typeof b.start==="number"&&typeof b.end==="number"){a=b.start;c=b.end}else if(typeof b==="number"&&typeof l==="number"){a=b;c=l}else if(typeof b==="string")if((a=f.value.indexOf(b))>-1)c=a+b[e];else a=null;else if(Object.prototype.toString.call(b)==="[object RegExp]"){b=b.exec(f.value);if(b!=null){a=b.index;c=a+b[0][e]}}if(typeof a!="undefined"){if(d){d=this[0].createTextRange();d.collapse(true);
d.moveStart("character",a);d.moveEnd("character",c-a);d.select()}else{this[0].selectionStart=a;this[0].selectionEnd=c}this[0].focus();return this}else{if(d){c=document.selection;if(this[0].tagName.toLowerCase()!="textarea"){d=this.val();a=c[i]()[j]();a.moveEnd("character",d[e]);var g=a.text==""?d[e]:d.lastIndexOf(a.text);a=c[i]()[j]();a.moveStart("character",-d[e]);var h=a.text[e]}else{a=c[i]();c=a[j]();c.moveToElementText(this[0]);c.setEndPoint("EndToEnd",a);g=c.text[e]-a.text[e];h=g+a.text[e]}}else{g=
f.selectionStart;h=f.selectionEnd}a=f.value.substring(g,h);return{start:g,end:h,text:a,replace:function(m){return f.value.substring(0,g)+m+f.value.substring(h,f.value[e])}}}}})(jQuery,"length","createRange","duplicate");

