//Compat fuction for IE.

if (!window.XMLHttpRequest) {
	window.XMLHttpRequest = function() {

		var xmlVersions = [ "MSXML2.XMLHttp.5.0",
			"MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0",
			"MSXML2.XMLHttp","Microsoft.XMLHttp"
		];
	
		for (var i = 0; i < xmlVersions.length; i++) {
			try {
				var x = new ActiveXObject(xmlVersions[i]);
				return x;
			} catch (e) {}
		}
	};
	
}

var Ajax = {
	request : function (server, data, callback, method) {
		var request = new Ajax.Request (server, data, callback, method);
		request.doRequest();
	},

	Request : new Class ({

		__construct : function (server, data, callback, method) {
			this.method = method || 'POST';
			this.requestObject = new XMLHttpRequest();
			this.callback = callback;
			this.data = data;
			this.server = server;
		},
		
		onReadyStateChange : function (event) {
		    // only if req shows "loaded"
	    	if (this.requestObject.readyState == 4) {

//AjaxLoader.stop();


	        	// only if "OK"
	        	if (this.requestObject.status == 200) {
	        		this.callback (this.requestObject.responseText, this.requestObject.responseXML);
	        	} else {
	        		throw new Error ("Server returned status " + this.requestObject.status);
	        	}
	        } else {
	            /*throw new Error ("There was a problem retrieving the XML data:\n" + requestObject.statusText);*/
	        }
		},
		
		doRequest : function() {
//AjaxLoader.start();


			this.requestObject.open (this.method, this.server, true);
			this.requestObject.setRequestHeader ("Content-Language", "en");
			this.requestObject.setRequestHeader ("Content-Charset", "utf-8");
			this.requestObject.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
			this.requestObject.setRequestHeader("Accept-Charset", "utf-8"); 
			var thisref = this;
			this.requestObject.onreadystatechange = function (e) {
				thisref.onReadyStateChange.call (thisref, e);
			};
			this.requestObject.send (this.data);
		}
		
	})
	
};	

var Iframe = {

    iframe : undefined,

    server : 'iframe.php',

    submit : function (form, callback) {
        var ifr = new Iframe.Fallback (Iframe.server, form, callback);
        ifr.submit();
    }
    
};
/*
Iframe.Fallback = new Class ({

    __construct : function (server, form, callback) {
        this.server = server;
        this.form = form;
        this.callback = callback;
        if (Iframe.iframe === undefined) {
        	Iframe.iframe = document.getElementById ('iframe');
            //Iframe.iframe = document.createElement ('IFRAME');
            //Iframe.iframe.className = 'upload'; 
            //Iframe.iframe.src = "javascript:;";
            //Iframe.iframe.id = Iframe.iframe.name = 'iframe';
            //document.body.appendChild (Iframe.iframe);
        }
    },
    
    submit : function() {
        this.oldAction = this.form.action;
        this.oldTarget = this.form.target;
        this.form.action = this.server;
        this.form.target = Iframe.iframe.id;
        this.form.submit();
        var thisref = this;
        this.interval = setInterval (function() {
            if (Iframe.iframe.contentWindow && Iframe.iframe.contentWindow.isLoaded) {
                Iframe.iframe.contentWindow.isLoaded = false;
                clearInterval (thisref.interval);
                thisref.form.action = thisref.oldAction;
                thisref.form.target = thisref.oldTarget;
                
                thisref.callback (Iframe.iframe.contentWindow.randomId);
                //delete thisref.interval;              
            }
        }, 100);
    }

});
*/
var Iframe = {
    iframe : undefined,
    submit : function (callback) {
        var ifr = new Iframe.Fallback (callback);
        ifr.submit();
    },
	Fallback : new Class ({
	    __construct : function (callback) {
	        this.callback = callback;
	        if (Iframe.iframe === undefined) {
	        	Iframe.iframe = document.getElementById ('iframe');
	        }
	    },
	    submit : function() {
	        document.forms[0].submit();
	        this.interval = setInterval (Delegate (this, function() {
	            if (Iframe.iframe.contentWindow && Iframe.iframe.contentWindow.isLoaded) {
	                Iframe.iframe.contentWindow.isLoaded = false;
	                clearInterval (this.interval);
	                this.callback (Iframe.iframe.contentWindow.randomId, Iframe.iframe.contentWindow.filesCount);
	                //delete thisref.interval;              
	            }
	        }), 100);
	    }
	})
};