var documentObject = Class.create({
	initialize: function(el){
	 	this.properties = eHA.elementToObjectLiteral(el);
	 	this.el = $(el);
	 	this.el.observe("click",function(event){
	 		event.stop();
	 		panels.appear();
	 		this.properties.panelid = "panel_media"; // this ID is reused
	 		
	 		var showDocument = function(){
				if(typeof this.panelItem==="undefined"){
					
					var documentHTML = new Element("div").addClassName("meta_data").addClassName("document")
						.addClassName(eHA.documents.formatMimeType(this.properties.mimetype));
					
					documentHTML.insert({bottom:new Element("span").addClassName("download").update("<a href='"+this.properties.path_document+"' title='download'>Download</a>")});
					documentHTML.insert({bottom:new Element("h4").update("<a href='"+this.properties.path_document+"'>"+this.properties.title+"</a>")});
					documentHTML.insert({bottom:new Element("h5").update(this.properties.filetype+" ("+this.properties.mimetype+")")});
					documentHTML.insert({bottom:new Element("p").update("Click link above to download this file.")});
					
					this.panelItem = new panelObject({
						width: "500",
						panelid:"panel_media",
						html:documentHTML
					});
				}
				this.panelItem.insert();
	 		}.bind(this);
	 		
	 		if(this.properties.complete){
	 			showDocument();
	 		}else{
	 			this.loadData(showDocument);
	 		}
	 		
	 	}.bind(this));
	},
 	loadData: function(callback){
 		var parameters = {
 			childpagename: eHA.Site+"/Document_C/"+eHA.Site+"/Document/json",
 			site: eHA.Site,
 			c: "Document_C",
 			cid: this.properties.assetid,
 			pagename: eHA.Site+"_default_Wrapper"
 		};
 		var localObj = this;
 		var URL = "/cs/Satellite";
		this.ajaxRequest = new Ajax.Request(URL,
			{
				method:'get',
				parameters: parameters,
				onCreate: function(){
					eHA.log.create(parameters.cid+": AJAX request for JSON created", 3);
				},
				onSuccess: function(transport){
					eHA.log.create(parameters.cid+": AJAX request for JSON succeeded", 3);
				},
				onComplete: function(transport){
					// add transport.responseText to this.properties
					eHA.log.create(parameters.cid+": AJAX request for JSON completed", 3);
					if(transport.responseText){
						eHA.log.create(parameters.cid+": attempting to evaluate JSON and add to documentObject", 3);
						try{
							var metaData = transport.responseText.evalJSON(true);
							Object.extend(localObj.properties,metaData);
							localObj.properties.complete = true;
						}catch(err){
							eHA.log.create(parameters.cid+":"+err.name+" - "+err.message, 1);
						}
					}else{
						eHA.log.create(parameters.cid+": problem with transport.responseText onComplete", 1);
					}
					if(typeof callback!=="undefined" && callback){
						callback();
					}
				}.bind(this),
				onFailure: function(){
					eHA.log.create(parameters.cid+": AJAX request for JSON resulted in failure", 1);
				}
			});
 	}
});


/**
 * eHA.documents object namespace.  Most functions are a part of {@link documentObject}
 * @namespace
 */
eHA.documents = {
	/**
	 * @function
	 */
	init: function(){
		if($$("a.document")[0]){
			this.preloader = new Element("img",{src:eHA.resourcepath+"images/wide-preloader.gif",alt:"please wait",className:"preloader"});
			this.documentObjects = {};
			$$("a.document").each(function(element){
				var documentID = eHA.elementToObjectLiteral(element).assetid;
				this.documentObjects[documentID] = new documentObject(element);
			}.bind(this));
		}
	},
	formatMimeType: function(mimetype){
		var regex = /[\/+.]/g;
		return mimetype.replace(regex,"-");
	},
	dateFormat: "yyyy-MM-dd HH:mm:ss",
	duration: 0.5
};
