/**
 * Detekcja IE
 */
var pacGuiBrowserT=0;
var pacGuiBrowserV=0

if(navigator.appVersion.indexOf("MSIE")!=-1)
{
	var temp=navigator.appVersion.split("MSIE")
	pacGuiBrowserV=parseFloat(temp[1])
}

if (pacGuiBrowserV>=5.5)
{
	pacGuiBrowserT = 'ie';
}




/**
 * Dodanie wartości do listy komponentu select
 *
 * @param string id identyfikator komponentu
 * @param mixed val identyfikator elementu
 * @param string name nazwa elementu
 * @param bool selected true - element aktywny/false - nieaktywny
 */
function pacGuiSelectItem_Add(id, val, name, selected)
{
	var obj = document.getElementById(id);

	if(obj)
	{
		var opt = new Option(name, val, selected, false);
		if(opt)
		{
			obj.options[obj.length] = opt;
		}
	}
}



/**
 * Usunięcie wartości val z listy komponentu select
 *
 * @param string id identyfikator
 * @param mixed val identyfikator elementu do usuniecia
 */
function pacGuiSelectItem_Delete(id, val)
{
	var obj = document.getElementById(id);
	if( obj )
	{
		if( (obj.length==0) || (obj.selectedIndex==-1) ) return;
		
		for (var i=0; i<obj.options.length; i++) 
		{
			if (obj.options[i].value==val)
			{
				obj.options[i]=null;
				break;
			}
		}
	}
}



/**
 * Usunięcie zaznaczonych wartości z listy komponentu select
 *
 * @param string id identyfikator
 */
function pacGuiSelectItems_DeleteSelected(id)
{
	var obj = document.getElementById(id);
	if( obj )
	{
		if( (obj.length==0) || (obj.selectedIndex==-1) ) return;
		
		for (var i=0; i<obj.options.length; i++) 
		{
			if (obj.options[i].selected)
			{
				obj.options[i]=null;
				i--;
			}
		}
	}
}



/**
 * Wyczyszczenie listy
 */
function pacGuiSelectItems_Clear(id)
{
	var obj = document.getElementById(id);
	if(obj)
	{
		obj.length = 0;
	}
}



/**
 * Wyczyszczenie listy
 */
function pacGuiSelectItem_Select(id, val)
{
	var tmp = 0;
	var obj = document.getElementById(id);
	if( obj )
	{
		if( (obj.length==0) || (obj.selectedIndex==-1) ) return;
		
		for (var i=0; i<obj.options.length; i++) 
		{
			if (obj.options[i].value==val)
			{
				obj.selectedIndex = i;
				tmp = 1;
				break;
			}
		}
	
		if(tmp==0)
		{
			obj.selectedIndex = -1;
		}
	}
}



/**
 * Zaznaczenie wszystkich elementów na liście idSrc
 */
function pacGuiSelect_SelectAll(idSrc)
{
	var src = document.getElementById(idSrc);

	if(src)
	{
		for (var i=0; i<src.options.length; i++) 
		{
			src.options[i].selected=true;
		}
	}
}


/**
 * Skopiowanie zaznaczonych elementów z listy src do dst
 */
function pacGuiSelect_CopySelected(idSrc, idDst, eraseDst)
{
	var src = document.getElementById(idSrc);
	var dst = document.getElementById(idDst);
	var sopt;
	var dopt;

	if(src && dst)
	{
		if( (src.length==0) || (src.selectedIndex==-1) ) return;
		if( eraseDst ) pacGuiSelectItems_Clear(idDst);
		
		for (var i=0; i<src.options.length; i++) 
		{
			if (src.options[i].selected)
			{
				sopt = src.options[i];
				dopt = new Option(sopt.text, sopt.value, false, false);
				dst.options[dst.length] = dopt;
			}
		}
	}
}


/**
 * Skopiowanie wszystkich elementów z listy src do dst
 */
