if(jQuery){
	//Area to customize jquery
	jQuery.extend( jQuery.expr[ ":" ], {
		parents: function(a,i,m){ return jQuery(a).parents(m[3]).length; },
		reallyvisible: function(a){ return !(jQuery(a).is(':hidden') || jQuery(a).parents(':hidden').length); }
		//Add :selectors here
		});
	(function($){
	        $.fn.object = function() {
			var elem = $.map(this, function(elem){
				return elem;
				});
			return elem;
			};
		$.fn.setfocus = function() {
			this.focus();
			return this;
			};
		//Add functions here
	        })(jQuery);
	}
function URLencode(sStr) {
    return escape(sStr).
             replace(/\+/g, '%2B').
                replace(/\"/g,'%22').
                   replace(/\'/g, '%27').
                     replace(/\//g,'%2F').
			replace(/\&/g,'%26');
  }

function autofocus(field, limit, next, evt)
	{
	evt = (evt) ? evt : event;
	var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : ((evt.which) ? evt.which : 0));
	if (charCode > 31 && field.value.length == field.maxLength)
		{
		field.form.elements[next].focus();
		}
	}

/* Form Error Messages */

var lastfocus="";
$(function(){
	var list=$(".auform input:not(:submit):not(:reset):not(:button):not(:image):not(:hidden),.auform select,.auform textarea");
	$(list).focus( function() { $(this).parent().addClass("sffocus"); } ).blur( function() { $(this).parent().removeClass("sffocus"); lastfocus=$('.'+$(this).attr('id').split("/")[0]+'_container').attr('class');  });
	$(list).filter('.multifield').blur(validateprev);
	$(list).blur( function() { $(this).parent().removeClass("sffocus"); lastfocus=$('.'+$(this).attr('id').split("/")[0]+'_container').attr('class');  });
	});
function validateprev(){
	var thisclass=$('.'+$(this).attr('name')+'_container').attr('class');
	thisclass=(thisclass ==undefined)? $(this).attr('class') : thisclass;
	var container='.'+lastfocus.split(/ /).join('.').replace(/\//g,'\\/');
	var field=$(container).find('input, select, textarea').filter('.multifield:visible:first');
	if(thisclass != undefined && thisclass.replace('sffocus','') != lastfocus && lastfocus != undefined && thisclass.match( /multifield/ ) && field.attr('id') != undefined){
		validate(field,0);
		}
	};
/* DoubleClick Block */
var submit=1; var timerid=0;
var reset = function() {
        submit=1;
        clearTimeout(timerid);
        timerid  = 0;
        };
var doubleclick = function(self) {
	if(typeof(self) == "undefined")
		self = this;
	self = $(self);
	if(submit==1){
		submit=0;
		timerid=setTimeout("reset()",3000);
		if(self.attr('disableme') == 1){
			self.attr('disabled','disabled');
			setTimeout(function(){self.removeAttr('disabled')},1);
			}
		return true;
		}
	return false;
	};
$(function() {
        submit=1;
        $('.doubleclick').live('click',doubleclick);
        } );
var pageloaded=0;
var qstring="";
/* Validator */
function validate(i,repeat)
	{
	if(typeof(repeat)==undefined) repeat='0';
	if(typeof(i)!='object'){
		i=$('#'+i);
		}
	if(typeof($(i).attr('name'))!='string' && typeof($(i).attr('id')) != 'string'){
		//Object is not real element
		return;
		}
	//Create namespaces so we don't change the elements
	var name=$(i).attr('name');
	var value=$(i).val();
	if($(i).attr('type')=='radio'){
		if($('[name='+name+']').is(':checked')){
			value=$('[name='+name+']:checked').val();
			}
		else{
			value='';
			}
		}
	$('.validation').filter('[value*="conditional=' + name + '"]').each(function(){
		var nname=$(this).attr('name').match('^v:(.*)$')[1];
		$('#' + nname).blur();
		});
	var parent_name = name.split("/")[0];
	var validator = 'v:' + parent_name;
	if( typeof(defaultpageloaded)=="undefined" || (!pageloaded && parent_name==get_pagelast() || ( typeof(defaultpageloaded) !="undefined" && defaultpageloaded==1))){
		pageloaded=1;
		}
	else{
		pageloaded=defaultpageloaded;
		}
	var names=[];
	try{
		document.getElementById(validator).value;
		}
	catch(err){
		//alert('validator croaked finding hidden field('+validator+')jqueryval('+$('#'+validator).val()+')');
		}
	var pars=validator + '=' + document.getElementById(validator).value;// + '&' + name + '=' + value;
	names.push(name);
	if($(i).hasClass('multifield')){
		var vals="";
		var new_parent=parent_name.replace('_international','');
		$('.' + parent_name + '_container [name][name^="'+new_parent+'"]:visible').each(function(){
			if($(i).attr('type')=='checkbox'){
				if($(this).is(':checked')){
					vals+="1";
					}
				}
			else if($(i).attr('type')=='radio'){
				if($('[name='+name+']').is(':checked')){
					vals=$('[name='+name+']:checked').val();
					pars += '&' + $(this).attr('name') + '=' + vals;
					}
				}
			else{
				pars += '&' + $(this).attr('name') + '=' + $(this).val();
				}
			});
		if($(i).attr('type')=='checkbox'){
			pars += '&' + $(i).attr('name') + '=' + vals;
			}
		}
	else{
		$(names).each(function(){
			var name=this;
			var vals="";
			$('[name=' + name + ']').each(function(){
				if($(i).attr('type')=='checkbox'){
					if($(this).is(':checked')){
						vals+="1";
						}
					}
				else if($(i).attr('type')=='radio'){
					if($(this).is(':checked')){
						pars += '&' + $(this).attr('name') + '=' + $('[name='+name+']:checked').val();
						}
					}
				else{
					pars += '&' + $(this).attr('name') + '=' + $(this).val();
					}
				});
			if($('[name=' + name + ']:checkbox').size()){
				pars += '&' + name + '=' + vals;
				}
			});
		}
	if(validator.match( /Phone/ ) && !validator.match( /Type|Temporary/ )){
		var new_parent=parent_name.replace('_international','');
		pars += '&' + 'v:' + new_parent +'_Type' + '=' + $('#v\\:'+ new_parent + '_Type').val();
		}

	var valval=document.getElementById(validator).value;
	if(valval != undefined && valval.match('conditional')){
		var args=valval.match('conditional=([^,]+)')[1];
		var field=$('#' + args);
		pars += '&' + args + '=';
		if(!field.is(':checkbox') || field.is(':checked')){
			pars += field.val();
			}
		}
	if(document.getElementById(validator).value != ''){
		if(pageloaded || qstring.length > 4000){
			if(qstring != ""){
				pars +=qstring;
				qstring="";
				}
			$.get( '/VALIDATE?' + pars,function(data){show_errors(data,repeat);});
			}
		else{
			qstring +='&' + pars;
			}
		}
	}
function show_errors(request,repeat)
	{
	var lines = request.split("\n");
	$.each(request.split("\n"),
		function (i,response)
			{
			// alert('Index:' + i + ' response: ' + response);
			var items = response.split(':');
			if ( items[0] == '' )
				{
				return;
				}
			if ( items[1] == 'OK' )
				{
				var i=$('#'+items[0]);
				var val=i.val();
				var ok=0;
				if(items[0].match( "Country" )){
					if(val!='0')
						ok=1;
					}
				else if(i.attr('type')=='radio'){
					if(i.is(':checked') && val != 'No')
						ok=1;
					}
				else if(i.attr('type')=='checkbox'){
					if(i.is(':checked')){
						ok=1;
						}
					}
				else {
					if(val!=''){
						ok=1;
						}
					}
				if(ok){
					$('.' + items[0]+"_container [name][name^='"+items[0]+"']").addClass('ok').removeClass('error');
					}
				else{
					$('.' + items[0]+"_container [name][name^='"+items[0]+"']").removeClass('ok').filter(':not(.servererror)').removeClass('error');
					}
				}
			else{
				var container='.' + items[0] + '_container';
				$(container + ' [name][name^="'+items[0]+'"], ' + container + ' [name][name^="'+items[0]+'\/"]').addClass('error').removeClass('ok');
				}
			set_container(items[0] + '_container',repeat);
			}
		);
	if(repeat != '0'){
		if($('#'+repeat+'_repeated').contents().is('.ok')){
			$('#'+repeat+'_empty_error').removeClass('error');
			}
		}
	}
function get_pagelast(){
	//return $('input, select, textarea').filter(':last').attr('id');
	var elem = $(null);
	if(document.forms.length > 0)
	elem = $(document.forms[document.forms.length-1].elements).filter(':not(:hidden, :submit, :image):reallyvisible').filter(':last');
	return (elem.size()) ? elem.attr('id').match('([^\/]*)')[1] : '';
	}
function get_blocklast(repeat){
	return $('input, select, textarea', $('#'+repeat+'_repeated')).filter(':last').attr('id');
	}
function set_container(container,repeat){
	var pagelast=get_pagelast();
	var blocklast=get_blocklast(repeat);
	if(repeat != '0' && repeat != ''){
		if(container.match( pagelast ) || container.match( blocklast ) || pageloaded ){
			set_blocks(repeat);
			}
		return;
		}
//	var child=$(container).children();
	container=$('.'+container.replace(/\//g,'\\\/'));
	if($(container).attr('class')==undefined) return;
	if($('.error', container).size()){
		$(container).addClass('error').removeClass('ok');
		}
	else{
		$(container).removeClass('error');
		if($('.ok', container).size()){
			$(container).addClass('ok');
			}
		else{
			$(container).removeClass('ok');
			}
		}
	}
function set_blocks(repeat){
	var badlist=$('.' + repeat + ' [name][name^="'+repeat+'"].error');
	var goodlist=$('.' + repeat + ' [name][name^="'+repeat+'"]:not(.error)');
	var goodcontlist=[];
	var goodcontcheck=[];
	$(goodlist).each(function(){
//		var cont = $(this).attr('name') + '_container';
		var cont = $(this).parent().attr('class');
		cont = cont.replace(' ok','').replace(' error','').replace(' servererror','').replace(' multifield','').replace('generic_element','').replace('date','').replace(/ +/g,'.').replace(/ +$/,'').replace(/^ +/,'').replace(/\.$/,'').replace(/^ *\./,'');
		if(goodcontcheck[cont]!=1){
			goodcontcheck[cont]=1;
			goodcontlist.push(cont);
			}
		});
	$(goodcontlist).each(function(){ //Add oks to the containers that have oks in them ...
		set_container(this,0);
		});
//	if($('.' + repeat + ' .ok[name][name^="'+repeat+'"]').is('.ok')){
//}
	if(goodlist.size()){
		$(badlist).each(function(){ //Add errors to a block because there is one good element in it...
			$('.'+$(this).attr('name')+'_container').addClass('error').removeClass('ok');
			});
		}
	else{ // Remove errors to the block because there are no finished blocks in it...
		$(badlist).each(function(){
			$('.'+$(this).attr('name')+'_container.error').removeClass('error');
			});
		}
	}

function ping () {
        $.get('/PING',{},
                function(data,status)
                        {
                        if ( data.match('OK') )
                                { setTimeout("ping();", 30000); }
                        else
                                {
				$('#toppanel').css({ top: '100px' } );
				$('#toppanel ul').css({ border: '10px solid white', width: '465px' } );
				$('#frame,#container').fadeTo('fast',0.20);
                                $('#person').text('You have been logged out due to inactivity');
                                $('#toggle').html('<a href=\'https://vault.andrews.edu/login?service=https://webdev.cc.andrews.edu/cms/\'>Click here to login again</a>');
                                }
                        }
                );
        }

