// common.js v1.3.3 Copyright (c) 2006-2008 by BT-Group (info@bt-group.lt)
// All Right Reserved.

// konstantos
var JS_SELECT_LIST = 'selects'; // mapping'o multi selectu sarasas
var JS_FORM_NAME = 'form'; // fromos pavadinimas
var JS_WAIT_DIV_NAME = 'wait'; // laukimo lango id
var JS_WAIT = 1000; // kiek laukti ms kol parodyti laukimo langa
var JS_ITEM_PREFIX = 'i_'; // chexboxo id prefiksas
var JS_ITEM_ALT_PREFIX = 'ch_'; // chexboxo id prefiksas
var JS_ITEMS_NAME = 'items'; // chexboxu values saraso saugojimo kintamojo pavadinimas
var JS_ITEM_NAME = 'sel[]'; // chexboxo pavadinimas (senas)
var JS_CHBOXS_NAME = 'items[]'; // chexboxo pavadinimas
var JS_ENTER_KC = 13; // enter kodas
var JS_JCLOSE_AC = 'popup_refresh'; // funkcijos jclose actionas

// gauna objekta pagal jo id pavadinima
function $( name ) {
	return document.getElementById( name );
}

// gauna elementu sarasa kuriu vardas yra name
function $$( name ) {
	return document.getElementsByName( name );
}

// pakeicia chexboxu pazymejima kuriu vardas JS_CHBOXS_NAME pagal
// nurodyto parametru obj chexbox'o pazymejima 
function jc( obj ) 
{
	if( obj ) {
		var sb = $$( JS_CHBOXS_NAME );
		if( sb ) { 
			if( sb.length ) { 
				var gl = sb.length;
				for( i = 0; i < gl; i++ )
					sb[ i ].checked = obj.checked;
			} else sb.checked = obj.checked;
		} // if
	} // if( obj )
	
  	return false;
}

// funkcija pazymi (action=true) arba nuzymi (action=false) visus chexboxus
// kurie turi varda name[] ir yra standartineje formoje
function ch( form,name,action )
{
	var sb;
	if( sb = $$( name + '[]' ) ) {
		if( sb.length ) { 
			var gl = sb.length;
			for( var i = 0; i < gl; i++ )
				sb[ i ].checked = action;
		} else sb.checked = action;
	} // if
	
	return false;
}

// funkcija suformuoja pazymetu chexboxu kuriu vardas JS_ITEM_NAME values sarasa
// ir ji suraso i kintamaji (input) vardu JS_ITEMS_NAME
function cl( form )
{
	var sb = $$( JS_ITEM_NAME );
	var el = $$( JS_ITEMS_NAME );
	var rs = '';
	var gl,gi;
	
	if( sb && el ) {
		el = el[ 0 ];
		if( sb && sb.length ) {
			gl = sb.length;
			gi = 0;
			for( var i = 0; i < gl; i++ ) {
				if( sb[ i ].checked ) {
					if( gi )
						rs += ',';
					gi++;
					rs += sb[ i ].value;
				} // if
			} // for
			if( !gi ) 
				rs = '';
		} else rs = ( sb.checked ) ? sb.value : '';
		el.value = rs;
	} // if
	  
	return false;
} 

// funkcija atlieka formos (form) submita, pries submita prie formos actiono yra pridedama
// parametro value reiksme 
// jei yra kvieciama kaip js( value ) tai formos pavadinimas JS_FORM_NAME
function js( form,value )
{
	var name = value ? form : JS_FORM_NAME;
	var vals = value ? value : form;
	var form = $$( name );
	
	if( form ) {
		form = form[ 0 ];
     	jsw( ); // jei submitas ilgas tai parodom laukimo langa
     	form.action += vals;
		var p;
		// jei buvo mapping'o multiselectu tai pazymim ju reiksmes 
		// nes kitaip jos nebus perduotos i posta
		if( p = $( JS_SELECT_LIST ) )
     		jsa( p.value );
    	form.submit();
	} // if
	return false;
}

// jei buvo paspaustas enter klavisas (JS_ENTER_KC) tai funkcija 
// padaro submita
function jse( e,form,value )
{
	var c;
	if( !e )
		e = window.event;
	if( e.keyCode ) 
		c = e.keyCode;
	else if( e.which ) 
		c = e.which;
	
	if( c == JS_ENTER_KC ) return js( form,value );
	
	return true;
}


