   /*
   * Функция обращается к серверу и получает данные в формате XML.
   * Полученный XML парсится и загружается список SELECT.
   * Для обращения к серверу и получения возвращаемых значений 
   * используется библиотека Prototype.js 
   * Вид принимаемого XML <root><option value="..."/>...</option></root> *         
  */  
  function select_load(url,el_id,init_value,param,isNeedNullOption) {
           /*
            * Проверка на пустору параметров для URL
           */          
           param = param || '';
           init_value = init_value || '';

           /*
            * Очистка списка
           */           
           del_sel_options(el_id); 
           
           $(el_id).options[0] = new Option('Loading...', '', false, false);
           $(el_id).disabled=true;
           
           /*
            * Посылка запроса на сервер и обработка ответа
           */           
           var obj_p = new Ajax.Request(url+param,
               {method:'get',
               onSuccess: function(response){
                var text, val;
                /*
                 * парсинг возвращенного текста как XML
                */                
                if(response.responseXml!=null) {
                 var ajaxResponse=response.responseXml;
                }
                else {
                 var ajaxResponse = Try.these(
                  function() { return new DOMParser().parseFromString(response.responseText,'text/xml'); },
                  function() { var xmldom = new ActiveXObject('Microsoft.XMLDOM');
                                   xmldom.loadXML(response.responseText); return xmldom; }
                 );
                }                                

                /*
                 * добавление строк в список 
                */ 
                $(el_id).options[0] = new Option('Select', '', false, false); 
                var count = ajaxResponse.documentElement.childNodes.length;
                var opt = ajaxResponse.documentElement.childNodes;
                var is_select=false;
                var chk_text;
                if(isNeedNullOption){
                	var start = 1;
                	count++;
                }
                else start = 0;
                for(i=start;i<count;i++) {
                /*
                 * Не пустой ли элемент 
                */                  
                 if(opt[i - start].childNodes.length>0) {
                  text = opt[i - start].childNodes[0].nodeValue;
                  val = opt[i - start].attributes[0].nodeValue;
                 }
                 else {
                  text = "";
                  val = "";
                 }                   
                  chk_text=text.sub('\'', '', 2);
                  if(val==init_value || chk_text==init_value) {is_select=true;}
                  else {is_select=false;}
                  $(el_id).options[i] = new Option(text, val, false, is_select);
                }
                $(el_id).disabled=false;
                },
                
                onFailure: function(){
                  $(el_id).options[0] = new Option('', '', false, false);
                  $(el_id).disabled=false;  
                }
           });    
  }
  
  /*
   * Функция обращается к серверу и получает данные в формате XML.
   * Полученный XML парсится и загружается список SELECT.
   * Для обращения к серверу и получения возвращаемых значений 
   * используется библиотека Prototype.js 
   * Вид принимаемого XML <root><row value="..." text="..." /></root>        
  */  
  function select_load1(url,el_id,init_value,param) {
           /*
            * Проверка на пустору параметров для URL
           */          
           param = param || '';
           init_value = init_value || '';

           /*
            * Очистка списка
           */           
           del_sel_options(el_id); 
           
           $(el_id).options[0] = new Option('Loading...', '', false, false);
           $(el_id).disabled=true;
           
           /*
            * Посылка запроса на сервер и обработка ответа
           */                      
           var obj_p = new Ajax.Request(url+param,
               {method:'get',
               onSuccess: function(response){
                var text, val;
                /*
                 * парсинг возвращенного текста как XML
                */                
                if(response.responseXml!=null) {
                 var ajaxResponse=response.responseXml;
                }
                else {
                 var ajaxResponse = Try.these(
                  function() { return new DOMParser().parseFromString(response.responseText,'text/xml'); },
                  function() { var xmldom = new ActiveXObject('Microsoft.XMLDOM');
                                   xmldom.loadXML(response.responseText); return xmldom; }
                 );
                }                                

                /*
                 * добавление строк в список 
                */                                
                $(el_id).options[0] = new Option('', '', false, false); 
                var count = ajaxResponse.documentElement.childNodes.length;
                var opt = ajaxResponse.documentElement.childNodes;
                var is_select=false;        
	                for(i=0;i<count;i++) {
		                /*
		                 * проверка существуют ли у элемента свойства
		                */                  
		                if(opt[i].attributes.length>0) {
		                	//text = opt[i].childNodes[0].nodeValue;
		                	text = opt[i].attributes[1].nodeValue;
		                	val = opt[i].attributes[0].nodeValue;
		                }
		                else {
		                 	text = "";
		                 	val = "";
		                }                   
		                if(val==init_value) {is_select=true;}
		                else {is_select=false;}
		                $(el_id).options[i] = new Option(text, val, false, is_select);
	                }
	                $(el_id).disabled=false;
                },
                
                onFailure: function(){
                  $(el_id).options[0] = new Option('', '', false, false);
                  $(el_id).disabled=false;  
                }
           });    
  }  
  
  /*
   * Функция обращается к серверу и получает данные в формате XML.
   * Полученный XML парсится и загружается список SELECT.
   * Для обращения к серверу и получения возвращаемых значений 
   * используется библиотека Prototype.js 
   * Вид принимаемого XML <root><optgroup label="..."><option value="..."/>...</option></optgroup></root> *         
  */  
  function select_load2(url,el_id,init_value,param) {
           /*
            * Проверка на пустору параметров для URL
           */          
           param = param || '';
           init_value = init_value || '';

           /*
            * Очистка списка
           */           
           del_sel_options(el_id); 
           
           $(el_id).options[0] = new Option('Loading...', '', false, false);
           $(el_id).disabled=true;
           
           /*
            * Посылка запроса на сервер и обработка ответа
           */           
           var obj_p = new Ajax.Request(url+param,
               {method:'get',
               onSuccess: function(response){
                var text, val, group_text;
                /*
                 * парсинг возвращенного текста как XML
                */                
                if(response.responseXml!=null) {
                 var ajaxResponse=response.responseXml;
                }
                else {
                 var ajaxResponse = Try.these(
                  function() { return new DOMParser().parseFromString(response.responseText,'text/xml'); },
                  function() { var xmldom = new ActiveXObject('Microsoft.XMLDOM');
                                   xmldom.loadXML(response.responseText); return xmldom; }
                 );
                }                                

                /*
                 * добавление строк в список 
                */ 
                $(el_id).options[0] = new Option('', '', false, false); 
                var j_count = ajaxResponse.documentElement.childNodes.length;
                var j_opt = ajaxResponse.documentElement.childNodes;
                var is_select=false;
                var k=0; 
                
                for(j=0;j<j_count;j++) {
                  i_count=j_opt[j].childNodes.length;                  
                  if(i_count>0) {
                    opt=j_opt[j].childNodes;
                    group_text=j_opt[j].attributes[0].nodeValue;
                    $(el_id).options[k] = new Option(group_text, '', false, is_select);
                    k++;
                    for(i=0;i<i_count;i++) {
                    /*
                     * Не пустой ли элемент 
                    */                  
                    if(opt[i].childNodes.length>0) {
                      text = opt[i].childNodes[0].nodeValue;
                      val = opt[i].attributes[0].nodeValue;
                    }
                    else {
                      text = "";
                      val = "";
                    }                   
                    if(val==init_value) {is_select=true;}
                    else {is_select=false;}
                      $(el_id).options[k] = new Option(' - '+text, val, false, is_select);
                      k++;
                    }
                  }  
                }
                $(el_id).disabled=false;
                },
                
                onFailure: function(){
                  $(el_id).options[0] = new Option('', '', false, false);
                  $(el_id).disabled=false;  
                }
           });    
  } 
  
  /*
   * Функция обращается к серверу и получает данные в формате XML.
   * Полученный XML парсится и загружается список SELECT.
   * Для обращения к серверу и получения возвращаемых значений 
   * используется библиотека Prototype.js 
   * Вид принимаемого XML <root><optgroup label="..."><option value="..."/>...</option></optgroup></root> *         
  */  
  function select_load3(url,el_id,init_value,param,isNeedNullOption, onLoad) {
           /*
            * Проверка на пустору параметров для URL
           */          
           param = param || '';
           init_value = init_value || '';

           /*
            * Очистка списка
           */           
           del_sel_options(el_id); 
           
           $(el_id).options[0] = new Option('Loading...', '', false, false);
           $(el_id).disabled=true;
           
           /*
            * Посылка запроса на сервер и обработка ответа
           */           
           var obj_p = new Ajax.Request(url+param,
               {method:'get',
               onSuccess: function(response){
                var text, val, group_text;
                /*
                 * парсинг возвращенного текста как XML
                */ 
                del_sel_options(el_id); 
                               
                if(response.responseXml!=null) {
                 var ajaxResponse=response.responseXml;
                }
                else {
                 var ajaxResponse = Try.these(
                  function() { return new DOMParser().parseFromString(response.responseText,'text/xml'); },
                  function() { var xmldom = new ActiveXObject('Microsoft.XMLDOM');
                                   xmldom.loadXML(response.responseText); return xmldom; }
                 );
                }                                

                /*
                 * добавление строк в список 
                */ 
                if(isNeedNullOption){
                	var nullOption = document.createElement('option');
                	nullOption.innerHTML = 'Select';
                	nullOption.value = '';
                	$(el_id).appendChild(nullOption);
                }
                var j_count = ajaxResponse.documentElement.childNodes.length;
                var j_opt = ajaxResponse.documentElement.childNodes;
                var is_select=false;
                var k=0; 
                
                for(j=0;j<j_count;j++) {
                  i_count=j_opt[j].childNodes.length;                  
                  if(i_count>0) {
                    opt=j_opt[j].childNodes;
                    group_text=j_opt[j].attributes[0].nodeValue;
                    //$(el_id).options[k] = new Option(group_text, '', false, is_select);
                    var optgroup = document.createElement('optgroup');
                    optgroup.label = group_text;
                    $(el_id).appendChild(optgroup);
                    //k++;
                    for(i=0;i<i_count;i++) {
                    /*
                     * Не пустой ли элемент 
                    */                  
                    if(opt[i].childNodes.length>0) {
                      text = opt[i].childNodes[0].nodeValue;
                      val = opt[i].attributes[0].nodeValue;
                    }
                    else {
                      text = "";
                      val = "";
                    }                   
                    if(val==init_value) {is_select=true;}
                    else {is_select=false;}
                      var option = document.createElement('option');
                      option.innerHTML = text;
                      option.value = val;
                      option.selected = is_select;
                      optgroup.appendChild(option);
                      //$(el_id).options[k] = new Option(' - '+text, val, false, is_select);
                      //k++;
                    }
                  }  
                }
                $(el_id).disabled=false;
                
                if(typeof onLoad == 'function') onLoad();
                },
                
                onFailure: function(){
                  $(el_id).options[0] = new Option('', '', false, false);
                  $(el_id).disabled=false;  
                }
           });    
  } 
  
  /*
   * Функция поиска. Строка для поиска передается серверу, ответ парсится
   * и загружается в список.   
   * Для обращения к серверу и получения возвращаемых значений 
   * используется библиотека Prototype.js       
  */  
  function search_in_select(url,el_id,param,init_value) {
           /*
            * Проверка на пустору параметров для URL
           */          
           param = param || '';
           init_value = init_value || '';
 
 				if (param != '' && param.length > 0)
			{	
				var firstSymbol = param.substr(0, 1);
				var querySunsAmp = '';
				var query = '';
				if (firstSymbol == '&') querySunsAmp = param.substr(1, param.length - 1);															
				else
				{
					firstSymbol = '';
					querySunsAmp = param;
				}
				var arrParamPlusQuery = querySunsAmp.split("=");
				if (arrParamPlusQuery.length == 2)
				{
					query = arrParamPlusQuery[1];
					query = escape(query);
					param = firstSymbol + arrParamPlusQuery[0] + '=' + query;					 
				}
				else param = firstSymbol + escape(querySunsAmp);				
			}
 
           /*
            * Очистка списка
           */           
           del_sel_options(el_id); 
           
           $(el_id).options[0] = new Option('Loading...', '', false, false);
           $(el_id).disabled=true;
           
           /*
            * Посылка запроса на сервер и обработка ответа
           */           
           var obj_p = new Ajax.Request(url+param,
               {method:'get',
               onSuccess: function(response){
                var text, val, group_text;
                /*
                 * парсинг возвращенного текста как XML
                */                
                ajaxResponse=getXmlFromResponse(response);                               

                /*
                 * добавление строк в список 
                */ 
                $(el_id).options[0] = new Option('', '', false, false); 
                var count = ajaxResponse.documentElement.childNodes.length;
                var opt = ajaxResponse.documentElement.childNodes;
                var is_select=false;
                for(i=0;i<count;i++) {
                 /*
                  * Не пустой ли элемент 
                 */                  
                  if(opt[i].childNodes.length>0) {
                    text = opt[i].childNodes[0].nodeValue;
                    val = opt[i].attributes[0].nodeValue;
                  }
                  else {
                    text = "";
                    val = "";
                  } 
                                    
                  if(val==init_value) {is_select=true;}
                  else {is_select=false;}
                  $(el_id).options[i] = new Option(text, val, false, is_select);
                }
                $(el_id).disabled=false;
                },
                
                onFailure: function(){
                  $(el_id).options[0] = new Option('', '', false, false);
                  $(el_id).disabled=false;  
                }
           });    
  }     

  /*
   * Функция возвращает значение выбранной строки в списке.       
  */   
  function get_sel_value(el_id) {
    var indx=$(el_id).selectedIndex;
    return $(el_id).options[indx].value;
  }
   
  /*
   * Функция очищает список.       
  */   
  function del_sel_options(el_id) {
    while($(el_id).firstChild) {
      $(el_id).removeChild($(el_id).firstChild);  
    }
  }  
   
  /*
   * Функция инициализирует все списки на странице
   * у которых есть событие onBlur          
  */   
  function init_selects2() {
    $A($$('select')).each(function(select) {
     if(select.onblur){      
      select.onblur();
      select.onblur = function() {}
     }
    });  
  }
  
  /*
   * Функция возвращает распарсеный XML
   * @return object            
  */   
  function getXmlFromResponse(response) {
           if(response.responseXml!=null) {
                 var ajaxResponse=response.responseXml;
           }
           else {
                 var ajaxResponse = Try.these(
                  function() { return new DOMParser().parseFromString(response.responseText,'text/xml'); },
                  function() { var xmldom = new ActiveXObject('Microsoft.XMLDOM');
                                   xmldom.loadXML(response.responseText); return xmldom; }
                 );
           }
           return ajaxResponse;    
  }  

  
  function get_full_sevice_info(el_id,service_id,language,type) {
    if(el_id!='') {
      service_id=service_id||0;
      language=language||1;
      type=type||'full';
      var obj_p = new Ajax.Updater(el_id, './?cmd=services/ax.full_service_info.xml&service_id='+service_id+'&language='+language+'&type='+type,{method:'get'});  
    }
  }
  
  function disabled_package(is_disabled) {
    if(is_disabled) {
      $('package_id').value='';
      $('package_id').disabled=true;
    }
    else {
      $('package_id').disabled=false;    
    }
  }
  
  function get_services_table(who_is,language,is_button) {    
    package_id=$('package_id').value||0;
    who_is=who_is||0;
    language=language||1;
    is_button=is_button||0;
    convert_to_currancy='';
    if($('convert_to_currancy')) {
      convert_to_currancy=$('convert_to_currancy').value||'';  
    }
    var obj_p = new Ajax.Updater('services_table', './?cmd=services/ax.services_table.xml&package_id='+package_id+'&who_is='+who_is+'&language='+language+'&convert_to_currancy='+convert_to_currancy+'&is_button='+is_button,{method:'get'});    
  }
  
  
