﻿var prefixes=new Array();
prefixes["_nonempty_"]=validate_nonempty;
prefixes["_email_"]=validate_email;
prefixes["_date_"]=validate_date;
prefixes["_time_"]=validate_time;
prefixes["_datetime_"]=validate_datetime;
prefixes["_number_"]=validate_number;
prefixes["_select_"]=validate_select;
prefixes["_radio_"]=validate_radio;
prefixes["_alphastring_"]=validate_alphastring;
prefixes["_login_"]=validate_login;
prefixes["_dirname_"]=validate_dirname;
//marhipov
prefixes["_nonemptyalt_"]=validate_nonemptyalt;
//
warnings=new Array();
warnings["_nonempty_"]="Не заполнено обязательное поле";
warnings["_email_"]="Неверный формат e-mail";
warnings["_date_"]="Неверный формат даты(DD.MM.YYYY)";
warnings["_time_"]="Неверный формат времени(HH:MM)";
warnings["_datetime_"]="Неверный формат даты и времени(DD.MM.YYYY HH:MM)";
warnings["_number_"]="Неверный формат числа";
warnings["_select_"]="Не выбрано поле";
warnings["_radio_"]="Не выбрано поле";
warnings["_alphastring_"]="Неверный формат(строка из латинских букв)";
warnings["_login_"]="Неверный формат(строка из цифр или латинских букв без пробелов)";
//marhipov
warnings["_nonemptyalt_"]="Не заполнено обязательное поле";
//
warnings["_dirname_"]="Неверный формат названия директории (строка из латинских букв без пробелов)";
//Eugene Chusov
warnings["_minlen_"]="Длина поля не менее {n} символов";
warnings["_maxlen_"]="Длина поля не более {n} символов";
var minlen = 0;
var maxlen = 0;
//

var checked_fields=new Array();
var GetPrefixPos=0;
var f;

function show_or_hide(flag,elem_id,fade,timeout,img){
  var elem=document.getElementById(elem_id);
  if(!fade) fade=false;
  else fade=(typeof(fade)=='number' ? fade : 15);
  if(timeout) setTimeout('show_or_hide('+flag+',\''+elem_id+'\','+fade+')',timeout);
  else if(elem){
    if(flag==-1) flag=(elem.style.visibility=='hidden' || (typeof(opac_fade_ids[elem_id])=='object' && opac_fade_ids[elem_id].interval && opac_fade_ids[elem_id].direction==-1));
    if(flag){
      if(img) document.getElementById('img'+elem_id).src='../images/calup1.gif';
      elem.style.visibility='visible';
      elem.style.display='';
      if(fade) opacity_fade(elem_id,0,100,fade);
    }else{
      if(img) document.getElementById('img'+elem_id).src='../images/calup.gif';
      if(fade) opacity_fade(elem_id,100,0,fade);
      else{
        elem.style.visibility='hidden';
        elem.style.display='none';
      }
    }
  }
}


function showList(id){

}

function HideSearch(a, b) {
  status1=document.getElementById(b).value;
  if (status1==1) {
    document.getElementById(a).style.display="none";
  } else {
    document.getElementById(a).style.display="none";
    document.getElementById(a).style.display="block";
  }
  document.getElementById(b).value = 1-status1;
}

function CheckDef(id) {
  str = document.getElementById(id).value;
  if (str!=0) {
    if (((str>=901)&&(str<=906))||
      ((str>=908)&&(str<=929))||
      ((str>=931)&&(str<=934))||
      ((str>=936)&&(str<=938))||
      ((str>=950)&&(str<=953))||
      ((str>=960)&&(str<=965))||
      ((str>=980)&&(str<=985))||
      ((str>=987)&&(str<=989))||
      (str==997)
    ) {
      return true;
    } else {
      alert('Неверно введен def код');
      return false;
    }

  } else {
    return true;
  }
}


function addUrl() {
  i = document.getElementById("urlcount").value;
	if(i<=6) {
  document.getElementById("divurl").innerHTML = document.getElementById("divurl").innerHTML+
  '<table border="0"><tr><td width="53">URL:</td><td><input style="width:320px;" type="text" name="url'+i+'0" value=""><img src="../images/add_btn.gif" name="add0" border="0" style="cursor:pointer;vertical-align:middle;" onclick="addUrl();">&nbsp;<img src="../images/delete.png" name="add0" border="0" style="cursor:pointer;vertical-align:middle;" onclick="deleteUrl();"></td></tr></table>';
  document.getElementById("urlcount").value = (i-0)+1;
  }
}

