
 
function removeClassName(el, name)
{

  var i, curList, newList;

  if (el.className == null)
    return;

  // Remove the given class name from the element's className property.

  newList = new Array();
  curList = el.className.split(" ");
  for (i = 0; i < curList.length; i++)
    if (curList[i] != name)
      newList.push(curList[i]);
  el.className = newList.join(" ");
}

 
function addClassName(el, name)
{
    
    if (el.className == null)
        el.className = name;
    else        
        el.className += " "+name;
}

function MM_findObj(n, d) { //v4.01
   var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
     d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
   if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
   for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
   if(!x && d.getElementById) x=d.getElementById(n); return x;
}


function array_key_exists(key,a) 
{
 for (var n in a) {
    if (key==n)
        return true;
 };
 return false;
}


function toNumeric(val)
{
    return parseFloat(val.replace(",","."),10);
}

if (typeof(Number)!='undefined'&&typeof(Number.prototype)!='undefined'){
  if (typeof(Number.prototype.toFixed)=='undefined'){

    function Number_toFixed(d) {
      var n = this;
      d = d || 2;
      var f = Math.pow(10, d);
      n = Math.round(n * f) / f;
      n += Math.pow(10, - (d + 1));
      n += '';
      return d == 0 ? n.substring(0, n.indexOf('.')) :
        n.substring(0, n.indexOf('.') + d + 1);
    }

    Number.prototype.toFixed = Number_toFixed;
  }
}

function eanCheck(ean)
{
    
    if (!isNumeric(ean) || parseInt(ean) <= 0 )
        return false;

    switch (ean.length) {
        case 13: //ean-13
            var wagi = "131313131313";
            var suma = 0;
            for (var i=0;i<12;i++) {
                suma += wagi.substr(i,1) * ean.substr(i,1);
            }
            suma = (10-(suma % 10)) % 10;
            return (suma == ean.substr(12,1));
            break;
        case 12: // ucc12 (u.p.c.)
            var wagi = "31313131313";
            var suma = 0;
            for (var i=0;i<11;i++) {
                suma += wagi.substr(i,1) * ean.substr(i,1);
            }
            suma = (10-(suma % 10)) % 10;
            return (suma == ean.substr(11,1));
            break;
        case 8: //ean-8
            var wagi="3131313";
            var suma=0;
            for (var i=0;i<7;i++) {
                suma += wagi.substr(i,1) * ean.substr(i,1);
            }
            suma = (10-(suma % 10)) % 10;
            return (suma == ean.substr(7,1));
            break;
        default:
            return false;
    }
    return false;
}

function isNumeric(val){return(parseFloat(val.replace(",","."),10)==(val.replace(",",".")*1));}

function setAction(button, field, value) {
    if (typeof field != 'undefined')
        button.form.elements[field].value = value;
    button.form.elements['actn'].value = button.name;
    
    if (typeof button.form.onsubmit == "function") {// fire off onsubmit() events (e.g. Xinha)
        button.form.onsubmit();
    }
    
    button.form.submit();
    return false;
}

function setFormAction(form_name, button, field, value) {
    form = document.forms[form_name];	
    if (typeof field != 'undefined') {
        if (typeOf(field) == 'Array') {
            for (var i=0; i < field.length; i++) {
                form.elements[field[i]].value = value[i];
            }
        } else { // scalar
            form.elements[field].value = value;
        }
    }
    form.elements['actn'].value = button.name;
    form.submit();
    return false;
}

this.typeOf = function(t) {
return String(t.constructor).split(" ")[1].split("()").join("");
};

function help_toggle(id) {
    if (document.getElementById(id))
        document.getElementById(id).style.display = (document.getElementById(id).style.display == 'block' ? 'none' : 'block');
}

function hasClassName(el, name) {
    var classes = el.className.split(" ");
    for (var i = 0; i < classes.length; i++)
        if (classes[i] == name)
            return true;
    return false;
}

var W3CDOM = (document.getElementsByTagName && document.createElement);

if (W3CDOM)
{
    var errorNode;
    errorNode = document.createElement('div');
    errorNode.className = "errormsg";
}
    
