///////////////////////////////////////////////////////////////////////////////
//                                                                           //
//   JasonWithers.com // Функции на JavaScript                               //
//   ----------------------------------------------------------------------  //
//   Copyright (C) 1998-2010 web-studio "Cherry-Design"                      //
//   URL: http://www.cherry-design.spb.ru/                                   //
//   E-mail: cherry-design@mail.ru                                           //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

// Массив, проверяемых в форме полей
required = new Array(
    "order[name]",
    "order[email]",
    "order[code]",
    "send[name]",
    "send[email]",
    "offer[name]",
    "offer[email]",
    "guest[name]",
    "guest[text]",
    "user[name]",
    "user[email]"
);

// Массив сообщений при проверке соответствующих полей
required_show = new Array(
    "your name",
    "your e-mail address",
    "confirmation code",
    "your name",
    "your e-mail address",
    "your name",
    "your e-mail address",
    "your name",
    "your comments",
    "your name",
    "your e-mail address"
);

// Массив, проверяемых в форме электронных адресов
required_email = new Array(
    "order[email]",
    "offer[email]",
    "send[email]",
    "user[email]"
);

// Регулярное выражение для проверки корректности электронного адреса
var regexp_email = /^[a-z0-9_-]+(\.[a-z0-9_-]+)*@([a-z0-9-]+\.)+[a-z]{2,4}$/i;

// Создаем объекты для AJAX-запроса к серверу
var requestDiamondsRecords = createRequest();

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
//                  Функция проверки формы, перед отправкой                  //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

function send_form() {

    var i, j, email;

    // Проверяем, что заполнены все обязательные поля
    for(j=0; j<required.length; j++) {
        for (i=0; i<document.forms[1].length; i++) {
            if (document.forms[1].elements[i].name == required[j] && document.forms[1].elements[i].value == "") {
                alert('Please type ' + required_show[j]);
                document.forms[1].elements[i].focus();
                return false;
            }
        }
    }

    // Проверяем корректность электронных адресов
    for(j=0; j<required_email.length; j++) {
        for (i=0; i<document.forms[1].length; i++) {
            if (document.forms[1].elements[i].name == required_email[j]) {
                if (!regexp_email.test(document.forms[1].elements[i].value)) {
                    alert('Incorrect e-mail address');
                    document.forms[1].elements[i].focus();
                    return false;
                }
            }
        }
    }

    return true;
}

/////////////////////////////////////////////////////////////////////////////////
//                                                                             //
//                  Функция создания объекта запроса к серверу                 //
//                                                                             //
/////////////////////////////////////////////////////////////////////////////////

function createRequest() {

    // Переменная для хранения объекта запроса
    var request = null;

    try {
        request = new XMLHttpRequest();
    } catch (trymicrosoft) {
        try {
            request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (othermicrosoft) {
            try {
                request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (failed) {
                request = null;
            }
        }
    }

    // Если объект запроса создать не удалось, то печатаем сообщение для пользователя
    if (request == null) {
        alert("Error creating request object!");
    } else {
        return request;
    }
}

/////////////////////////////////////////////////////////////////////////////////
//                                                                             //
//                     Функция отправки запроса на сервер                      //
//                                                                             //
/////////////////////////////////////////////////////////////////////////////////

function sendRequest(request, url) {

    // Определяем параметры запроса к серверу
    request.open("GET", url, true);

    // Задаем имя функции, которую должен будет запустить браузер при получении ответа
    request.onreadystatechange = updatePage;

    // Осуществляем запрос
    request.send(null);
}

/////////////////////////////////////////////////////////////////////////////////
//                                                                             //
//           Функция отправки запроса на сервер для поиска брильянтов          //
//                                                                             //
/////////////////////////////////////////////////////////////////////////////////

function getDiamondsRecords(url) {
    
    // Читаем параметры формы поиска
    var form = document.getElementById("diamonds_records_form");

    // Формируем строку запроса
    var query_string = "";

    query_string += "&shape=" + form.shape.value;
    query_string += "&proportions=" + form.proportions.value;
    query_string += "&certificate=" + form.certificate.value;
    query_string += "&polish=" + form.polish.value;
    query_string += "&symmetry=" + form.symmetry.value;
    
    query_string += "&color_min=" + form.color_min.value;
    query_string += "&color_max=" + form.color_max.value;

    query_string += "&clarity_min=" + form.clarity_min.value;
    query_string += "&clarity_max=" + form.clarity_max.value;

    query_string += "&weight_min_1=" + form.weight_min_1.value;
    query_string += "&weight_min_2=" + form.weight_min_2.value;
    query_string += "&weight_max_1=" + form.weight_max_1.value;
    query_string += "&weight_max_2=" + form.weight_max_2.value;

    query_string += "&price_min=" + form.price_min.value;
    query_string += "&price_max=" + form.price_max.value;

    query_string += "&page=" +  form.page.value;

    // Печатаем пользователю сообщение с просьбой подождать
    document.getElementById("diamonds_records").innerHTML = "Wait a moment...";

    // Формируем адрес PHP-скрипта для запроса
    var url = url + "?action=ajax_records" + query_string;
    
    // Отправляем запрос на сервер
    sendRequest(requestDiamondsRecords, url);
}

/////////////////////////////////////////////////////////////////////////////////
//                                                                             //
//                  Функция обновления содержимого странички                   //
//                                                                             //
/////////////////////////////////////////////////////////////////////////////////

function updatePage() {

    // Обновленяем таблицу с результатами поиска брильянтов
    if (requestDiamondsRecords.readyState == 4) {

        // Делаем проверку на предмет того, что сервер отработал успешно
        if (requestDiamondsRecords.status == 200) {

            // Читаем ответ сервера
            var response = requestDiamondsRecords.responseText;

            // Обновляем результаты поиска брильянтов
            document.getElementById("diamonds_records").innerHTML = response;

            // Заново инициализируем объект запроса
            requestDiamondsRecords = createRequest();
        }
    }
}

///////////////////////////////////////////////////////////////////////////////

browser_name = navigator.appName; 
browser_version = parseFloat(navigator.appVersion); 

if (browser_name == "Netscape" && browser_version >= 3.0) { 
    browser_ok = 'true'; 
} else if (browser_name == "Microsoft Internet Explorer" && browser_version >= 3.0) { 
    browser_ok = 'true'; 
} else { 
    browser_ok = 'false'; 
} 

