// zabalil jsem volání tvých funkcí do svého skriptu 
//+ jsem opravil výstup z LoadCookies (kdyz nic nenajde vraci 0, radeji "")
//****************************************************************************


//zaemuluji jmenne prostory
Alz = new Object();
//------------------------


//----CharCode-Start-----
//  prevod retezcu do pole cisel a naopak
//-----------------------
Alz.CharCode = function() {
  return {
  
    //Prevod stringu na retezce cisel
    Encode : function (input) {
      var tmp;
      var num_out = '';
      for(i = 0; i < input.length; i++) {
        tmp = '00' + input.charCodeAt(i).toString(32);
        num_out += tmp.substr(tmp.length - 2, 2);
      }
      return num_out;
    },
    
    //Prevod retezce cisel zpet na string
    Decode : function (input) {
      var tmp;
      var arr_out = new Array();
      for(i = 0; i < input.length; i+=2) {
        tmp = input.substr(i,2);
        arr_out.push(parseInt(tmp,32));
      }
      var lcl = String.fromCharCode.apply(null,arr_out);
      return lcl;
    }
  };
}();
//---CharCode-end--------

//----Cookie-start-------
//  prace s kukinami
//-----------------------
Alz.Cookie = function() {
  return {
  
    //Ukladani subkukiny
    SaveSub : function (Name, SubName, Value){
        //je co ukladat?
        if (Value == null || Value.length == 0) return;
      //Slozim subkukinu
      var arrTemp = this.Load(Name);
      var arrCook = new Array();
      //existuje kukina Name?
      if (arrTemp.length > 2) {
      arrTemp = arrTemp.split("&");
      for(var i = 0; i < arrTemp.length; i++){
        arrCook[arrTemp[i].split("=")[0]] = unescape(arrTemp[i].split("=")[1]);
        }
      }
      arrCook[SubName] = Value; //nastavim subkukinu   
      //Prevod na string
      var data = "";
      for (var item in arrCook) {
        data += item + "=" + escape(arrCook[item]) + "&";
      }
      data = data.substring(0,data.length - 1); //oprava posledniho clenu &  
      //preposlani dalsich parametru
      var argv = arguments;
    	var argc = argv.length;
    	var expires = (argc > 3) ? argv[3] : null;
    	var path = (argc > 4) ? argv[4] : null;
    	var domain = (argc > 5) ? argv[5] : null;
    	var secure = (argc > 6) ? argv[6] : false;
    	//ukladam
    	document.cookie = Name + "=" + data + ((expires == null) ? "" : ("; expires=" +	expires.getUTCDate())) +	((path == null) ? "" : ("; path=" + path)) +	((domain == null) ? "" : ("; domain=" + domain)) +	((secure == true) ? "; secure" : "");
    },

    //Nacteni subkukiny
    LoadSub : function (Name,SubName){
    	return LoadSubCookies(Name,SubName);
    },

    //Nacteni kukiny
    Load : function (Name){
      var tmp = LoadCookies(Name);
      if (tmp == 0)
        return "";
    	return tmp;
    }
  };
}();
//----Cookie-end---------


//-----CONST-start-------
//  Jedno misto pro konstanty 
//-----------------------
Alz.CONST = function(parent) {
  var public = {
    //Konstanty
  nLENGTH_NAME  : 34,    //max delka popisu     
  nSIZE_STACK   : 3 * 3, //3 zaznamy po třech prvcich
  sBREAK_CHAR   : '@'    //znak na oddeleni prvku
  };
  var xxxpublic = {
  nLENGTH_NAME : function() {return private.nLENGTH_NAME},        
  nSIZE_STACK :  function() {return private.nSIZE_STACK}, 
  sBREAK_CHAR :  function() {return private.sBREAK_CHAR}
  };
  
  return public;
}(Alz);
//-----CONST-end---------

