var DIV_FILE_LISTING_CONTAINER = 'mwfFileListingContainer';
var DIV_FILE_ACTION_FORMS = 'mwfFileActionForms';

/*
* PUBLIC FILE ACTION FUNCTIONS
*/
//showActionForm
function shaf( formId, fileListId, errorNoteId ){
	var ok = true;

	if( fileListId ){
		filesArray = _getSelectedFiles();
		if( filesArray.length > 0 ){
			fileList = new myDiv( fileListId );
			fileList.setContent( _buildSelectedFilesListHTML(filesArray) );
			}
		else {
			ok = false;
			}
		}

	// HIDE FILE LISTING CONTAINER
	_hideElement( DIV_FILE_LISTING_CONTAINER );

	// NOW SHOW THE ELEMENT
	if( ok )
		_showElement( formId );
	else
		_showElement( errorNoteId );

	return ok;
	}

function downloadAction( errorNoteId ){
	var ok = false;

	filesArray = _getSelectedFiles();
	if( filesArray.length > 0 )
		ok = true;

	// SHOW THE ERROR
	if( ! ok ){
		// HIDE FILE LISTING CONTAINER
		_hideElement( DIV_FILE_LISTING_CONTAINER );

		_showElement( errorNoteId );
		}

	return ok;
	}

//hideActionForm
function hdaf( formId, fileListId ){
	if( fileListId ){
		fileList = new myDiv( fileListId );
		fileList.setContent( '' );
		}

	_hideElement( formId );

	// SHOW FILE LISTING CONTAINER
	_showElement( DIV_FILE_LISTING_CONTAINER );

	return true;
	}

//setFileCheckbox
function sfc( ctl, selectTrue ){
	ctl.checked = selectTrue;
	return true;
	}

//setAllFileCheckboxes
function safc( selectTrue ){
	filesCheckboxes = _getFilesCheckboxes();
	for( i = 0; i < filesCheckboxes.length; i++ ){
		el = filesCheckboxes[ i ];
		sfc( el, selectTrue )
		}
	return true;
	}

//setControlValue
function scv( ctl, val ){
	ctl.value = val;
	return true;
	}

function countSelectedItems(){
	filesArray = _getSelectedFiles();
	return filesArray.length;
	}

/*
* PRIVATE FILE ACTION FUNCTIONS
*/
function _showElement( elementId ){
	var thisElement = new myDiv( elementId );
	if( thisElement )
		thisElement.show();
	return true;
	}

function _hideElement( elementId ){
	var thisElement = new myDiv( elementId );
	if( thisElement )
		thisElement.hide();
	return true;
	}

function _getFilesCheckboxes(){
	checkboxes = new Array();

	thisForms = document.forms;
	for( i = 0; i < thisForms.length; i++ ){
		thisElements = thisForms[ i ].elements;
		for( j = 0; j < thisElements.length; j++ ){
			el = thisElements[ j ];
			if( el.type == "checkbox" && el.name == CHNDL_FILE_NAME )
				checkboxes.push( el );
			}
		}
	return checkboxes;
	}

function _getSelectedFiles(){
	selectedFiles = new Array();

	filesCheckboxes = _getFilesCheckboxes();
	for( i = 0; i < filesCheckboxes.length; i++ ){
		el = filesCheckboxes[ i ];
		if( el.checked )
			selectedFiles.push( el.value );
		}
	return selectedFiles;
	}

function _buildSelectedFilesListHTML( filesArray ){
	var fileTemplateString = new String( SELECTED_FILE_TEMPLATE );
	var filesContainerTemplateString = new String( SELECTED_FILES_CONTAINER_TEMPLATE );

	var allFilesString = "";
	for( i = 0; i < filesArray.length; i++ ){
		thisFileString = fileTemplateString.replace( /{FILE_NAME}/g, filesArray[i] );
		allFilesString += thisFileString;
		}

	thisString = filesContainerTemplateString.replace( /{FILES}/g, allFilesString );
	return thisString;
	}

/*
* CHMOD FUNCTIONS
*/
function ctl_inc( ctl, val, inc){
	if( ! inc )
		val = -val;

	var old_val = ctl.value;
	if( ! old_val)
		old_val = 0;
//	ctl.value = parseInt(old_val) + parseInt(val);
	ctl.value = format_chmod( parseInt(old_val, 10) + parseInt(val, 10) );
	}