function deleteUrl() {
  i = document.getElementById("urlcount").value;
  document.getElementById("urlcount").value = (i-0)-1;
  len = document.getElementById("divurl").innerHTML.length;
  document.getElementById("divurl").innerHTML = document.getElementById("divurl").innerHTML.substr(0, len-404);

}


  function CheckCyr(id, name) {
    str = document.getElementById(id).value;
    tmp = true;
    for (var i=0; i<str.length; i++) {
      tmp = tmp&&is_cyr(str.charAt(i));
    }
    if (tmp) {
    } else {
      alert('В поле "'+name+'" должны быть только кириллические символы и пробелы.');
    }
    return tmp;
  }

  function is_cyr(c) {
    if("абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ ".indexOf(c)!=-1) { return true;} else {
    return false;
  }
  }

function PasswordCheck() {
  if (document.getElementById('password').value==document.getElementById('rpassword').value) {
    return true;
  } else {
    alert('Пароли не совпадают');
    return false;
  }
}

function AgreeCheck() {
  if (document.getElementById('agree').checked) {
    document.getElementById('registration').disabled=false;
    return true;
  } else {
    document.getElementById('registration').disabled=true;
    return false;
  }
}

function CheckMandatoryFields(form) {
  f=document.forms[form];
  var prefix;
  var c;
  var i;
  var flag=true;
  var element_name;
  var item;
  var form_length=f.elements.length;
  for(c=0;c<form_length;c++) {
    GetPrefixPos=0;
    item=f.elements[c];
    element_name=item.name;

    var min = /_minlen(\d*)_/.exec(element_name);
        var max = /_maxlen(\d*)_/.exec(element_name);
        if( min && !prefixes[min[0]] ){
         minlen = min[1];
           prefixes[min[0]] = validateMin;
           warnings[min[0]] = warnings['_minlen_'].replace('{n}',minlen);

        }

        if( max && !prefixes[max[0]] ){
           maxlen = max[1];
           prefixes[max[0]] = validateMax;
           warnings[max[0]] = warnings['_maxlen_'].replace('{n}',maxlen);
        }
//

    while( ( prefix=getNextPrefix(element_name) )!= "" && !item.disabled) {
        if(!(prefixes[prefix](item))) {
            alert(warnings[prefix]);
        var digits=f.elements[c].name.match("\\d+$");
        if(!f.elements.check_form_langs)
          f.elements[c].focus();
        else
          {
          if(f.elements.check_form_langs.value=="" || (!f.elements.check_form_langs.value.match("_"+digits+"_")))
            f.elements[c].focus();
          }
        //
        return false;
      }
    }
  }

  while(flag) {
    flag=false;
    for(c=0;c<form_length;c++) {
      element_name=f.elements[c].name;
      for(prefix in prefixes) {
        if(element_name.substring(0,prefix.length)==prefix) {
          f.elements[c].name=element_name.substring(prefix.length,element_name.length);
          flag=true;
        }
      }
    }
  }

  return true;
}

function getNextPrefix(name) {
  var prefix;
  for(prefix in prefixes) {
    if( name.substring(GetPrefixPos,GetPrefixPos+prefix.length) == prefix ) {
      GetPrefixPos+=prefix.length;
      return prefix;
    }
  }
  GetPrefixPos=0;
  prefix="";
  return prefix;
}


function validate_nonemptyalt(obj) {
  var name=obj.name;
  var new_name,i;
  new_name='f'+name.match(/\d+a\d+$/);
  for(i=0;i<f.elements.length;i++)
    if(f.elements[i].name==new_name || f.elements[i].name=="_radio_"+new_name)
      if(f.elements[i].value=='alt' && f.elements[i].checked=='1' && obj.value=='')
        return false;
  return true;
}
//


function validateMax(obj){
  var len = obj.value.length;
    if( maxlen != 0 && len > maxlen ){
      return false;
    }
  return true;
}


function validateMin(obj){
  var len = obj.value.length;
    if( minlen != 0 && len > 0 && len < minlen ){
      return false;
    }
  return true;
}


function validate_email(obj) {
  var i;
  var val=obj.value;
  var state=0;
  if(val=="") return true;

  var re;
  re = /^[\w\.-]+@[\w\.-]+\.\w\w+$/;
  if ( !obj.value.match(re) ) return false;
  return true;
}

