// common.min.js (frontend) v2.4.2 Copyright (c) 2006-2009 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 $ 
// 2.4.2
// idetas jg targeto palaikymas

// konstantos
var JS_SELECT_LIST = 'selects'; // mapping'o multi selectu sarasas
var JS_FORM_NAME = 'form'; // fromos pavadinimas
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 ];
     	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,t )
{
   	var name = value ? form : JS_FORM_NAME;
	var vals = value ? value : form;
	var form = $$$( name );
	
	if( form ) {
		form = form[ 0 ];
		var e = form.action,g = form.target;
     	form.action = vals;
		if( t )
			form.target = t;
		var p;
		if( p = $$( JS_SELECT_LIST ) )
     		jsa( p.value );
    	form.submit();
		if( t ) {
			form.action = e;
			form.target = g;
		} // if
	} // 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 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,sc ) {
	if (parseInt(navigator.appVersion)>3) {
	 screenW = screen.width;
	 screenH = screen.height;
	}
	else if (navigator.appName == "Netscape" 
		&& parseInt(navigator.appVersion)==3
		&& navigator.javaEnabled()
	   ) 
	{
	 var jToolkit = java.awt.Toolkit.getDefaultToolkit();
	 var jScreenSize = jToolkit.getScreenSize();
	 screenW = jScreenSize.width;
	 screenH = jScreenSize.height;
	}
//	var dw = document.body.clientWidth;
//	var dh = document.body.clientHeight;
	var dw = screenW;
	var dh = screenH;	
	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=' + ( sc ? 'yes' : '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,sc ) {
	return obj ? jbd( obj.href,ow,oh,sc ) : false;
}
function resizeIframe( height ) {
	$$( 'forum_iframe' ).height = height;
}
function setIframeSrc( new_src ){
	$$( 'forum_iframe' ).src = new_src;	
}
var Base64 = {
 
	// private property
	_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
 
	// public method for encoding
	encode : function (input) {
		var output = "";
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;
 
		input = Base64._utf8_encode(input);
 
		while (i < input.length) {
 
			chr1 = input.charCodeAt(i++);
			chr2 = input.charCodeAt(i++);
			chr3 = input.charCodeAt(i++);
 
			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;
 
			if (isNaN(chr2)) {
				enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
				enc4 = 64;
			}
 
			output = output +
			this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
			this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
 
		}
 
		return output;
	},
 
	// public method for decoding
	decode : function (input) {
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;
 
		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
 
		while (i < input.length) {
 
			enc1 = this._keyStr.indexOf(input.charAt(i++));
			enc2 = this._keyStr.indexOf(input.charAt(i++));
			enc3 = this._keyStr.indexOf(input.charAt(i++));
			enc4 = this._keyStr.indexOf(input.charAt(i++));
 
			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;
 
			output = output + String.fromCharCode(chr1);
 
			if (enc3 != 64) {
				output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
				output = output + String.fromCharCode(chr3);
			}
 
		}
 
		output = Base64._utf8_decode(output);
 
		return output;
 
	},
 
	// private method for UTF-8 encoding
	_utf8_encode : function (string) {		
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
 
		for (var n = 0; n < string.length; n++) {
 
			var c = string.charCodeAt(n);
 
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
 
		}
 
		return utftext;
	},
 
	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
 
		while ( i < utftext.length ) {
 
			c = utftext.charCodeAt(i);
 
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
 
		}
 
		return string;
	}
 
}

