/*
        #
        #  Copyright (C) 2005 Vanbelle Edouard
        #
        #  This program is free software; you can redistribute it and/or
        #  modify it under the terms of the GNU General Public License
        #  as published by the Free Software Foundation; either version 2
        #  of the License, or (at your option) any later version.
        #
        #  This program is distributed in the hope that it will be useful,
        #  but WITHOUT ANY WARRANTY; without even the implied warranty of
        #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        #  GNU General Public License for more details.
        #
        #  You should have received a copy of the GNU General Public License
        #  along with this program; if not, write to the Free Software
        #  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
        #
*/


function highLight ( object)
{
	if (object.className != "file-selected")
		object.className="file-highLight";
	//object.style.border="1px solid #dddddd";
}

function unhighLight( object)
{
	if (object.className != "file-selected")
		object.className="file";
	//object.style.border="1px solid transparent";
}

function select( object)
{
	object.className="file-selected";
	//object.style.border="1px solid #dddddd";
}

var clicked = new Array();
var dblclick_time = 600;
var selected = false;
function round( number)
{
	var shift= 100;
	return Math.round( number * shift) / shift;
}

function mouseUp ( object, name, link, size, ctime, mtime, mimetype, slideshow, meta)
{
	if (clicked[ object.id ] == true) {
		if ( meta != "true") {
			document.location=link;
		}
		else {
			document.location=link+"?display=preview";
		}
	}
	else {
		if (selected != false) {
			//selected.style.background="#ffffff";
			selected.className="file";
			//object.className="file";
		}
		//object.style.background="#dddddd";
		object.className="file-selected";
		selected=object;

		var hsze;
		if      (size > 1024*1024*1024)
			hsize = round( size / (1024*1024*1024)) + "GB"
		else if (size > 1024*1024)
			hsize = round( size / (1024*1024)) + "MB"
		else if (size > 1024)
			hsize = round( size / 1024) + "KB"
		else
			hsize = size + "B";

		if (mimetype == "httpd/unix-directory") {
			document.getElementById( 'fileInfo.open').style.display='block';
			document.getElementById( 'fileInfo.open').href=link;
			document.getElementById( 'fileInfo.meta').style.display='none';
			document.getElementById( 'fileInfo.original').style.display='none';
			document.getElementById( 'fileInfo.slideshow3').style.display='none';
			document.getElementById( 'fileInfo.slideshow6').style.display='none';
			document.getElementById( 'fileInfo.download').style.display='none';
		}
		else {
				
			if ( slideshow != "true") {
				document.getElementById( 'fileInfo.open').style.display='none';
				document.getElementById( 'fileInfo.original').style.display='block';
				document.getElementById( 'fileInfo.original').href=link;
				document.getElementById( 'fileInfo.slideshow3').style.display='none';
				document.getElementById( 'fileInfo.slideshow6').style.display='none';
			}
			else {
				document.getElementById( 'fileInfo.open').style.display='none';
				document.getElementById( 'fileInfo.original').style.display='block';
				document.getElementById( 'fileInfo.original').href=link;
				document.getElementById( 'fileInfo.slideshow3').style.display='block';
				document.getElementById( 'fileInfo.slideshow3').href=link+'?display=slide&timeout=3';
				document.getElementById( 'fileInfo.slideshow6').style.display='block';
				document.getElementById( 'fileInfo.slideshow6').href=link+'?display=slide&timeout=6';
			}
			if ( meta != "true")
			{
				document.getElementById( 'fileInfo.meta').style.display='none';
			}
			else
			{
				document.getElementById( 'fileInfo.meta').style.display='block';
				document.getElementById( 'fileInfo.meta').href=link+'?display=preview';
			}
			
			document.getElementById( 'fileInfo.download').style.display='block';
			document.getElementById( 'fileInfo.download').href=link+'?display=download';
		}
		
		document.getElementById( 'fileInfo').style.display='block';
		document.getElementById( 'fileInfo.name').innerHTML=name;
		document.getElementById( 'fileInfo.type').innerHTML=mimetype;
		document.getElementById( 'fileInfo.size').innerHTML=hsize;
		document.getElementById( 'fileInfo.created').innerHTML=ctime;
		document.getElementById( 'fileInfo.modified').innerHTML=mtime;
	}
	
	clicked[ object.id] = true;
	setTimeout( 'clicked["'+object.id+'"] = false;', dblclick_time);
}


