var MAINDIR = "/public/";
var PUBLICBASKET = "publicBasket";
var ACTUALKIND = "actualkind-index-";
var sitecache = new Object();

function put(aID, aData) {
  sitecache[aID] = aData;
}

function get(aID) {
  return sitecache[aID];
}

//*************************
 
//je meneno vzdy pri zobrazeni dialogu
var actualGoodsID = null;

var itemBuffer = new Object();

function addToBuffer(aID, aData) {
  itemBuffer[aID] = aData;
}

function getFromBuffer(aID) {
  return itemBuffer[aID];
}

var dialogBuffer = new Object();

function addToDialogBuffer(aID, aData) {
  dialogBuffer[aID] = aData;
}

function getFromDialogBuffer(aID) {
  if (dialogBuffer[aID]) {
    return dialogBuffer[aID];
  } else {
    return null;
  }
}

function showKindDetail(aKey, aGroupKey, aGoodsID, aID, aMainPhoto, aSizes, aPrize, aKindID, aMainPhotoLink) {
  var data = getFromBuffer(aKey);
  if (get(ACTUALKIND+aGroupKey) != aKindID) {
    put(ACTUALKIND+aGroupKey, aKindID);
  }
  var statebox = document.getElementById("statebox-"+aGoodsID);
  YAHOO.util.Dom.removeClass(statebox, statebox.className);
  if (data[2]) {
    YAHOO.util.Dom.addClass(statebox, 'sale');
  } else if (data[3]) {
    YAHOO.util.Dom.addClass(statebox, 'discount');
  } else {
    YAHOO.util.Dom.addClass(statebox, 'dummy');
  }
  document.getElementById(aSizes).innerHTML = data[0];
  if (data[4] == 'true') {
	  //document.getElementById(aPrize).innerHTML = 'od '+toMoneyFormat(data[1], true, '<strong>', '</strong>', 0);
	  document.getElementById(aPrize).innerHTML = ''+toMoneyFormat(data[1], true, '<strong>', '</strong>', 0);
  } else {
	  document.getElementById(aPrize).innerHTML = toMoneyFormat(data[1], true, '<strong>', '</strong>', 0);
  }
  document.getElementById(aMainPhoto).src = IMGFOLDER+aGoodsID+"/"+aID+THUMBSUFIX;
  document.getElementById(aMainPhotoLink).href = IMGFOLDER+aGoodsID+"/"+aID+SUFIX;
}

function loadImages(aImgBox) {
  var imgBox = document.getElementById(aImgBox);
  var images = new Array();
  for (var i = 0; i<imgBox.childNodes.length; i++) {
    if (imgBox.childNodes[i].tagName == "IMG") {
      images[images.length] = new Array(i, imgBox.childNodes[i].className, imgBox.childNodes[i].id);
    }
  }
  return images;
}
function moveLeft(aImgBox, aBackButton, aForwardButton, aIsInWidth) {
  var images = loadImages(aImgBox);
  if (aIsInWidth == CODE_BOOL_YES) {
    var thumbImgClass = "thumbimg";
    var buttonRightClass = "thumbnavbutton-right";
    var buttonLeftClass = "thumbnavbutton-left-hidden";
  } else {
    var thumbImgClass = "thumbimg2";
    var buttonRightClass = "thumbnavbutton-down";
    var buttonLeftClass = "thumbnavbutton-up-hidden";
  }
  // jsme uplne nalevo
  if (images[0][1] == thumbImgClass+"-visible") {
    return;
  } else {
    for (var i = 0; i<images.length; i++) {
      if (images[i][1] == thumbImgClass+"-visible") {
        images[i-1][1] = thumbImgClass+"-visible";
        document.getElementById(images[i-1][2]).className = thumbImgClass+"-visible";
        images[i+(THUMBSNUMBER-1)][1] = thumbImgClass+"-hidden";
        document.getElementById(images[i+(THUMBSNUMBER-1)][2]).className = thumbImgClass+"-hidden";
        document.getElementById(aForwardButton).className = buttonRightClass;
        // jsme uplne nalevo
        if (i == 1) {
          document.getElementById(aBackButton).className = buttonLeftClass;
        }
        return;
      }
    }    
  }  
}

function moveRight(aImgBox, aBackButton, aForwardButton, aIsInWidth) {
  var images = loadImages(aImgBox);
  if (aIsInWidth == CODE_BOOL_YES) {
    var thumbImgClass = "thumbimg";
    var buttonRightClass = "thumbnavbutton-right-hidden";
    var buttonLeftClass = "thumbnavbutton-left";
  } else {
    var thumbImgClass = "thumbimg2";
    var buttonRightClass = "thumbnavbutton-down-hidden";
    var buttonLeftClass = "thumbnavbutton-up";
  }  
  // jsme uplne napravo
  if (images[images.length-1][1] == thumbImgClass+"-visible") {
    return;
  } else {
    for (var i = images.length; i>=0; i--) {
      if (images[i-1][1] == thumbImgClass+"-visible") {
        images[i][1] = thumbImgClass+"-visible";
        document.getElementById(images[i][2]).className = thumbImgClass+"-visible"; 
        images[i-THUMBSNUMBER][1] = thumbImgClass+"-hidden";
        document.getElementById(images[i-THUMBSNUMBER][2]).className = thumbImgClass+"-hidden";
        document.getElementById(aBackButton).className = buttonLeftClass;
        // jsme uplne napravo
        if (i == images.length-1) {
          document.getElementById(aForwardButton).className = buttonRightClass;
        }        
        return;
      }
    }    
  }
}

function nodeChange(aNode) {
  nextUl = aNode.nextSibling;
  while(nextUl.tagName != "UL") {
    nextUl = nextUl.nextSibling;
  }
  if (nextUl.style.display == "none") {
    nextUl.style.display = "block";
    YAHOO.util.Dom.removeClass(aNode, 'plusimg');
    YAHOO.util.Dom.addClass(aNode, 'minusimg');
  } else {
    nextUl.style.display = "none";
    YAHOO.util.Dom.removeClass(aNode, 'minusimg');
    YAHOO.util.Dom.addClass(aNode, 'plusimg');    
  }
}

