if(!window.FG)
window.FG = function(a,c) {
  if(window == this || !this.init) return new FG(a,c);
  return this.init(a,c);
};
FG.p = FG.prototype;
FG.p.FG = 1;
FG.p.init = function(a,c) {
  if(!a) {
    this.a = null;
    return this;
  }
  c = c || document;
  this.a = c.getElementById(a);
  return this;
};
FG.d = {};
FG.dd = {};

FG.p.FG = function(a,c) {
  var t = FG(a,c);
  t.s = this.s;
  return t;
};

FG.p.Focus = function() {
  if(this.a) this.a.focus();
  return this;
};
FG.p.Fill = function(text){
	this.a.innerHTML = text;
	return this;
};
FG.p.Ajax = function(url, loadtext){
	if(this.a)
		var el = this.a;
	
	if(loadtext != null)
		el.innerHTML = loadtext;
	
	if(url.indexOf("?") == -1)
		url += "?ajax=1"; else url += "&ajax=1";
		
	if(arguments.length > 2)
		for(var i=2; i<arguments.length; i++)
			url += "&arg[" + (i-2) + "]=" + arguments[i];
			
	new FG.Ajax("GET", url, {onComplete:
				function(e){
					if(e.responseText.substr(0,11) == "fail_safely"){
						window.location = e.responseText.substr(13);
					}else{
						var newspan = document.createElement("span");
						newspan.innerHTML = e.responseText;
						el.innerHTML = "";
						el.appendChild(newspan);
					}
				}});
	
	return this;
};
FG.p.AjaxPost = function(url, postform){
	if(url.indexOf("?") == -1)
		url += "?ajax=1";
	else
		url += "&ajax=1";
		
	if(this.a)
		var el = this.a;
		
	new FG.Ajax("POST", url, {form: postform,onComplete:
				function(e){
					var newspan = document.createElement("span");
					newspan.innerHTML = e.responseText;
					el.innerHTML = "";
					el.appendChild(newspan);
				}});
	
	return this;
};
FG.Ajax=function(method,url,options){this.setOptions(options);this.method=method.toUpperCase();this.request=FG.Ajax.newXMLHttpRequest();if(!this.request){return true;}
this.aborted=false;var self=this;if(this.options.timeout){this.timer=setTimeout(function(){self.onTimeout();},this.options.timeout);}
this.request.onreadystatechange=function(){self.onReadyStateChange();};this.body=this.options.body||{};this.setMethod();this.body=(function(oBody){var aBody=[];for(var p in oBody){aBody.push(encodeURIComponent(p)+"="+encodeURIComponent(oBody[p]));}
return((aBody.length>0)?aBody.join("&"):null);})(this.body);var serialization=null;if(this.options.form){serialization=FG.Ajax.serializeForm(this.options.form);}
if(this.body&&serialization){this.body=serialization+"&"+this.body;}else if(serialization){this.body=serialization;}
if(this.method==='GET'){if(this.body){url=url+(url.match(/\?/)?'&':'?')+this.body;}
this.body=null;}
this.request.open(this.method,url,true);if(this.method==="POST"){this.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");}
if(this.options.headers){for(p in this.options.headers){this.request.setRequestHeader(p,this.options.headers[p]);}}
this.request.send(this.body);};FG.Ajax.prototype.setOptions=function(options){this.options=options||{};};FG.Ajax.prototype.setMethod=function(){if(this.method==='GET'){this.body._uniqueId=(new Date()).getTime()+""+FG.Ajax.transactionId++;}};FG.Ajax.transactionId=0;FG.Ajax.newXMLHttpRequest=function(){var fs=[function(){return new ActiveXObject("Microsoft.XMLHTTP");},function(){return new ActiveXObject("Msxml2.XMLHTTP");},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0");},function(){return new XMLHttpRequest();}];for(var i=fs.length;i--;){try{var r=fs[i]();if(r){FG.Ajax.newXMLHttpRequest=fs[i];return r;}}catch(e){}}
(FG.Ajax.newXMLHttpRequest=function(){return null;})();};FG.Ajax.serializeForm=function(f){if(typeof f=='string'){f=document.getElementById(f)||document.forms[f];}
var els=f.elements,cereal=[];function add(n,v){cereal.push(encodeURIComponent(n)+"="+encodeURIComponent(v));}
for(var i=0,ilen=els.length;i<ilen;i++){var el=els[i];if(!el.disabled){switch(el.type){case'text':case'password':case'hidden':case'textarea':add(el.name,el.value);break;case'select-one':if(el.selectedIndex>=0){add(el.name,el.options[el.selectedIndex].value);}
break;case'select-multiple':for(var j=0,jlen=el.options.length;j<jlen;j++){var opt=el.options[j];if(opt.selected){add(el.name,opt.value);}}
break;case'checkbox':case'radio':if(el.checked){add(el.name,el.value);}
break;}}}
if(this.button){add(this.button.name,this.button.value);this.button=null;}
return((cereal.length>0)?cereal.join("&"):null);};FG.Ajax.setButton=function(el){this.button={name:el.name,value:el.value};};FG.Ajax.prototype.doCallback=function(sMethod){if(this.options.scope){this.options[sMethod].call(this.options.scope,this.request,this.options.argument);}else{this.options[sMethod](this.request,this.options.argument);}};FG.Ajax.prototype.onReadyStateChange=function(){if(!this.aborted&&this.request.readyState===4){if(this.timer){clearTimeout(this.timer);}
if(this.request){this.handleReadyState4();}
this.request=null;}};FG.Ajax.prototype.handleReadyState4=function(){var request=this.request,options=this.options;var status;try{status=request.status;}catch(e){status=13030;}
if(status==12002||status==12029||status==12030||status==12031||status==12152||status==13030){this.request={status:0,statusText:"communication failure",argument:options.argument};}
if(options.before){this.doCallback("before");}
this.status=status;this.middleCallback();if(options.after){this.doCallback("after");}};FG.Ajax.prototype.middleCallback=function(){if(this.options["on"+this.status]){this.doCallback("on"+this.status);}else if(this.status>=200&&this.status<300&&this.options.onSuccess){this.doCallback("onSuccess");}else if((this.status<200||this.status>=300)&&this.options.onFailure){this.doCallback("onFailure");}else if(this.options.onComplete){this.doCallback("onComplete");}};FG.Ajax.prototype.abort=function(){this.aborted=true;this.request.abort();this.request=null;};FG.Ajax.prototype.onTimeout=function(){this.aborted=true;this.request.abort();this.handleTimeout();this.request=null;};FG.Ajax.prototype.handleTimeout=function(){if(this.options.before){this.doCallback("before");}
if(this.options.onTimeout){this.doCallback("onTimeout");}
if(this.options.after){this.doCallback("after");}};FG.Ajax.isSupported=(function(){var en=false,x;try{if(typeof(function(){}).call==="function"&&(x=FG.Ajax.newXMLHttpRequest())&&x.readyState===0){en=true;}}catch(e){en=false;}
try{if(!x.setRequestHeader){en=false;}}catch(e){}
function cannotPost(){var xhr=new XMLHttpRequest();try{xhr.send("asdf");}catch(e){if(-1!==e.toString().indexOf("Could not convert JavaScript argument arg 0 [nsIXMLHttpRequest.send]")){return true;}}
return false;}
if(this.XMLHttpRequest&&cannotPost()){en=false;}
return function(){return en;};})();