ns4=(document.layers)?1:0;
ie4=(document.all)?1:0;

if (!String.prototype.endsWith) 
{
	String.prototype.endsWith = function(suffix) 
	{
		var startPos = this.length - suffix.length;
		if (startPos < 0) 
		{
			return false;
		}
		return (this.lastIndexOf(suffix, startPos) == startPos);
	};
}

function fillNLS(idBase)
{
	var id = idBase + '_' + currentLanguage;
	var tinyInst = getTinyMCEControlInstance(id);
	var data = tinyInst != null ? tinyInst.getContent() : document.getElementById(id).value;
	titleDataSrc = document.getElementById(id + '_title');
	
	for (i = 0; i < langs.length; i++)
	{
		if (langs[i] != currentLanguage)
		{
			id = idBase + '_' + langs[i];
			//TinyMCE automatically handles data change
			document.getElementById(id).value = data;
			titleData = document.getElementById(id + '_title');
			if (titleDataSrc != null && titleData != null)
			{
				titleData.innerHTML = titleDataSrc.innerHTML;
			}
		}
	}
}

function findClass(str)
{
	if (document.getElementsByClassName)
	{
		return document.getElementsByClassName(str);
	}
	var list = new Array();
	var nodes = document.getElementsByTagName('*')
	for (i = 0; i<nodes.length; i++)
	{
		if (nodes[i].className.indexOf(str) >= 0)
		{
			list.push(nodes[i]);
		}
	}
	return list;
}

function switchLanguageTo(targetLang)
{
	currentLanguage = targetLang;
	// two parts in order to fix the fucking IE issue: IE can't handle changes of style.display to 'none' or 'inline' in the same loop
	for (i = 0; i < langs.length; i++)
	{
		if (langs[i] != targetLang)
		{
			elements = findClass('ml_' + langs[i]);
			for (j = 0; j < elements.length; j++)
			{
				var id = elements[j].id;
				var tinyInst = getTinyMCEControlInstance(id);
				if (tinyInst != null)
				{
					tinyInst.hide();
					//Now an original editor instance will be shown. So, just continue execution in the default way. 
				}
				elements[j].style.display = 'none';
			}
		}
	}
	elements = findClass('language_tab');
	for (j = 0; j < elements.length; j++)
	{
		elements[j].className = elements[j].id == ('language_tab_' + targetLang) ? (elements[j].className + ' current_lang_tab') : elements[j].className.replace(' current_lang_tab', '');
	}
	
	elements = findClass('ml_' + targetLang);
	for (j = 0; j < elements.length; j++)
	{
		var id = elements[j].id;
		var tinyInst = getTinyMCEControlInstance(id);
		if (tinyInst != null)
		{
			tinyInst.show();
		}
		else
		{
			elements[j].style.display = 'inline';
		}
	}
}

function getTinyMCEControlInstance(id)
{
	if (typeof(tinyMCE) !== 'undefined')
	{
		return tinyMCE.get(id);
	}
	return null;
}

function addParameter(url, formName, fieldName)
{
	var value = document.forms[formName].elements[fieldName].value;
	if (value.length > 0)
	{
		value = fieldName + '=' + value;
	}
	
	var idx = url.indexOf('?' + fieldName);
	if (idx == -1)
	{
		idx = url.indexOf('&' + fieldName);
	}
	if (idx != -1)
	{
		var toIdx = url.indexOf('&', idx + 1);
		if (value.length > 0)
		{
			url = url.substring(0, idx + 1) + value + (toIdx == -1 ? '' : url.substring(toIdx));
		}
		else
		{
			url = url.substring(0, idx + 1) + (toIdx == -1 ? '' : url.substring(toIdx + 1));
		}
	}
	else if (value.length > 0)
	{
		url += (url.indexOf('?') == -1 ? '?' : '&') + value;
	}
	return url;
}

function addParameters(url, formName, fieldNames)
{
	for (i = 0; i < fieldNames.length; i++)
	{
		url = addParameter(url, formName, fieldNames[i]);
	}
	return url;
}

function disable(own,el){
  if(!own.checked){
    el.disabled=true;
    el.style.backgroundColor='#EEEEEE';
  }
  else{
    el.disabled=false;
    el.style.backgroundColor='#FFFFFF';
  }
  return true;
}

function checkPasswd(form, emptiness)
{
  if (emptiness === undefined) {emptiness = true;}

  if (form.passwd.value!=form.passwd2.value || ((form.passwd.value=="" || form.passwd2.value=="") && !emptiness))
  {
    alert("Пароли не совпадают либо пусты. Пожалуйста повторите ввод.");
    return false;
  }
  return true;
}

