function togCheck(q,id){
	$(id+' input:checkbox').each(function(){
		this.checked=q.checked;
		$(this).click(function(){
			q.checked=false;
		});
	});
}

function check_pass()
{
     if(document.getElementById('pass1') && document.getElementById('pass2'))
     {
          if(document.getElementById('pass1').value!=document.getElementById('pass2').value)
          {
               document.getElementById('pass1').value = '';
               document.getElementById('pass2').value = '';
               document.getElementById('pass1').focus();
               alert('Введённые пароли не совпадают!');
          }
          else
          {	   
               if(document.getElementById('pass1').value!='' && document.getElementById('pass2').value!='')
               {
                    document.getElementById('about_pass1').innerHTML = "<span class='ajax_success'> OK!</span>";
                    document.getElementById('about_pass2').innerHTML = "<span class='ajax_success'> OK!</span>";
               }
          }
     }
}


Array.prototype.in_array = function(needle) {
   for(var i = 0, l = this.length; i < l; i++) {
      if(this[i] == needle) {
         return true;
      }
   }
   return false;
}

function function_exists (function_name) { 
    if (typeof function_name == 'string'){ 
        return (typeof this.window[function_name] == 'function'); 
    } else{ 
        return (function_name instanceof Function); 
    } 
}

/*******************************************************************************************
Функция для загрузки элементов на ajax
mod - тип модуля

id_element - id элемента

type_element - тип элемента

action - действие

element_to_load - id html-элемента, куда следует загрузить ответ ajax (answer)

message_about_load - id html-элемента, куда следует загрузить ответ ajax (error)

text_loading - текст, информирующий о загрузке

text_error - текст, информирующий о ошибке
*******************************************************************************************/
function load_ajax(id_element,action,element_to_load,message_about_load,text_loading,text_error,other_1,element_to_load_2)
{
	 if(message_about_load)
	      document.getElementById(message_about_load).innerHTML = '<img src="/loader.gif" width="18" height="15">';

     var req = new Subsys_JsHttpRequest_Js();
     
     req.onreadystatechange = function() 
     {
     	 
	      if (req.readyState == 4)
	      {
		       if (req.responseJS) 
		       {
		       	    if(req.responseJS.error)
		       	    {
		       	    	if(message_about_load)
		       	    	     document.getElementById(message_about_load).innerHTML = req.responseJS.error;
		       	    }
		       	    else
		       	    {
		       	         if(req.responseJS.answer)
		       	         {
		                      if(message_about_load)
		                           document.getElementById(message_about_load).innerHTML = '';
		                      document.getElementById(element_to_load).innerHTML = req.responseJS.answer;
		                      
		                      if(element_to_load_2)
		                      {
		                           document.getElementById(element_to_load_2).innerHTML = req.responseJS.answer_2;
		                      }
		       	         }
		       	         else
		       	         {
		       	         	  if(message_about_load)
		       	                   document.getElementById(message_about_load).innerHTML = '<span class="ajax_error">'+text_error+'</span>';
		       	         }
		       	    }
			   }
			   else
			   {
			   	    if(message_about_load)
			             document.getElementById(message_about_load).innerHTML = '<span class="ajax_error">'+text_error+'2</span>';
			   }
			   
			   // Отладочная информация.
			   if(req.responseText)
			        document.getElementById('ajax_debug').innerHTML = req.responseText;
			   else
			        document.getElementById('ajax_debug').innerHTML = '';
          }
     }
     
	 req.caching = false;
	 req.open('POST', '/ajax.php', true);
	 req.send({action: action,id_element: id_element, other_1: other_1});
}

/*******************************************************************************************
Функция функция и параметры аналогичны предыдущей, но она в отличие от предыдущей, передаёт результаты выполнения (answer) callback-функции

callback_function - название callback-функции
*******************************************************************************************/
function load_ajax_callback(id_element,type_element,action,callback_function,message_about_load,text_loading,text_error)
{
	 if(message_about_load)
	      document.getElementById(message_about_load).innerHTML = '<img src="http://img.mosr.ru/loader.gif" width="18" height="15">';

     var req = new Subsys_JsHttpRequest_Js();
     
     req.onreadystatechange = function() 
     {
	      if (req.readyState == 4)
	      {
		       if (req.responseJS) 
		       {
		       	    if(req.responseJS.error)
		       	    {
		       	    	if(message_about_load)
		       	    	     document.getElementById(message_about_load).innerHTML = req.responseJS.error;
		       	    }
		       	    else
		       	    {
		       	         if(req.responseJS.answer)
		       	         {
		       	              funct = callback_function+'(req.responseJS.answer)';
		                      eval(funct);
		                      if(message_about_load)
		                           document.getElementById(message_about_load).innerHTML = '';
		       	         }
		       	         else
		       	         {
		       	         	  if(message_about_load)
		       	                   document.getElementById(message_about_load).innerHTML = '<span class="text_error">'+text_error+'</span>';
		       	         }
		       	    }
			   }
			   else
			   {
			   	    if(message_about_load)
			             document.getElementById(message_about_load).innerHTML = '<span class="text_error">'+text_error+'</span>';
			   }
			   
			   // Отладочная информация.
			   if(req.responseText)
			        document.getElementById('ajax_debug').innerHTML = req.responseText;
			   else
			        document.getElementById('ajax_debug').innerHTML = '';
          }
     }
	 req.caching = false;
	 req.open('POST', '/ajax.php', true);
	 req.send({id_element: id_element,type_element: type_element, action: action});
}