function closeMenu(aMenuDiv, aUrl) {  
  var menuDiv = document.getElementById(aMenuDiv);
  var uls = document.getElementsByTagName('ul');
  for(var i = 0; i < uls.length; i++) {
    if (uls[i].className == "category") {
      uls[i].style.display = "none";
      YAHOO.util.Dom.removeClass(uls[i].parentNode.firstChild, 'minusimg');
      YAHOO.util.Dom.addClass(uls[i].parentNode.firstChild, 'plusimg');      
    }
  }
}

function openMenu(aMenuDiv, aActiveCategory) {
  var menuDiv = document.getElementById(aMenuDiv);
  var catDiv = document.getElementById(aActiveCategory);
  if (!catDiv) {
    return;
  }
  var node = catDiv;
  while (node.id != aMenuDiv) {
    node = node.parentNode;
    if (node.tagName == "LI") {
      minusNode = node.childNodes[0];
      if (minusNode.tagName == "DIV") {
        nodeChange(minusNode);
      }
    }    
  }
}

function changeVisibility(aNode) {
  var node = document.getElementById(aNode);
  if (node.style.display == "none") {
    node.style.display = "block";
  } else {
    node.style.display = "none";
  }
}

function createDialog(aDialogName, aDataObject) {
    /*if (YAHOO.env.ua.ie > 0) {
      isNotIE = false;
    } else {
      isNotIE = true;
    }*/
    var globalDialogParameters = null; 
    YAHOO.util.Event.onDOMReady(function () {
    YAHOO.namespace("example.container");
      	var handleClose = function() {
          YAHOO.util.Dom.addClass('dialog', "notdisplay");
      	};
      	var handleCancel = function() {
          this.cancel();
      	};    
       YAHOO.example.container.dialog1 = new YAHOO.widget.Dialog(aDialogName, 
							{ width : "780",							  
							  //fixedcenter : true,
							  visible : false,
							  modal : true,
                draggable : true,
                zindex:2,
                close: false,
							  constraintoviewport : true,
							  configAutoFillHeight: true,
							  buttons : [ { text:DIALOG_BUTTON, handler:handleCancel } ]
							});       	
	     var kl = new YAHOO.util.KeyListener(document, { keys:27 },  							
				  { fn:handleCancel,
					scope:YAHOO.example.container.dialog1,
					correctScope:true }, "keyup" ); 
	    YAHOO.example.container.dialog1.cfg.queueProperty("keylisteners", kl);
      YAHOO.example.container.dialog1.hideEvent.subscribe(handleClose);          	
      YAHOO.example.container.dialog1.render();
    
    var dialogcallback = {
      success:function(o) {   
        YAHOO.example.container.wait.hide();
        if (o.responseText != null && isJSON(o.responseText)) {
          var parameters = eval('(' + o.responseText + ')');
          if (parameters.state != null && parameters.state) {
              if (globalDialogParameters != null) {
                for (var parameter in globalDialogParameters) {
                  parameters[parameter] = globalDialogParameters[parameter];
                }
              }
              dialogDisplay.call(parameters);
          } else {
            setInfoDialog(parameters.msg);
            YAHOO.example.container.infodialog.show();          
          }               
        } else {
          setInfoDialog(AJAX_ERROR);
          YAHOO.example.container.infodialog.show();    
        }
      },
      customevents:{ 
        onFailure:function(o) {            
            YAHOO.example.container.wait.hide();
            setInfoDialog(AJAX_ERROR);
        },
        onStart:function(o) {            
            YAHOO.example.container.wait.show();
        },    
        onAbort:function(o) {
            YAHOO.example.container.wait.hide();
            window.alert(AJAX_CANCEL);
        }      
      }
      };
      
      var showDialog = function() {   
        YAHOO.util.Dom.removeClass('dialog', "notdisplay");    
        YAHOO.example.container.dialog1.moveTo((YAHOO.util.Dom.getViewportWidth()-YAHOO.example.container.dialog1.cfg.config.width.value)/2,YAHOO.util.Dom.getDocumentScrollTop());
        YAHOO.example.container.dialog1.center();      
        YAHOO.example.container.dialog1.show();
      }
           
      var beforeDisplay = function(o) {      
        YAHOO.util.Dom.removeClass('dialog', "notdisplay");
        // nasetovani aktualniho ID zbozi
        actualGoodsID = this.data.buttonID;
        globalDialogParameters = this.data; 
        
        goodsData = getFromDialogBuffer(actualGoodsID);
        if (goodsData == null) {
          aUrl = MAINDIR+"ajax.php?type=publicajax&action=goodsDetail&goodsID="+this.data.goodsID+"&timestamp="+ new Date().getTime();    
          YAHOO.util.Connect.initHeader( 'Content-Type', 'text/xml', false );
          YAHOO.util.Connect.asyncRequest('GET', aUrl, dialogcallback);
        } else {
          dialogDisplayFromCache(goodsData);
        }       
      };
           
      var setDialogElementValues = function(aGoodsData) {
        prize = null;
        prizesale = null;
        photo = null;
        state = null;
        for(var i = 0; i < aGoodsData.length; i++) {
          if (aGoodsData['actualkind'] == aGoodsData[i]['id']) {
            prize = aGoodsData[i]['cena'];
            prizesale = aGoodsData[i]['cenaakce'];
            photo = aGoodsData[i]['foto'];
            state = aGoodsData[i]['stav'];
            break;
          }
        }
        document.getElementById("dialog-header").innerHTML = aGoodsData['zboziid'];
        document.getElementById("dialog-goodscode").innerHTML = aGoodsData['zboziid'];
        document.getElementById("dialog-brand").innerHTML = aGoodsData['znacka'];
        document.getElementById("dialog-category").innerHTML = aGoodsData['kategorie'];
        if (!aGoodsData['zbozipopis']) {
          document.getElementById("dialog-tr-description").style.display = 'none';
        } else {
          if (YAHOO.env.ua.ie > 5) {
            document.getElementById("dialog-tr-description").style.display = 'block';          
          } else {
            document.getElementById("dialog-tr-description").style.display = 'table-row';          
          }
        }
        
        document.getElementById("dialog-description").innerHTML = aGoodsData['zbozipopis'];
        document.getElementById("dialog-structure").innerHTML = aGoodsData['slozeni'];
        document.getElementById("dialog-type").innerHTML = aGoodsData['typ'];
        processInPack(aGoodsData['baleniks']);
        //processPrizes(prize, prizesale, state);
        document.getElementById("dialog-imglink").setAttribute("href", IMGFOLDER+aGoodsData['zboziid']+"/"+photo+SUFIX);
        document.getElementById("dialog-img").setAttribute("src", IMGFOLDER+aGoodsData['zboziid']+"/"+photo+THUMBSUFIX);
        document.getElementById("dialog-shapeimg").setAttribute("src", SHAPEFOLDER+aGoodsData['tvar']+".gif");
      }
           
      var dialogDisplay = function() {
        actualID = get(ACTUALKIND+this.buttonID);
        // priprava baliku dat zbozi
        kindStructure = new Array();
        kindStructure['actualkind'] = actualID;
        kindStructure['zboziid'] = this.goodsID;
        kindStructure['buttonid'] = this.buttonID;
        kindStructure['znacka'] = this.goodsBrand;
        kindStructure['kategorie'] = this.goodsCategory;
        kindStructure['zbozipopis'] = this.goodsDesc;
        kindStructure['typ'] = this.goodsType;
        /*kindStructure['cena'] = this.goodsPrize;*/
        /*kindStructure['cenaakce'] = this.goodsSalePrize;*/
        kindStructure['tvar'] = this.shape;
        kindStructure['rozmeru'] = this.numberofmeasures;
        kindStructure['slozeni'] = this.structure;
        kindStructure['baleniks'] = this.inpack;
        /*kindStructure['stav'] = this.state;*/
        /*kindStructure['leaderfoto'] = this.goodsData[0]['foto'];*/
        actualIndex = null;
        //rozdeli data podle druhu do 2D pole
        for (var i =0; i< this.goodsData.length; i++) {
          if (i == 0 || this.goodsData[i-1]['druh'] != this.goodsData[i]['druh']) {
            kindData = new Array();
            kindData['id'] = this.goodsData[i]['druh'];
            kindData['barva'] = this.goodsData[i]['barva'];
            kindData['subkod'] = this.goodsData[i]['subkod'];
            kindData['cena'] = this.goodsData[i]['cena'];
            kindData['cenaakce'] = this.goodsData[i]['cenaakce'];
            kindData['stav'] = this.goodsData[i]['stav'];
            kindData['popis'] = this.goodsData[i]['popis'];
            kindData['foto'] = this.goodsData[i]['foto'];
            kindStructure.push(kindData);
            if (actualIndex == null && this.goodsData[i]['druh'] == actualID) {
              actualIndex = kindStructure.length-1;
            }            
          }
          sizeData = new Array();
          sizeData['polozka'] = this.goodsData[i]['polozka'];
          sizeData['ks'] = this.goodsData[i]['ks'];
          sizeData['velid'] = this.goodsData[i]['velid'];
          sizeData['velikost'] = this.goodsData[i]['velikost'];
          sizeData['cena'] = this.goodsData[i]['cenaakce'];
          sizeData['r1'] = this.goodsData[i]['r1'];
          sizeData['r2'] = this.goodsData[i]['r2'];
          sizeData['r3'] = this.goodsData[i]['r3'];
          sizeData['r4'] = this.goodsData[i]['r4'];
          sizeData['r5'] = this.goodsData[i]['r5'];
          kindData.push(sizeData);
        }
        setDialogElementValues(kindStructure);
        prepareKindCombo(kindStructure);
        fillDialogCombo(document.getElementById("dialog-kindbox"), kindStructure);
        changeKindDesc(this.goodsID, kindStructure[actualIndex]['subkod'], kindStructure[actualIndex]['barva'], kindStructure[actualIndex]['popis']);
        addToDialogBuffer(this.buttonID, kindStructure);
        createDialogTableRows(kindStructure[actualIndex], kindStructure['rozmeru']);
        
        showDialog();
        //YAHOO.example.container.dialog1.show();
      };
      
      var prepareKindCombo = function(aKindStructure) {
        if (aKindStructure.length > 1) {
          document.getElementById("dialog-div-kindbox").style.display = "block";
        } else {
          document.getElementById("dialog-div-kindbox").style.display = "none";
        }
        combo = document.getElementById("dialog-kindbox");
        makeComboEmpty(combo);         
      }
      
      var dialogDisplayFromCache = function(aGoodsData) {
        actualID = get(ACTUALKIND+aGoodsData['buttonid']);
        aGoodsData['actualkind'] = actualID;
        actualIndex = null;
        for (var i =0; i< aGoodsData.length; i++) {
          if(aGoodsData[i]['id'] == actualID) {
            actualIndex = i;
            break; 
          }
        }
              
        setDialogElementValues(aGoodsData);
        prepareKindCombo(aGoodsData);
        fillDialogCombo(document.getElementById("dialog-kindbox"), aGoodsData);
        changeKindDesc(aGoodsData['zboziid'], aGoodsData[actualIndex]['subkod'], aGoodsData[actualIndex]['barva'], aGoodsData[actualIndex]['popis']);
        createDialogTableRows(aGoodsData[actualIndex], aGoodsData['rozmeru']);
        showDialog();        
      };
      
      var fillDialogCombo = function(aCombo, aData) {
        for(var i = 0; i < aData.length; i++) {
          aCombo.options[i] = new Option("Z"+aData['zboziid']+"/"+aData[i]['subkod']+", "+COLOR+": "+aData[i]['barva'],aData[i]['id']);
          if (aData['actualkind'] == aData[i]['id']) {
            aCombo.options[i].selected = true;
          }
        }
      };
          
   	  for (var i =0; i< aDataObject.length; i++) {
        dataObject = new Object();
        dataObject.goodsID = aDataObject[i][0];
        dataObject.goodsBrand = aDataObject[i][1];
        dataObject.goodsDesc = aDataObject[i][2];
        dataObject.goodsType = aDataObject[i][3];
        dataObject.goodsPrize = aDataObject[i][4];
        dataObject.goodsSalePrize = aDataObject[i][5];
        dataObject.goodsCategory = aDataObject[i][6];
        dataObject.buttonID = aDataObject[i][7];
        dataObject.shape = aDataObject[i][8];
        dataObject.numberofmeasures = aDataObject[i][9];
        dataObject.structure = aDataObject[i][10];
        dataObject.state = aDataObject[i][11];
        dataObject.inpack = aDataObject[i][13];
        transportObject = new Object();
        transportObject.data = dataObject; 
        YAHOO.util.Event.addListener(DIALOGBUTTONPREFIX+dataObject.buttonID, "click", beforeDisplay, transportObject, true);
      }
           
    	createInfoDialog();
    	createWaitDialog();
      	           
    });
}

