var request;
/**
* Load XMLDoc function
* Здесь в качестве параметра url при вызове мы должны указать
* backend-скрипт, который, собственно, и получит данные с сервера
*/

var mess = "0";
var prompt = null;
var respTxt = null;

var old_block_id = null;
var old_btn_id = null;
var old_btn_name = null;
var abortRequest=null;

function doLoad(url) {
 /*
 if (url.indexOf('?')>-1) {
  var url_len = url.length;
  if ((url.substring(url_len,1)=='?') || (url.substring(url_len,1)=='&')) {
    url = url + Math.random();
  } else {
    url = url + '&' + Math.random();
  }
 } else {
   url = url + '?' + Math.random();
 }
 */
 abortRequest = window.setTimeout("request.abort();", 10000);
 var ld = ds_getel('loading');
 if (ld != null) { ld.style.visibility='visible'; }

 if (window.XMLHttpRequest) {
  //alert('XMLHttpRequest - started!');
  request = new XMLHttpRequest();
  if (request) {
   request.onreadystatechange = processRequestChange;
//   alert('open method started:'+url);
   request.open("GET", url, true);
   request.send(null);
  } else {
   alert('XMLHttpRequest - do not worked!');
  }
 } else if (window.ActiveXObject) {
  //alert('Microsoft.XMLHTTP - started!');
  request = new ActiveXObject("Microsoft.XMLHTTP");
  if (request) {
   request.onreadystatechange = processRequestChange;
 //  alert('open method started:'+url);
   request.open("GET", url, true);
   request.send(null);
  } else {
   alert('Microsoft.XMLHTTP - do not worked!');
  }
 } else {
   alert(url+' - do not worked!');
 }
}
function doLoadSinc(url) {
 /*
 if (url.indexOf('?')>-1) {
  var url_len = url.length;
  if ((url.substring(url_len,1)=='?') || (url.substring(url_len,1)=='&')) {
    url = url + Math.random();
  } else {
    url = url + '&' + Math.random();
  }
 } else {
   url = url + '?' + Math.random();
 }
 */
 abortRequest = window.setTimeout("request.abort();", 10000);
 var ld = ds_getel('loading');
 if (ld != null) { ld.style.visibility='visible'; }

 if (window.XMLHttpRequest) {
  //alert('XMLHttpRequest - started!');
  request = new XMLHttpRequest();
  if (request) {
   request.onreadystatechange = processRequestChange;
//   alert('open method started:'+url);
   request.open("GET", url, false);
   request.send(null);
  } else {
   alert('XMLHttpRequest - do not worked!');
  }
 } else if (window.ActiveXObject) {
  //alert('Microsoft.XMLHTTP - started!');
  request = new ActiveXObject("Microsoft.XMLHTTP");
  if (request) {
   request.onreadystatechange = processRequestChange;
 //  alert('open method started:'+url);
   request.open("GET", url, false);
   request.send(null);
  } else {
   alert('Microsoft.XMLHTTP - do not worked!');
  }
 } else {
   alert(url+' - do not worked!');
 }
}

/**
* Get request state text function
*/
function getRequestStateText(code) {
 switch (code) {
  case 0: return "Uninitialized."; break;
  case 1: return "Loading..."; break;
  case 2: return "Loaded."; break;
  case 3: return "Interactive..."; break;
  case 4: return "Complete."; break;
 }
}

/**
* Event on request change
* Собственно, обработчик события onreadystatechange.
* Здесь мы, в зависимости от состояния запроса,
* будем скрывать / показывать слои "Загрузка данных",
* само поле данных и т.д.
*/