function validate_date(obj) {
  var i,state=0;
  var val=obj.value;
  var dd="",mm="",yyyy="";
  if(val=="") return true;
  for(i=0;i<val.length;i++) {
    switch(state) {
      case 0:
        if(val.charAt(i)==".") state=1;
        else if("0123456789".indexOf(val.charAt(i))==-1) return false;
        else dd+=val.charAt(i);
        break;
      case 1:
        if(val.charAt(i)==".") state=2;
        else if("0123456789".indexOf(val.charAt(i))==-1) return false;
        else mm+=val.charAt(i);
        break;
      case 2:
        if("0123456789".indexOf(val.charAt(i))==-1) return false;
        else yyyy+=val.charAt(i);
    }
  }
  if(state!=2) return false;
  if(isNaN(parseInt(dd)) || isNaN(parseInt(mm)) || isNaN(parseInt(yyyy))) return false;
  if(dd.length != 2 || mm.length !=2 || yyyy.length != 4) return false;
  if(parseInt(dd) < 0 || parseInt(mm) < 0 || parseInt(dd) > 31 || parseInt(mm) > 12) return false;
  if (mm=='02'&&parseInt(dd)>29) return false;
  if ((mm=='04'||mm=='06'||mm=='09'||mm=='11')&&parseInt(dd)>30) return false;
  return true;
}

function validate_time(obj) {
  var i,state=0;
  var val=obj.value;
  var hh="",mi="";
  if(val=="") return true;
  for(i=0;i<val.length;i++) {
    switch(state) {
      case 0:
        if(val.charAt(i)==":") state=1;
        else if("0123456789".indexOf(val.charAt(i))==-1) return false;
        else hh+=val.charAt(i);
        break;
      case 1:
        if("0123456789".indexOf(val.charAt(i))==-1) return false;
        else mi+=val.charAt(i);
    }
  }
  if(state!=1) return false;
  if(isNaN(parseInt(hh)) || isNaN(parseInt(mi))) return false;

  if(hh.length != 2 || mi.length !=2) return false;
//
  if(parseInt(hh)>23 || parseInt(mi)<0 || parseInt(mi)>59 || parseInt(mi)<0) return false;
  return true;
}


function validate_datetime(obj) {
  var i,state=0;
  var val=obj.value;
  var dd="",mm="",yyyy="",hh="",mi="";
  if(val=="") return true;
  for(i=0;i<val.length;i++) {
    switch(state) {
      case 0:
        if(val.charAt(i)==".") state=1;
        else if("0123456789".indexOf(val.charAt(i))==-1) return false;
        else dd+=val.charAt(i);
        break;
      case 1:
        if(val.charAt(i)==".") state=2;
        else if("0123456789".indexOf(val.charAt(i))==-1) return false;
        else mm+=val.charAt(i);
        break;
      case 2:
        if(val.charAt(i)==" ") state=3;
        else if("0123456789".indexOf(val.charAt(i))==-1) return false;
        else yyyy+=val.charAt(i);
        break;
      case 3:
        if(val.charAt(i)==":") state=4;
        else if("0123456789".indexOf(val.charAt(i))==-1) return false;
        else hh+=val.charAt(i);
        break;
      case 4:
        if("0123456789".indexOf(val.charAt(i))==-1) return false;
        else mi+=val.charAt(i);
    }
  }
  if(state!=4) return false;

  if(isNaN(parseInt(dd)) || isNaN(parseInt(mm)) || isNaN(parseInt(yyyy))) return false;
  if(parseInt(dd) < 0 || parseInt(mm) < 0 || parseInt(dd) > 31 || parseInt(mm) > 12) return false;
  if(isNaN(parseInt(hh)) || isNaN(parseInt(mi))) return false;

  if(hh.length != 2 || mi.length !=2) return false;
//
  if(parseInt(hh)>23 || parseInt(mi)<0 || parseInt(mi)>59 || parseInt(mi)<0) return false;
  return true;
}

function validate_nonempty(obj) {
  var val=obj.value;
  if(val.replace(/(^\s*)|(\s*$)/g, "")=="") return false;
  return true;
}

function validate_number(obj) {

  if (obj.value == "") return true;
  var re;
  re = /^[+-]?\d+[\.,]?\d*$/;
  if ( !obj.value.match(re) ) return false;
  return true;
}

function validate_select(obj) {
  var val=obj.options[obj.selectedIndex].value;
  if(val==-1 || val=="") return false;
  return true;
}

function validate_radio(obj) {
  var obj_name=obj.name;
  obj = f[obj.name];
  if(checked_fields[obj_name]==true){
    return true;
  }
  var status=false;
  var obj_length=obj.length;
  for (var i = 0;i<obj_length; i++){
      if (obj[i].checked){
      status=true;
    }
  }
  if(status){
    checked_fields[obj_name]=true;
  }
  return status;
}

function validate_alphastring(obj) {
  var val=obj.value;
  for(i=0;i<val.length;i++) {
          if(!is_alpha(val.charAt(i))&&!is_number(val.charAt(i))&&!is_addsymb(val.charAt(i))) return false;
  }
  return true;
}