function processPrizes(aPrize, aSalePrize, aState) {
  if (aState == 2) {
    salePrizeLabel = SALEPRICE;
  } else {
    salePrizeLabel = ACTUALPRICE;
    var prizebox = document.getElementById("prizebox");
    if (aPrize > aSalePrize) {
      if (YAHOO.env.ua.ie > 0) {
        prizebox.style.display = "block";
      } else {
        prizebox.style.display = "table-row";
      }
    } else {
      prizebox.style.display = "none";
    }
  }
  document.getElementById("saleprizelabel").innerHTML = salePrizeLabel;
  document.getElementById("dialog-prize").innerHTML = toMoneyFormat(aPrize, false, '', '', 0);
  document.getElementById("dialog-saleprize").innerHTML = toMoneyFormat(aSalePrize, false, '', '', 0);
}

function processInPack(aInPack) {
  var inpackbox = document.getElementById("dialog-tr-inpack");
  if (aInPack > 1) {
    if (YAHOO.env.ua.ie > 0) {
      inpackbox.style.display = "block";
    } else {
      inpackbox.style.display = "table-row";
    }
  } else {
    inpackbox.style.display = "none";
  }
  document.getElementById("dialog-inpack").innerHTML = aInPack;
}


      
function createInfoDialog() {
  var handleClose = function() {
  	this.cancel();
  };
  
	var handleCancel = function() {
    this.cancel();
	};     
  
  YAHOO.namespace("example.container");
	YAHOO.example.container.infodialog = new YAHOO.widget.SimpleDialog("infodialog", 
																			 { width: "300px",
																			   fixedcenter: true,
																			   visible: false,
																			   draggable: false,
																			   close: false,
																			   zindex:6,
																			   modal:true,
																			   constraintoviewport: true,
																			   buttons: [ { text:CONTINUE, handler:handleClose, isDefault:true } ]
																			 } );
	YAHOO.example.container.infodialog.setHeader(RESULT);    
   var kl = new YAHOO.util.KeyListener(document, { keys:27 },  							
		  { fn:handleCancel,
			scope:YAHOO.example.container.infodialog,
			correctScope:true }, "keyup" ); 
  YAHOO.example.container.infodialog.cfg.queueProperty("keylisteners", kl);      	
	YAHOO.example.container.infodialog.render(document.body);
}