function processRequestChange() {
 // если выполнен
if (request.readyState == 4) {
 clearTimeout(abortRequest);
 // если успешно
 if (request.status == 200) { // || navigator.appVersion.indexOf('Windows NT') > -1) {
  respTxt = request.responseText;
//alert("we are in the process!\n"+respTxt);
  var ld = ds_getel('loading');
  if (ld != null) { ld.style.visibility='hidden'; }
   if (request.responseText.indexOf("\t") > -1) {
     var strings = request.responseText.split("\t");
     var error_out='';
	 for (var i=0; i<strings.length; i++) { //-----
      var str = strings[i];
      if (str.length > 0) {
       var fld = str.split('|');
       var obj_id = document.getElementById(fld[0]);
       if (obj_id != null) {
        if (fld[1]=='1') {                 // innerHTML
         obj_id.innerHTML = fld[2];
        } else if (fld[1]=='0') {          // value
         obj_id.value = fld[2];
        } else if (fld[1]=='2') {          // set display
         obj_id.style.display = fld[2];
        } else if (fld[1]=='20') {         // set visible
         obj_id.style.visibility = fld[2];
        } else if (fld[1]=='21') {         // set class
         obj_id.className = fld[2];
//alert("fld["+fld[1]+"]=("+fld[2]+")");
//alert("className=("+obj_id.style.className+")");

        } else if (fld[1]=='3') {          // select.options  NOT USED
/*         var obj = obj_id.options;
 for (var i=0; i < obj.length; i++) {
   var option = obj[i];
   option.selected = false;
 }

 for (var i=0; i < obj.length; i++) {
   var option = obj[i];
   if (option.value==fld[2]) {
     option.selected = true;
   }
 }*/
        } else if (fld[1]=='4') {     // set element's focus
         obj_id.focus();
        } else if (fld[1]=='5') {     // call alert() function
         alert(fld[2]);
        } else if (fld[1]=='6') {     // call js function
         eval(fld[2]);
        } else if (fld[1]=='7') {     // change location
         document.location.href = fld[2];
        } else if (fld[1]=='8') {     // refresh document
         document.location.reload();
        } else if (fld[1]=='9') {     // readonly
         obj_id.style.disabled = fld[2];
        } // if fld
      }  // if obj
     } // if len > 0
    } // for ------------------
   } else { // if \t
     var innr = document.getElementById("responseHTML");
	 if (innr != null) {
       innr.innerHTML = request.responseText;
	 }
     prompt = null;
   }
 } else { //if (request.status == 200)
  alert("Не удалось получить данные:n" + request.statusText);
 }
 if (mess=="1") {
  document.getElementById("loading").style.display = 'none';
  //document.getElementById("loading").style.visibility = 'hidden';
 }
} else if (request.readyState == 3 || request.readyState == 1) {
 // иначе, если идет загрузка или в процессе - показываем слой "Загружаются данные"
 if (mess=="1") {
  document.getElementById("loading").style.display = 'block';
  //document.getElementById("loading").style.visibility = 'visible';
 }
}
}
function ds_getel(t) {
 var obj = document.getElementById(t);
 return obj;
}
function ds_getelv(t) {
 var obj = document.getElementById(t);
 if (obj != null) {
	 return obj.value;
 } else {
	 return '';
 }
}
function ds_getels(t) {
 var ret = '0';
 var obj = document.getElementById(t);
 if (obj==null) {
	 return ret;
 }
 obj = obj.options;

 for (var i=0; i < obj.length; i++) {
   var option = obj[i];
   if (option.selected) {
     ret = option.value;
     break;
   }
 }
 return ret;
 }
function ds_radio(t) {
 var ret = '0';
 var obj = document.forms[0].elements[t];
 if (obj==null) {
	 return ret;
 }
 for (var i=0; i < obj.length; i++) {
   if (obj[i].checked) {
     ret = obj[i].value;
     break;
   }
 }
 return ret;
 }