function clearErrors(forma, id)
{
	if (!W3CDOM) return;
	var i;
	if (!id)
	   id = 'form_errors' + (window.currentTab ? window.currentTab.toString() : "");
    // czyszczenie bledow poszczegolnych pol
    var pola = forma.getElementsByTagName("input");
    for (i = 0; i< pola.length; i++) {
        if (blad_pola = document.getElementById(pola[i].name.replace(/[\[\]]/g,'\.')+"_error"))
            blad_pola.innerHTML = '';
        if (hasClassName(pola[i], 'inline_error'))
            removeClassName(pola[i], 'inline_error');
            
    }
    pola = forma.getElementsByTagName("select");
    for (i = 0; i< pola.length; i++) {
        if (blad_pola = document.getElementById(pola[i].name.replace(/[\[\]]/g,'\.')+"_error"))
            blad_pola.innerHTML = '';
        if (hasClassName(pola[i], 'inline_error'))
            removeClassName(pola[i], 'inline_error');
    }
    pola = forma.getElementsByTagName("textarea");
    for (i = 0; i< pola.length; i++) {
        if (blad_pola = document.getElementById(pola[i].name.replace(/[\[\]]/g,'\.')+"_error"))
            blad_pola.innerHTML = '';
        if (hasClassName(pola[i], 'inline_error'))
            removeClassName(pola[i], 'inline_error');
    }

    pola = forma.getElementsByTagName("label");
    for (i = 0; i< pola.length; i++) {
        if (hasClassName(pola[i], 'inline_error'))
            removeClassName(pola[i], 'inline_error');
    }
    
    // i kontenera
        document.getElementById(id).innerHTML='';
}
   
function addError(form, title, field, id)
{
    if (!W3CDOM) 
        return false;
        
    if (!id)
	   id = 'form_errors' + (window.currentTab ? window.currentTab.toString() : "");
	   
    var errorBlock = document.getElementById(id);
    
	if (!title) title = "UNNAMED ERROR!";
	
	if (typeof errorBlock != 'undefined') {
	   var newError = errorNode.cloneNode(true); // dodawanie komunikatu o bledzie
	   newError.appendChild(document.createTextNode("Błąd: "+title));
	   errorBlock.appendChild(newError);
	}

	if (field) { // zawiadomienie o bledzie przy polu formularza
	    if (form.elements[field]) {
	       addClassName(form.elements[field], 'inline_error'); // pole dostaje inna klase
	       var label = form.elements[field].parentNode;
	       if (label) { // label dostaje inna klase i title
               addClassName(label, 'inline_error');
               label.title = title;
	       }  
	    }
	    field = field.replace(/[\[\]]/g,'\.');   //zamiana [ i ] na kropki
        field_error = document.getElementById(field+"_error");
        if (typeof field_error != 'undefined') // span o id=nazwa_pola_error dostaje zawartosc
            field_error.innerHTML='(!)&nbsp;';
    }
    
	return false;
}

function sidebarChange(value, obj, href) {
    if (typeof sidebars[value] == "object") {
        if (sidebars[value].header)
            document.getElementById('rightFrameTitle').innerHTML=sidebars[value].header;
            
        if (typeof href != "string")
            var href = sidebars[value].href;
        //append sidebar_id parameter to store in session
        if (href.indexOf('?') == -1)
            href += '?sidebar_id=' + escape(value);
        else
            href += '&sidebar_id=' + escape(value);
        window.frames['sidebar'].location.href = href; 
        var el = getElementsByClass('sidebar_button');
        for (var i = 0; i < el.length; i++)
            el[i].style.display = 'none';
        if (sidebars[value].button)
            document.getElementById(sidebars[value].button).style.display = 'block';
    }
    
    if (typeof obj == 'object') 
        obj.blur();
    window.frames['sidebar'].focus();

}

function getElementsByClass(className) {

  var all = document.all ? document.all :
    document.getElementsByTagName('*');
  var elements = new Array();

  for (var e = 0; e < all.length; e++) {
    classes = all[e].className.split(" ");
    for (i = 0; i < classes.length; i++)
        if (classes[i] == className)
            elements[elements.length] = all[e];
  }
  
  return elements;
}
  
function sidebar_change_order(select) {
    var value = select.options[select.selectedIndex].value;
    // split option value 'field_name_(asc|desc)' into order and dir pieces
    var pattern = /^(\w+)_(asc|desc)$/
    var match = pattern.exec(value);
    if (match) {
        var form = select.form;
        form.elements['order'].value = match[1];
        form.elements['dir'].value = match[2];
        select.disabled = true; 
        form.submit();
    }
}

function sidebar_select_one(obj, field_name) {
    if (typeof obj == "string")
        obj = document.getElementById(obj);
    sidebar_check_all(null, false);
    obj.form.elements[field_name].value = obj.checked ? '' : obj.value;
    obj.checked = !obj.checked;
    return true;
}