// funkcija yra ideali funkcijai js tik kad action'a ne prideda, o priskiria 
function jg( form,value )
{
   	var name = value ? form : JS_FORM_NAME;
	var vals = value ? value : form;
	var form = $$( name );
	
	if( form ) {
		form = form[ 0 ];
     	jsw( );
     	form.action = vals;
		var p;
		if( p = $( JS_SELECT_LIST ) )
     		jsa( p.value );
    	form.submit();
	} // if
	return false;
}

// funkcija yra ideali funkcijai js, tik pries submita funkcijos cl pagalba suformuoja 
// pazymetu chexboxu reiksmiu (values) sarasa ir ji suraso i JS_ITEMS_NAME kintamaji
function jsi( form,value )
{
   	var name = value ? form : JS_FORM_NAME;
	var vals = value ? value : form;
	var form = $$( name );
	
	if( form ) {
		form = form[ 0 ];
		cl( form );
     	jsw( );
     	form.action += vals;
		var p;
		if( p = $( JS_SELECT_LIST ) )
     		jsa( p.value );
    	form.submit();
	} // if
	return false;
}

// funkcija naudojama filtro actionu patvirtinimui, jinai submitina forma 
// ir prie actiono dadeda &ac=filter, forma nurodoma parametru form jei
// jis nenurodytas naudojama reiksme JS_FORM_NAME
function jsf( form )
{
	var name = form ? form : JS_FORM_NAME;
	var form = $$( name );
	
	if( form ) {
		form = form[ 0 ];
	    form.action += '&ac=filter';
		form.submit();
	} // if
  	return false;
}

// funkcija po JS_WAIT milisekndziu parodo laukimo pranesima, jinai kvieciama pries 
// submita ir skirta pranesti apie leta duomenu perdavima
function jsw() 
{
	function __tmp() {
		var p;
		if( p = $( JS_WAIT_DIV_NAME ) ) {
			dw = document.body.clientWidth;
			dh = document.body.clientHeight;
			pw = p.clientWidth;
			ph = p.clientHeight;
			p.style.left = dw/2 - pw/2;
			p.style.top  = dh/2 - ph/2;
			p.style.visibility = 'visible';
		} // if
	}
	setTimeout( __tmp,JS_WAIT );
	return false;
}

// funkcija uzdaro langa kuris buvo parodytas su funkcija jsw
function jhw()
{
	var p;
	if( p = $( JS_WAIT_DIV_NAME ) )
	    p.style.visibility = 'hidden';
	return false;
}

// funkcija iskviecia popup langa kurio plotis ow, aukstis oh, turinio adresas href
// naudojama mygtukuose onClick actionuose
function jbd( href,ow,oh )
{
	var dw = document.body.clientWidth;
	var dh = document.body.clientHeight;
	var x = (dw - ow)/2;
	var y = (dh - oh)/2;
	
	var ww = window.open( href,'','width=' 
		+ ow + ',height=' + oh + ',toolbar=no,left=' + x + ',top=' + y + ','
	    + 'location=no,directories=no,personalbar=no,status=no,menubar=no,scrollbars=no,titlebar=no,'
	    + 'resizable=yes,dependent=yes,dialog=yes,close=no,chrome=yes' 
	);
	if( !ww ) {
		alert( 'Popup langas buvo blokuotas. Pra? pakeisti nustatymus' );
		return false;
	} // if
	ww.focus();
	
	return false;
}

// funkcija iskviecia popup langa kurio plotis ow, aukstis oh, turinio adresas 
// perduodamas per HTML a objekto instancija is kurios yra nuskaitoma href atributo
// reiksme 
// naudojamas a linkuose
function jd( obj,ow,oh ) {
	return obj ? jbd( obj.href,ow,oh ) : false;
}

// funkcija perjungia lenteles eilutes, kurios id parodo parametras, chexboxa
function jss( id )
{
	var p;
	if( p = $( JS_ITEM_PREFIX + id ) )
		p.checked = p.checked ? false : true;
	if( p = $( JS_ITEM_ALT_PREFIX + id ) ) 
		p.checked = p.checked ? false : true;
	return true;
}

