

function trim(str) {
  str = str.replace(/(^ *)|( *$)/,"");
  return str;
}

function rtrim(str) {
  str = str.replace(/( *$)/,"");
  return str;
}

function ltrim(str) {
  str = str.replace(/(^ *)/,"");
  return str;
}

function substr(mixed_var, s, l) {
  if (s < 0) {s=mixed_var.length+s;}
  str = mixed_var.substring(s, s+l);
  return str;
}

// Возвращает длину строки
function strlen( mixed_var ) {
    return mixed_var.length;
}

// Преобразует строку в нижний регистр
function strtolower( mixed_var ) {
    return mixed_var.toLowerCase();
}

// Преобразует строку в верхний регистр
function strtoupper( mixed_var ) {
    return mixed_var.toUpperCase();
}

// Преобразует строку в массив
function str_split( mixed_var, mixed_num ) {
    
    // Выходной массив
    var result = new Array();
    
    // Если порядок разбиений равен 1, тогда в цикле просто
    // переписываем в массив символ в указанной позиции
    if( mixed_num == 1 ) {
        for(var i = 0; i < mixed_var.length; i++) {
            result.push( mixed_var.charAt(i) );
        }
    }
    
    // Если порядок разбиений больше единицы, тогда в цикле просто
    // вырезаем кусок строки слева, помещаем в массив и обрезаем 
    // исходную строку, в соответствии с порядком деления
    if( mixed_num > 1 ) {
        while(mixed_var.length > 0) {
            // Вырезаем слева кусок
            var mix_var = mixed_var.substring( 0, mixed_num );
            
            // Записываем в массив
            result.push(mix_var);
            
            // Обрезаем исходную строку
            mixed_var = mixed_var.substr(mixed_num);
        }
    }
    
    // Если порядок деления меньше единицы, тогда всю строку пишем 
    // в первый элемент массива
    if( mixed_num < 1 ) {
        result[0] = mixed_var;
    }
    
    // На выходе получим массив из подстрок исходной строки, к примеру для строки "qwerty" 
    // и порядка разделения "2" получим массив -> [qw, er, ty]
    return result;
}

// Переворачивает строку
function strrev( mixed_var )
{
    // Переменная, получает значение результата оборота строки
    var result = "";
    
    // Если длина строки не равна нулю
    if( mixed_var.length != 0 ) {
        
        // В переменную результата пишем результат через
        // посимвольную конкатенацию
        for(var i = mixed_var.length - 1; i >= 0; i--) {
            result += mixed_var.charAt(i);
        }
    }
    
    // Возвращаем результат
    return result;
}

// Возвращает повторяющуюся строку
function str_repeat( mixed_var, mixed_num )
{
    // Переменная, получает значение результата конкатенации строки
    var result = "";
    
    // Если количество повторений больше единицы
    if( mixed_num >= 1 ) {
        for(var i = 0; i < mixed_num; i++) {
            result += mixed_var;
        }
    }
    
    // Возвращаем результат
    return result;
}

// Возвращает ASCII код символа
function ord( mixed_var )
{
    // Переменная, получает ASCII-значение первого символа строки
    var result = "";
    
    // Получение скан-кода
    if(mixed_var.length != 0) {
        result = mixed_var.charCodeAt(0);
    }
    
    // Если пришёл пустой символ строки, тогда выдаём просто ошибку
    if(result == "") {
        result = "None";
    }
    
    // Возвращаем результат
    return result;
}

function letter_posion(string , position) {
   // возвращает символ находящийся на позиции pos от начала слова. Аналог $string{pos}
   return string.charAt(position);
}

function ord(char) {
   //  Возвращает acsii обозначение для символа
    // Аналог ord на javascript
    return char,charCodeAt()  ;
}

function un_ord( unicode )  {
    // Возвращает стмвол / строку по указанному uni коду
    return unicode.fromCharCode (unicode);
}


function strpos( haystack, needle, offset ) {
    // Возвращает позицию первого вхождения подстроки needle в строку haystack.
    // аналог strstr
    // аналог strpos
   
 if(offset) offset = offset ; else offset = 0 ;
  return haystack.indexOf(needle,offset);
}


function strRpos( haystack, needle, offset ) {
   // аналог strrpos
    // Возвращает позицию первого вхождения подстроки needle в строку haystack.
   
 if(offset) offset = offset ; else offset = 0 ;
  return haystack.lastindexOf(needle,offset);
}


function explode(separator, string, limit){
 // Возвращает массив строк, полученных разбиением строки string с использованием 
  // separator в качестве разделителя. 
  // аналог explode

   return string.split (seperator ,limit);
}

function implode(array,separator){
  // Аналог join на Javascript
  // Аналог implode на Javascript

  return array.join(separator);
}


var timeoutID;