function sidebar_check_all(obj, value) {
    var pola = document.forms['chooserForm'].elements;
    for (var c = 0; c < pola.length; c++) {
        if ((pola[c].type) && (pola[c].type == 'checkbox'))
            pola[c].checked = value;
    }
    if (obj !== null) {
        if (obj.innerHTML == "Zaznacz wszystkie")
            obj.innerHTML = "Odznacz wszystkie";
        else
            obj.innerHTML = "Zaznacz wszystkie";
        obj.onclick = function ()  {sidebar_check_all(this, !value)};
    }
}

function hideId(id) {
    var el;
    if (el = document.getElementById(id)) {
        addClassName(el, 'hidden');
        return true;
    }
    return false;
}

function unhideId(id) {
    var el;
    if (el = document.getElementById(id)) {
        removeClassName(el, 'hidden');
        return true;
    }
    return false;
}


String.prototype.startsWith = function(sStart)
{
    return (this.substr(0,sStart.length)==sStart);
}


function insertAtCursor(myValue, cfocus) {
	  //IE support
	  if (document.selection) { // this is set in IE
	    cfocus.focus(); // this aligns the top of the field with the top of the window (not cool)
	    sel = document.selection.createRange(); // suspect this is broken
	    sel.text = myValue;
	  }
	  //MOZILLA/NETSCAPE support - mozilla part works like a charm
	  else if (cfocus.selectionStart || cfocus.selectionStart == 0) {
	    var startPos = cfocus.selectionStart;
	    var endPos = cfocus.selectionEnd;
	    cfocus.value = cfocus.value.substring(0, startPos) + myValue
	        + cfocus.value.substring(endPos, cfocus.value.length);
	  } else {
	    cfocus.value += myValue;
	  }
}

function pasteLink(id) {
    if (!document.getElementById(id))
        return false;
        
    if (s = window.frames.sidebar) {
        var href,text,selected_id,title;
        s.document.forms['chooserForm'].action = document.forms['managerForm'].action;

        if (s.document.location.href.match(/\/category_chooser.php/)) {
            if (!isBlank(selected_id = s.document.forms['chooserForm'].elements['category'].value)) {
                // try to get the content of the second column in selected row (the name)
                if (! (text = title = s.document.getElementById('category_' + selected_id).getElementsByTagName('TD')[1].childNodes[0].data)) {
                    text = "(nazwa kategorii)";
                    title = '';
                }
                href = 'b2boss://';
                if (title.length > 0)
                    href += encodeURIComponent(title) + "@";
                href += 'index.php?cid=' + selected_id;

            }
        } else if (s.document.location.href.match(/\/product_chooser.php/)) {
            if (!isBlank(selected_id = s.document.forms['chooserForm'].elements['product'].value)) {
                // try to get the content of the second column in selected row (the name)
                if (! (text = title = s.document.getElementById('product_' + selected_id).getElementsByTagName('TD')[1].childNodes[0].data)) {
                    text = "(nazwa towaru)";
                    title = '';
                }
                href = 'b2boss://';
                if (title.length > 0)
                    href += encodeURIComponent(title) + "@";
                href += 'product.php?pid=' + selected_id;
            }
        }

        if (isBlank(href))
            alert("Wybierz towar lub kategorię, aby wkleić link...");
        else {
            if (xinha_editors[id])
                xinha_editors[id].insertHTML("<a title=\"" + JSTB_special_chars(title) + "\" href=\"" + href + "\">" + text + "</a>");
            else
                insertAtCursor("<a title=\"" + JSTB_special_chars(title) + "\" href=\"" + href + "\">" + text + "</a>",document.getElementById(id));
        }

    }
    return true;
}
function JSTB_special_chars(text) {
	s = new Array('<','>','&',"'",'"');
	d = new Array('&lt;','&gt;','&amp;','&#039;','&quot;');
	for (i=0;i<s.length;i++) {
		re = new RegExp(s[i],'g');
		text = text.replace(re,d[i]);
	}
	return text;
}

function showResult(message, error) {
    if ($('h2.result').size() == 0)
        return false;
        
    if (!message)
        $('h2.result').eq(0).fadeOut('slow');
    else
        $('h2.result').eq(0).fadeOut(1).html(message).addClass( error ? 'errormsg' : 'okmsg').removeClass( error ? 'okmsg' : 'errormsg').fadeIn('slow');

    return true;
}