function createWaitDialog() {
  var handleClose = function() {
  	this.cancel();
  };
  
	var handleCancel = function() {
    this.cancel();
	};     
  
  YAHOO.namespace("example.container");
  YAHOO.example.container.wait = 
  		new YAHOO.widget.Panel("wait",  
  			{ width:"240px", 
  			  fixedcenter:true, 
  			  close:false, 
  			  draggable:false, 
  			  zindex:4,
  			  modal:true,
  			  visible:false
  			} 
  		);
  
  YAHOO.example.container.wait.setHeader(LOADING);
  YAHOO.example.container.wait.setBody('<img src="'+AJAXIMGFOLDER+AJAXLOADING+'" />');
  YAHOO.example.container.wait.render(document.body);		
}

function setInfoDialog(aMsg) {
//"Došlo k chybě při načítání dat ze serveru. Zkuste operaci znovu. V případě, že problémy přetrvávají, prosím, kontaktujte nás."
  YAHOO.example.container.infodialog.setBody(aMsg);
}
      
function setOkBasketDialog() {
  YAHOO.example.container.infodialog.setBody(PUTINTOBASKET);
}

var basketcallback = {
  success:function(o) {   
    YAHOO.example.container.wait.hide();
    if (o.responseText != null && isJSON(o.responseText)) {
      var parameters = eval('(' + o.responseText + ')');
      if (parameters.state != null && parameters.state) {
          if (parameters.isPublicBasket != null && parameters.isPublicBasket) {
            doUpdatePublicBasketItemAmount(new Number(parameters.itemID).valueOf(), new Number(parameters.amount).valueOf());
          }
          prizeElement = document.getElementById("prize-basic-"+parameters.itemID);
          amountDifference = parameters.amount-parameters.inBasket;          
          updateHeaderBasketAmount(amountDifference*parseFloat(prizeElement.innerHTML));
          setOkBasketDialog();
          YAHOO.example.container.infodialog.show();
      } else {
        if (parameters.isPublicBasket != null && parameters.isPublicBasket) {
          setBasketItemAmountFields();
        }
        setInfoDialog(parameters.msg);
        YAHOO.example.container.infodialog.show();          
      }               
    } else {
      setInfoDialog(AJAX_ERROR);
      YAHOO.example.container.infodialog.show();    
    }
  },
  customevents:{ 
    onFailure:function(o) {            
        YAHOO.example.container.wait.hide();
        setInfoDialog(AJAX_ERROR);
    },
    onStart:function(o) {            
        YAHOO.example.container.wait.show();
    },    
    onAbort:function(o) {
        YAHOO.example.container.wait.hide();
        window.alert(AJAX_CANCEL);
    }      
  }
};      
      
