// <?php !! This fools phpdocumentor into parsing this file
/**
* Missus - Private Messages for Joomla
* Version: 1.1
* Author: Bárbara Irene Meclazcke
* URL:  ewriting.com.ar
* mail: aclaina@yahoo.com.ar
* FileName: missus.js
* Date: 08/10/2006
* License: GNU General Public License
**/

/********************************************/
/****** POPUP FUNCTIONS *********************/
/********************************************/
/* ADDING THE SELECTED ONES TO PARENT WINDOW */
//ADD SELECTED FROM POPUP TO PARENT FORM - WORKS FOR IE, FIREFOX AND OPERA
function addSelectedItemsToParentMissus( message ) 
{	self.opener.addToParentListMissus( window.document.userForm.selection, message );
	window.close();	
}

//ADD A SELECTED ITEM FROM POPUP TO PARENT
function addToParentListMissus( userList, message ) 
{	var userListLen = userList.length;
	//LINK THE LIST AND TO FIELDS
	var destinationIds = eval( window.document.adminForm.id_userlist );
	var destinationTexts = eval( window.document.adminForm.userto );	
	
	var idjoin = new Array();
	var textjoin = new Array();
	var thisflag = true;
	if ( destinationIds.value != '' ) {
		if ( confirm( message ) == false ) {
			thisflag = false;
		}
	} 
	if ( thisflag == true ) {
		for ( var i = 0; i < userListLen; i++ ) {
			var isthisvalue = userList.options[i].value.split( '#' );
			if ( isthisvalue[0] == 0 ) {			
				idjoin[0] = 0;
				textjoin[0] = userList.options[i].text;
				break;
			} else {
				idjoin[i] = isthisvalue[0];						
				textjoin[i] = userList.options[i].text;
			}
		}
		destinationIds.value = idjoin.join( '|' );
		destinationTexts.value = textjoin.join( ', ' );		
	}
}

/* VERIFY IF CHECKED => ADD - UNCHECKED => DELETE */
//VERIFY IF CERTAIN BOX FROM CERTAIN FORM IS CHECKED
function isMyCheckedMissus( isitchecked, boxnameid, frmName, thisvalue, thistext )
{	var form = eval( 'document.' + frmName );
	var boxchecked = document.getElementById( boxnameid );
	var ret = true;
	if ( isitchecked == true ) {
		boxchecked.checked = true;
		addCheckedToListMissus( frmName, 'selection', thisvalue, thistext );
	} else {
		boxchecked.checked = false;	
		delCheckedFromListMissus( frmName, 'selection', thisvalue );
		ret = false;
	}
	return ret;
}

//ADD CHECKED ITEM TO SELECTION LIST
function addCheckedToListMissus( frmName, tgtListName, thisvalue, thistext ) 
{	var form = eval( 'document.' + frmName );
	var tgtList = eval( 'form.' + tgtListName );
	//ADD CHECKED TO SELECTION LIST
	if ( thisvalue != -1 ) {
		var thislength = tgtList.length;
		opt = new Option( thistext, thisvalue );
		tgtList.options[thislength] = opt;		
		tgtList.options[thislength].selected = true;
	}
	return;
}

//DEL UNCHECKED ITEM FROM SELECTION LIST
function delCheckedFromListMissus( frmName, tgtListName, thisvalue ) 
{	var form = eval( 'document.' + frmName );
	var tgtList = eval( 'form.' + tgtListName );
	var tgtLen = tgtList.length;
	var thisvalue_ar = thisvalue.split( '#' )
	for ( var i = tgtLen - 1; i > -1; i-- ) {
		var isthisvalue = tgtList.options[i].value.split( '#' );
		if ( isthisvalue[0] == thisvalue_ar[0] ) {
			tgtList.options[i] = null;
		}
	}
	return;
}

//EMPTY THE WHOLE LIST
function emptyListMissus( frmName, tgtListName ) 
{	var form = eval( 'document.' + frmName );
	var tgtList = eval( 'form.' + tgtListName );
	var tgtLen = tgtList.length;
	for ( var i = tgtLen - 1; i > -1; i-- ) {
		var isthisvalue = tgtList.options[i].value.split( '#' );
		if ( isthisvalue[0] != 0 ) {
			tgtList.options[i] = null;		
		}
	}
	return;
}

