Ajax.PostBack = Class.create({
	initialize:function(id, url, options){
		this.options = options || {};
		if (!this.options.target) {
			this.options.target = id+'-results';
		}
		
		var name = id;
		this.form = $(name+'-form');
		var frame_n = (name + '-iframe').camelize().underscore();

		this.frame = new Element('iframe', {id:name + '-iframe',name:frame_n, src:''}).observe('load', this.do_results.bind(this)).setStyle({display:'none'});
		
		this.form.observe('submit', this.do_submit.bind(this));
		this.form.enctype = 'multipart/form-data';
		this.form.method = 'post';
		this.form.target  = frame_n;
		this.form.action = url;
		
		this.form.appendChild(this.frame);
		
	},
	do_submit: function (){
		this.submited = true;
		if (this.options.onSubmit) {
			this.options.onSubmit(this);
		}
		return false;
	},
	do_results: function (){
		if (!this.submited) {
			this.submited = true;
			return;
		}
			
		var r = this.getFrame(this.frame).body.innerHTML;
				
		if (this.options.onCompleate) {
			this.options.onCompleate(r);
		}
		
		if (this.options.target) {
			$(this.options.target).update(r).highlight();
		}
	},
	do_upload: function(){
		this.do_submit();
		//this.form.submit();
		return false;
	},
	getFrame:function (iFrameEl) {  
		var doc = null;  
		if (iFrameEl.contentDocument) { // For NS6  
			doc = iFrameEl.contentDocument;  
		} else if (iFrameEl.contentWindow) { // For IE5.5 and IE6  
			doc = iFrameEl.contentWindow.document;  
		} else if (iFrameEl.document) { // For IE5  
			doc = iFrameEl.document;  
		} else {  
			return null;  
		}  
		return doc;  
	}
});