function pacGuiSelect_CopyAll(idSrc, idDst, eraseDst)
{
	var src = document.getElementById(idSrc);
	var dst = document.getElementById(idDst);
	var sopt;
	var dopt;

	if(src && dst)
	{
		if( src.length==0 ) return;
		if( eraseDst ) pacGuiSelectItems_Clear(idDst);
		
		for (var i=0; i<src.options.length; i++) 
		{
			sopt = src.options[i];
			dopt = new Option(sopt.text, sopt.value, false, false);
			dst.options[dst.length] = dopt;
		}
	}
}



/**
 * Zmiana stanu pola enabled/disabled
 *
 * @param string id identyfikator pola
 * @param bool writable true - dostępne / false - niedostępne
 */
function pacGuiInput_SetState(id, writable)
{
	var ctrl = document.getElementById(id);

	if(ctrl)
	{
		if(writable)
		{
			ctrl.style.color 			= '#000000';
			ctrl.style.background =	'#ffffff';
			ctrl.disabled					=	false;
		}
		else
		{
			ctrl.style.color			= '#800000';
			ctrl.style.background =	'#d8d8e0';
			ctrl.disabled					=	true;
		}
	}
}



/**
 * Funkcja zapisująca treść przekazaną w parametrze body do elementu
 * o identyfikatorze id (pod warunkiem, że posiada on właściwość innerHTML)
 *
 * @param string id identyfikator obiektu
 * @param string body kod html
 * @return bool
 *
 */
function pacGuiHTML_write(id, body)
{
	var obj = document.getElementById(id);
	
	if(obj)
	{
		if(obj.innerHTML)
		{
			obj.innerHTML = body;
			return true;
		}
	}
	
	return false;
}



/**
 * Funkcja ustawia wartość przekazaną w parametrze value do elementu
 * o identyfikatorze id
 *
 * @param string id identyfikator obiektu
 * @param string value wartość
 * @return bool
 *
 */
function pacGuiInput_setValue(id, value)
{
	var obj = document.getElementById(id);
	
  if(obj)
  {
  	switch(obj.type)
  	{
      case 'edit':
      case 'textarea':
    	case 'hidden':
      case 'text':
      case 'select-one':
      	obj.value = value;
      	break;
      	
      case 'select-multiple':
				obj.selectedIndex = -1;
				if(value.length>0)
				{
					var tmp = value.split(',');
					for (var subCnt=0; subCnt<obj.options.length; subCnt++) 
					{
						for(var valCnt=0; valCnt<tmp.length; valCnt++)
						{
							if(tmp[valCnt]==obj.options[subCnt].value)
							{
								obj.options[subCnt].selected = true;
							}
						}
					}
				}
    		break;
      	
    	case 'checkbox':
    		var objntmp = obj.name;
    		var objects = document.getElementsByName(objntmp);
    		var objCnt = objects.length;
    		
    		if(value=='f') value = '';
    		else if(value=='t') value = 'checked';
    		
    		if(objCnt>1)
    		{
    			objn = objntmp;
      		for(var subCnt=0; subCnt<objCnt; subCnt++)
      		{
    				var s1l = objn.length+1;
    				var s2l = objects[subCnt].id.length;
    				val = objects[subCnt].id.substr(s1l, s2l-s1l);
    				
      			objects[subCnt].checked = value;
      		} 
    		}
    		else
    		{
      		obj.checked = value;
    		}
    		break;
    	
    	case 'radio':
      	/**
      	 *
      	 * @todo dokończyć
      	 * 
    		objn = obj.name;
    		var objects = document.getElementsByName(objn);
    		
    		for(var subCnt=0; subCnt<objects.length; subCnt++)
    		{
   				objects[subCnt].id.substr(s1l, s2l-s1l);
   				break;
    		} 
    		break;
    	*/
    	
  		default:
  			if(obj.value)						obj.value = value;
  			else if(obj.innerHTML)	obj.innerHTML = value;
  			break;
  	}
  }
  
	return false;
}



