var FIDO;

(function() {

ajaxObj = "";

FIDO = {
	$ : function (){
		var elements = new Array();
		for (var i = 0; i < arguments.length; i++)
		{
			var element = arguments[i];
			if (typeof element == 'string')
			{
				element = document.getElementById(element);
			}
			if (arguments.length == 1)
			{
				return element;
			}
			elements.push(element);
		}
		return elements;
	},
	addEvent : function (elm, evType, fn, useCapture)
	{
		useCapture || (useCapture = false);
		if (elm.addEventListener) {
			elm.addEventListener(evType, fn, useCapture);
			return true;
		}
		else if (elm.attachEvent) {
			var r = elm.attachEvent('on' + evType, fn);
			return r;
		}
		else
		{
			if ( elm['on' + evType] != null )
			{
				var oldOnevent = elm['on' + evType];
				elm['on' + evType] = function ( e )
				{
					oldOnevent( e );
					fn();
				};
			}
			else
			{
				elm['on' + evType] = fn;
			}
		}
	},
	ajaxCall : function(myclass, mymethod)
	{
		var args = "action="+myclass+"&method="+mymethod;
		for (i = 2; i < arguments.length; i++)
		{
			args += "&arg"+(i-2)+"="+arguments[i];	
		}
		if (FIDO.$(mymethod))
		{
			var callfunc = 'ajaxObj.call("'+args+'","'+mymethod+'")';
		}
		else
		{
			var callfunc = 'ajaxObj.call("'+args+'",'+eval(mymethod+"_Result")+')';
		}
		if (typeof ajaxObj == "string") {
			setTimeout(callfunc, 1000);
		} else {
			eval(callfunc);
		}
	},
	ajaxCallEx : function(myclass, mymethod, ajaxType)
	{
		ajaxType || (ajaxType = "JSON");
		ajaxObj.format = ajaxType.toUpperCase();
		var j = 0;
		var args = new Array();
		for (i = 0; i < arguments.length; i++) {
			if (arguments[i] != ajaxType) {
				args[j] = arguments[i];
				j++;
			}
		}
		FIDO.ajaxCall.apply(this, args);
	},
	checkAjaxReturn : function(retval)
	{
		if(retval)
		{
			if(typeof(retval.errors) != "undefined")
			{
				return retval.errors;	
			}
			else
			{
				return retval.output;
			}
		}
		else
		{
			return "Javascript error! (details)";
		}
	},
	init : function()
	{
		var scriptFiles = document.getElementsByTagName('head')[0].getElementsByTagName('script');

		for(var i = 0, scriptFile; scriptFile = scriptFiles[i]; i++)
		{
			if(scriptFile.src && scriptFile.src.match(/mybic/))
			{
				ajaxObj = new XMLHTTP("csjs/mybic_server.php");
				ajaxObj.format = "JSON";
				ajaxObj.debug = 0;
				break;
			};
		};
	}
}

})();

if(!Array.prototype.push)
{
	Array.prototype.push = function()
	{
		for ( var i = 0; i < arguments.length; i++ )
		{
			this[this.length] = arguments[i];
		}
		return this.length;
	}
}

if(!String.prototype.trim)
{
	String.prototype.trim = function()
	{
		return this.replace(/^\s*/,'').replace(/\s*$/, '');
	}
}

FIDO.addEvent(window, 'load', FIDO.init);
