$ = function(id) {
    return document.getElementById(id);
}

function getElementsByClassName(strClass, strTag, objContElm) {
  strTag = strTag || "*";
  objContElm = objContElm || document;
  var objColl = objContElm.getElementsByTagName(strTag);
  if (!objColl.length &&  strTag == "*" &&  objContElm.all) objColl = objContElm.all;
  var arr = new Array();
  var delim = strClass.indexOf('|') != -1  ? '|' : ' ';
  var arrClass = strClass.split(delim);
  for (var i = 0, j = objColl.length; i < j; i++) {
    var arrObjClass = objColl[i].className.split(' ');
    if (delim == ' ' && arrClass.length > arrObjClass.length) continue;
    var c = 0;
    comparisonLoop:
    for (var k = 0, l = arrObjClass.length; k < l; k++) {
      for (var m = 0, n = arrClass.length; m < n; m++) {
        if (arrClass[m] == arrObjClass[k]) c++;
        if (( delim == '|' && c == 1) || (delim == ' ' && c == arrClass.length)) {
          arr.push(objColl[i]);
          break comparisonLoop;
        }
      }
    }
  }
  return arr;
}

function addCart(url, id) {
    url += '&id=' + parseInt(id);
    var rbuttons = getElementsByClassName("r" + id, 'input');
    if (rbuttons.length > 1) { //then it's a radio-buttons collection
        var price_is_ok = false;
        for (i in rbuttons) {
            if (rbuttons[i].checked === true) {
                price_is_ok = true;
                url += "&price=" + rbuttons[i].value.toString();
                break;
            } else
                price_is_ok = false;

        }
    } else { //then there's only one price and the element is an <input type="hidden" />
        var price_is_ok = true;
        url += "&price=" + rbuttons[0].value.toString();
    }
    if (price_is_ok) { //price is selected
        var req = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
        req.onreadystatechange = function() {
            switch (req.readyState) {
                case 1: case 2: case 3:
                    $('lo').innerHTML = '<span class="lo-txt">Обновление корзины...</span>';
                break;
                case 4:
                       $('cart-goods').innerHTML = req.responseText;
                    $('lo').innerHTML = '';
                break;
            }
        }
        req.open("GET", url, true);
        req.setRequestHeader("Content-type", "application/x-www-form-urlencoded, charset=utf-8");
        req.setRequestHeader("Connection", "close");
        req.send(null);
    } else
        alert('Скажи "НЕТ!" халяве - не забудь выбрать цену! (-:');
}

function cartAction(url, act, id, el, price) {
    var req = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
    req.onreadystatechange = function() {
        switch (req.readyState) {
            case 1: case 2: case 3:
                $('lo').innerHTML = '<span class="lo-txt">Обновление корзины...</span>';
            break;
            case 4:
                if (act == 'plus') {
                    $('number-' + id + '-' + price).innerHTML = parseInt($('number-' + id + '-' + price).innerHTML) + 1;
                    $('info').innerHTML = req.responseText;
                    $('info2').innerHTML = req.responseText;
                } else {
                    if (req.responseText.match(/none/)) {
                        showHide('purchase-list');
                        $('cart-goods').innerHTML = '<div id="info"><div class="cart-empty"></div><br /><b>Корзина пуста</b></div>';
                    } else {
                        if (act == 'minus') {
                            if (parseInt($('number-' + id + '-' + price).innerHTML) - 1 > 0) {
                                $('number-' + id + '-' + price).innerHTML = parseInt($('number-' + id + '-' + price).innerHTML) - 1;
                                $('info').innerHTML = req.responseText;
                                $('info2').innerHTML = req.responseText;
                            } else {
                                 $('tr-' + id + '-' + price).parentNode.removeChild($('tr-' + id + '-' + price));
                                 $('info').innerHTML = req.responseText;
                                 $('info2').innerHTML = req.responseText;
                            }
                        } else if (act == 'delete') {
                            $('tr-' + id + '-' + price).parentNode.removeChild($('tr-' + id + '-' + price));
                            $('info').innerHTML = req.responseText;
                            $('info2').innerHTML = req.responseText;
                        }
                    }
                }
                $('lo').innerHTML = '';
            break;
        }
    }
        url += '&type=' + act;
        req.open("GET", url, true);
        req.setRequestHeader("Content-type", "application/x-www-form-urlencoded, charset=utf-8");
        req.setRequestHeader("Connection", "close");
        req.send(null);
}

function order(url) {
    $('product').className = 'product';
    var req = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
    req.onreadystatechange = function() {
        switch (req.readyState) {
            case 1: case 2: case 3:
                $('lo').innerHTML = '<span class="lo-txt">Обработка данных...</span>';
            break;
            case 4:
                $('product').innerHTML = req.responseText;
                $('lo').innerHTML = '';
            break;
        }
    }
        req.open("GET", url, true);
        req.setRequestHeader("Content-type", "application/x-www-form-urlencoded, charset=utf-8");
        req.setRequestHeader("Connection", "close");
        req.send(null);
}

function emptyCart(url) {
    var req = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
    req.onreadystatechange = function() {
        switch (req.readyState) {
            case 1: case 2: case 3:
                $('lo').innerHTML = '<span class="lo-txt">Очистка корзины...</span>';
            break;
            case 4:
                $('cart-goods').innerHTML = req.responseText;
                $('product').innerHTML = '';
                $('lo').innerHTML = '';
            break;
        }
    }
        req.open("GET", url, true);
        req.setRequestHeader("Content-type", "application/x-www-form-urlencoded, charset=utf-8");
        req.setRequestHeader("Connection", "close");
        req.send(null);
}

function showHide(id) {
    if ($(id).style.display == 'block') {
        $(id).style.display = 'none';
    } else {
        $(id).style.display = 'block';
    }
}

function send_msg(url, fb_form) {
    var data = '';
    $('msg').innerHTML = '';
    var ok = true;
    if (!fb_form.name.value) {
        $('msg').innerHTML += "Вы не представились<br />";
        ok = false;
    }
    if (!fb_form.email.value) {
        $('msg').innerHTML += "Вы не ввели свой email<br />";
        ok = false;
    }
    if (fb_form.email.value && !(/^\w+[-_\.]*\w+@\w+-?\w+\.[a-z]{2,4}$/.test(fb_form.email.value))) {
        $('msg').innerHTML += "Проверьте правильность ввода email<br />";
        ok = false;
    }
    if (!fb_form.message.value) {
        $('msg').innerHTML += "Введите текст вашего сообщения нам<br />";
        ok = false;
    }
    if (fb_form.message.value && fb_form.message.value.length > 300) {
        $('msg').innerHTML += "Ваше сообщение слишком длинное<br />";
        ok = false;
    }

    if (ok) {
        data = '?name=' + encodeURI(fb_form.name.value)
             + '&email=' + encodeURI(fb_form.email.value)
             + '&message=' + encodeURI(fb_form.message.value);
        if (fb_form.phone.value)
           data += '&phone=' + encodeURI(fb_form.phone.value);
        data += '&send=true';
        var req = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
        req.onreadystatechange = function() {
            switch (req.readyState) {
                case 1: case 2: case 3:
                    $('lo').innerHTML = '<span class="lo-txt">Отправка сообщения...</span>';
                break;
                case 4:
                    $('msg').innerHTML = req.responseText;
                    $('lo').innerHTML = '';
                break;
            }
        }
        url += data;
        req.open("POST", url, true);
        req.setRequestHeader("Content-type", "application/x-www-form-urlencoded, charset=utf-8");
        req.setRequestHeader("Connection", "close");
        req.send(null);
    }
}