function ds_getelr(t) {
 var ret = new Array();
 var ret_len = 0;
 var obj = document.getElementById(t);
 if (obj==null) {
	 return ret;
 }
 obj = obj.options;

 for (var i=0; i < obj.length; i++) {
   ret_len = ret.length();
   var option = obj[i];

   if (option.selected) {
     ret[ret_len+1][0] = '1';
   } else {
     ret[ret_len+1][0] = '0';
   }
   ret[ret_len+1][1] = option.value;
 }
 return ret;
 }

function block_show(bl_id, btn_id, btn_nam) {
 var blk = document.getElementById(bl_id);
 var old_blk = document.getElementById(old_block_id);

 var btn = document.getElementById(btn_id);
 var old_btn = document.getElementById(old_btn_id);
 var ld = document.getElementById('loading');
 if (ld!=null) {ld.style.visibility='hidden' }

 if (old_blk != null) {
   old_blk.style.display = 'none';
   if (old_btn != null) {
     old_btn.style.display = 'block';
     old_btn_id = null;
   }
 }
 if (blk != null) {
   blk.style.display = 'block';
   old_block_id = bl_id;
   if (btn != null) {
     old_btn_id = btn_id;
     old_btn_name = btn_nam;
     btn.style.display = 'none';
   }
 }
}

function block_hide(bl_id) {
 var blk = document.getElementById(bl_id);
 var btn = document.getElementById(old_btn_id);
 var ld = document.getElementById('loading');
 if (ld!=null) {ld.style.visibility='hidden' }
 if (blk != null) {
   old_blk.style.display = 'none';
   old_block_id = null;
   if (btn != null) {
     btn.style.display = 'block';
   }
 }
}

function tag_hide(bl_id) {
 var blk = document.getElementById(bl_id);
 if (blk != null) {
   blk.style.display = 'none';
   old_block_id = null;
 }
}

function show_hide(bl_id) {
 var blk = document.getElementById(bl_id);
 if (bl_id==old_block_id && blk != null) {
   blk.style.display = 'none';
   old_block_id = null;
   return;
 }

 var old_blk = document.getElementById(old_block_id);

 if (blk != null) {
   if (old_blk!=null) {
	   old_blk.style.display = 'none';
   }
   blk.style.display = 'block';
   old_block_id = bl_id;
 }
}

function hidden_str(i) {
 document.getElementById(i).style.display = 'none';
 document.getElementById('line['+i+']').style.display = 'none';
}

var cat_last_disp = new Array('','','','','','','');

function cats_display(nid,nlev) {
 var new_id = document.getElementById(nid);
 if (new_id != null) {
  if (cat_last_disp[nlev]==nid) {
   new_id.style.display = 'none';
   cat_last_disp[nlev] = '';
  } else {
   new_id.style.display = 'block';
   cat_last_disp[nlev] = nid;
   var old_id = document.getElementById(cat_last_disp[nlev]);
   if (old_id != null) {
    old_id.style.display = 'none';
   }
  }
 }
}

