//***************************************************************************************************************
//    набор скриптов для формы заказа автомобиля booking.php
//    для сайта PROKAT.RU
//    автор:  Королёв Алексей
//    версия: 1.1b
//    дата:   16.07.2009
//---------------------------------------------------------------------------------------------------------------
var session_id='';
var authorised=false;
var login='';
var agent_name='';


var data_ajax_server = "pages/data_ajax_server.php";

//***************************************************************************************************************
//  самая главная функция в мире
function submit_form(id_form) {
document.getElementById(id_form+"_form").submit();
}
//---------------------------------------------------------------------------------------------------------------

var old_event = document.onclick;

document.onclick = function()
{
// alert (1);
 renew_session();
 old_event;
}


function setCookie(name, value, expireminutes, path, domain, secure) {
   if (expireminutes) {
      var exdate=new Date();
      exdate.setMinutes(exdate.getMinutes()+expireminutes);
      var expires = exdate.toGMTString();
   }
   document.cookie = name + "=" + escape(value) +
   ((expireminutes) ? "; expires=" + expires : "") +
   ((path) ? "; path=" + path : "") +
   ((domain) ? "; domain=" + domain : "") +
   ((secure) ? "; secure" : "");
}

function default_setCookie(name, value)
{
// setCookie(name, value, 1, "/");           // тестовый - 1 минута
 setCookie(name, value, 12*3600, "/");     // рабочий - 12 часов
 }

function getCookie(name) {
   var cookie = " " + document.cookie;
   var search = " " + name + "=";
   var setStr = null;
   var offset = 0;
   var end = 0;
   if (cookie.length > 0) {
      offset = cookie.indexOf(search);
      if (offset != -1) {
         offset += search.length;
         end = cookie.indexOf(";", offset)
         if (end == -1) {
            end = cookie.length;
         }
         setStr = unescape(cookie.substring(offset, end));
      }
   }
   return setStr;
}


function init_login_form()
{
authorised = getCookie('authorised');
login      = getCookie('login');
session_id = getCookie('session_id');
agent_name = getCookie('agent_name');

if (authorised=='true')
 {
  show_authorised();
  }
else
 {
  show_unauthorised();
  }
}


function show_authorised()
{
 document.getElementById("login_table").style.display="none";
 fill_text("logined_name",login);
 fill_text("agent_name",agent_name);
 document.getElementById("login_info_table").style.display="";
}

function show_unauthorised()
{
 document.getElementById("login_table").style.display="";
 fill_text("logined_name",login);
 fill_text("agent_name",agent_name);
 document.getElementById("login_info_table").style.display="none";
}

function renew_session()
{
    default_setCookie('authorised',authorised);
    default_setCookie('login', login);
    default_setCookie('session_id',session_id);
    default_setCookie('agent_name',agent_name);
}

function clear_login_err()
{
     CSSClass.remove ('login_err','booking_table_wrong_text');
     CSSClass.remove ('pass_err','booking_table_wrong_text');
}

function auth_login()
{
 login = document.getElementById("login").value;
 var pass  = document.getElementById("pass").value;
// alert  (data_ajax_server+"?request=login&login="+login+"&pass="+pass);
   var a = new AJAX(data_ajax_server+"?request=login&login="+login+"&pass="+pass,a_login);
   a.doGet();
}
function a_login(data)
{
//   alert (data);
//    if(data.length == 0)

  // document.getElementById("login").value='';
   document.getElementById("pass").value='';

   var arr = data.split('#n');
   if (arr[0]=='true')
   {
    default_setCookie('authorised',true);
    default_setCookie('login', login);
    default_setCookie('session_id',arr[1]);
    default_setCookie('agent_name',arr[2]);
    clear_login_err();
    init_login_form();
   }
   else
   {
     CSSClass.add ('login_err','booking_table_wrong_text');
     CSSClass.add ('pass_err','booking_table_wrong_text');
   }
}


function auth_logout()
{
    login = document.getElementById("login").value;
    var a = new AJAX(data_ajax_server+"?request=logout&login="+login,a_logout);
    a.doGet();
}
function a_logout(data)
{
   document.getElementById("login").value='';
   document.getElementById("pass").value='';

   default_setCookie('authorised',false);
   default_setCookie('login', '');
   default_setCookie('session_id','');
   default_setCookie('agent_name','');
   init_login_form();
}


