var browserName=navigator.appName;
var browserVer=parseInt(navigator.appVersion);

var globalLoadEvent;
var globalUnloadEvent;

function fillHiddenInput(name,value) {
	o = document.getElementById(name);
	if ( o ) {
		o.value = value;
	} else {
		createInput( name, value );
	}
}

//Funkcja submituje formę ustawiając parametr doaction, określający rodzaj wykonywanej akcji,
//ewentualną wartość parametru akcji dovalue lub komunikat potwierdzający wykonanie submita msg
function submitAction(action, value, msg, extra) {
	if ( ( msg && confirm( msg ) ) || !msg ) {
		fillHiddenInput('doaction',action);
		fillHiddenInput('dovalue',value);
		fillHiddenInput('doextra',extra);
		createInput( "scrollTop", document.body.scrollTop );
		createInput( "scrollLeft", document.body.scrollLeft );

		document.forms[0].submit();
	}
}

//Funkcja submituje formę ustawiając parametr doaction, określający rodzaj wykonywanej akcji,
//ewentualną wartość parametru akcji dovalue lub komunikat potwierdzający wykonanie submita msg
function submitActionNotBind(action, value, msg) {
	if ( ( msg && confirm( msg ) ) || !msg ) {
		fillHiddenInput('doaction',action);
		fillHiddenInput('dovalue',value);
		fillHiddenInput('donotbind',true);
		createInput( "scrollTop", document.body.scrollTop );
		createInput( "scrollLeft", document.body.scrollLeft );

		document.forms[0].submit();
	}
}

//Funkcja submituje formę ustawiając wartość parametru dovalue lub komunikat potwierdzający wykonanie submita msg
function doSubmit(value, msg) {
	if ( ( msg && confirm( msg ) ) || !msg ) {
		fillHiddenInput('dovalue',value);
		document.forms[0].submit();
	}
}

//Funkcja submituje formę z gridem z możliwością wyboru rekordów - wymagana funkcja ajax-owa
function submitSelectGridAction(ajaxFunc, action, value, msg) {
	if ( ( msg && confirm( msg ) ) || !msg ) {
		ajaxFunc(getExtraGridParam(), function(str) { submitAction(action,value); } );
	}
}

function refresh(action) {
	action = action ? action : "true";
	fillHiddenInput('dorefresh',action);
	createInput( "scrollTop", document.body.scrollTop );
	createInput( "scrollLeft", document.body.scrollLeft );

	document.forms[0].submit();
}


function taskCommit() {
	doSubmit( 'zatwierdzenie', 'Czy na pewno zatwierdzić zadanie?' );
}

function taskRollback() {
	doSubmit( 'wycofanie' );
}

function taskSave() {
	submitAction( 'savetask' );
}

function taskButton( event ) {
	doSubmit( event, 'Czy na pewno wykonać wybraną akcję?' );
}


function nextTR(obj) {
   var sibling = obj.nextSibling;
   while (sibling && sibling.nodeType != 1) {
     sibling = sibling.nextSibling;
   }

   return sibling;
}

function prevTR(obj) {
   var sibling = obj.previousSibling;
   while (sibling && sibling.nodeType != 1) {
     sibling = sibling.previousSibling;
   }

   return sibling;
}

function submitHidden( name, value ) {
    var target = document.createElement("input");
    target.setAttribute("type", "hidden");
    target.setAttribute("name", name );
    target.setAttribute("value", value );
    document.forms[0].appendChild( target );
    document.forms[0].submit();
}

function wizardTarget( page ) {
    submitHidden( "_target" + page, "" );
}

function wizardEvent( page, event, value ) {
	createInput( event, value );
	submitHidden( "_target" + page, "" );
}

function wizardFinish() {
    submitHidden( "_finish", "" );
}

function cancel() {
    submitHidden( "_cancel", "" );
}


var g_PopupIFrame;

function IsIE() {
    return ( navigator.appName=="Microsoft Internet Explorer" );
}

function HidePopupDiv(divID) {
    var divPopup=document.getElementById(divID);
    if ( divPopup ) {
        HidePopup(divPopup);
    }
}