function format_chmod(dig){
	var str = new String('' + dig);
	var final_length = 3;
	var add_length = final_length - str.length;
	for(var i=0; i < add_length; i++){
		str = '0' + str;
		}
	return str;
	}

function fill_chmod( dig, r_ctl, w_ctl, x_ctl){
	var r_mask = 4; var w_mask = 2; var x_mask = 1;
	r_ctl.checked = ( dig & r_mask ) ? true : false;
	w_ctl.checked = ( dig & w_mask ) ? true : false;
	x_ctl.checked = ( dig & x_mask ) ? true : false;
	}

function btnCancel_Click(){
	window.close();
	}

function transferControlValue( srcControl, trgControl ){
//	window.opener.document.mwForm[trgControlName].value = srcControl.value;
	trgControl.value = srcControl.value;
	window.close();
	}

function transferControlValue_old( srcControlName, trgControlName ){
	window.opener.document.mwForm[trgControlName].value = document.mwForm[srcControlName].value;
	window.close();
	}

function openWindow( url ){
	nw = window.open(url, 'newWin', 'scrollbars=yes,status=yes,menubar=no,location=no,resizable=yes,width=580,height=300');
//	nw = window.open(url, 'newWin', 'scrollbars=yes,status=no,menubar=no,location=no,resizable=yes,width=510,height=300');
	}

function fetchObjectPosLeft(elm){
	var left = elm.offsetLeft;
	while((elm = elm.offsetParent) != null){
		left += elm.offsetLeft;
		}
	return left;
	}

function fetchObjectPosTop(elm){
	var top = elm.offsetTop;
	while((elm = elm.offsetParent) != null){
		top += elm.offsetTop;
		}
	return top;
	}

function myDiv( htmlDivID ){
	htmlDiv = document.getElementById( htmlDivID );
	if( ! htmlDiv ){
		alert( "No div: " + htmlDivID );
		return false;
		}
	else {
//		alert( htmlDivID + ': OK' );
		}

	this.htmlDiv = document.getElementById( htmlDivID );
	this.setLeft = setLeft;
	this.setTop = setTop;
	this.getLeft = getLeft;
	this.getTop = getTop;
	this.getWidth = getWidth;
	this.getHeight = getHeight;
	this.show = show;
	this.hide = hide;
	this.isHidden = isHidden;
	this.setContent = setContent;
	}
function setContent( content ){
//	alert( this.htmlDiv.innerHTML );
	this.htmlDiv.innerHTML = content;
//	this.htmlDiv.childNodes[0].innerHTML = content;
	}
function getLeft(){
	return fetchObjectPosLeft( this.htmlDiv );
	}
function setLeft( left ){
	if( left < 0 )
		left = 5;
	this.htmlDiv.style.left = left;
	}
function getTop(){
	return fetchObjectPosTop( this.htmlDiv );
	}
function setTop( top ){
	this.htmlDiv.style.top = top;
	}
function getWidth(){
	return this.htmlDiv.offsetWidth;
	}
function getHeight(){
	return this.htmlDiv.offsetHeight;
	}
function show(){
//	this.htmlDiv.style.display = "";
	this.htmlDiv.style.display = "block";
	}
function hide(){
	this.htmlDiv.style.display = "none";
	}
function isHidden(){
	if( this.htmlDiv.style.display == "none" )
		return true;
	else
		return false;
	}

/*
* SOME CONSTANTS SHOULD BE DEFINED BEFORE
*/
function showNextFileField( fieldHandle ){
	var maxFields = HTML_MAX_FILE_FIELDS;

	for( i = 2; i <= maxFields; i++ ){
		thisDiv = new myDiv( fieldHandle + i );
		if( ! thisDiv )
			continue;

		if( thisDiv.isHidden() ){
			thisDiv.show();
			break;
			}
		}
	}

function checkFields(){
	for(var i = 0; i < arguments.length; i++){
//		if(! f.elements[ arguments[i] ].value){
		var ctl = arguments[i];
		if(! ctl.value ){
			alert('Please fill all the required fields!');
			return false;
			}
		}
	return true;
	}