/* VERIFY IF CURRENT USER IS ALREADY SELECTED FROM PREVIOUS OR FROM PARENT */
//VERIFY SELECTED USER FROM PARENT
function verifySelectedFromParentMissus( frmName, boxnameid, thisvalue, thistext, isprevious ) 
{	var boxchecked = document.getElementById( boxnameid );
	//var thisvalue_ar = thisvalue.split( '|' );
	var ischecked = false;	
	if ( isprevious ) {
		ischecked = true;
		boxchecked.checked = true;
	} 
	return ischecked;
}

//UNCHECK ACCORDING TO FIELD
function unCheckAllMissus( field ) 
{	for ( i = 0; i < field.length; i++ ) 
		field[i].checked = false; 		
	emptyListMissus( 'userForm', 'selection' );
	return;
}

//UNCHECK BROADCAST ONLY
function unCheckBroadcastMissus( field ) 
{	field.checked = false; 
	delCheckedFromListMissus( 'userForm', 'selection', '0' );
	return;
}

/********************************************/
/****** SPECIAL FOR FAVORITE POPUP **********/
/********************************************/
/* ADDING THE SELECTED ONES TO PARENT WINDOW */
//ADD SELECTED FROM POPUP TO PARENT FORM - WORKS FOR IE, FIREFOX AND OPERA
function addSelectedListsToParentMissus( message ) 
{	var popupform = eval( window.document.userForm );
	var sellists = eval( window.document.userForm.selection );
	var setvalue = '';	
	for ( var i = 0; i < sellists.length; i++ ) {
		var isthisvalue = sellists.options[i].value;
		var listdata = document.getElementById( 'data' + isthisvalue );
		if ( isthisvalue == 0 ) {
			setvalue = listdata.value;
			break;
		} else {
			if ( setvalue == '' )
				setvalue = listdata.value;
			else
				setvalue = setvalue + '|' + listdata.value;
		}
	}
	self.opener.addListToParentListMissus( processValueListMissus( setvalue ), message );
	window.close();	
}

//PROCESS LIST VALUES
function processValueListMissus( setvalue ) 
{	var idjoin = new Array();
	var textjoin = new Array();
	
	var setvalue_ar = setvalue.split( '|' );
	var j = 0;
	for ( var i = 0; i < setvalue_ar.length; i++ ) {
		var isthisvalue = setvalue_ar[i].split( '#' );
		if ( existsInArrayMissus( isthisvalue[0], idjoin ) == false ) {
			idjoin[j] = isthisvalue[0];
			textjoin[j] = isthisvalue[1];
			j++;
		}		
	}
	return idjoin.join( '|' ) + '#' + textjoin.join( ', ' );
}

//PROCESS LIST VALUES
function existsInArrayMissus( thisvalue, thisarray ) 
{	var ret = false;
	for ( var i = 0; i < thisarray.length; i++ ) {
		if ( thisarray[i] == thisvalue ) {
			ret = true;
			break;
		}
	}
	return ret;
}

//ADD A SELECTED ITEM FROM POPUP TO PARENT
function addListToParentListMissus( setvalue, message ) 
{	//LINK THE LIST AND TO FIELDS
	var destinationIds = eval( window.document.adminForm.id_userlist );
	var destinationTexts = eval( window.document.adminForm.userto );	
	
	var idjoin = new Array();
	var textjoin = new Array();
	var thisflag = true;
	if ( destinationIds.value != '' ) {
		if ( confirm( message ) == false ) {
			thisflag = false;
		}
	} 
	if ( thisflag == true ) {
		var setvalue_ar = setvalue.split( '#' );
		destinationIds.value = setvalue_ar[0];
		destinationTexts.value = setvalue_ar[1];		
	}
}

