/* Common shop functions *
 * $Id: shop.js,v 1.16 2008/06/13 12:32:58 asd Exp $
 */

var buffer_timeout = 20000;
var save_top_values = 1;
window.free_check_buffer = function() {}
window.z = window.z || {};
window.z.shop = window.z.shop || {};
window.z.shop.filter = window.z.shop.filter || {};
window.z.shop.filter.switchSearch = window.z.shop.filter.switchSearch || function(mmode) { 
   var sf = document.getElementById('shop-search-simple');
   var af = document.getElementById('shop-search-advanced');
   if ('advanced' == mmode) {
      sf.style.display = 'none';
      af.style.display = 'block';
   } else {
      sf.style.display = 'block';
      af.style.display = 'none';
   }
};

window.z.shop.filter.refresh = window.z.shop.filter.refresh || function(felt) { 
      var oFilter = window.z.shop.filter;
      if (oFilter.state == 'refreshing') return;
      var form = felt.form;
      var dd = felt;
      changed_dd = felt;
      var query="?";
      var ife = document.getElementById('ibuffer');
      var frame = ife;
      var url = ife.src;
      if ((dd.type == 'checkbox' || dd.type == 'radio')){
         var len = document.getElementsByName(dd.name).length;
         var val;
         for (i=0;i<len;i++){
            if (document.getElementsByName(dd.name)[i].checked)
            val=document.getElementsByName(dd.name)[i].value;
         }
         
         if (val && val.length > 0)
            update_changed_dd = 0
         else
            update_changed_dd = 1;
      } else if ((dd.type == 'select-one' || dd.type == 'select-multiple') && dd.selectedIndex > 0 && dd.options[dd.selectedIndex].value > 0){
         update_changed_dd = 0;
      } else {
         update_changed_dd = 1;
      }
      
      form_target = dd.form.target;
      form_action = dd.form.action;
      form_method = dd.form.method;

      dd.form.action = url + '?CHANGED_DD='; 
      /*dd.form.method = 'POST';*/
      dd.form.target = frame.name;
      
      dd.form.submit();
      
      var changed_dd_name = changed_dd.name;
      var selects = form.getElementsByTagName("SELECT")
      var len = selects.length;
      for (var i=0;i<len;i++){
         var elm=selects[i];
         if (elm.type == "select-one" && elm.name != changed_dd_name) {
            elm.disabled=true;
         } 
      }
      start_update_buffer();
   }
   var refreshKeyParams = window.z.shop.filter.refresh;

   function update_dd (frame){
      var form = changed_dd.form;
      var tmp_buf = buf+frame+'.';
      form.target = form_target;
      form.action = form_action;
      form.method = form_method;
      var len = form.elements.length;
      for (var i = 0;i < len;i++){
      //alert ('check='+eval(tmp_buf+form.elements[i].name)+'\n'+form.elements[i].name);
         var form_elm = form.elements[i];
         var arr_elm = (form.elements[i].name)?eval(tmp_buf+form.elements[i].name):null;
         if (form_elm && arr_elm){
            if (update_changed_dd != 0 || (form_elm.name != changed_dd.name) || ((form_elm.name == changed_dd.name) && changed_dd.value.length == 0)){
               if (form_elm.type == "select-one" || form_elm.type == "select-multiple"){	
                  fill_dd(arr_elm,form_elm);
               }else if (form_elm.type == "checkbox"){	
                  fill_chkb(arr_elm,form_elm);
               }
            }
         }else{
            //alert("val = "+form_elm.value+"\ndis = "+form_elm.disabled);
            form_elm.disabled=false;
         }
      } 

      var pc = window.frames[frame]['ProductsCount'];

      if ( 'shopsimplesearch' != form.name ) {
         var pce = document.getElementById('products-count-number');
         if (null != pce) {
            pce.innerHTML = pc;
         }
      } else {
         var pcs = document.getElementById('products-count-number-s');
         if (null != pcs) {
            pcs.innerHTML = pc;
         }
      }

      buffer_loading = false;
   }

window.z.shop.grid = window.z.shop.grid || {};
window.z.shop.grid.selectAll = function(flag) {
   var sg = document.getElementById('shop-grid');
   var sgc = sg.getElementsByTagName('input');
   for (var i = 0; i < sgc.length; i++) {
      if (sgc[i].getAttribute('type') == 'checkbox' && !sgc[i].disabled ) {
         sgc[i].checked = flag;
      }
   }
}

window.z.shop.grid.compare = function(url, refurl, fn) {
   alert('XXX: Deprecated');
   fn = fn || 'update';
   var f = document.forms[fn];
   var fe = f.elements;
   fe['REFPAGE'].value = refurl;
   f.action = url;
   f.method = "get";
   f.submit();
}

window.z.shop.grid.addToBasket = function(fn) {
   alert('XXX: Deprecated');
   //if ( !checkBasketAddition() ) return;
   var fn = fn || 'shopform';
   var f = document.forms[fn];
   var fe = f.elements;
   f.method = 'post';
   f.action = '/itshop/basket_save.jsp';
   f.submit();
}

function removeFromBasket() {
   var fe = document.forms['shopform'].elements;
   //if (!window.confirm($('msgAreYouSure').innerHTML)) return;
   fe['TYPE_ACTION'].value = 'D';
   document.forms['update'].submit();
}
window.shop = window.z.shop;

function rs(e) {
   alert('XXX; Deprecated');
}


/* trash */

function basketRecalc() {
   var fe = document.forms['update'].elements;
   fe['SAVE_CHECK_TO_ORDER'].value = '0';
   fe['TYPE_ACTION'].value = 'I';
   document.forms['update'].elements['REFPAGE'].value = location;
   document.forms['update'].submit();
}