function loadData(url, id, func){

	var obj_p = new Ajax.Request(url + '&id=' +id,
             		{
               			method:'get',
                		onSuccess: function(response){
							
                			var ajaxRes = Try.these(
				                  function() { return new DOMParser().parseFromString(response.responseText,'text/xml'); },
                				  function() { var xmldom = new ActiveXObject('Microsoft.XMLDOM');
              			                  	   xmldom.loadXML(response.responseText); return xmldom; }
			                );
			                
			                var row = ajaxRes.documentElement.firstChild;
			                if(typeof func == 'function') func(row);
                		},
		                onFailure: function(){
		                
	                	}
     				});   
	
}

/* -----------------------------------*/
/* --->>> onDOMReady Extension <<<----*/
/* -----------------------------------*/


Object.extend(Event, {
  _domReady : function() {
    if (arguments.callee.done) return;
    arguments.callee.done = true;

    if (this._timer)  clearInterval(this._timer);
    
    this._readyCallbacks.each(function(f) { f() });
    this._readyCallbacks = null;
},
  onDOMReady : function(f) {
    if (!this._readyCallbacks) {
      var domReady = this._domReady.bind(this);
      
      if (document.addEventListener)
        document.addEventListener("DOMContentLoaded", domReady, false);
        
        /*@cc_on @*/
        /*@if (@_win32)
            document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
            document.getElementById("__ie_onload").onreadystatechange = function() {
                if (this.readyState == "complete") domReady(); 
            };
        /*@end @*/
        
        if (/WebKit/i.test(navigator.userAgent)) { 
          this._timer = setInterval(function() {
            if (/loaded|complete/.test(document.readyState)) domReady(); 
          }, 10);
        }
        
        Event.observe(window, 'load', domReady);
        Event._readyCallbacks =  [];
    }
    Event._readyCallbacks.push(f);
  }
});

Event.onDOMReady(function(){ 
	var fTextDivs = document.getElementsByTagName('div');
	for(var i=0; i<fTextDivs.length; i++){
		if(fTextDivs[i].className == 'fText'){
			fTextDivs[i].innerHTML = fTextDivs[i].innerHTML.replace(/\n/g,'<br />');
		}
	}
});