/********************************************/
/****** COMBO FUNCTIONS *********************/
/********************************************/
//ADD A SELECTED ITEM FROM COMBO TO LIST
function addSelectedToListMissus( frmName, srcListName, tgtListName ) 
{	var form = eval( 'document.' + frmName );
	var srcList = eval( 'form.' + srcListName );
	var tgtList = eval( 'form.' + tgtListName );
	
	var destinationIds = eval( 'document.' + frmName + '.id_userlist' );
	var destinationTexts = eval( 'document.' + frmName + '.userto' );

	var srcLen = srcList.length;
	var tgtLen = tgtList.length;
	var tgt = "x";

	var idjoin = new Array();
	var textjoin = new Array();
	
	//build array of target items
	for ( var i=tgtLen-1; i > -1; i-- ) {
		tgt += "," + tgtList.options[i].value + ","
	}

	//Pull selected resources and add them to list	
	for ( var i=0; i < srcLen; i++ ) {
		if ( srcList.options[i].selected && tgt.indexOf( "," + srcList.options[i].value + "," ) == -1 ) {
			if ( srcList.options[i].value == 0 || ( tgtLen != 0 && tgtList.options[0].value == 0 ) ) {
				for ( var j = tgtLen-1; j > -1; j-- ) {
					tgtList.options[j] = null;						
				}
			} 
			var textto_ar = srcList.options[i].text.split('‹');
			opt = new Option( textto_ar[0], srcList.options[i].value );
			tgtList.options[tgtList.length] = opt;			
		}
	}
	for ( var i=0; i < tgtList.length; i++ ) {
		idjoin[i] = tgtList.options[i].value;						
		textjoin[i] = tgtList.options[i].text;
	}
	destinationIds.value = idjoin.join( '|' );
	destinationTexts.value = textjoin.join( ', ' );
}

//DELETE ITEM FROM LIST
function delSelectedFromListMissus( frmName, srcListName ) {
	var form = eval( 'document.' + frmName );
	var srcList = eval( 'form.' + srcListName );
	
	var destinationIds = eval( 'document.' + frmName + '.id_userlist' );
	var destinationTexts = eval( 'document.' + frmName + '.userto' );
	var idjoin = new Array();
	var textjoin = new Array();

	var srcLen = srcList.length;

	for ( var i=srcLen-1; i > -1; i-- ) {
		if ( srcList.options[i].selected ) {
			srcList.options[i] = null;
			break;
		}
	}
	
	for ( var i=0; i < srcList.length; i++ ) {
		idjoin[i] = srcList.options[i].value;						
		textjoin[i] = srcList.options[i].text;
	}
	destinationIds.value = idjoin.join( '|' );
	destinationTexts.value = textjoin.join( ', ' );
}

/********************************************/
/****** EXTRA FUNCTIONS *********************/
/********************************************/
//POPUPS WINDOW CENTERED IN THE SCREEN
function popupMyWindowMissus( mypage, myname, w, h, scroll ) 
{	var winl = ( screen.width - w ) / 2;
	var wint = ( screen.height - h ) / 2;
	winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',status=no,scrollbars='+scroll+',resizable';
	win = window.open( mypage, myname, winprops );
}

//UNUSED YET
//CHECK IF WE DON'T EXCEED THE LIMIT
function checkAmountSelectedMissus( field, max_selected ) 
{	var count = 0;
	var ret = true;
	for ( i = 0; i < field.length; i++ ) {
		if ( field[i].checked == true )
			count++;
		if ( count > max_selected ) {
			ret = false;
			break;
		}
	}
	return ret;
}

//CHECK ALL FOR TABS WITH TOGGLE NAME PARAM
function checkAllMissus( n, fldName, toggleName ) 
{	if (!fldName) {
		fldName = 'cb';
	}
	var f = document.adminForm;
	var c = eval( 'f.' + toggleName + '.checked' );
	var n2 = 0;
	for ( i=0; i < n; i++ ) {
		cb = eval( 'f.' + fldName + '' + i );
		if ( cb ) {
			cb.checked = c;
			n2++;
		}
	}	
}

//SET MISSUS FUNCTION
function doMissus( thisvalue )
{	if ( thisvalue )
		document.adminForm.func.value = thisvalue;
	document.adminForm.submit();
}

//EVALUATE MISSUS TAB ON CONTACTS
function evalMissusTab( thisvalue )
{	if ( thisvalue == 'tab1' )
		doMissus( 'newmsgusers' );
	else
		doMissus( 'newmsglist' );
}