function basketOrder(url) {
   var fe = document.forms['update'].elements;
   var fff = false;

   for (var i = 0; i < fe.length; i++) {
      if (fe[i].type == 'checkbox' && fe[i].checked && fe[i].name.substring(0,4) == 'ITEM') {
         fff = true; break;
      }
   }

   if (!fff) {
      var sss = document.getElementById('msg-please-select-line');
      if (null != sss) {
         alert(sss.innerHTML);
      } else {
         alert('Please, select lines.'); 
      }
      return false;
   }

   fe['TYPE_ACTION'].value = 'I';
   document.forms['update'].elements['REFPAGE'].value = url;
   document.forms['update'].submit();
}

function removeFromBasket() {
   var fe = document.forms['update'].elements;
   if (!window.confirm(document.getElementById('msgAreYouSure').innerHTML)) return;
   fe['TYPE_ACTION'].value = 'D';
   document.forms['update'].submit();
}

function basketMakeSelections(cc) {
	var el = document.getElementById('blinesform');
	if (null == el) return;
	var els = el.getElementsByTagName('INPUT');
	for (var i = 0; i < els.length; i++) {
		if (els[i].type == 'checkbox' || els[i].type == 'text' ) {
			var ecc = els[i].getAttribute('merchant-comp-code');
			if (ecc == cc) {
				els[i].disabled = false;
				els[i].checked = true;
			}	else {
				els[i].checked = false;
				els[i].disabled = true;
			}
		}
	}
}

var shop = {};
shop.se = {};
shop.se.toggle = function(o, f, eli) {
   var el = document.getElementById(eli);
   var ee = f.elements['IS_EXPANDED' + o];
   if (!el) return;
   if (el.style.display == 'none') {
      el.style.display = '';
      ee.value = '1';
   } else {
      el.style.display = 'none';
      ee.value = '0';
   }
}
shop.se.refreshKeyParams = function(form) {
   //alert('XXX');
   refreshKeyParams(form);
}
shop.se.rs = function(e) {
   //alert('Clean');
   var f = e.form;
   var n = e.name;
   var ff = e.checked;
   if (!ff) return;
   var es = f.elements;
   for (var i = 0; i < es.length; i++) {
      if (es[i].name == n) {
         if (es[i].type == 'checkbox' && es[i].value != '')
            es[i].checked = false;
      }
   }

}

shop.addToBasket = function(fn) {
   //if ( !checkBasketAddition() ) return;
   var fn = fn || 'shopform';
   var f = document.forms[fn];
   f = f || document.forms['update'];
   var fe = f.elements;
   var fff = false;
   f.method = 'post';
   f.action = '/itshop/basket_save.jsp';
   f.submit();
}

window.shop.compareLimit = (typeof(compareLimit) == 'undefined') ? 999 : compareLimit;

shop.compare = function(url, refurl, fn, nid) {
   fn = fn || 'update';
   var f = document.forms[fn];
   var fe = f.elements;
   var s = url;

   if(url.indexOf('?') < 0) s+='?';
   var fff = false;
   
   var k = 0;
   for (var i = 0; i < fe.length; i++) {
      if (fe[i].type == 'checkbox' && fe[i].checked && fe[i].name.substring(0,4) == 'ITEM') {
         k++;
         if (shop.compareLimit > k) {
            s+='&ITEM='+fe[i].value;
            fff = true;
         }
      }
   }
   if (!fff) {
      var s = '';
      var e = document.getElementById('msg-please-select-line');
      if (null == e) {
         s='Please, select lines';
      } else {
         s = e.innerHTML;
      }
      alert(s); return false;
   }
   s+='&REFPAGE='+escape(refurl);
   s+='&NODE_ID='+nid;
   window.location = s;
}

function sort(SortBy,SortOrder,prefix)	{
   var query=window.location.search;
   if (query=='') query='?';
   if (!prefix) {prefix='';}

   // Reset page_navigator
   query = remove_param(prefix+'RECORD_START',query);
   query = remove_param(prefix+'SORT_BY',query);
   query = remove_param(prefix+'SORT_ORDER',query);
   if (query!='?') {query+='&'+prefix+'SORT_BY='+SortBy+'&'+prefix+'SORT_ORDER='+SortOrder;}
   else {query+=prefix+'SORT_BY='+SortBy+'&'+prefix+'SORT_ORDER='+SortOrder;}
   window.open(window.location.pathname+query,'_top');
}

function remove_param(param,query){
	if (query=='') 
		query = window.location.search;
   
   //alert(query);
   var strre = param+"\\=[^&]*?\\&";
   var strre1 = param+"\\=[^&]*$";
   //alert(strre);
	var regExp=new RegExp(strre,"gi");
	var regExp1=new RegExp(strre1,"gi");
	
	while(query.match(regExp)!=null) {
	  foundStr=query.match(regExp)[0];
	  query=query.replace(new RegExp(foundStr,"gmi"),'');
	 }
	 
	 while(query.match(regExp1)!=null) {
	  foundStr=query.match(regExp1)[0];
	  query=query.replace(new RegExp(foundStr,"gmi"),'');
	 }
	 
	 if (query.lastIndexOf("&") == query.length-1){
	 	query = query.substr(0,query.length-1);
	 }
	 return(query);
}

shop.diff = function(flag) {
   var f = document.forms['update'];
   var fe = f.elements;
   var rf = (null == flag) ? true : flag ;
   if (rf) fe['DIFFONLY'].value = '1';
   else fe['DIFFONLY'].value = '';
   f.submit();
}


