// skrypty do obsługi infoTip
function checkSubmit(waitSec)
{
    if(submitStarted)
    {
        no_submit_block = false;
        return false;
    }
    else
    {
        if(!no_submit_block)
        {
            submitStarted = true;
            window.setTimeout('submitStarted=false', waitSec*1000);
        }
        no_submit_block = false;
        return true;
    }
}

function placeFocus()
{
    if(disable_focus_placing)
        return;
    if(!document.forms || !document.forms[0] || !document.forms[0].elements)
        return;
    var elems = document.forms[0].elements;
    for(var i = 0; i < elems.length; i++)
    {
        if(elems[i].className && elems[i].className == 'errFormField' 
          && elems[i].type != 'hidden' && elems[i].type != 'image'
          && !elems[i].disabled)
        {
            elems[i].focus();
            return;
        }
    }
    for(var i = 0; i < elems.length; i++)
    {
        if(elems[i].type != 'hidden' && elems[i].type != 'image'
          && !elems[i].disabled)
        {
            elems[i].focus();
            break;
        }
    }
}

// menu
function clickMenu(name, doChSub)
{
    if(document.forms[0].elements['button'])
       document.forms[0].elements['button'].value='';
    document.forms[0].elements['menu'].value=name;

    if (doChSub) {
        if (checkSubmit(15)) document.forms[0].submit();
    } else {
        document.forms[0].submit();
    }
}

// przycisk
// doChSub - ustawienie na true powoduje wywolanie metody checkSubmit
function clickButton(name, doChSub)
{
    if(document.forms[0].elements['menu'])
        document.forms[0].elements['menu'].value='';
    document.forms[0].elements['button'].value=name;
    if (doChSub) {
        if (checkSubmit(15)) document.forms[0].submit();
    } else {
        document.forms[0].submit();
    }
}

// INFO TIP
function closeInfoTip()
{
  if(infoTipWindow && infoTipWindow.close) 
    infoTipWindow.close();
}

function infoTip(tipContent, tipTitle, tipType) 
{
    var maxSmallTipSize = 240;
    if(tipContent.length > maxSmallTipSize) 
    {
        var tipHeight = 302;
        var tipWidth = 216;
        var tipLeft = eval(screen.availWidth-250);
        var tipTop = eval(screen.availHeight-360);
        var tipScrollbars = "yes";
    }
    else 
    {
        var tipHeight = 172;
        var tipWidth = 200;
        var tipLeft = eval(screen.availWidth-250);
        var tipTop = eval(screen.availHeight-230);
        var tipScrollbars = "no";
    }
    
    closeInfoTip();
    window.tipContent = tipContent;
	window.tipTitle = tipTitle;
	if (tipType == 'info')
	{
         window.tipType = "#1E72DE";
    }
	else
	{  
	     window.tipType = "#BF1400";
	}
    
    params = "width=" + tipWidth+ ",height=" + tipHeight 
        + ",toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=" 
        + tipScrollbars + ",resizable=yes,left=" + tipLeft + ",top=" + tipTop;
    if(tipContent.length > maxSmallTipSize)
        infoTipWindow = window.open('../html/web/infoTip2.html', 'infoTipWindow', params);
    else 
        infoTipWindow = window.open('../html/web/infoTip.html', 'infoTipWindow', params);
}

function rawWindow(url, title, width, height, resizable)
{
    if (!resizable) resizable="no";
    params = "width=" + width + ", height=" + height
      + ",toolbar=no,location=no,directories=no,status=no"
      + ",menubar=no,resizable=" + resizable + ", left=100, top=100,scrollbars=yes";
    window.open(url, title, params);
    return false;
}

function makePos(obj, divWidth) 
{
  var leftpos = 0;
  var toppos = 0;

  aTag = obj;
  do {
    aTag = aTag.offsetParent;
    leftpos += aTag.offsetLeft;
    toppos += aTag.offsetTop;
  } while(aTag.tagName!="BODY");

  var dLineStyle = document.getElementById('dynaLine').style;
  dLineStyle.width= '' + divWidth + 'px';
  dLineStyle.top = '' + (toppos + 21) +'px';
  dLineStyle.left = '' + leftpos + 'px';
  dLineStyle.visibility = 'visible';
}

function hide() {
  var dLineStyle = document.getElementById('dynaLine').style;
  dLineStyle.visibility = 'hidden';
}

// do obslugi checkbox'a i disablowania podanego pola (tekstowego)
function checkboxClick(chbox, objToChange) {
    if (!chbox) return;
    if (!chbox.checked) {
        //objToChange.disabled='disabled';
        objToChange.style.backgroundColor = '#ddd';
        if ((objToChange.type == "select-one")||(objToChange.type == "radio")) {
            elementDisabled(objToChange);
        } else if (objToChange.type != "hidden"){
            objToChange.readOnly = true;
        }
    } else {
        //objToChange.disabled='';
        objToChange.style.backgroundColor = '#ffffff';
        if ((objToChange.type == "select-one")||(objToChange.type == "radio")) {
            elementEnabled(objToChange);
        } else if (objToChange.type != "hidden"){
            objToChange.readOnly = false;
        }
    }
}