function validate_login(obj) {
  var val=obj.value;
  for(i=0;i<val.length;i++) {
          if(!val.match("^[\\w]+$")) return false;
//      if(!is_alnum2(val.charAt(i))) return false;
  }
  return true;
}

function validate_dirname(obj) {
  var val=obj.value;
  for(i=0;i<val.length;i++) {
          if(!is_alnum2(val.charAt(i))) return false;
  }
  return true;
}

function is_alpha(c) {
  if("qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM".indexOf(c)!=-1) return true;
  return false;
}

function is_number(c) {
  if("0123456789".indexOf(c)!=-1) return true;
  else return false;
}

function is_alnum(c) {
  if(is_alpha(c) || is_number(c)) return true;
  return false;
}

function is_alnum2(c) {
  if(is_alnum(c) || c=="_" || c=="-" || c==".") return true;
  return false;
}

function is_addsymb(c) {
  if("_-\.\ ".indexOf(c)!=-1) return true;
  else return false;
}

var open_senderbox=0;
function reply(comment_id){
    var comment=document.getElementById('comment'+comment_id);
    var senderbox=document.getElementById('senderbox');
    var parent_id=document.getElementById('parent_id');
    if(open_senderbox!=0 && open_senderbox!=comment_id){
        document.getElementById('comment'+open_senderbox).innerHTML='';
    }
    if(comment.innerHTML==''){
        parent_id.value=comment_id;
        comment.innerHTML=senderbox.innerHTML;
    }else comment.innerHTML='';
    open_senderbox=comment_id;
}

function limitText(limitField, limitCount, limitNum) {
  if(limitField.value.length>limitNum){
    limitField.value=limitField.value.substring(0,limitNum);
  }else{
    limitCount.value=limitNum-limitField.value.length;
  }
}

function hideCommentForm(){
  document.getElementById('senderbox').style.display='none';
  document.getElementById('senderbox').style.visibility='hidden';
}

function getElementComputedStyle(elem, prop){
  if(typeof elem!="object") elem=document.getElementById(elem);
  if(document.defaultView && document.defaultView.getComputedStyle){
    if (prop.match(/[A-Z]/)) prop = prop.replace(/([A-Z])/g, "-$1").toLowerCase();
    return document.defaultView.getComputedStyle(elem, "").getPropertyValue(prop);
  }
  if(elem.currentStyle){
    var i;
    while ((i=prop.indexOf("-"))!=-1) prop = prop.substr(0, i) + prop.substr(i+1,1).toUpperCase() + prop.substr(i+2);
    return elem.currentStyle[prop];
  }
  return "";
}
function setOpacity(elem_id,val){
  var elem=document.getElementById(elem_id);
  elem.style.opacity=val/100;
  elem.style.filter='alpha(opacity='+val+')';
}
function getOpacity(elem_id){
  var elem=document.getElementById(elem_id);
  opac=parseFloat(getElementComputedStyle(elem, 'opacity'))*100;
  if(isNaN(opac)) opac=100;
  return opac;
}

var opac_fade_ids=Array();
var opac_fade_interval=false;
function opacity_fade(elem_id,from_val,till_val,step,direction){
  if(!(typeof(from_val)=='number')) from_val=getOpacity(elem_id);
  if(till_val!=undefined){
    opac_fade_intervals=true;
    if(typeof(opac_fade_ids[elem_id])!='object') opac_fade_ids[elem_id]={};
    if(opac_fade_ids[elem_id].interval) from_val=getOpacity(elem_id);
    opac_fade_ids[elem_id].till_val=till_val;
    opac_fade_ids[elem_id].step=(step ? step : 2);
    opac_fade_ids[elem_id].direction=(till_val>from_val ? 1 : -1);
  }
  var new_opac=from_val+opac_fade_ids[elem_id].step*opac_fade_ids[elem_id].direction;
  if(opac_fade_ids[elem_id].direction*(new_opac-opac_fade_ids[elem_id].till_val)>=0){
    setOpacity(elem_id,opac_fade_ids[elem_id].till_val);
    if(opac_fade_ids[elem_id].till_val==0) show_or_hide(false,elem_id);
    clearInterval(opac_fade_ids[elem_id].interval);
    opac_fade_ids[elem_id].interval=false;
  }else{
    setOpacity(elem_id,new_opac);
    if(!opac_fade_ids[elem_id].interval){
      opac_fade_ids[elem_id].interval=setInterval('opacity_fade(\''+elem_id+'\')',30);
    }
  }
  var intres=false
  for(var i in opac_fade_ids) if(opac_fade_ids[i].interval) intres=true;
  opac_fade_interval=intres;
}