function changeKindDesc(aID, aSubkod, aColor, aKindDesc) {
  text = "<b>Z"+aID+"/"+aSubkod+"</b>";
  if (aColor != DEFAULTCOLORNAME) {
    text += ", "+COLOR+" : <b>"+aColor+"</b>";
  } else {
    text += "";
  }
  if (aKindDesc) {
    text += ", "+DESC+" : <b>"+aKindDesc+"</b>";
  } else {
    text += "";
  }
  document.getElementById("dialog-kindname").innerHTML = text;
}

function changeKind(aKindID) {
  goodsData = getFromDialogBuffer(actualGoodsID);
  if (goodsData == null) {
    return;
  }  
  for (var i =0; i< goodsData.length; i++) {
    if (goodsData[i]['id'] == aKindID.value) {
      document.getElementById("dialog-imglink").setAttribute("href", IMGFOLDER+goodsData['zboziid']+"/"+goodsData[i]['foto']+SUFIX);
      document.getElementById("dialog-img").setAttribute("src", IMGFOLDER+goodsData['zboziid']+"/"+goodsData[i]['foto']+THUMBSUFIX);
      //processPrizes(goodsData[i]['cena'], goodsData[i]['cenaakce'], goodsData[i]['stav']);
      processInPack(goodsData['baleniks']);
      createDialogTableRows(goodsData[i], goodsData['rozmeru']);
      changeKindDesc(goodsData['zboziid'], goodsData[i]['subkod'], goodsData[i]['barva'], goodsData[i]['popis']); 
      return;
    }
  }
}

function createDialogTableRows(aKindData, aNumberOfMeasures) {
  var trs = document.getElementsByTagName('tr');
  for(var i = trs.length-1; i >= 0; i--) {
    if (YAHOO.util.Dom.hasClass(trs[i], "dialog-row")) {
      trs[i].parentNode.removeChild(trs[i]);
    }
  }
  value = aKindData.length+2;
  document.getElementById("dialog-firstrow").setAttribute("rowSpan", value);
  for (var i =0; i< aKindData.length; i++) {
    createDialogTableRow(aKindData[i], aNumberOfMeasures);
  }
}

function createDialogTableRow(aSizaData, aNumberOfMeasures) {
  dialogtable = document.getElementById("dialog-detailtable");
  newTr = document.createElement('tr');
  YAHOO.util.Dom.addClass(newTr, 'dialog-row');
    
  newTd = document.createElement('td');
  YAHOO.util.Dom.addClass(newTd, 'size');
  newTd.innerHTML = aSizaData['velikost'];
  newTr.appendChild(newTd);

  newTd = document.createElement('td');
  if (aSizaData['ks'] == 0) {
	  newTd.innerHTML = TEXT_NOTAVAILABLE;
  } else {
	  newTd.innerHTML = TEXT_AVAILABLE;
  }
  YAHOO.util.Dom.addClass(newTd, 'size');
  newTr.appendChild(newTd);
  
  newTd = document.createElement('td');
  newTd.setAttribute('id', 'prize-'+aSizaData['polozka']);
  newTd.innerHTML = toMoneyFormat(aSizaData['cena'], false, '', '', 0);
  newTr.appendChild(newTd);

  newSpan = document.createElement('span');
  YAHOO.util.Dom.addClass(newSpan, 'notdisplay');
  newSpan.setAttribute('id', 'prize-basic-'+aSizaData['polozka']);
  newSpan.innerHTML = aSizaData['cena'];
  newTd.appendChild(newSpan);  
  
  newTd = document.createElement('td');
  if (aSizaData['r1'] && aNumberOfMeasures >= 1) {
    newTd.innerHTML = aSizaData['r1'];
  } else {
    newTd.innerHTML = "&nbsp;";
  }
  newTr.appendChild(newTd);
  
  
  newTd = document.createElement('td');
  if (aSizaData['r2'] && aNumberOfMeasures > 1) {
    newTd.innerHTML = aSizaData['r2'];
  } else {
    newTd.innerHTML = "&nbsp;";
  }
  newTr.appendChild(newTd);

  newTd = document.createElement('td');
  if (aSizaData['r3'] && aNumberOfMeasures > 2) {
    newTd.innerHTML = aSizaData['r3'];
  } else {
    newTd.innerHTML = "&nbsp;";
  }
  newTr.appendChild(newTd);

  newTd = document.createElement('td');
  if (aSizaData['r4'] && aNumberOfMeasures > 3) {
    newTd.innerHTML = aSizaData['r4'];
  } else {
    newTd.innerHTML = "&nbsp;";
  }  
  newTr.appendChild(newTd);

  newTd = document.createElement('td');
  if (aSizaData['r5'] && aNumberOfMeasures > 4) {
    newTd.innerHTML = aSizaData['r5'];
  } else {
    newTd.innerHTML = "&nbsp;";
  }  
  newTr.appendChild(newTd);

  newTd = document.createElement('td');
  YAHOO.util.Dom.addClass(newTd, 'center');
      newInput = document.createElement('input');
      newInput.setAttribute('id', 'amount-'+aSizaData['polozka']);
      newInput.setAttribute('type', 'text');
      YAHOO.util.Dom.addClass(newInput, 'amount');
      newInput.setAttribute('maxlength', '2');
      newInput.setAttribute('name', 'ks');
      newInput.setAttribute('value', '1');
      newTd.appendChild(newInput);
  newTr.appendChild(newTd);

  newTd = document.createElement('td');
  YAHOO.util.Dom.addClass(newTd, 'center');
      newInput = document.createElement('button');
      newInput.setAttribute('id', BASKETBUTTONPREFIX+aSizaData['polozka']);
      if (IS_LOGED) {
        YAHOO.util.Event.addListener(newInput, 'click', addItemIntoBasket);
      } else {
        YAHOO.util.Event.addListener(newInput, 'click', addItemIntoPublicBasket);
      }
      //newInput.addEventListener('onclick', 'addToBasket('+aSizaData['polozka']+', "amount-'+aSizaData['polozka']+'")');
      newInput.innerHTML = BUYNOW;
      newTd.appendChild(newInput);
  newTr.appendChild(newTd);

  dialogtable.appendChild(newTr);
}
function prefillAddresses(aCombo, aPrefix) {
  fillAddress(aCombo.value, aPrefix); 
  /*if (document.getElementById('billingaddress').checked) {
    fillAddress(aCombo.value, 'billingaddress', 'billingAddressValue'); 
    document.getElementById('billingaddress-select').selectedIndex = aCombo.selectedIndex;
  }*/
}