/*
    funkcja aktywuje i deaktywuje podane pola
    objsOn  - lista obiektow do aktywacji
    objsOff - lista obiektow do deaktywacji
 
    onlyOff - bedzie jedynie obsluga wylaczania pol
*/
function switchOnOff(objsOn, objsOff, onlyOff) {
    //obj = onOffList[0][0].type;
    if (!onlyOff)
        for (var i=0; i < objsOn.length; i++)
        {
            var obj = onOffListObject(objsOn[i]);
            if (obj) {
                if (obj.type != "hidden") {
                   if (obj.type == "text" && obj.className!="errFormField") {
                        obj.style.backgroundColor = '#fff';
                   }
                   if ((obj.type == "select-one")||(obj.type == "radio")) {
                      elementEnabled(obj);
                   } else {
                      obj.readOnly = false;
                   }
                }
            }
        }
    for (i=0; i < objsOff.length; i++) {
        var obj = onOffListObject(objsOff[i]);
        if (obj) {
            if (obj.type != "hidden") {
                if (obj.type == "text" && obj.className!="errFormField") {
                    obj.style.backgroundColor = '#ddd';
                }
               if ((obj.type == "select-one")||(obj.type == "radio")) {
                  elementDisabled(obj);
               } else {
                  obj.readOnly = true;
               }
            }
        }
    }
}

function elementEnabled (selectObj) {
   var selName = selectObj.name;
    
    if (selectObj.type == "radio")
        elementEnabledByName("div_" + selName + "_" + selectObj.value);
    else
        elementEnabledByName("div_" + selName);
}

function elementEnabledByName (name) {
    var sObj = document.getElementById(name);
    if (!sObj) return;

    var selStr = sObj.innerHTML;
    selStr = removeString (selStr, "disabled");
    sObj.innerHTML = selStr;
}

function elementDisabled (selectObj) {
   var selName = selectObj.name;

    if (selectObj.type == "radio")
        elementDisabledByName("div_" + selName + "_" + selectObj.value, true);
    else
        elementDisabledByName("div_" + selName);
}

function elementDisabledByName (name, isRadio) {
    var sObj = document.getElementById(name);
    if (!sObj) return;
    var selStr = sObj.innerHTML;

    selStr = removeString (selStr, "disabled");

    if (selStr.indexOf("disabled>") >= 0) return;
    
//    if (isRadio) {
//        selStr = removeString (selStr, "checked=\"checked\"");
//        selStr = removeString (selStr, "CHECKED");
//    }
    var ind = selStr.indexOf(">");
    
    var s1 = selStr.substring(0,ind);
    var s2 = selStr.substring(ind+1);
    
    sObj.innerHTML = s1 + " disabled>" + s2;
}

function removeString (str, strToRem)
{
    var ind = str.indexOf(strToRem);
    if (ind != -1) {
        var s1 = str.substring(0,ind);
        var s2 = str.substring(ind+strToRem.length);
        str=s1+s2;
    }
    return str;
}

/*
    obsluga grupy aktywnych, nieaktywnych elementow w formularzu
    mainObj - obiekt ktory wywoluje aktywacje, deaktywacje grupy
    lista - struktura opisujaca grupy (tablica):
    onlyOff - jesli ustawiona, to bedzie wlaczana tylko opcja 'Off' componentow
    [ obiektSwitcha(np.radio button), [obiekt_do aktywacji, ...], [obiekt_do_deaktywacji, ...] ] , ...
*/
function switcher (mainObj, lista, onlyOff) {
    var i = 0;
    var j = 0;
    for (i=0; i < lista.length; i++) {
        var objOnList0 = onOffListObject(lista[i][0]);
        if (objOnList0 == mainObj) {
            switchOnOff (lista[i][1], lista[i][2], onlyOff);
            for (j=0; j < lista[i][1].length; j++) {
                if (lista[i][1][j]) {
                    var objOnList1 = onOffListObject(lista[i][1][j]);
                    if (objOnList1 && objOnList1.type == "radio") {
                        if (objOnList1.checked) {
                            switcher (objOnList1, lista, false);
                            break;
                        } else {
                            switcher (objOnList1, lista, true);
                        }
                    }
                }
            }
            break;
        }
    }
}

/*
    funkcja pomocnicza, do wyluskiwania obiektow ze struktury DOM
    uzywana przy oblsuge OnOff listy
    jesli 'obj' jest Stringiem, to traktowany jest jako id obiektu (pobierany przez getElementById)
*/
function onOffListObject (obj)
{
    if (typeof(obj) == 'string') {
        var obj1 = document.getElementById(obj);
        return obj1;
    }
    return obj;
}