function checkRegisterForm(form, register)
{
 var i,j;
 var str = '';

 var bad_field;
 var fields = new Array();
 var prompts = new Array();

 fields[fields.length] = 'login';
 prompts[prompts.length] = 'Логин';

 fields[fields.length] = 'email';
 prompts[prompts.length] = 'E-Mail';
 
 fields[fields.length] = 'first_name';
 prompts[prompts.length] = 'Имя';
 
 fields[fields.length] = 'last_name';
 prompts[prompts.length] = 'Фамилия';
if (register)
{
 fields[fields.length] = 'verify';
 prompts[prompts.length] = 'Верификационный код';
}
 for (i = 0; i < fields.length; i++){
  var field = form[fields[i]];
  var is_bad=0;
  if(field.type == null)
  {
	is_bad=1;
	for(j=0;j<field.length;++j)
	{
		if(field[j].checked==true)
			is_bad=0;
	}
	if(is_bad==1 && str=='')
		field=field[0];
  }
  else switch(field.type)
  {
	case 'select-one':
		if(field[field.selectedIndex].value == '')
			is_bad=1;
		break;

	default:
		if (field.value == '')
			is_bad=1;
  }

  if (is_bad == 1)
  {
	if (str != '') 
        {
                str += '\n';
        }else{
                bad_field = field;
        }
        str += prompts[i];
  }

 }
 if (str != ''){
   alert("Пожалуйста, заполните поля:\n" + str);
   bad_field.focus();
   return false;
 }

 if (window.RegExp){
   var fields = new Array();
   var prompts = new Array();
   var patterns = new Array();
   var minVal = new Array();
   var maxVal = new Array();
   var maxLen = new Array();
   var errors = new Array();

   fields[fields.length] = 'email';
   prompts[prompts.length] = 'E-Mail';
   patterns[patterns.length] = '^([-a-zA-Z0-9._]+@[-_a-zA-Z0-9]+\\.[-_a-zA-Z0-9.]+)?$';
   minVal[minVal.length] = 0;
   maxVal[maxVal.length] = 0;
   maxLen[maxLen.length] = 64;
   errors[errors.length] = 'Поле должно быть не более 64 символов и содержать E-Mail адрес';

   for (i = 0; i < fields.length; i++){
    var bad = false;
    var field = form[fields[i]];
    if (typeof field == 'undefined') continue;
    if (field.value != ''){
     if (maxLen[i] > 0){
      if (field.value.length > maxLen[i]) bad = true;
     }
     if (patterns[i] != ''){
      var re = new RegExp(patterns[i]);
      if (!re.test(field.value + "")) bad = true;
     }
     if ((minVal[i] > 0) || (maxVal[i] > 0)){
      var val = parseInt(field.value);
      if ((val < minVal[i]) || (val > maxVal[i])) bad = true;
     }
     if (bad){
       alert("Некорректное поле " + prompts[i] + "\n" + errors[i]);
       field.focus();
       return false;
     }
    }
   }
 }

 return true;
}

function checkOrderForm(form)
{
 var i,j;
 var str = '';

 var bad_field;
 var fields = new Array();
 var prompts = new Array();

 fields[fields.length] = 'pay_type';
 prompts[prompts.length] = 'Способ оплаты';

 for (i = 0; i < fields.length; i++){
  var field = form[fields[i]];
  var is_bad=0;
  if(field.type == null)
  {
	is_bad=1;
	for(j=0;j<field.length;++j)
	{
		if(field[j].checked==true)
			is_bad=0;
	}
	if(is_bad==1 && str=='')
		field=field[0];
  }
  else switch(field.type)
  {
	case 'select-one':
		if(field[field.selectedIndex].value == '')
			is_bad=1;
		break;

	default:
		if (field.value == '')
			is_bad=1;
  }

  if (is_bad == 1)
  {
	if (str != '') 
        {
                str += '\n';
        }else{
                bad_field = field;
        }
        str += prompts[i];
  }

 }
 if (str != ''){
   alert("Пожалуйста, заполните поля:\n" + str);
   bad_field.focus();
   return false;
 }

 return true;
}

function selectAll(frm, flag)
{
   for(i=1;i<frm.length;i++)
   {
     if(frm.elements[i].type=="checkbox")
     {
		if (flag) frm.elements[i].checked=true;
		else frm.elements[i].checked=false;
     }
   }
}

function countSelectedByName(frm, name)
{
   var counter = 0;
   for(i=1; i < frm.length; i++)
   {
     if(frm.elements[i].type == "checkbox" && frm.elements[i].checked == true)
     {
     	if(name == null || frm.elements[i].name == name)
     	{
			counter++;
		}
     }
   }
   return counter;
}

function countSelected(frm)
{
	return countSelectedByName(frm, null);
}

function checkRangeField(obj)
{
	var re = /^(\b[0-9]+\.([0-9]+\b)?|\.[0-9]+\b)$/;

	if (!re.test(obj.value))
	{
		var str = obj.value;
		var isContainPoint = false;
		var temp = '';
		for (i=0; i<=str.length - 1; i++)
		{
			if(parseInt(str.charAt(i)) || parseInt(str.charAt(i)) === 0)
			{
				temp += str.charAt(i);
			}
			else if(str.charAt(i)=="." && isContainPoint == false)
			{
				temp += str.charAt(i);
				isContainPoint = true;
			}
		}
		obj.value = temp;
	}
}

function getCompare(num)
{
	document.getElementById('compare_items').value = num;
	document.list.submit();
}

function addToCart(url)
{
	document.location.href = url;
}

function addMultiToCart(frm, view, action)
{
	var input = document.getElementById('view');
	input.defaultValue = input.value = view;

	var input = document.createElement('input');
	input.type = 'hidden';
	input.name = 'action';
	input.defaultValue = input.value = action;
	frm.appendChild(input);

	frm.submit();
}

function selectRow(row) {
	if(row.className.indexOf("active")!=0) {
		row.className += " selected";
	}
}

function deselectRow(row) {
	if(row.className.indexOf("active")!=0) {
		row.className = row.className.substr(0 , row.className.indexOf(" selected"));
	}
}