/**
 * Add : clgs 19.02.10 15:04
 * Author : Arkhitov Alexander aka clgs
 * Contacts : clgs.panda@gmail.com (ICQ : 409-922-922)
 */
function GoPage(go){
	window.location.href = "http://"+go;
}

/**
 * Add : clgs 16.03.10 15:04
 * Author : Arkhitov Alexander aka clgs
 * Contacts : clgs.panda@gmail.com (ICQ : 409-922-922)
 * отмечает все чекбоксы в контейнере id, q значение мастер чекбокса 
 */

function togCheck(q,id){
	$(id+' input:checkbox').each(function(){
		this.checked=q.checked;
		$(this).click(function(){
			q.checked=false;
		});
	});
}


/**
 * Add : SkyTower 19.03.10 15:04
 * конвентирует строку str в формат utf8
 */
function urlEncode(str) {
    // Простая проверка
    if (!str || typeof(str) == "undefined")
    {
    	return "undefined";
	}
	else
	{
	    // Создаем хеш для хранения символов, где ключ - сам символ,
	    // а значение - его шестнадцатеричеый эквивалент
	    var utf8Array = {};
	    // Сначала добавляем стандартные 255 символов
	    var i = j = j2 = 0;
	    for (i = 0; i <= 255; i++) {
	        j = parseInt(i/16); var j2 = parseInt(i%16);
	        utf8Array[String.fromCharCode(i)] = ('%' + j.toString(16) + j2.toString(16)).toUpperCase();
	    }
	    // И отдельно проработаем кириллицу
	    var rusAdditional = {
	        '_' : '%5F', 'А' : '%C0', 'Б' : '%C1', 'В' : '%C2', 'Г' : '%C3', 'Д' : '%C4', 'Е' : '%C5',
	        'Ж' : '%C6', 'З' : '%C7', 'И' : '%C8', 'Й' : '%C9', 'К' : '%CA', 'Л' : '%CB', 'М' : '%CC',
	        'Н' : '%CD', 'О' : '%CE', 'П' : '%CF', 'Р' : '%D0', 'С' : '%D1', 'Т' : '%D2', 'У' : '%D3',
	        'Ф' : '%D4', 'Х' : '%D5', 'Ц' : '%D6', 'Ч' : '%D7', 'Ш' : '%D8', 'Щ' : '%D9', 'Ъ' : '%DA',
	        'Ы' : '%DB', 'Ь' : '%DC', 'Э' : '%DD', 'Ю' : '%DE', 'Я' : '%DF', 'а' : '%E0', 'б' : '%E1',
	        'в' : '%E2', 'г' : '%E3', 'д' : '%E4', 'е' : '%E5', 'ж' : '%E6', 'з' : '%E7', 'и' : '%E8',
	        'й' : '%E9', 'к' : '%EA', 'л' : '%EB', 'м' : '%EC', 'н' : '%ED', 'о' : '%EE', 'п' : '%EF',
	        'р' : '%F0', 'с' : '%F1', 'т' : '%F2', 'у' : '%F3', 'ф' : '%F4', 'х' : '%F5', 'ц' : '%F6',
	        'ч' : '%F7', 'ш' : '%F8', 'щ' : '%F9', 'ъ' : '%FA', 'ы' : '%FB', 'ь' : '%FC', 'э' : '%FD',
	        'ю' : '%FE', 'я' : '%FF', 'ё' : '%B8', 'Ё' : '%A8'
	    }
	    for (i in rusAdditional) utf8Array[i] = rusAdditional[i];
	    // Посимвольно заменяем символы на их шестнадцатиречные эквиваленты
	    var res = "";
		for(i = 0; i < str.length; i++) {
		    var simbol = str.substr(i,1);
		    res += typeof utf8Array[simbol] != "undefined" ? utf8Array[simbol] : simbol;
		}

		// Пробелы заменяем на плюсы 
	    res = res.replace(/\s/g, "+");

	    return res;
	}
}