function fillAddress(aSelectedAddress, aPrefix) {
  addresses = get('customer-addresses');
  var address = addresses[aSelectedAddress]; 
  document.getElementById(aPrefix+'-name').value = address.name;
  selectComboValueByKey(document.getElementById(aPrefix+'-type'), address.type);
  companydatabox = document.getElementById(aPrefix+'-companydatabox');  
  ico = document.getElementById(aPrefix+'-ico');
  dic = document.getElementById(aPrefix+'-dic');
  if (address.showCompInfo) {
    ico.value = address.ico;
    dic.value = address.dic;
    companydatabox.style.display = 'block';   
  } else {
    ico.value = "";
    dic.value = "";
    companydatabox.style.display = 'none';
  }
  document.getElementById(aPrefix+'-firstname').value = address.firstname;
  document.getElementById(aPrefix+'-surname').value = address.surname;
  document.getElementById(aPrefix+'-street').value = address.street;
  document.getElementById(aPrefix+'-housenumber').value = address.number;
  document.getElementById(aPrefix+'-city').value = address.city;
  document.getElementById(aPrefix+'-zipcode').value = address.zipcode;
  selectComboValueByKey(document.getElementById(aPrefix+'-country'), address.country);
}

function prefillAddress(aSelectedAddress, aPrefix) {
  if (aSelectedAddress == 0) {
    return;
  }
  form = document.getElementById(aPrefix+"-form");
  addresses = get('customer-addresses');
  address = addresses[aSelectedAddress]; 
  form.name.value = address.name;
  selectComboValueByKey(form.type, address.type);
  companydatabox = document.getElementById(aPrefix+'-companydatabox');  
  if (address.showCompInfo) {
    form.ico.value = address.ico;
    form.dic.value = address.dic;
    companydatabox.style.display = 'block';
  } else {
    form.ico.value = "";
    form.dic.value = "";
    companydatabox.style.display = 'none';
  }
  form.firstname.value = address.firstname;
  form.surname.value = address.surname;
  form.street.value = address.street;
  form.housenumber.value = address.housenumber;
  form.city.value = address.city;
  form.zipcode.value = address.zipcode;
  selectComboValueByKey(form.country, address.country);  
}

function  showBillingAddressPre(aIsChecked) {
  showBillingAddress(aIsChecked); 
  if (aIsChecked && document.getElementById('billingaddress-select')) {
    document.getElementById('billingaddress-select').selectedIndex = document.getElementById('deliveryaddress-select').selectedIndex; 
    fillAddress(document.getElementById('deliveryaddress-select').value, 'billingaddress', 'billingAddressValue');
  }
}
function showBillingAddress(aChecked) {
  if (!aChecked) {
    display = 'block';
  } else {
    display = 'none';
  }
  document.getElementById('billingaddress-box').style.display = display;
}

function setCompanyInput(aSelectedValue, aPrefix, aTargetIndex) {
  box = document.getElementById(aPrefix+'-companydatabox');
  if (aSelectedValue == aTargetIndex) {
    box.style.display = 'block';      
  } else {
    box.style.display = 'none';
  }
}

function clearInputs(aSelect, aPrefix, aTargetIndex) {
  document.getElementById(aPrefix+'-type').selectedIndex = 0;
  document.getElementById(aSelect).selectedIndex = 0;
  setCompanyInput(0, aPrefix, aTargetIndex);
  document.getElementById(aPrefix+'-name').value = "";
  document.getElementById(aPrefix+'-ico').value = "";
  document.getElementById(aPrefix+'-dic').value = "";
  document.getElementById(aPrefix+'-firstname').value = "";
  document.getElementById(aPrefix+'-surname').value = "";
  document.getElementById(aPrefix+'-street').value = "";
  document.getElementById(aPrefix+'-housenumber').value = "";
  document.getElementById(aPrefix+'-city').value ="";
  document.getElementById(aPrefix+'-zipcode').value = "";
  document.getElementById(aPrefix+'-country').selectedIndex = 0;
}

function registerKind(aKindArray) {
  for(var i = 0; i < aKindArray.length-1; i++) {
    put('kindDetailData-'+aKindArray[i]['druh'], aKindArray[i]);
  }
} 

function switchKind(aKindCombo) {
//  var kindData = get('kindDetailData-'+aKindCombo.value);
  
}

// user is loged, has his own basket
function addItemIntoBasket(e) {
  buttonid = this.id;
  itemid = buttonid.substr(BASKETBUTTONPREFIX.length); 
  input = document.getElementById("amount-"+itemid);
  aUrl = MAINDIR+"ajax.php?type=privateajax&action=privatePrivateAddToBasket&itemID="+itemid+"&amount="+input.value;    
  YAHOO.util.Connect.initHeader( 'Content-Type', 'text/xml', false);
  YAHOO.util.Connect.asyncRequest('GET', aUrl, basketcallback);  
}

// user is not loged, basket is cookie
function addItemIntoPublicBasket(e) {
  buttonid = this.id;
  itemid = buttonid.substr(BASKETBUTTONPREFIX.length); 
  input = document.getElementById("amount-"+itemid);
  
  itemID = new Number(itemid).valueOf();
  amount = new Number(input.value).valueOf();
  inBasket = getItemAmountFromBasket(itemID);
  aUrl = MAINDIR+"ajax.php?type=publicajax&action=checkAvailability&itemID="+itemID+"&amount="+(amount+inBasket)+"&inBasket="+inBasket;    
  YAHOO.util.Connect.initHeader( 'Content-Type', 'text/xml', false);
  YAHOO.util.Connect.asyncRequest('GET', aUrl, basketcallback);  
}