function check_cart_form() {
  var errortext = "";
  var email_errtext = "";
  var text_errtext = "";
  var checkedgroups = "";
  //var f = new Array('LastName','email','postcode','country_id','city_id','street'); //,'phone'
  //var cf = new Array('Ф.И.О.','e-mail','Индекс','Страна','Город','Адрес'); //,'phone'
  var f = new Array('LastName','country_id','city_id','phone'); //,'phone'
  var cf = new Array('Ф.И.О.','Страна','Город','Телефон'); //,'phone'
  var r_email = new RegExp("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{1,}[.][a-zA-Z]{2,3}$" ,"i");
  var r = new RegExp("[\<|\>|\&]", "i");

  for (var i=0; i<f.length; i++) {
  	if(f[i]=='city_id' && document.getElementById('country_id').value!=1){//если надо проверить город и выбрана не росиия
  		f[i]='city_name'; //проверять надо не выпадающий список а текстовое поле
  	}
    var element = document.getElementById(f[i]);
	var field_name = cf[i];
	if (element != null) {
    switch (element.type) {
      case "text":
      case "textarea":
      case "password":
        if (element.value.replace(/\s/g, "") == "") {
          errortext += field_name + "\n";
        }
        if (r.exec(element.value)) {
          text_errtext += field_name + "\n";
        }
        if (field_name=='email' && !r_email.exec(element.value)) {
		  email_errtext += field_name + "\n";
        }
        break;
      case "checkbox":
        if (!element.checked) {
          errortext += field_name + "\n";
        }
        break;
      case "radio":
        var group = f.elements[element.name];
        if (checkedgroups.indexOf("[" + element.name + "]") > -1) {
          continue;
        } else {
          checkedgroups += "[" + element.name + "]";
        }
        var groupok = false;
        for (var j=0; j<group.length; j++) {
          if (group[j].checked) {
            groupok = true;
          }
        }
        if (!groupok) {
          errortext += field_name + "\n";
        }
        break;
      case "select-one":
      case "select-multiple":
        var selectok = false;
        for (var j=0; j<element.options.length; j++) {
          var item = element.options[j];
          if (item.selected && item.value > "0") {
            selectok = true;
          }
        }
        if (!selectok) {
          errortext += field_name + "\n";
        }
        break;
    }
	}
  }
  var ret = true;
  if (email_errtext == '') {
//    ret = true;
  } else {
    window.alert( "Неверный адрес электронной почты!\n\n");
    ret = false;
  }
  if (text_errtext == '') {
//    ret = true;
  } else {
    window.alert( "Введены запрещенные символы в полях:\n\n" + text_errtext);
    ret = false;
  }
  if (errortext == "") {
//    ret = true;
  } else {
    window.alert(
      "Не заполнены обязательные поля:\n\n"
      + errortext);
    ret = false;
  }
  return ret;
}

function get_orders(cp,dat1,dat2,$ow,$pw,site) {
  st = "doLoad('http://'+site+'/ajax/get_orders/?cp='+cp+'&dat1='+dat1+'&dat2='+dat2+'&ow='+ow+'&pw='+pw)";
  doLoad(st);
}

function add_country(site){
 show_hide('add_country_ed');
 //var cnid = ds_getels('country_id');
 //var nam = encodeURIComponent(ds_getelv('country_name'));
 //doLoad('http://'+site+'/ajax/add_country/?id='+cnid+'&nam='+nam);
}

function country_del(site){
 var cnid = ds_getels('country_id');
 if (confirm('Вы уверены?'))
 {
 doLoad('http://'+site+'/ajax/del_country/?id='+cnid);
 }
}

function country_save(site){
 var cnid = ds_getels('country_id');
 var nam = encodeURIComponent(ds_getelv('country_name'));
 doLoad('http://'+site+'/ajax/add_country/?id='+cnid+'&nam='+nam);
}

function country_change(site){
 var cnid = ds_getels('country_id');
 var ob = ds_getel('city_name_span');
 var ob2 = ds_getel('city_name_span2');
 if (cnid==1) {
	 if (ob) {ob.style.visibility = 'hidden';}
	 if (ob2) {ob2.style.visibility = 'hidden';}
 } else {
	 if (ob) {ob.style.visibility = 'visible';}
	 if (ob2) {ob2.style.visibility = 'visible';}
 }
 var st = 'http://'+site+'/ajax/city_list/?id='+cnid;
 doLoad(st);
}

function city_change(site){
 var cnid = ds_getels('country_id');
 var id = ds_getels('city_sel');
 var st = 'http://'+site+'/ajax/city_change/?cid='+cnid+'&id='+id;
//  alert(st);
 doLoad(st);
}
function ship_ed(site){
 show_hide('add_ship_ed');
 var cid = ds_getels('city_id');
 var st = 'http://'+site+'/ajax/ship_ed/?id='+cid;
// alert(st);
 doLoad(st);
 //tag_hide('add_ship_ed');
}