function setTheme( theme)
{
	//document.cookie="Theme=explode; expires=Thu, 01-Jan-70 00:00:01 GMT; path=/";
	document.cookie="xaiTheme="+escape(theme)+"; path=/";
	var referrer = document.referrer.replace( /\?.*/, "");
	window.location.reload();
	return false;
}

function new_XMLHttpRequest()
{
	var http = null;
	
	if      (window.XMLHttpRequest) 
	{
		try {
			http = new XMLHttpRequest(); 
		} catch (e) {
			http = null;
		}
	}
	else if (window.ActiveXObject)
	{
		try {
			http = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http = new ActiveXObject("Microsoft.XMLHTTP"); 
			} catch (e) {
				http = null;
			}
		}
	}
	else 
	{
		http = null;
	}

	if (http == null) alert("your browser don't support Ajax system");

	return http;
}

function getMetaData( url, target)
{
	var http = new_XMLHttpRequest()
	http.onreadystatechange = function()
    	{
		if(http.readyState == 4)
		{
			if (http.status == 200) 
			{
				//alert( http.responseText);
				var metaData = http.responseXML;

				printComment( metaData, target);

			}
		        else 
			{
				alert("Error code " + http.status);
			}
		};
	};
	http.open( "GET", url, true);
	http.send( null);
}

function printComment( metaData, target)
{	
	var nodes = target.childNodes;
	for( var i= nodes.length -1 ; i >= 0; i--)
	{
		target.removeChild( nodes[i] );
	}

	var comments = metaData.getElementsByTagName("comment");

	for ( var i=comments.length-1; i>=0; i--)
	{
		var comment = comments[i];
		
		var divComment       = target.ownerDocument.createElement('div');
		var divCommentHeader = target.ownerDocument.createElement('div')
		var spanAuthor       = target.ownerDocument.createElement('span');
		var spanDate         = target.ownerDocument.createElement('span');
		var divCommentBody   = target.ownerDocument.createElement('div')
		
		spanAuthor.appendChild( target.ownerDocument.createTextNode( comment.getAttribute("author")));
		spanAuthor.className = "comment-author";

		spanDate.appendChild(   target.ownerDocument.createTextNode( comment.getAttribute("date")));
		spanDate.className   = "comment-date";

		divCommentHeader.appendChild( spanAuthor);
		divCommentHeader.appendChild( spanDate);
		divCommentHeader.className = "comment-header";
		
		divCommentBody.appendChild( target.ownerDocument.createTextNode( comment.firstChild.nodeValue ));
		divCommentBody.className = "comment-body";
		
		divComment.appendChild( divCommentHeader);
		divComment.appendChild( divCommentBody);
		divComment.className = ( i % 2 ? "comment-even" : "comment-odd" );

		target.appendChild( divComment);

		//set scroll to top
		try{
			target.scrollTop = 0;
		}
		catch (e)
		{
			; //ignore errors
		}
	}

}

function replace( oldT, newT)
{
	oldT.style.display = "none";
	newT.style.display = "block";
}

function addComment( url, form)
{

	if (form.author.value.length>0 && form.comment.value.length>0)
	{
		var http = new_XMLHttpRequest()

		http.onreadystatechange = function()
		{
			if(http.readyState == 4)
			{
				if (http.status == 200) 
				{

					var metaData = http.responseXML;

					printComment( metaData, document.getElementById( "target"));
				}
				else 
				{
					alert("Error code " + http.status);
				}
			};
		};

		//need to use encodeURI because escape don't convert string in UTF-8 before

		http.open( "POST", url, true);
		http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");   
		http.send( 
			"display=" + "meta"                           + "&" +
			"action="  + "addComment"                     + "&" +
			"author="  + encodeURI( form.author.value )   + "&" +
			"comment=" + encodeURI( form.comment.value )
		);
	}
	document.getElementById( 'addNewComment').style.display = "none";
	document.getElementById( 'showComment').style.display        = "block";

	//form.author.value="";
	form.comment.value="";

	return false;
}

function bootTest()
{
	return false;
}