function updatePublicBasketItemAmount(aItemID, aAmount, aItemRowNode, aItemDataRowNode) {
  var itemID = new Number(aItemID).valueOf();
  var amount = new Number(aAmount).valueOf();
  if (amount == 0) {
    if (aItemRowNode && aItemDataRowNode) {
      removePublicBasketItem(aItemID, aItemRowNode, aItemDataRowNode);
    }
  } else {
    inBasket = getItemAmountFromBasket(itemID);
    aUrl = MAINDIR+"ajax.php?type=publicajax&action=checkAvailability&itemID="+itemID+"&amount="+amount+"&inBasket=0";    
    YAHOO.util.Connect.initHeader( 'Content-Type', 'text/xml', false);
    YAHOO.util.Connect.asyncRequest('GET', aUrl, basketcallback);
  }
}

function updatePublicBasketFinalPrize(aItemID, aAmount) {
  var totalPrizeNode = document.getElementById('publicBasketFinalPrize');
  if (!totalPrizeNode) {
    // adding into basket, not basket detail
    return;
  }
  var prizeNode = document.getElementById('publicBasketPrize');
  if (!prizeNode) {
    return;
  }
  
  publicBasketObject = get(PUBLICBASKET);
  if (!publicBasketObject) {
    return;
  }
  totalcost = 0;
  for(var i = 0; i<publicBasketObject.length; i++) {
    if (aItemID == publicBasketObject[i].id) {
      if (aAmount != 0) {
        itemTotalPrizeNode = document.getElementById('publicBasketItemTotalPrize-'+aItemID);
        itemTotalPrizeNode.innerHTML = toMoneyFormat(publicBasketObject[i].prize*aAmount, false, '', '', 0);
      }
      publicBasketObject[i].amount = aAmount;      
    }
    totalcost += publicBasketObject[i].amount*publicBasketObject[i].prize;
  }

  var actualdeliveryfee = getDeliveryFee(totalcost);
  
  var deliveryPrizeNode = document.getElementById('publicBasketDeliveryPrize');
  if (!deliveryPrizeNode) {
	  return;
  } else {
	  deliveryPrizeNode.value = actualdeliveryfee;
  }
  
  var deliveryFee = document.getElementById('deliveryFee'); 
  deliveryFee.innerHTML = toMoneyFormat(actualdeliveryfee, false, '', '', 0);
    
  prizeNode.innerHTML = toMoneyFormat(totalcost, false, '', '', 0);
  totalPrizeNode.innerHTML = toMoneyFormat(totalcost+actualdeliveryfee, false, '', '', 0);
  
  var prizeNodeCZK = document.getElementById('publicBasketFinalPrizeCZK');
  if (prizeNodeCZK) {
    prizeNodeCZK.innerHTML = toCzMoneyFormat(totalcost+actualdeliveryfee, true, '', '');
  }
    
  var prizeNodeEUR = document.getElementById('publicBasketFinalPrizeEUR');
  if (!prizeNodeEUR) {
    return;
  }
  var rate = document.getElementById('rate');
  if (!rate) {
    return;
  }  
  prizeNodeEUR.innerHTML = toEurMoneyFormat(totalcost+actualdeliveryfee, true, '', '', rate.innerHTML);
}

function getDeliveryFee(aTotal) {
	if (!DELIVERYBASKETLIMITS) {
		return 0;
	}
	if (aTotal >= DELIVERYBASKETLIMITS['limit3']) {
		return DELIVERYBASKETLIMITS['cena3'];
	} else if (aTotal >= DELIVERYBASKETLIMITS['limit2']) {
		return DELIVERYBASKETLIMITS['cena2'];
	} else {
		return DELIVERYBASKETLIMITS['cena'];
	}
}

function updateHeaderBasketAmount(aAmountChange) {
  var basketHeaderAmount = document.getElementById('basketHeaderAmount');
  if (!basketHeaderAmount) {
    return;
  }
  var basketHeaderBasicAmount = document.getElementById('basketHeaderAmount-basic');
  if (!basketHeaderBasicAmount) {
    return;
  }  
  total = basketHeaderBasicAmount.innerHTML;
  diference = aAmountChange;
  newtotal = parseFloat(total)+parseFloat(diference);
  basketHeaderAmount.innerHTML = toMoneyFormat(newtotal, false, '', '', 0);
  basketHeaderBasicAmount.innerHTML = newtotal;
  if (IS_LOGED) {
    YAHOO.util.Cookie.set(COOKIE_PRIVATEBASKETTOTAL, newtotal, {expires: new Date("January 12, 2025"), path: "/"});
    //window.alert(YAHOO.util.Cookie.get(COOKIE_PRIVATEBASKETTOTAL));
  } else {
    YAHOO.util.Cookie.set(COOKIE_PUBLICBASKETTOTAL, newtotal, {expires: new Date("January 12, 2025"), path: "/"});
    //window.alert(YAHOO.util.Cookie.get(COOKIE_PUBLICBASKETTOTAL));
  }
}

function setBasketItemAmountFields() {
  if (!document.getElementById('publicBasketFinalPrize')) {
    // adding into basket, not basket detail
    return;
  }
  publicBasketObject = get(PUBLICBASKET);
  for(var i = 0; i<publicBasketObject.length; i++) {
    itemAmountNode = document.getElementById('publicBasketItemAmount-'+publicBasketObject[i].id);
    if (itemAmountNode) {
      itemAmountNode.value = publicBasketObject[i].amount;
    } 
  }
}