function city_ed(site,mod){
	mod = (mod||'0');
 var cid = '0';
 show_hide('city_ed_div');
 if (mod=='0'){
   cid = ds_getels('city_id');
 }
 doLoad('http://'+site+'/ajax/city_ed/?id='+cid);
}

function city_del(site){
 var cid = ds_getels('city_id');
 var cnid = ds_getels('country_id');
 if (confirm('Вы уверены?')) {
   doLoad('http://'+site+'/ajax/city_del/?id='+cid+'&cnid='+cnid);
 }
}

function city_save(site){
 var cid = ds_getels('city_id');
 var nam = ds_getelv('city_name');
 var post = ds_getelv('city_post');
 var addr = ds_getelv('city_addr');
 var email = ds_getelv('city_email');
 var sms = ds_getelv('city_sms');
 var kur = ds_getelv('city_kur');
 var nov = ds_getelv('city_new');
 if (nov==1){ cid = 0; }
 var cnid = ds_getelv('country_id');
 var st = 'http://'+site+'/ajax/city_save/?id='+cid+'&nam='+encodeURIComponent(nam)+'&post='+post+
	 '&email='+email+'&sms='+sms+'&kur='+kur+'&cnid='+cnid+'&addr='+encodeURIComponent(addr);
 doLoad(st);
 tag_hide('city_ed_div');
}

function ship_save(site){
 show_hide('add_ship_ed');
 var cid = ds_getels('city_id');
 var count = ds_getelv('ship_count');
 var st = 'http://'+site+'/ajax/ship_save/?id='+cid;
 var chk = '';
 for(var j=1; j<=count; j++){
   chk = ds_getel('ship'+j);
   if (chk.checked){
     st += '&shp[]='+chk.value;
   }
 }
 //alert(st);
 doLoad(st);
 tag_hide('add_ship_ed');
}

function pay_ed(site){
 show_hide('add_pay_ed');
 var cid = ds_getels('city_id');
 doLoad('http://'+site+'/ajax/pay_ed/?id='+cid);
 //tag_hide('add_pay_ed');
}

function pay_save(site){
 show_hide('add_pay_ed');
 var cid = ds_getels('city_id');
 var count = ds_getelv('pay_count');
 var st = 'http://'+site+'/ajax/pay_save/?id='+cid;
 for(var j=1; j<=count; j++){
   var chk = ds_getel('pay'+j);
   if (chk.checked){
     st += '&pay[]='+chk.value;
   }
 }
  //alert(st);
 doLoad(st);
 tag_hide('add_pay_ed');
}

function pay_name_ed(site,id){
// var dv = document.getElementById('pay_title_div');
 var dv = ds_getel('add_pay_title');
 if (dv != null)
 {
	 dv.style.display = 'block';
	 var cid = ds_getels('city_id');
	 doLoad('http://'+site+'/ajax/pay_name_ed/?id='+id+'&cid='+cid);
 } else {
	 alert('add_pay_title NOT found!');
 }
}

function pay_name_save(site){
 var pid = ds_getelv('pay_name_id');
 var nam = encodeURIComponent(ds_getelv('pay_name_val'));
 var cid = ds_getelv('pay_name_cid');
 var srt = ds_getelv('pay_name_sort');
 doLoad('http://'+site+'/ajax/pay_name_save/?id='+pid+'&nam='+nam+'&cid='+cid+'&sort='+srt);
}

function ship_name_ed(site,id){
// var dv = document.getElementById('pay_title_div');
 var dv = ds_getel('add_ship_title');
 if (dv != null)
 {
	 dv.style.display = 'block';
 } else {
	 alert('add_ship_title NOT found!');
 }
 var cid = ds_getels('city_id');
 doLoad('http://'+site+'/ajax/ship_name_ed/?id='+id+'&cid='+cid);
}

