//Requires event.js//niektóre funkcje kożystają z jQuery//-----------------------------function getElementsByClass(searchClass,node,tag) {      var classElements = new Array();   var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');   node = (node == null) ? document : node;     if ((document.getElementsByTagName("*").length > 0) || (tag != null)){      tag = (tag == null) ? "*" : tag;      var els = node.getElementsByTagName(tag);      var elsLen = els.length;      for (i = 0, j = 0; i < elsLen; i++){         if (pattern.test(els[i].className)){            classElements[j] = els[i];            j++;         }      }   }else{      var els = node.all;      var elsLen = els.length;      for (i = 0, j = 0; i < elsLen; i++){         if (pattern.test(els[i].className)){            classElements[j] = els[i];            j++;         }      }   }   return classElements;} function hideClass(cls){  var toHide = getElementsByClass(cls);  for(i=0; i<toHide.length; i++){    $(toHide[i]).css.display = "none";  }}function showClass(cls){  var toShow = getElementsByClass(cls);  for(i=0; i<toShow.length; i++){    $(toShow[i]).css.display = "";  }}function show(elem){	elem = $(elem);	elem.show(); 	}          function hide(elem){	elem = $(elem);	elem.hide();}//-----------------------------------------------------------------------------function Set_Cookie( name, value, expires, path, domain, secure ) {// set time, it's in millisecondsvar today = new Date();today.setTime( today.getTime() );/*if the expires variable is set, make the correct expires time, the current script below will set it for x number of days, to make it for hours, delete * 24, for minutes, delete * 60 * 24*/if ( expires ){expires = expires * 1000 * 60 /* * 60 * 24*/; //set for minutes}var expires_date = new Date( today.getTime() + (expires) );document.cookie = name + "=" +escape( value ) +( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + ( ( path ) ? ";path=" + path : "" ) + ( ( domain ) ? ";domain=" + domain : "" ) +( ( secure ) ? ";secure" : "" );}	//-----------------------------------------------------------------------------function Get_Cookie( check_name ) {	// first we'll split this cookie up into name/value pairs	// note: document.cookie only returns name=value, not the other components	var a_all_cookies = document.cookie.split( ';' );	var a_temp_cookie = '';	var cookie_name = '';	var cookie_value = '';	var b_cookie_found = false; // set boolean t/f default f		for ( i = 0; i < a_all_cookies.length; i++ )	{		// now we'll split apart each name=value pair		a_temp_cookie = a_all_cookies[i].split( '=' );						// and trim left/right whitespace while we're at it		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');			// if the extracted name matches passed check_name		if ( cookie_name == check_name )		{			b_cookie_found = true;			// we need to handle case where cookie has no value but exists (no = sign, that is):			if ( a_temp_cookie.length > 1 )			{				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );			}			// note that in cases where cookie is initialized but no value, null is returned			return cookie_value;			break;		}		a_temp_cookie = null;		cookie_name = '';	}	if ( !b_cookie_found )	{		return null;	}}//-----------------------------------------------------------------------------var expanded = new Array();var cookie_name = '';var cookie_time = 30;function treeInit(basic_vis, class_name){	if( class_name == null ||  class_name == "" ){		cookie_name = 'expanded_default';	}else{		cookie_name = 'expanded'+class_name;		}		tmpString = Get_Cookie( cookie_name );	var addExp = new Array();	if( tmpString != null &&  tmpString != "" )		expanded = tmpString.split(";");	if( basic_vis != null &&  basic_vis != "" )		addExp = basic_vis.split(";");		expanded = expanded.concat(addExp);		//aktualizacja przycisków	var elements = getElementsByClass("tree_trigger_.*", null, 'img');	if (elements)	 for(i = 0; i<elements.length; i++){ 				$(elements[i]).click(function(){			var group_id = treeGetTriggerGroup(this.className);			return treeClick(group_id);		});	}	for(var j=0; j< expanded.length;j++){    treeClick(expanded[j],true);	}		//treeUpdate();}function treeUpdate(){	//pokazywanie i ukrywanie rzędów	var elements = getElementsByClass("tree_group_.*", null, 'li');	if (elements)	 for(i = 0; i<elements.length; i++){ 		var group_id = treeGetGroup(elements[i].className);			if (treeIsVisible(group_id)){			show(elements[i]);			//$(".tree_trigger_"+group_id).attr('src','./projects/crm/resources/graphic/presentation/hide.png');		}		else{			hide(elements[i]);				//$(".tree_trigger_"+group_id).attr('src','./projects/crm/resources/graphic/presentation/expand.png');		}	}	//aktualizacja przycisków	/*var elements = getElementsByClass("tree_trigger_.*", null, 'img');	if (elements)	 for(i = 0; i<elements.length; i++){ 		var group_id = treeGetTriggerGroup(elements[i].className);			$(elements[i]).click(		if (treeIsVisible(group_id)){			$(elements[i]).click(function(){treeHide('"+group_id+"');});		}		else{			$(elements[i]).click(function(){treeShow('"+group_id+"');});		}	}*/		}function treeClick(id,init){//alert(id);  if (init !== true)    init = false;	if ( !init && treeIsVisible(id)){		treeHide(id);		$(".tree_trigger_"+id).attr('src','./projects/crm/resources/graphic/presentation/expand.png');	}	else{		treeShow(id);		$(".tree_trigger_"+id).attr('src','./projects/crm/resources/graphic/presentation/hide.png');	}		return false;} function in_array(needle, haystack){    var found = false, key;     for (key in haystack) {        if ( haystack[key] == needle) {            found = true;            break;        }    }    return found;	}function treeIsVisible(data){    var found = false, key;     for (key in expanded) {        if ( expanded[key] == data) {            found = true;            break;        }    }    return found;		}function treeGetGroup(data){	data = data.match("tree_group_.*(\\s|$)"); 	if (data)	 return data[0].substring(11);	return null;}function treeGetTriggerGroup(data){	data = data.match("tree_trigger_.*(\\s|$)"); 	if (data)	 return data[0].substring(13);	return null;}function treeGetSubGroups(par_group){	var subgroups = new Array();	var elements = getElementsByClass("tree_trigger_.*", null, 'a');	if (elements)	 for(i = 0; i<elements.length; i++){ 		var group_id = treeGetTriggerGroup(elements[i][0].className);		var parent_group_id = treeGetGroup(elements[i][0].parentNode.parentNode.className);				if ( parent_group_id == par_group || in_array(parent_group_id, subgroups) )			subgroups[subgroups.length] = group_id;	}			return subgroups;}function treeHide(group_id){	var i;	var sub = treeGetSubGroups(group_id);	for(i = 0; i<expanded.length; i++){		if( expanded[i] == group_id || in_array(expanded[i], sub) ){			expanded.splice(i,1);			i--;		}	}	Set_Cookie( cookie_name, expanded.join(";"), cookie_time );	treeUpdate();	return false;}function treeShow(group_id){		var add = true;	var j;	for(j = 0; j<expanded.length; j++){		if( expanded[j] == group_id ){			add = false;			break;			}	}	if(add){			expanded.push(group_id);		Set_Cookie( cookie_name, expanded.join(";"), cookie_time );	}	treeUpdate();	return false;}//-->