//---DetailPage-start----
//  Ulozi navstivenou stranku do kukiny
//-----------------------
Alz.DetailPage = function(parent) {
  var public = {
    
    //Nacte data ze stranky
    GetUpInfo : function () {
      var line = new Object();
      var form = document.getElementById('QueryStatusForm');
      if (! (form && form.link && form.code && form.name))
        return null; 
      line = {
        link : parent.CharCode.Encode(form.link.value),
        code : parent.CharCode.Encode(form.code.value),
        name : parent.CharCode.Encode(this.Crop(form.name.value))
      }
      return line;
    },
    
    //Oreze velikost
    Crop: function(text) {
      if (text != null && text.length > parent.CONST.nLENGTH_NAME)
        return text.substr(0,parent.CONST.nLENGTH_NAME);
      else
        return text;
    },
    
    //Ulozi data do kukiny
    Save : function(o) {
      if (o.link == null || o.code == null || o.name == null )
        return; //neni co ukladat
      if (o.link == "" || o.code == "" || o.name == "" )
        return; //neni co ukladat
      var stack;
      var last = parent.Cookie.LoadSub('sett', 'last',null,null,'.alza.cz');
      last = (last) ? last + parent.CONST.sBREAK_CHAR : '';
      if (this.IsIncludes(last,o))
        return; //zasobnik uz obsahuje tyto prvky
      
      last += o.link + parent.CONST.sBREAK_CHAR + o.code + parent.CONST.sBREAK_CHAR + o.name;
      stack = last.split(parent.CONST.sBREAK_CHAR);
      stack = (stack.length > parent.CONST.nSIZE_STACK) ? stack.slice(stack.length - parent.CONST.nSIZE_STACK,stack.length) : stack;
      parent.Cookie.SaveSub('sett', 'last', stack.join(parent.CONST.sBREAK_CHAR),null,null,'.alza.cz');
    },
    
    //Vykonny prikaz - nacte data a ulozi je do kukiny
    SaveInfo : function() {
      var data = this.GetUpInfo();
      if (data == null) return; //kontrola, mam data ?
      this.Save(data);
    },
    
    //Test proti duplikaci navtivenych stranek
    IsIncludes : function(last,o) {
      if (last == null || o == null) return false; 
      var stack = last.split(parent.CONST.sBREAK_CHAR);
      for (var i = 0; i < stack.length; i++) {
        if (stack[i] == o.code) return true;
      }
      return false;
    }
  };
  
  return public;
}(Alz);

// zablokovano setTimeout('Alz.DetailPage.SaveInfo()',2000);
//----Detail-end---------

//---ViewHistory-start---
//  Zobrazi tabulku naposledy navtivenych stranek
//-----------------------
Alz.ViewHistory = function(parent) {
  var public = {
  
    //Nacte data
    Load : function() {
      var last = parent.Cookie.LoadSub('sett', 'last');
      last = (last == null) ? '' : this.Delete(last);
      return last;
    },
    
    //Smaze data stareho formatu
    Delete : function(text) {
      var test = ',';
      if (text.indexOf(test) > -1) {
        parent.Cookie.SaveSub('sett', 'last',''); //(Name, SubName, Value)
        return '';
      } else {
        return text;
      }
    },
    
    //Zobrazi data
    View : function(last) {
      var table, line;
      var stack = last.split(parent.CONST.sBREAK_CHAR);
      stack.reverse();
      table = '<div class="rightBox PrintHide"><div class="rightBoxH">Naposledy navštívené</div><div class="rightBoxB">';
      for (var i=0; i < stack.length; i += 3) {
        line = '<a href="' + parent.CharCode.Decode(stack[i+2]) + '" ><img style="margin: auto\; display: none\;" onload="this.style.display=\'block\'\;" src="http://img.alza.cz/Foto/f1/' + parent.CharCode.Decode(stack[i+1]) + '.jpg" alt="" /><br /><div class="tal linkNew"> • ' + this.Dotted(parent.CharCode.Decode(stack[i]))  + '</div></a>'
        table += line;
      }
      table += '</div></div>';
      document.write(table);
      return(table);
    },
    
    //otečkuje text
    Dotted : function(text) {
      if (text.length == parent.CONST.nLENGTH_NAME)
        return text + '...';
      else
        return text;
    },
    
    //Vykonny prikaz - nacte data a zobrazi je
    Main : function() {
      /* zablokovano var stack = this.Load();
      if (stack.length == 0) return; //nic se z kukiny nenacetlo
      this.View(stack);*/
    }
  };
  
  return public;
}(Alz);
//---ViewHistory-end-----

