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

// pakeitimai
// 2.3.2 - istrintos senos funkcijos, prideta jh(), jch() ir jt()
// pakeista $ -> $$ ir $$ -> $$$ kad butu suderinama su jQuery kuris naudoja $ 

// 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_ITEMS_NAME = 'items'; // chexboxu values saraso saugojimo kintamojo pavadinimas
var JS_CHBOXS_NAME = 'items[]'; // chexboxo pavadinimas
var JS_ENTER_KC = 13; // enter kodas
var JS_JCLOSE_AC = 'refresh'; // funkcijos jclose actionas
var JS_HOVER = 'table-row-hover';
var JS_TABLE_ROW_BASE = 'table-';

// 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 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 
// grazina true
function je( e )
{
	var c;
	if( !e ) 
		e = window.event;
	if( e.keyCode ) 
		c = e.keyCode;
	else if( e.which ) 
		c = e.which;
	
	return c == JS_ENTER_KC;
}

// jei buvo paspaustas enter klavisas (JS_ENTER_KC) tai funkcija 
// padaro submita
function jse( e,form,value )
{
	if( je( e ) ) 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 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 ) + 'px';
			p.style.top  = ( dh/2 - ph/2 ) + 'px';
			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 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;
	return true;
}

// funkcija paryskina (nustato klase JS_HOVER) tr kurio objektas paduodamas i
// parametra obj, jei yra pazymetas chemboxas kurio id=id tai eilute 
// neparyskinama
function jh( obj,id )
{
	if( obj ) {
		var p;
		if( ( p = $$( JS_ITEM_PREFIX + id ) ) && p.checked )
			return false;
		obj.className = JS_HOVER;
	} // if
	return true;
}

// panaikina paryskinima
function jch( obj,id,cl )
{
	if( obj ) {
		var p;
		if( ( p = $$( JS_ITEM_PREFIX + id ) ) && p.checked )
			return false;
		obj.className = JS_TABLE_ROW_BASE + cl;
	} // if
	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 asel = 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;
				   asel[ fbox.options[ i ].text ] = true;
				   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.selected = asel[ atbox[ c ] ];
			  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;
}

function jt( id,state )
{
	var j = $$( id );
	if( j ) 
		j.checked = state==null ? !j.checked : state;
	return false;	
}

function jl( url ) 
{
	window.location = url;
}

// 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 ) return false;
	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;
}