function load_content(link,caption)
{
// document.getElementById("center_block").style.display = "none";
 fill_text("center_block", "<div style=' margin-top:200px; text-align:center; vertical-align:middle;'><img src='/img/loading.gif'></div>");
 var arr = link.split('/');

 switch (arr[0])
 {
  case 'news':
   fill_text('main_caption', 'Новость');
   var a = new AJAX(data_ajax_server+"?request=news&id="+arr[1],a_load_content);
   a.doGet();
   return;
  break;

  case 'articles':
   if (caption == null){ fill_text('main_caption', 'Публикация');}
   else {fill_text('main_caption', caption);}
   var a = new AJAX(data_ajax_server+"?request=article&id="+arr[1],a_load_content);
   a.doGet();
   return;
  break;

 case 'booking':
   if (caption == null){ fill_text('main_caption', 'Бронирование');}
   else {fill_text('main_caption', caption);}
   var a = new AJAX(data_ajax_server+"?request=booking",a_load_booking);
   a.doGet();
   return;
  break;

 case 'tariffs':
   if (caption == null){ fill_text('main_caption', 'Тарифы');}
   else {fill_text('main_caption', caption);}
   var a = new AJAX(data_ajax_server+"?request=tariffs",a_load_content);
   a.doGet();
   return;
  break;

  default:
   fill_text("center_block", '404');
 }
}

function a_load_content(text)
{
 fill_text("center_block", text);
 document.getElementById("center_block").style.display = "";
}
function a_load_booking(text)
{
 fill_text("center_block", text);
 document.getElementById("center_block").style.display = "";
 load_cars();
}

function getrandom(min_random, max_random) {
    var range = max_random - min_random + 1;
    return Math.floor(Math.random()*range) + min_random;
}



//***************************************************************************************************************
// функция заполняет объект с идентификатором text_id
// данными из массива data
//
// данные передаются в простой строке
// в кодировке CP1251
function fill_text (text_id,data){

    var txt = document.getElementById(text_id);
    txt.innerHTML = data;
}
//---------------------------------------------------------------------------------------------------------------





//***************************************************************************************************************
// функция заполняет объект SELECT с идентификатором select_id
// данными из массива data
//
// данные передаются в строке вида   value1 #t text1 #n value2 #t text2 #n ... valueN #t textN [#n]
// кодировка определяется header'ом со стороны аякс-сервера
function fill_select (select_id,data,clear)
{

    var select = document.getElementById(select_id);     // поле SELECT в переменную в виде объекта

    if ((select.length > 0)&&(clear !=0)){selected_text = select[0].text;}
    else {selected_text ="";}

    select.length = clear;              // очищаем SELECT
    select.length = 0;              // очищаем SELECT

    if(data.length == 0) return;    // если данных нет - не делаем больше ничего
    var arr = data.split('#n');     // в массиве arr - строки полученной таблицы

    for(var i in arr)     // для каждой строки
    {
        if (arr[i] != "")
         {
          val = arr[i].split('#t');                   // в массиве val - поля полученной таблицы

//          if  (val[1] != selected_text)
            {
             select.options[select.options.length]=
             new Option(val[1], val[0], false, false);   // добавляем новый объект OPTION к нашему SELECT
            }
       }
    }
    select.selectedIndex = 0;
}
//---------------------------------------------------------------------------------------------------------------


//***************************************************************************************************************
//
//  AJAX CORE
//
//  Denis Korolev
//
function AJAX(url, callback) {
	var request = init();
	request.onreadystatechange = processrequestuest;

	function init(){
		if(navigator.appName == "Microsoft Internet Explorer") return new ActiveXObject("Microsoft.XMLHTTP");
    	else return new XMLHttpRequest();
	}

	function processrequestuest(){
	  if (request.readyState == 4 && request.status == 200) callback( request.responseText);
	}

	this.doGet = function(){
		request.open("get", url, true);
		request.send(null);
	}

	this.doPost = function(body){
		request.open("post", url, true);
		request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
		request.setRequestHeader("Content-length", body.length);
    	request.setRequestHeader("Connection", "close");
		request.send(body);
	}
}

//******************************************************************************************************
//
//  CSS Class manipulation
//
//  from
//  JavaScript: The Definitive Guide, 5th Edition
//  By David Flanagan
//
var CSSClass = {};  // Create our namespace object
// Return true if element e is a member of the class c; false otherwise
CSSClass.is = function(e, c) {
    if (typeof e == "string") e = document.getElementById(e); // element id

    // Before doing a regexp search, optimize for a couple of common cases.
    var classes = e.className;
    if (!classes) return false;    // Not a member of any classes
    if (classes == c) return true; // Member of just this one class

    // Otherwise, use a regular expression to search for c as a word by itself
    // \b in a regular expression requires a match at a word boundary.
    return e.className.search("\\b" + c + "\\b") != -1;
};

// Add class c to the className of element e if it is not already there.
CSSClass.add = function(e, c) {
    if (typeof e == "string") e = document.getElementById(e); // element id
    if (CSSClass.is(e, c)) return; // If already a member, do nothing
    if (e.className) c = " " + c;  // Whitespace separator, if needed
    e.className += c;              // Append the new class to the end
};

// Remove all occurrences (if any) of class c from the className of element e
CSSClass.remove = function(e, c) {
    if (typeof e == "string") e = document.getElementById(e); // element id
    // Search the className for all occurrences of c and replace with "".
    // \s* matches any number of whitespace characters.
    // "g" makes the regular expression match any number of occurrences
    e.className = e.className.replace(new RegExp("\\b"+ c+"\\b\\s*", "g"), "");
};