function doUpdatePublicBasketItemAmount(aItemID, aAmount) {
  //window.alert('ID: '+aItemID+' ks '+aAmount);
  var amount = new Number(aAmount).valueOf();
  if (!YAHOO.lang.isNumber(aItemID) || !YAHOO.lang.isNumber(amount)) {
    return;
  }
  //window.alert('ID: '+aItemID+' ks '+aAmount);
  publicBasketCookie = YAHOO.util.Cookie.get(COOKIE_PUBLICBASKET);
  newCookieValueArray = new Array();
  newCookieValue = "";
  // some items are already in the basket
  if (publicBasketCookie && publicBasketCookie != "") {
    basketItemsData = publicBasketCookie.split(",");
    updated = false;
    for(i = 0; i<basketItemsData.length; i++) {
      basketItemData = basketItemsData[i].split("-");
      if (YAHOO.lang.isNumber(new Number(basketItemData[0]).valueOf()) && YAHOO.lang.isNumber(new Number(basketItemData[1]).valueOf())) {
        if (basketItemData[0] == aItemID) {
          updated = true;
          if (amount > 0) {
            newCookieValueArray[newCookieValueArray.length] = aItemID+"-"+aAmount;
          }        
        } else {
          newCookieValueArray[newCookieValueArray.length] = basketItemData[0]+"-"+basketItemData[1];
        }
      }
    }
    if (!updated) {
      newCookieValueArray[newCookieValueArray.length] = aItemID+"-"+aAmount;
    }
    newCookieValue = newCookieValueArray.join(","); 
  // create new cookie
  } else {
    newCookieValue = aItemID+"-"+aAmount;
  }
  
  YAHOO.util.Cookie.set(COOKIE_PUBLICBASKET, newCookieValue, {expires: new Date("January 12, 2025"), path: "/"});
  //YAHOO.util.Cookie.set("name", "value");
  //window.alert("nova "+newCookieValue); 
  updatePublicBasketFinalPrize(aItemID, aAmount);
  setBasketItemAmountFields();
}

function removePublicBasketItem(aItemID, aItemRowNode, aItemDataRowNode) {
  //window.alert('ID: '+aItemID);
  //var value = YAHOO.util.Cookie.get("name");
  var prize = document.getElementById("prize-basic-"+aItemID);
  var amount = getItemAmountFromBasket(aItemID);
  updateHeaderBasketAmount((-1)*parseFloat(prize.innerHTML)*amount);
  doUpdatePublicBasketItemAmount(aItemID, 0);
  aItemRowNode.parentNode.removeChild(aItemRowNode); 
  aItemDataRowNode.parentNode.removeChild(aItemDataRowNode);
  updatePublicBasketFinalPrize(aItemID, 0);
  if (isPublicBasketEmpty()) {
    renderEmptyBasket();
  }
}

function getItemAmountFromBasket(aItemID) {
  publicBasketCookie = YAHOO.util.Cookie.get(COOKIE_PUBLICBASKET);
  if (!publicBasketCookie) {
    return 0;
  }
  basketItemsData = publicBasketCookie.split(",");
  for(i = 0; i<basketItemsData.length; i++) {
    basketItemData = basketItemsData[i].split("-");
    if (YAHOO.lang.isNumber(new Number(basketItemData[0]).valueOf()) && YAHOO.lang.isNumber(new Number(basketItemData[1]).valueOf())) {
      if (basketItemData[0] == aItemID) {
        return new Number(basketItemData[1]).valueOf();
      }
    }
  }
  return new Number(0).valueOf();
}

// public basket
function initiatePublicBasket() {
	createInfoDialog();
	createWaitDialog();
}

function isPublicBasketEmpty() {
  var publicBasketObject = get(PUBLICBASKET);
  if (publicBasketObject) {
    for(var i = 0; i<publicBasketObject.length; i++) {
      if (publicBasketObject[i].amount > 0) {
        return false;
      }
    }
  }
  return true;
}

function renderEmptyBasket() {
  var publicBasket = document.getElementById('publicBasketTable');
  var outerDiv = publicBasket.parentNode;
  var outerParentDiv = outerDiv.parentNode;
  publicBasket.parentNode.parentNode.removeChild(outerDiv);
  
  var clearBasketForm = document.getElementById('clearBasketForm');
  if (clearBasketForm) {
    clearBasketForm.parentNode.removeChild(clearBasketForm);
  }
  
  var confirmBasketForm = document.getElementById('confirmBasketForm');
  if (confirmBasketForm) {
    confirmBasketForm.parentNode.removeChild(confirmBasketForm);
  }  
  
  var clearBasketDiv = document.getElementById('clearBasketDiv');
  if (clearBasketDiv) {
    clearBasketDiv.parentNode.removeChild(clearBasketDiv);
  }   
  
  var addressBasketDiv = document.getElementById('addressBasketDiv');
  if (addressBasketDiv) {
    addressBasketDiv.parentNode.removeChild(addressBasketDiv);
  }   
    
  /*var newNode = document.createElement('p');
  newNode.textContent = 'Košík pro nepřihlášené uživatele je prázdný.';
  outerDiv.appendChild(newNode);*/
  var newNode = document.createElement('div');
  YAHOO.util.Dom.addClass(newNode, 'hintblock');  
  var newNode2 = document.createElement('p');
  newNode2.innerHTML = EMPTY_PUBLIC_BASKET;
  newNode.appendChild(newNode2);  
  outerParentDiv.appendChild(newNode);  
}

function setFilterVisibility(aLinkDiv, aFilterDivName) {
  div = document.getElementById(aFilterDivName);
  if (div.style.display == "none" || div.style.display == "") {
    div.style.display = "block";
    aLinkDiv.innerHTML = FILTER_CLOSE;
  } else {
    div.style.display = "none";
    aLinkDiv.innerHTML = FILTER_OPEN;
  }
}

function checkIndex(aDivFrom, aDivTo, aCalledFrom) {
  if (aDivFrom.selectedIndex > aDivTo.selectedIndex) {
    //window.alert('Velikost "OD" nemůže být větší, než velikost "DO".');
    if (aCalledFrom) {
      aDivFrom.selectedIndex = aDivTo.selectedIndex;
    } else {
      aDivTo.selectedIndex = aDivFrom.selectedIndex; 
    }
  }
}