// funkcija pakeicia lenteles eilutes kurios tr objektas nurodomas parametru obj, jos id nurodomas parametru id,
// o norima spalva (col) formatu #RRGGBB
// jei eilutes chexboxas yra pazymetas spalva yra nekeiciama
function jcs( obj,id,col )
{
	if( obj ) {
		var p;
		if( ( p = $( JS_ITEM_PREFIX + id ) ) && p.checked )
			return false;
		if( ( p = $( JS_ITEM_ALT_PREFIX + id ) ) && p.checked )
			return false;
			
		var cl = obj.getElementsByTagName( 'td' );
		if( cl ) {
			var l = cl.length;
			var dom = window.opera && obj.setAttribute;
			
			if( l && cl ) {
				// jei DOM browseris iskyrus Opera
				if( dom ) {
					for( var c = 0; c < l; c++ ) {
						cl[ c ].setAttribute( 'bgcolor',col,0 );
					} // for
				} else {
					for( var c = 0; c < l; c++) {
						cl[ c ].style.backgroundColor = col;
					} // for
				}
			} // if
		} // if( cl && cl.cells )
	} // if( obj )
	
    // viskas OK todel grazinam true
	return true;
}

// funkcija perkelia pazymetas eilutes is multiselecto fbox i multiselecta tbox, bei 
// surikiuoja abieju multiselectu reiksmes pagal abecele
function jlm( fbox,tbox ) 
{
	 var fbox = $( fbox );
	 var tbox = $( tbox );
	 
	 if( fbox && tbox ) {
		 var afbox = new Array( );
		 var alookup = new Array( );
		 var atbox = new Array( );
		 
		 var i;
		 for( i = 0; i < tbox.options.length; i++ ) {
			  alookup[ tbox.options[ i ].text ] = tbox.options[ i ].value;
			  atbox[ i ] = tbox.options[ i ].text;
		 } // for
		 var flen = 0;
		 var tlen = atbox.length
		 for( i = 0; i< fbox.options.length; i++ ) {
			  alookup[ fbox.options[ i ].text ] = fbox.options[ i ].value;
			  if( fbox.options[ i ].selected && fbox.options[ i ].value != '' ) {
				   atbox[ tlen ] = fbox.options[ i ].text;
				   tlen++;
			  } else {
				   afbox[ flen ] = fbox.options[ i ].text;
				   flen++;
			  }
		 } // for
		 // surikiuojam elementus
		 afbox.sort();
		 atbox.sort();
		 fbox.length = 0;
		 tbox.length = 0;
		 var c;
		 for( c = 0; c < afbox.length; c++ ) {
			  var no = new Option();
			  no.value = alookup[ afbox[ c ] ];
			  no.text = afbox[ c ];
			  fbox[ c ] = no;
		 } // for
		 
		 for( c = 0; c < atbox.length; c++ ) {
			  var no = new Option();
			  no.value = alookup[ atbox[ c ] ];
			  no.text = atbox[ c ];
			  tbox[ c ] = no;
		 } // for
	 } // if
	 
	 return true;
}

// funkcija pazymi multiselecto box visus laukus
function jsa( box ) 
{
	 if( box ) {
		 var list = box.split( ',' );
		 var l = list.length;
		 for( var j = 0; j < l; j++ ) {
		 	 var box = $( list[ j ] );
		 	 if( box ) {
				 var r = box.length;
		 		 for( var i = 0; i < r; i++ )
			 	    box[ i ].selected = true;
			 } // if( box )
	 	 } // for
	 } // if
	 return true;
}

// funkcija padaro submita lange, kuris atidare funkcija kviecianti langa, bei uzdaro esama 
// (ta kuriame ji kvieciama) langa 
function jclose()
{
	if( opener )  {
		var w = opener.document.forms[ 0 ];
		if( w ) { 
			w.method = 'POST';
			w.action += 'ac=' + JS_JCLOSE_AC;
			w.submit();
		} // if
	} // if
	window.close();
	
	return false;
}

function jgr() {
	return confirm( 'Ar tikrai norit ištrinti pasirinktą grupę ?' );
}

// aliasas naujos funkcijos jhw
function hide_wait() {
	return jhw();
}

// aliasas naujos funkcijos jsw
function show_wait() {
	return jsw();
}

// naujos funkcijos jsa aliasas
function list_select_all( box ) {
	return jsa( box );
}