/**
 * Funkcja zwraca wartość pola którego ID przekazano w parametrze
 *
 * @param string id identyfikator obiektu
 * @return bool
 *
 */
function pacGuiInput_getValue(id, value)
{
	var obj = document.getElementById(id);
	
  if(obj)
  {
  	switch(obj.type)
  	{
      case 'edit':
      case 'textarea':
    	case 'hidden':
      case 'text':
      case 'select-one':
      	return obj.value;
      	
      case 'select-multiple':
				return 'jeszcze nie obsługiwane';
    		     	
    	case 'checkbox':
    		var objntmp = obj.name;
    		var objects = document.getElementsByName(objntmp);
    		var objCnt = objects.length;

    		
    		if(value=='f') value = '';
    		else if(value=='t') value = 'checked';
    		
    		if(objCnt>1)
    		{
					return 'jeszcze nie obsługiwane';
    		}
    		else
    		{
      		return obj.checked;
    		}
    		break;
    	
    	case 'radio':
				return 'jeszcze nie obsługiwane';
    	
  		default:
  			if(obj.value)						return obj.value;
  			else if(obj.innerHTML)	return obj.innerHTML;
  			break;
  	}
  }
  
	return 'jeszcze nie obsługiwane';
}



/**
 * Ustaw styl style dla obiektu objID
 *
 * @param objID identyfikator obiektu
 * @param style nazwa stylu do przypisania
 *
 */ 
function pacguiStyle_Set(objID, style)
{
	var obj = document.getElementById(objID);
	
	if(obj)
	{
		obj.className = style;
	}
}



/**
 * Zmienia styl zakładki objID z kontenera tabName na hover oraz dodaje do
 * tego opcjonalny styl addstyle
 *
 * @param tabName nazwa kontenera
 * @param objID identyfikator taba
 * @param style nazwa opcjonalnego stylu do przypisania
 *
 */ 
function pacGuiTab_Hover(tabName, objID, addstyle)
{
	var obj = document.getElementById(tabName+'Cur');
	
	if(obj)
	{
		if(obj.value!=objID)
		{
			pacguiStyle_Set(objID, 'gui_tabH '+addstyle);
		}
	}
}



/**
 * Zmienia styl zakładki objID z kontenera tabName na normalny oraz dodaje do
 * tego opcjonalny styl addstyle
 *
 * @param tabName nazwa kontenera
 * @param objID identyfikator taba
 * @param style nazwa opcjonalnego stylu do przypisania
 *
 */ 
function pacGuiTab_Normal(tabName, objID, addstyle)
{
	var obj = document.getElementById(tabName+'Cur');
	
	if(obj)
	{
		if(obj.value!=objID)
		{
			pacguiStyle_Set(objID, 'gui_tab '+addstyle);
		}
	}
}



/**
 * Przełącza zakładki na tabie
 *
 * @param objID identyfikator taba
 * @param curr nazwa wybieranej zakładki
 * @param addstyle dodatkowy styl
 * @param panc identyfikator panelu związanego z zakładką
 */
function pacGuiTab_Change(objID, curr, addstyle, panc)
{
	var obj = document.getElementById(objID+'Cur');
	var pan = document.getElementById(objID+'Pan');
	
	if(obj && pan)
	{
		last = obj.value; obj.value = curr;
		adds = obj.className; obj.className = addstyle;
		panl = pan.value;	pan.value = panc;
		
		pacguiStyle_Set(last, 'gui_tab ' +adds);
		pacguiStyle_Set(curr, 'gui_tabS '+addstyle);

		last = document.getElementById(panl);
		curr = document.getElementById(panc);
		
		if(last && curr)
		{
			last.style.display = 'none';
			curr.style.display = 'block';
		}
	}
}



/**
 * Wyświetlenie informacji o błędzie przy kontrolce
 *
 * @param string ObjID identyfikator obiektu
 * @param bool iserror flaga określająca czy jest to błąd czy warrning
 * @param string body treść komunikatu
 *
 */
