if(!this.JSON || navigator.appName == 'Microsoft Internet Explorer' || navigator.appCodeName == 'Mozilla'){
JSON=function(){
function f(n){
return n<10?'0'+n:n;
}
Date.prototype.toJSON=function(key){
return this.getUTCFullYear()+'-'+
f(this.getUTCMonth()+1)+'-'+
f(this.getUTCDate())+'T'+
f(this.getUTCHours())+':'+
f(this.getUTCMinutes())+':'+
f(this.getUTCSeconds())+'Z';
};
var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
escapeable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
gap,
indent,
meta={
'\b':'\\b',
'\t':'\\t',
'\n':'\\n',
'\f':'\\f',
'\r':'\\r',
'"':'\\"',
'\\':'\\\\'
},
rep;
function quote(string){
escapeable.lastIndex=0;
return escapeable.test(string)?
'"'+string.replace(escapeable,function(a){
var c=meta[a];
if(typeof c==='string'){
return c;
}
return'\\u'+('0000'+
(+(a.charCodeAt(0))).toString(16)).slice(-4);
})+'"':
'"'+string+'"';
}
function str(key,holder){
var i,
k,
v,
length,
mind=gap,
partial,
value=holder[key];
if(value&&typeof value==='object'&&
typeof value.toJSON==='function'){
value=value.toJSON(key);
}
if(typeof rep==='function'){
value=rep.call(holder,key,value);
}
switch(typeof value){
case'string':
return quote(value);
case'number':
return isFinite(value)?String(value):'null';
case'boolean':
case'null':
return String(value);
case'object':
if(!value){
return'null';
}
gap+=indent;
partial=[];
if(typeof value.length==='number'&&
!(value.propertyIsEnumerable('length'))){
length=value.length;
for(i=0;i<length;i+=1){
partial[i]=str(i,value)||'null';
}
v=partial.length===0?'[]':
gap?'[\n'+gap+
partial.join(',\n'+gap)+'\n'+
mind+']':
'['+partial.join(',')+']';
gap=mind;
return v;
}
if(rep&&typeof rep==='object'){
length=rep.length;
for(i=0;i<length;i+=1){
k=rep[i];
if(typeof k==='string'){
v=str(k,value,rep);
if(v){
partial.push(quote(k)+(gap?': ':':')+v);
}
}
}
}else{
for(k in value){
if(Object.hasOwnProperty.call(value,k)){
v=str(k,value,rep);
if(v){
partial.push(quote(k)+(gap?': ':':')+v);
}
}
}
}
v=partial.length===0?'{}':
gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+
mind+'}':'{'+partial.join(',')+'}';
gap=mind;
return v;
}
}
return{
stringify:function(value,replacer,space){
var i;
gap='';
indent='';
if(typeof space==='number'){
for(i=0;i<space;i+=1){
indent+=' ';
}
}else if(typeof space==='string'){
indent=space;
}
rep=replacer;
if(replacer&&typeof replacer!=='function'&&
(typeof replacer!=='object'||
typeof replacer.length!=='number')){
throw new Error('JSON.stringify');
}
return str('',{'':value});
},

parse:function(text,reviver){
var j;

function walk(holder,key){
	var k, v, value = holder[key];

	if(value && typeof value==='object'){
		for(k in value){
			if(Object.hasOwnProperty.call(value, k)){
				v = walk(value, k);
				if(v !== undefined){
					value[k] = v;
				}
				else{
					delete value[k];
				}
			}
		}
	}
	return reviver.call(holder, key, value);
}

cx.lastIndex = 0;

if(cx.test(text)){
	text = text.replace(cx, function(a){
		return '\\u'+('0000'+ (+(a.charCodeAt(0))).toString(16)).slice(-4);
	});
}

//if(/^[\],:{}\s]*$/.test(
	text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
	replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
	replace(/(?:^|:|,)(?:\s*\[)+/g, '')
	//)){
		j = eval('('+text+')');
		return typeof reviver === 'function'? walk({'':j},''): j;
//}

throw new SyntaxError('JSON.parse');
}
};
}();
}

var req = {
	setObjType: function(){
	if(window.XMLHttpRequest){return new XMLHttpRequest();}
	else if(window.ActiveXObject){
	try{return new ActiveXObject("Msxml2.XMLHTTP");}
	catch(e){
	try{return ActiveXObject("Microsoft.XMLHTTP");}
	catch(e){
	alert('This site has encountered an issue that will keep you from changing your preferences. Please call to have your preferences changed.');
	return;}}}},

	getReqExe: function(qString, response, url){
	
	if(qString == '')
	{
		qString = '?timestamp=' + (new Date).getTime();
	}
	else
	{
		qString += '&timestamp=' + (new Date).getTime();
	}
	
	var http = this.setObjType();
	http.onreadystatechange = function(){if(http.readyState === 4 && http.status === 200){response(http);}};
	http.open('GET', url +'?' + qString, true);
	http.send('');},

	createFormString: function(valSet){
		var formString = '';
		for(val in valSet){
		if(valSet.hasOwnProperty){formString += val + '=' + JSON.stringify(valSet[val]) + '&';}
		}
		return formString.slice(0,-1);		// removes extra '&' from the end of formString
	},

	postReqExe: function(valSet, response, url){
	var formVals = this.createFormString(valSet);
	//alert(formVals);
	var http = this.setObjType();
	http.onreadystatechange = function(){if(http.readyState === 4 && http.status === 200){response(http);}};
	http.open('POST', url, true);
	http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
	http.setRequestHeader('Content-length', formVals);
	http.setRequestHeader("Connection", "close");
	http.send(formVals);}
};