function findOffListForElement(mainElement, lista)
{
    for (i=0; i < lista.length; i++) {
            if (lista[i][0]) {
                var listai0 = onOffListObject(lista[i][0]);
                if (listai0 == mainElement) return lista[i][2];
            }
	}
	return null;
}

/*
 lista   - struktura onOffList zawierajaca pola z mapa wlaczania/wylaczania
 */
function switcherInit (mainObj, lista) {
    var i = 0;
    var j = 0;
    var noSwitched = true;
  
    if (!lista) return;
    if (mainObj) {
        switcher(mainObj, lista, false);
        return;
    }

    for (i=0; i < lista.length; i++) {
        if (lista[i] && lista[i][0]) {
            var listai0 = onOffListObject(lista[i][0]);
            switcher(listai0, lista, true);
        }
    }//for

    for (i=0; i < lista.length; i++) {
        if (lista[i] && lista[i][0]) {
            var listai0 = onOffListObject(lista[i][0]);
            if (listai0.type == "radio" && listai0.checked) {
                switcher(listai0, lista, false);
            }
        }
    }//for
}


function insert_spaces(x)
{
   right_str=x.slice(-3);
   left_str=x.slice(0,-3);
   x=right_str;
   x=left_str.slice(-3).concat(x);
   x=" ".concat(x);
   for(i=3;i < left_str.length ; i=i+3)
	{
	   x=left_str.slice(-(i+3),-i).concat(x);
       x=" ".concat(x);
    }
	return x;
}

function precision(x,d)
{
	with(Math)
	var y = Math.pow(10,d);
    var x = Math.round(x*y);
	return insert_spaces(parseInt(x/y) +'.'+('0'+x).slice(-d));
}

function amount_update(pole_1,pole_2,pole_3)
{
    var amount_total = 0;
  
    var v1 = document.forms[0].elements[pole_1.name].value;
    var v2 = document.forms[0].elements[pole_2.name].value;
    var v3 = document.forms[0].elements[pole_3.name].value;
    
    v1 = v1.replace(" ",""); v1 = v1.replace(",",".");
    v2 = v2.replace(" ",""); v2 = v2.replace(",",".");
    v3 = v3.replace(" ",""); v3 = v3.replace(",",".");

    document.forms[0].elements[pole_1.name].value=v1;
    document.forms[0].elements[pole_2.name].value=v2;
    document.forms[0].elements[pole_3.name].value=v3;
  
  if ((!isNaN(v1))&&((v1)!=''))
	{
      amount_total = amount_total + parseFloat(v1);
	}
  if ((!isNaN(v2))&&((v2)!=''))
	{
      amount_total = amount_total + parseFloat(v2);
	}
  if ((!isNaN(v3))&&((v3)!=''))
	{
      amount_total = amount_total + parseFloat(v3);
	}
    document.getElementById("dynamic_amount").innerHTML=precision(amount_total,2);
}

function onload_amount_total(x)
{
    var reg = / /g;
	x=x.toString();
    x = x.replace(" ", "");
	document.getElementById("dynamic_amount").innerHTML=precision(x,2);
}

function radiobutton_checked (radio_name,radio_value)
{
    document.forms[0].elements[radio_name][radio_value].checked=true;
}

function set_focus(button, force_focus)
{
    if (force_focus) {
        var fel = document.getElementById(force_focus);
        if (fel) fel.focus();
    } else {

        var i;
        var j;
       
        j=0;
        for (i=0;i<document.forms[0].length;i++)
        {
            if (j==0)
            {
                if (document.forms[0].elements[i].type!='hidden' && !(document.forms[0].elements[i].readOnly==true || document.forms[0].elements[i].disabled))
                {
                    document.forms[0].elements[i].focus();
                    j=1;
                }
            }
        }

        if (j==0)
        {
            var fel = document.getElementById(button);
            if (fel) fel.focus();
/*          for (i=0;i<document.all.length;i++)
            {
                if (document.all[i].type=='image' && document.all[i].name && document.all[i].name==button && j==1)
                {
                    document.all[i].focus();
                    j++;
                }
                if (document.all[i].type=='image' && document.all[i].name && document.all[i].name==button && j==0)
                {
                    j++;
                }
            } */
        }
    }
    // przesuniecie okna do gory
    document.body.scrollTop = 0;
}

function isIE()
{
    var ie = navigator.userAgent;
    if (ie.indexOf("MSIE") < 0) return false;
    return true;
}

function submitOnEnter(evt)
{
   evt = (evt) ? evt : event;
   var charC = (evt.which) ? evt.which : event.keyCode;
   if (charC == 13) {
      document.forms[0].submit();
      return false;
   }
   return true;
}