function viewObject(name)
{
 // Получение объекта
 var obj = eval(name);

 if(!obj)
 {
   // Объекта не существует
   alert("Объект \""+name+"\" не существует");
   return;
 }

 // Открытие окна
 var w_Test = open("","Test","width=600,height=500,scrollbars=1");

 if(!w_Test)
 {
   // Не создан объект окно
   alert("Не могу открыть окно для просмотра свойств объекта "+name);
   return;
 }

 w_Test.document.open();

 // Вывод в открытое окно всех свойств и методов объекта
 for(i in obj)
   w_Test.document.write(name+"."+i+"="+obj[i]+"<br>");

 w_Test.document.close();
}

function ResetForm(form, noreset)
{
	var patern = new RegExp(" ", "ig");
	noreset = ","+noreset.replace(patern, "")+",";

	for (var i=0; i < form.length; i++)
		{if ((form.elements[i].type != "reset") && (form.elements[i].type != "submit") && !(noreset.indexOf(","+form.elements[i].name+",") >= 0))
			{
				if (form.elements[i].type=='checkbox') {form.elements[i].checked=false;}
				form.elements[i].value='';
			}
		}

}

var PictureScrollTimeout;
function CardPictureScroll()
{
var step=20;

start=document.getElementById("picture").offsetTop;
help1=document.body.scrollTop-document.getElementById("picture").offsetHeight;
help2=document.body.scrollTop+this.window.screen.availHeight;
finish=document.body.scrollTop+100;
if (start < help1) {start=help1;}
if (start > help2)  {start=help2;}

if (start > (finish+step-1)) {start-=step;}
else if (start < (finish-step-1)) {start+=step;}
else {clearInterval(PictureScrollTimeout); start=finish;}

document.getElementById('picture').style.top=start;
}

function ShowCardPicture(lang, set, title)
{
name=title.replace(/[^A-Za-z0-9\-\_]/g, '');
set+=(lang=='RU')?'_RUS':'';

if ($("#banner_shadow A").html())
{
	$("#banner_shadow").html($("#banner_shadow A").html());
	$("#card_picture").css("position", "relative");
	$("#card_picture").css("margin", "0px 0px 0px 0px");
}

$("#Adver_Under_Picture").html(' ');

if ($("#card_picture").length)
{
	$("#card_picture").css("top", "0px").css("left", "0px");
	$("#card_picture").attr("src", "/pictures/"+set+"/"+name+".jpg");
}
else
{
	var help='<img src="/pictures/'+set+'/'+name+'.jpg" width="210" height="299" border="1" id="card_picture">';
	$("#banner_shadow").html(help);
	$("#card_picture").css("top", "0px").css("left", "0px");	
}
	$("#Adver_Under_Picture").load("/new/adver/card_sale_links_under_picture.phtml?nocach="+Math.random()+"&title="+encodeURIComponent(title));
	if (navigator.userAgent.indexOf('MSIE') >= 0)
	  {document.getElementById("card_picture").filters.revealTrans.Apply();
	   document.getElementById("card_picture").filters.revealTrans.Play();
	  }
PictureScrollTimeout=setInterval('CardPictureScroll()', 1);
$("#card_picture").width(210).height(299);
}

function SetSelector(Name, Get, Style, Value, Text)
{
document.write('<select name="'+Name+'" id="'+Name+'"'+((Style)?''+Style:'')+'>');
for (var i=0; i < Value.length; i++)
 {document.write('<option value="'+Value[i]+'"'+(((i > 0) && Get && (Get==Value[i]))?" selected":"")+'>'+Text[i]+'</option>');
 }
document.write('</select>');
}

function DisplayBlock(id)
{
if ($("#"+id).css("display")=="block") $("#"+id).hide(); else $("#"+id).show();
}

function numbersOnly(evt, type)
{
 evt=(evt) ? evt : event;
 var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode :
	((evt.which) ? evt.which : 0));

 if ((charCode < 31) || (charCode >= 48 && charCode <= 57) || ((charCode == 46) && (type == 'real')))
	{return true;}
 else {return false;}
}

function latinOnly(evt, punct)
{
 evt=(evt) ? evt : event;
 var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode :
	((evt.which) ? evt.which : 0));

 if ((charCode < 31) || (charCode >= 48 && charCode <= 57) || (charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122) || (((charCode == 45) || (charCode == 95) || (charCode == 32)) && (punct=='punct')))
	{return true;}
 else {return false;}
}

function ShowCardInfo(id, uin, lang, error)
{
  var error=error?"error_":"";
  if (!jQuery("#"+id).data('tip'))
	{	jQuery("#"+id).mouseout(function(){jQuery("#"+id).data('mouse','out');UnTip();}).data('mouse','over');
		Tip('<img src="/images2/design/icons/loading2.gif" width="48" height="48">', BALLOON, true, ABOVE, true, OFFSETX, -10, WIDTH, 350, TEXTALIGN, 'center', FADEIN, 100, FADEOUT, 100, PADDING, 20);
		jQuery.get('/new/plug-in/get_'+error+'card_info.phtml?id='+id+'&uin='+uin+'&lang='+lang+'&nocach='+Math.random(),
			function(data){jQuery("#"+id).data("tip",data).mouseover(function(){jQuery("#"+id).data('mouse','over');ShowCardInfo(id);});ShowCardInfo(id);}
				  );
	}
  else if (jQuery("#"+id).data('mouse')=='over')
	{	var MTGruPic='';
		eval(jQuery("#"+id).data('tip'));
		if (MTGruPic && !jQuery("#"+id).data('click')) {jQuery("#"+id).data('click',true).click(function(){eval('ShowCardPicture('+MTGruPic+')');});}
	}
}