function pacGuiError_Show(objID, iserror, body)
{
	objID = objID+'ERRPAN';
	if(iserror)	pacguiStyle_Set(objID, 'gui_errdivE');
	else	pacguiStyle_Set(objID, 'gui_errdivW');
	
	pacGuiHTML_write(objID, body);
}


/**
 * Ukrywa informacji o błędzie przy kontrolce
 *
 * @param string ObjID identyfikator obiektu
 *
 */
function pacGuiError_Hide(objID)
{
	pacguiStyle_Set(objID+'ERRPAN', 'gui_errdiv');
}


/**
 * Filtruje obiekty typu DIV będące elementami podrzędnymi
 * w stosunku do obiektu regionName. Funkcja pozostawia
 * widocznymi tylko te elementy, które w swej treści
 * zawierają tekst znajdujący się we właściwości value
 * pola którego identyfikator przekazany jest w sourceObj
 *
 * @param string sourceObj identyfikator kontrolki z tekstem filtrowania
 * @param string regionName identyfikator obiektu zawierającego filtrowane divy
 *
 */
function pacGuiFilterZone(sourceObj, regionName)
{
	var mo = document.getElementById(regionName);
	var ob = document.getElementById(sourceObj);
	
	if(mo && ob)
	{
		var cn = mo.childNodes.length;
		var st = '';
		var ov = ob.value.toLowerCase();
		
		for( var i=0; i<cn; i++ )
		{
			if(mo.childNodes[i].tagName=='DIV')
			{
				st = mo.childNodes[i].innerHTML;
				st = st.toLowerCase();
				if(st.indexOf(ov)>-1)
				{
					mo.childNodes[i].style.display = 'block';
				}
				else
				{
					mo.childNodes[i].style.display = 'none';
				}
			}
		}
	}
}


/**
 *
 * @param string objID identyfikator obiektu do wyświetlenia
 * @param integer width szerokość obszaru
 * @param integer height wysokość obszaru
 *
 */
function pacGuiShowCentered(objID, width, height)
{
	var mb = document.getElementById('pacMARB');
	var obj = document.getElementById(objID);
	
	if(obj)
	{
		var top			= mb.offsetTop;
		var left		= mb.offsetLeft;
		
		if(window.scrollY)
			offset = window.scrollY;
		if(document.documentElement && document.documentElement.scrollTop)
			offset = document.documentElement.scrollTop;
		else if(document.body && document.body.scrollTop)
			offset = document.body.scrollTop;
		else
			offset = 0;
		
		obj.position			= 'absolute';
		obj.style.top			= (offset+(top-height)/2)+'px';
		obj.style.left		= (left-width)/2+'px';
		obj.style.width		= width+'px';
		obj.style.height	= height+'px';
		obj.style.display = 'block';
	}
}





/**
 *
 * @param string objID identyfikator obiektu do wyświetlenia
 * @param integer height wysokość obszaru
 *
 */
function pacGuiSetHeight(objID, height)
{
	var obj = document.getElementById(objID);
	
	if(obj)
	{
		obj.style.height	= height+'px';
	}
}



/**
 *
 *
 */
function pacGuiBlendOn()
{
	var mb = document.getElementById('pacMARB');
	var bl = document.getElementById('pacBlend');
	
	if( mb && bl  )
	{
		var top = mb.offsetTop;
		var left = mb.offsetLeft;
		
		if(window.scrollY)
			offset = window.scrollY;
		if(document.documentElement && document.documentElement.scrollTop)
			offset = document.documentElement.scrollTop;
		else if(document.body && document.body.scrollTop)
			offset = document.body.scrollTop;
		else
			offset = 0;
		
		bl.style.width = left+'px';
		bl.style.height = (top+offset)+'px';
		bl.style.display = 'block';
	}
}




/**
 *
 *
 */
