/**
 * Add : clgs 12.05.10 11:46
 * Author : Arkhitov Alexander aka clgs
 * Contacts : clgs.panda@gmail.com (ICQ : 409-922-922)
 * Показывает сколько ввели символов и ограничивает ввод
 */
function checkLength(obj,MaxLength,str){
	text=obj.value;
	msg='#'+obj.name+'_length';
	rest=MaxLength-obj.value.length;
	
	if(rest==0)
		$(msg).html(str).find('b').html('0');
	else if(rest<1)
		obj.value=obj.value.substr(0,MaxLength);
	else if(rest<MaxLength)
		$(msg).html(str).find('b').html(rest);
	else
		$(msg).empty();
}

/**
 * Add : clgs 13.05.10 15:42
 * Author : Arkhitov Alexander aka clgs
 * Contacts : clgs.panda@gmail.com (ICQ : 409-922-922)
 * Сборка полей формы в строку и возвращение его.
 */
function Form2Str(name){form=document.forms[name];len=form.length;str='';for(i=0;i<len;i++){box=form.elements[i];if(str!='')str+=';';str+=box.name+'='+box.value;}return str;}



/**
 * Add : clgs 13.05.10 19:08
 * Author : Arkhitov Alexander aka clgs
 * Contacts : clgs.panda@gmail.com (ICQ : 409-922-922)
 * Обрезает цифру до двух знаков после запятой
 */
function forMoney(s){
	return Math.round(s*100)/100;
}

/**
* Add: SkyTower 06.04.10
* Discription: Сборка полей формы в Get строку
**/
function FormMas(name){
    form=document.forms[name];
    len=form.length;
    mas='';
    for(i=0;i<len;i++) {
          box = form.elements[i];
          
          if (box.type=='checkbox'&&box.checked==false)
          {
          		mas += '';
          }
          else
          {
          	    if (box.name=='input_2'||box.name=='input_1'||box.name=='input_4'||box.name=='input_5'||box.name=='input_6'||box.name=='input_7')
          			value = urlEncode(box.value);
				else
					value = box.value;
					
          		if (value!='undefined')
          		{
          			mas += '&'+box.name+'='+value;
          		}
          }
    }
	return mas;    
}

function in_array(arr,needle) {
   for(var i = 0, l = arr.length; i < l; i++) {
      if(arr[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); 
    }
}

// отмечает все чекбоксы в контейнере id, q значение мастер чекбокса, function_name имя функции которая выполняется для каждого input'а
// fornew выполнить функцию function_name для "новых"
function togCheck(q,id,function_name,fornew){
	$(id+' input:checkbox').each(function(){
		o=this.checked;
		this.checked=q.checked;
		if(!fornew)o=!q.checked;
		if(o!=q.checked&&function_name&&function_name!=''&&function_exists(function_name)){
			eval(function_name+'(this);');
		}
		$(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>";
               }
          }
     }
}


/*******************************************************************************************
Функция для загрузки элементов на 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 : 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;
	}
}


function jQShowHide(idnt){if($(idnt).css('display')=='none') $(idnt).show();else $(idnt).hide();}


/**
 * Add : SkyTower 09.07.10 14:00
 * Send a cookie
 */
function setCookie(name, value, expires, path, domain, secure) {	// Send a cookie

	expires instanceof Date ? expires = expires.toGMTString() : typeof(expires) == 'number' && (expires = (new Date(+(new Date) + expires * 1e3)).toGMTString());
	var r = [name + "=" + escape(value)], s, i;
	for(i in s = {expires: expires, path: path, domain: domain}){
		s[i] && r.push(i + "=" + s[i]);
	}
	return secure && r.push("secure"), document.cookie = r.join(";"), true;
	
}