// General Purpose Functions

function convert_size(input, engine){
	var bytes = new Array("B", "KB", "MB", "GB", "TB");
	for(val in bytes){
		if(input > 1024) input = input / 1024; else break;
	}
	
	return Math.round(input*100)/100+" "+bytes[val];
}


//	Adds a target="_blank" attribute to all anchor tags
//	found with an attribute with rel="external" at runtime.
//
//	*	Thanks to Marius Stanciu for the helpful technique.
//		URL:	http://marius.code-purity.com/archives/2009/4/13/opening_pages_in_a_new/
function addExternalLinks(){
	var links	= $$('a[rel="external"]');
	links.each(function(link){
		if(link.readAttribute("href") != "" && link.readAttribute("href") != "#")
			link.writeAttribute("target", "_blank");
	});
}



//	Replaces an anchor's title text with a designed value.
//	*	Intended for use alongside Lightbox script, to replace tooltip text with lengthier descriptions viewed when opened.
function setLightboxInfo(id, text){
	var fullString		=	text;
	var node			=	(typeof(id) == "string") ? $(id) : id;
	node.writeAttribute("title", fullString);
}


function placeholderText(remtitle){
	
	//	Register form listeners to empty text fields still holding default text upon submission.
	$$("form").each(function(form){
		
		//	Triggered when form's being submitted.
		form.observe("submit", function(e){
			var target	= e.target;
			var value	= "";
			var dtext	= "";
			form.getElements().each(function(f){
				value	= f.getValue();
				dtext	= f.readAttribute("dtext");
				if(f.hasClassName("prevtxt") && value == dtext)
					f.setValue("");
			});
			
		});
	});
	
	var fields	=	$$(".prevtxt");
	var title	=	"";
	fields.each(function(link){
		title	=	link.readAttribute("title");
		//	Determine whether to add placeholder text/listeners based on Title attribute
		if(title != ""){
			link.setValue(title);
			link.writeAttribute("dtext", title);
			link.addClassName("prevtext_inactive");
			
			//	Triggered when element gains focus
			link.observe("focus", function(e){
				var target = e.target;
				
				// If current value matches placeholder text, clear field
				if(target.readAttribute("dtext") == target.getValue()){
					target.removeClassName("prevtext_inactive");
					target.setValue("");
				}
			});
			
			//	Triggered when element loses focus
			link.observe("blur", function(e){
				var target	= e.target;
				var dtext	= target.readAttribute("dtext");
				var value	= target.getValue();
				//	If value was empty and/or left at placeholder value, restore styles
				if(dtext == value || !value){
					target.addClassName("prevtext_inactive");
					target.setValue(dtext);
				}
			});
			
			//	If remtitle is TRUE, remove the Title attribute from source markup
			if(remtitle)
				link.writeAttribute("title", null);
		}
	});
}


// Fired when document's finished loading
function onLoaded(){
	addExternalLinks();
	placeholderText(true);
}
document.observe("dom:loaded", onLoaded);