function pacGuiBlendOff()
{
	var bl = document.getElementById('pacBlend');
	
	if( bl  )
	{
		bl.style.display = 'none';
	}
}



/**
 *
 *
 */
function pacGuiHide(objID)
{
	var obj = document.getElementById(objID);
	
	if( obj )
	{
		obj.style.display = 'none';
	}
}



/**
 *
 *
 */
function pacGuiHideParentL1(objID)
{
	var obj = document.getElementById(objID);
	
	if( obj && obj.parentNode )
	{
		obj.parentNode.style.display = 'none';
	}
}



/**
 *
 *
 */
function pacGuiHideParentL2(objID)
{
	var obj = document.getElementById(objID);
	
	if( obj && obj.parentNode && obj.parentNode )
	{
		obj.parentNode.parentNode.style.display = 'none';
	}
}



/**
 *
 *
 */
function pacGuiToggle(objID)
{
	var obj = document.getElementById(objID);
	
	if( obj )
	{
		if(obj.style.display!='block')
		{
			obj.style.display = 'block';
		}
		else
		{
			obj.style.display = 'none';
		}
	}
}



/**
 *
 *
 */
function pacGuiShow(objID)
{
	var obj = document.getElementById(objID);
	
	if( obj )
	{
		obj.style.display = 'block';
	}
}



/**
 *
 *
 */
function pacGuiShowTR(objID)
{
	var obj = document.getElementById(objID);
	
	if( obj )
	{
		try
		{
			obj.style.display = 'table-row';
		}
		catch(e)
		{
			obj.style.display = 'block';
		}
	}
}



/**
 *
 *
 */
function pacGuiShowParentL1(objID)
{
	var obj = document.getElementById(objID);
	
	if( obj && obj.parentNode )
	{
		obj.parentNode.style.display = 'block';
	}
}



/**
 *
 *
 */
function pacGuiShowParentL2(objID)
{
	var obj = document.getElementById(objID);
	
	if( obj && obj.parentNode && obj.parentNode )
	{
		obj.parentNode.parentNode.style.display = 'block';
	}
}



/**
 *
 *
 */
function pacGuiShowTRParentL2(objID)
{
	var obj = document.getElementById(objID);
	
	if( obj && obj.parentNode && obj.parentNode )
	{
		try
		{
			obj.parentNode.parentNode.style.display = 'table-row';
		}
		catch(e)
		{
			obj.parentNode.parentNode.style.display = 'block';
		}
	}
}



/**
 *
 *
 */
function pacGuiClick(objID)
{
	var obj = document.getElementById(objID);
	
	if( obj )
	{
		obj.click();
	}
}



/**
 *
 *
 */
function pacGuiShowFileman(name, base, path, type)
{
	var mb = document.getElementById('pacMARB');
	var fmFr = document.getElementById('pacFmFr');
	var fmHa = document.getElementById('pacFmHa');
	var fmFi = document.getElementById(name);
	
	if( mb && fmFr && fmHa && fmFi )
	{
		var top = mb.offsetTop;
		var left = mb.offsetLeft;
		
		if(window.scrollY)
			offset = window.scrollY;
		if(document.documentElement && document.documentElement.scrollTop)
			offset = document.documentElement.scrollTop;
		else if(document.body && document.body.scrollTop)
			offset = document.body.scrollTop;
		else
			offset = 0;
		
		fmHa.position = 'absolute';
		fmHa.style.top = (offset+(top-400)/2-15)+'px';
		fmHa.style.left = (left-600)/2+'px';
		fmHa.style.width = '580px';
		fmHa.style.height = '24px';
		fmHa.style.display = 'block';
		
		fmFr.position = 'absolute';
		fmFr.style.top = (offset+(top-400)/2+15)+'px';
		fmFr.style.left = (left-600)/2+'px';
		fmFr.style.width = '600px';
		fmFr.style.height = '400px';
		fmFr.style.display = 'block';
		
		//if(fmFr.src=='')
		{
			fmFr.src =
				'/index.php5?MOD=system&CALL=fileman->Show&'+
				'FMF='+name+'&'+
				'FMB='+escape(base)+'&'+
				'FMT='+escape(type)+'&'+
				'FMP='+escape(fmFi.value);
		}
	}
	pacGuiBlendOn();
}