function ship_name_save(site){
 var pid = ds_getelv('ship_name_id');
 var nam = encodeURIComponent(ds_getelv('ship_name_val'));
 var cid = ds_getelv('ship_name_cid');
 var srt = ds_getelv('ship_name_sort');
 doLoad('http://'+site+'/ajax/ship_name_save/?id='+pid+'&nam='+nam+'&cid='+cid+'&sort='+srt);
}

function get_city_list(site,cid) {
	cid = (cid||'1');
 var cnid = ds_getels('country_id');
 var st = 'http://'+site+'/ajax/get_city_list/?id='+cnid+'&cid='+cid;
 doLoad(st);
}

function city_add(site) {
 var cnid = ds_getels('country_id');
 var st = 'http://'+site+'/ajax/city_add1/?id='+cnid;
 doLoad(st);
}

function add_city(site) {
 var cnid = ds_getels('country_id');
 var cid = ds_getels('city_id');
 var st = 'http://'+site+'/ajax/city_add2/?id='+cnid+'&cid='+cid;
 //alert(st);
 doLoad(st);
}

function get_shpay_list(site) {
 var cid = ds_getels('city_id');
 var st = 'http://'+site+'/ajax/get_shpay_list/?id='+cid;
 doLoad(st);
}

function item_ed(site,id){
 var o = ds_getel('item_ed_div');
 if (o != null) {
	 o.style.display = 'block';
 }
 doLoad('http://'+site+'/ajax/item_ed/?id='+id);
}

function item_save(site){
 var id = ds_getelv('iid');
 var cp = ds_getelv('item_cp');
 var nam = encodeURIComponent(ds_getelv('item_name'));
 var art = encodeURIComponent(ds_getelv('item_art'));
 var prc = ds_getelv('item_prc');
 var ves = ds_getelv('item_ves');
 var url = ds_getelv('item_url');

 var st = 'id='+id+'&cp='+cp+'&nam='+nam+'&art='+art+'&prc='+prc+'&ves='+ves+'&url='+url;
 //alert(st);
 doLoad('http://'+site+'/ajax/item_save/?'+st);
 var o = ds_getel('item_ed_div');
 if (o != null){
	 o.style.display='none';
 }
}

function item_del(site,id,cp){
 if (confirm('Вы уверены?')) {
   doLoad('http://'+site+'/ajax/item_del/?id='+id+'&cp='+cp);
 }
}

function ord_del(site,id){
 if (confirm('Вы уверены?')) {
	 var st = 'http://'+site+'/ajax/ord_del/?id='+id;
   doLoad(st);
 }
}

function cart_del(site,id){
// if (confirm('Вы уверены?')) {
	var ob = ds_getel('delPict'+id);
	if (ob)	{
		ob.style.cursor = 'pointer';
	}
//   doLoad('http://'+site+'/ajax/cart_del/?id='+id+'&cp='+cp);
   doLoad('http://'+site+'/ajax/cart_del/?id='+id);
// }
}

function get_xls_files(id,site) {
//	alert('OK!');
 window.open('http://'+site+'/ajax/aj_xls/?id='+id, 'aj',
	 'resizable=no,location=no,toolbar=no,menubar=yes,scrollbars=no,status=no,width=620,height=720,top=100,left=100');
 window.open('http://'+site+'/ajax/f116_xls/?id='+id, 'f116',
	 'resizable=no,location=no,toolbar=no,menubar=yes,scrollbars=no,status=no,width=620,height=720,top=100,left=100');
}

function get_aj_xls(id,site) {
 window.open('http://'+site+'/ajax/aj_xls/?id='+id, 'aj',
	 'resizable=no,location=no,toolbar=no,menubar=yes,scrollbars=no,status=no,width=620,height=720,top=100,left=100');
}

function get_f116_xls(id,site) {
 window.open('http://'+site+'/ajax/f116_xls/?id='+id, 'f116',
	 'resizable=no,location=no,toolbar=no,menubar=yes,scrollbars=no,status=no,width=620,height=720,top=100,left=100');
}