function HidePopup(divPopup) {
    divPopup.style.visibility = "hidden";

    if (IsIE() && g_PopupIFrame) {
        document.body.removeChild(g_PopupIFrame);
        g_PopupIFrame=null;
    }

}

function ShowPopupDiv(divID) {
    var divPopup=document.getElementById(divID);
    ShowPopup(divPopup);
}

function ShowPopup(divPopup) {
    if (!IsIE()) {
        //Just display the div
        divPopup.style.visibility ="visible";
        return;
    }

    //Increase default zIndex of div by 1, so that DIV appears before IFrame
    divPopup.style.zIndex=divPopup.style.zIndex+1;

    var iFrame = document.createElement("IFRAME");
    iFrame.setAttribute("src", "blank.html");
    iFrame.setAttribute("marginwidth", "0");
    iFrame.setAttribute("marginheight", "0");
    iFrame.setAttribute("scrolling", "no");
    iFrame.setAttribute("frameborder", "0");

    //Match IFrame position with divPopup
    iFrame.style.position="absolute";
    iFrame.style.left =divPopup.offsetLeft + 'px';
    iFrame.style.top =divPopup.offsetTop + 'px';
    iFrame.style.width =divPopup.offsetWidth + 'px';
    iFrame.style.height =divPopup.offsetHeight + 'px';

    document.body.appendChild(iFrame);

    //Store iFrame in global variable, so it can get removed when divPopup is hidden
    g_PopupIFrame=iFrame;
    divPopup.style.visibility ="visible";
}

function validateNumberInput(f) {
    if (!/^\d+\.?\d*$/.test(f.value)) {
//        alert("Znaki inne niż liczby są niedozwolone w tym polu");
        f.value = f.value.replace(/[^\d\.]/g,"");
    }
}

function newWindow( url, name, width, height ) {
    var newWin = window.open( url, name, "width=" + width + ",height=" + height + ",toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,dependent=yes,alwaysRaised=yes" );
    newWin.focus();
    return newWin;
}

function newHidden( name, value ) {
    for (var i=0; i < document.forms.length; i++ ) {
	    var target = document.createElement("input");
	    target.setAttribute("type", "hidden");
	    target.setAttribute("name", name );
	    target.setAttribute("value", value );
	    document.forms[i].appendChild( target );
    }
}

function externalWindow() {
    if ( window.name != 'UREMainWin' && opener != null && opener.document != null ) {
        var tdheader=document.getElementById("tdheader");
        if ( tdheader ) {
            tdheader.style.visibility = "hidden";
        }

        var tdheader=document.getElementById("tdnavigate");
        if ( tdheader ) {
            tdheader.style.visibility = "hidden";
        }

        var tdfooter=document.getElementById("tdfooter");
        if ( tdfooter ) {
            tdfooter.style.display = "none";
        }

        var menu=document.getElementById("menu");
        if ( menu ) {
            menu.style.display = "none";
        }

        var windowHeader=document.getElementById("windowHeader");
        if ( windowHeader ) {
            windowHeader.style.display = "block";
        }

    }
}

function closeConfirmMsg(obj) {
    if ( obj ) {
        obj.style.display = "none";
    }
}

function prepareElemsToWait( typ ) {
    var elemsFound = document.getElementsByTagName( typ );
    var elem, click;

    for ( var i=0; i< elemsFound.length; i++ ) {
        elem = elemsFound[i];

        if ( typeof(elem.attributes.wait) != "undefined" && elem.attributes.wait.value.toLowerCase() == 'false') {
            continue;
        }

        if ( typ == "input" && elem.type != "button" && elem.type != "submit" ) {
            continue;
        }

        click = elem.onclick;
        if ( click ) {
            elem.originclick = click;
            elem.onclick = function() {this.originclick(); waitOn(); return true;}
        } else {
            elem.onclick = function() {waitOn(); return true;}
        }

    }
}

function prepareWait() {
    prepareElemsToWait( "a" );
    prepareElemsToWait( "button" );
    prepareElemsToWait( "input" );
}

function biggerBrowserHeight() {
    return document.body.clientHeight > document.body.scrollHeight ? document.body.clientHeight : document.body.scrollHeight;
}