/**
 *
 *
 */
function pacGuiHideFileman()
{
	var fmFr = document.getElementById('pacFmFr');
	var fmHa = document.getElementById('pacFmHa');
	
	if( fmFr && fmHa )
	{
		fmHa.style.display = 'none';
		fmFr.style.display = 'none';
	}
	
	pacGuiBlendOff();
}




/**
 *
 *
 *
 */
function pacGuiDialog_Show(caption, body, mode, actionYes, actionNo, actionID)
{
	pacGuiShowCentered('pacGuiDialogFr', 420, 94);
	pacGuiShowCentered('pacGuiDialog', 420, 94);
	pacGuiHTML_write('pacGuiDialogTitle', caption);
	pacGuiHTML_write('pacGuiDialogBody', body);
	
	if(mode)
	{
		pacGuiHide('pacGuiDialogOK');
		pacGuiShow('pacGuiDialogYesNo');
		var btnY = document.getElementById('pacGuiDialogYes');
		var btnN = document.getElementById('pacGuiDialogNo');
		
		if(btnY && btnN)
		{
			if(!actionID) actionID='';
			
			btnY.src = actionYes+'|'+actionID;
			btnN.src = actionNo+'|'+actionID;
		}
	}
	else
	{
		pacGuiHide('pacGuiDialogYesNo');
		pacGuiShow('pacGuiDialogOK');
	}
}




/**
 *
 *
 *
 */
function pacGuiDoBtnAction(btnId)
{
	pacGuiHide('pacGuiDialog');
	pacGuiHide('pacGuiDialogFr');
	
	var obj = document.getElementById(btnId);
	if(obj)
	{
		var tmp = obj.src;
		var actionID = -1;
		
		if(tmp.length>0)
		{
			tmp = tmp.split('|');
			actionID = tmp[1];
			tmp = tmp[0].split('::');
			
			pacAjaxSent(tmp[0], tmp[1], 'ACTIONID='+actionID);
		}
	}
}






/**
 *
 *
 */
function pacGuiShowDictman(name, field)
{
	var mb = document.getElementById('pacMARB');
	var DictHa = document.getElementById('pacDictHa');
	var DictF1 = document.getElementById('pacdictmode');
	var DictF2 = document.getElementById('dict');
	var DictF3 = document.getElementById('word');
	var DictFi = document.getElementById(field);
	
	if( mb && DictHa && DictFi && DictF1 && DictF2 && DictF3 )
	{
		var top = mb.offsetTop;
		var left = mb.offsetLeft;
		
		if(window.scrollY)
			offset = window.scrollY;
		if(document.documentElement && document.documentElement.scrollTop)
			offset = document.documentElement.scrollTop;
		else if(document.body && document.body.scrollTop)
			offset = document.body.scrollTop;
		else
			offset = 0;
		
		DictHa.position = 'absolute';
		DictHa.style.top = (offset+(top-400)/2)+'px';
		DictHa.style.left = (left-600)/2+'px';
		DictHa.style.width = '580px';
		DictHa.style.display = 'block';
		
		DictF1.value = field;
		DictF2.value = name;
		DictF3.value = -1;
	}
	pacGuiBlendOn();
}



/**
 *
 *
 */
function pacGuiHideDictman()
{
//	var DictFr = document.getElementById('pacDictFr');
	var DictHa = document.getElementById('pacDictHa');
	
//	if( DictFr && DictHa )
	if( DictHa )
	{
		DictHa.style.display = 'none';
//		DictFr.style.display = 'none';
	}
	
	pacGuiBlendOff();
}