function Email(email, id)
{
	first=substr(email, 0, 1);
	eval("var dot=/"+substr(email, -1, 1)+"/g");
	email=email.replace(substr(email, -2, 1), "@").replace(dot, ".").replace(/^.|..$/g, "");
	email=strrev(substr(email, strpos(email, first)+1, strlen(email)).replace(new RegExp("["+substr(email, 0, strpos(email, first))+"]", "g"), ""));
	html='<a href="mailto:'+email+'">'+email+'</a>';
	if (id) {$("#"+id).html(html);}
	else {document.write(html);}

}

function TestBrowser()
{
var error='Системе не знакома версия Вашего браузера.';
var old_browser='Система определила версию Вашего браузера как устаревшую.';
if ($.browser.msie) {if ($.browser.version < 6) {error=old_browser;} else {error='';}}
else if ($.browser.mozilla) {if ($.browser.version < 1.8) {error=old_browser;} else {error='';}}
else if ($.browser.opera) {if ($.browser.version < 9) {error=old_browser;} else {error='';}}

if (error=='')
{
document.write('<img src="/images2/design/picture.jpg" id="card_picture" style="top: 0px; left: 0px;" alt="Magic: The Gathering">');
}
else
{
document.write('<div style="background-color: #000000; color: #FFFFFF; width: 210px; padding: 7px;"><p align="justify">'+error+'<br><br>К сожалению, этот сайт, скорее всего, не будет работать в Вашем браузере. Во всяком случае, множество полезных и удобных опций не смогут быть корректно воспроизведены.<br><br>Сайт рассчитан и тестировался для работы со следующими версиями браузеров:<br><br><b>Internet Explorer 6.0+<br>Mozilla Firefox 2.0+<br>Opera 9.0+<br>SeaMonkey 1.1+</b><br><br>Пожалуйста, воспользуйтесь для работы браузерами этих или более старших версий. Все они доступны для скачивания в интернете бесплатно.</p></div>');
}
}

function LogIn(user, password)
{
var user_error=false;
var password_error=false;

if (!user) {user_error=true;}
if (!password) {password_error=true;}

if (!user_error && !password_error)
{
	user=user.replace(' ', '+');
	$.getScript('/new/registration/check_login.phtml?user='+user+'&password='+$.md5($.md5(password)), function() {eval(result); LoginError(user_error, password_error, false);});
}
else
{
	LoginError(user_error, password_error, true);
}
}

function LogOut()
{
	$.getScript('/new/registration/check_login.phtml?logout=1', function() {window.location.reload();});
}

function LoginError(user_error, password_error, warning)
{
if (warning) {error_color="#FFFF80";} else {error_color="#FF9999";;}
if (user_error) {$("#user").css('background-color', error_color);} else {$("#user").css('background-color', '#FFFFFF');}
if (password_error) {$("#password").css('background-color', error_color);} else {$("#password").css('background-color', '#FFFFFF');}
}

function Ramka1(part, width)
{
if (part=='up')
 {
  document.write('<table '+((width !='')?'width="'+width+'"':'')+' cellpadding="0" cellspacing="0" border="0" align="center">');
  document.write('	<tr>');
  document.write('		<td width="20"><img src="/images2/design/ramka2/up_left.gif" width="20" height="20" alt=""></td>');
  document.write('		<td width="*" style="background-image: url(\'/images2/design/ramka2/top.gif\')"></td>');
  document.write('		<td width="20"><img src="/images2/design/ramka2/up_right.gif" width="20" height="20" alt=""></td>');
  document.write('	</tr>');
  document.write('	<tr>');
  document.write('		<td style="background-image: url(\'/images2/design/ramka2/left.gif\')"></td>');
  document.write('		<td width="100%">');
 }
else if (part=='down')
 {
  document.write('		</td>');
  document.write('		<td style="background-image: url(\'/images2/design/ramka2/right.gif\')"></td>');
  document.write('	</tr>');
  document.write('	<tr>');
  document.write('		<td><img src="/images2/design/ramka2/down_left.gif" width="20" height="20" alt=""></td>');
  document.write('		<td style="background-image: url(\'/images2/design/ramka2/bottom.gif\')"></td>');
  document.write('		<td><img src="/images2/design/ramka2/down_right.gif" width="20" height="20" alt=""></td>');
  document.write('	</tr>');
  document.write('</table>');
 }
}