function biggerBrowserWidth() {
    return document.body.clientWidth > document.body.scrollWidth ? document.body.clientWidth : document.body.scrollWidth;
}

function waitOnFirstStep() {
    try {
    	$j('#coverDiv').css( 'display', '');
    	$j('table.grid').css( 'display', 'none');
//    	$j('#coverDiv').show('normal');
    } catch (e) {
    }
}

function waitOnSecStep() {
    try {
    	$('#coverDiv').addClass( 'colorDiv' ).css("opacity", "0.5");
    	$('#coverBanner').css( 'visibility', 'visible');
    }
    catch (e) {
    }
}

function waitOn() {
    firstTimeout = setTimeout( "waitOnFirstStep();", 10 );
    secTimeout = setTimeout( "waitOnSecStep();", 4000 );
}

function waitOff(){
    try {
    	clearTimeout( firstTimeout );
    	clearTimeout( secTimeout );
    	$j('#coverDiv').css( 'display', 'none');
//    	$j('#grid').css( 'display', '');
//    	$j('#coverDiv').hide('normal');
    }
    catch (e) {
    }
}


function ajaxHandler( region ) {
    return function(str) { waitOff(); dwr.util.setValue( region, str, { escapeHtml:false }); waitOff();}
}

function ajaxHandleExpireSession() {
    document.location = "identification.do?session_expired=true";
}

function ajaxHandleException( msg, exeption ) {
    waitOff();
    if ( exeption.javaClassName == 'pl.ufg.zsi.common.exception.SessionExpiredException' ) {
        ajaxHandleExpireSession();
    } else {
        alert( 'Błąd: ' + exeption.javaClassName + ' - ' + msg );
    }
    waitOff();
}

function createInput( name, value ) {
    var target = document.createElement("input");
    target.setAttribute("type", "hidden");
    target.setAttribute("name", name );
    target.setAttribute("value", value );
    document.forms[0].appendChild( target );
}

function selAllBox( id, sel ) {
    $("." + id).each( function ( index ) { this.checked = sel; } );
}

function onClose(evt) {
	if (!evt) evt = window.event;
	if ( evt.clientX && evt.clientY ) {
		var iX = window.document.body.offsetWidth - evt.clientX ;
		var iY = evt.clientY;

		if (iX <=30 && iY < 0 )	{
			document.location = "logout.do";
		}
	}
}
window.onbeforeunload=onClose;

jQuery.extend(jQuery.expr[':'], {containsIgnoreCase: "(a.textContent||a.innerText||jQuery	(a).text()||'').toLowerCase().indexOf((m[3]||'').toLowerCase())>=0"});

//SuckerTree Horizontal Menu (Sept 14th, 06)
//By Dynamic Drive: http://www.dynamicdrive.com/style/
function buildsubmenus_horizontal(){
	var menutreeid = "dynamenutree";
	var ultags=document.getElementById(menutreeid).getElementsByTagName("ul")
	for (var t=0; t<ultags.length; t++){
		if (ultags[t].parentNode.parentNode.id==menutreeid){ //if this is a first level submenu
			ultags[t].style.top=ultags[t].parentNode.offsetHeight+"px" //dynamically position first level submenus to be height of main menu item
			ultags[t].parentNode.getElementsByTagName("a")[0].className="mainfoldericon"
		} else { //else if this is a sub level menu (ul)
			ultags[t].style.left=ultags[t-1].getElementsByTagName("a")[0].offsetWidth+"px" //position menu to the right of menu item that activated it
			ultags[t].parentNode.getElementsByTagName("a")[0].className="subfoldericon"
		}

		ultags[t].parentNode.onmouseover=function(){
			this.getElementsByTagName("ul")[0].style.visibility="visible"
		}

		ultags[t].parentNode.onmouseout=function(){
			this.getElementsByTagName("ul")[0].style.visibility="hidden"
		}
	}
}

function highlightTable(){
// IE Error
//	$(document).ready(function(){
//		$("table.highlight tbody td").each(function(){
//			
//			$(this).mouseover(function(){
//				$("table.highlight tbody tr.highlighted").removeClass("highlighted");
//				$(this.parentNode).addClass("highlighted");
//			});
//		})
//	})
}

