//value
//global: VERSION,BROWSERFIRMA,OBJSHOWDATA,ALLITEMS
//------------------------------------------------------------------------------
var OBJKORB=new shpkorbclass();

//class
//------------------------------------------------------------------------------
function shpkorbclass() {
    var BROWSERNOCOOKIE=false;
    var NOCOOKIEPOPWIN=null;
    var ITEMCOUNTFILDNAME="quantity";
    this.SHPITEMS=new shpkorbitemsclass();

    this.nocookie=function() {
        if (NOCOOKIEPOPWIN==null||NOCOOKIEPOPWIN.closed){
            NOCOOKIEPOPWIN=open("nocookie.html","nocookie","scrollbars,width=590,height=350,screenX=0,screenY=0,dependent=yes,resizable=yes");
//            if (NOCOOKIEPOPWIN==null) location.href="nocookie.html";
            if (NOCOOKIEPOPWIN!=null&&BROWSERFIRMA!="Opera") NOCOOKIEPOPWIN.moveTo((screen.width - 590)/2,(screen.height - 350)/4);
        }
    }

    this.writeshpcookie=function(sel,value,shownocookiepopwin) {
        var oneday=30*24*60*60*1000;
        if (writecookie(sel,value,oneday)) {
            BROWSERNOCOOKIE=false;
        }
        else {
            BROWSERNOCOOKIE=true;
            if(shownocookiepopwin)
                this.nocookie();
        }

        return !BROWSERNOCOOKIE;
    }

    this.writeitems=function() {
        return this.writeshpcookie("items",this.SHPITEMS.getnums(),true);
    }

    this.readitems=function(){
        return this.SHPITEMS.setnums(readcookie("items"));
    }

    this.getsearchkorbitems=function(){
        return this.SHPITEMS.setnums(getsearchvalue(location.search,"items"));
    }

    this.getkorbitems=function(){
        this.getsearchkorbitems();
        if (this.SHPITEMS.items.length==0)
            this.readitems();

        var items=new Array();
        for(var i=0;i<this.SHPITEMS.items.length;i++){
            var item=this.SHPITEMS.finditem(this.SHPITEMS.items[i].num);
            if(item!=null)
                items[items.length]=item;
        }
        return items;
    }

    this.makeitemcountfildname=function(itemnum) {
      return ITEMCOUNTFILDNAME+itemnum;
    }
    
    this.additem=function(itemnum) {
        var item=this.SHPITEMS.additem(itemnum,1);
        this.writeitems();

        var itemcountfild=document.getElementById(this.makeitemcountfildname(itemnum));
        if (itemcountfild!=null)
            itemcountfild.value=item.count;
        this.showitemsum();
    }

    this.deleteitem=function(itemnum) {
        var item=this.SHPITEMS.deleteitem(itemnum);
        var itemcountfild=document.getElementById(this.makeitemcountfildname(itemnum));
        if (itemcountfild!=null)
            itemcountfild.value=(item==null||item.count<1)?"":item.count;

        this.showitemsum();
        if (this.SHPITEMS.items.length==0)
            this.deleteitems();
        else
            this.writeitems();
    }

    this.deleteitems=function() {
        deletecookiesel("items");
        this.showitemcount();
    }

    this.showitemcount=function() {
        for (var i=0;i<OBJSHOWDATA.items.length;i++){
            var itemcountfild=document.getElementById(this.makeitemcountfildname(OBJSHOWDATA.items[i].num));
            if (itemcountfild!=null) {
                var item=this.SHPITEMS.findkorbitem(OBJSHOWDATA.items[i].num);
                itemcountfild.value=(item==null||item.count<1)?"":item.count;
            }
        }
        this.showitemsum();
    }

    this.showitemsum=function() {
        var sum=0;
        var pricesum=0.0;
        for (var i=0;i<this.SHPITEMS.items.length;i++){
            sum+=this.SHPITEMS.items[i].count;
            pricesum+=this.SHPITEMS.items[i].count*parsefloatde(this.SHPITEMS.items[i].price);
        }

        var itemform=document.getElementById("itemform");
        if (itemform!=null){
            itemform.sum.value=sum;
            itemform.itemsum.value=this.SHPITEMS.items.length;
            itemform.pricesum.value=valueoffloatde(pricesum);
        }
    }

    this.itemversion=function() {
        var v=readcookie("version");
        if (v==VERSION)
            return true;
        this.deleteitems();
        return this.writeshpcookie("version",VERSION,false);
    }

    this.readsearchstring=function(){
        return readcookie("search");
    }
    this.writesearchstring=function(search){
        return this.writeshpcookie("search",search,false);
    }
}

function shpkorbitemsclass() {
    this.items=new Array();

    this.additem=function(itemnum,count) {
        var item=this.findkorbitem(itemnum);
        if (item!=null)
            item.count+=count;
        else {
            item=new shpkorbitemclass();
            item.setitem(this.finditem(itemnum));
            item.count=count;
            this.items[this.items.length]=item;
        }
        return item;
    }

     this.deleteitem=function(itemnum) {
        var item=this.findkorbitem(itemnum);
        if (item==null)
            return null;

        item.count--;
        if (item.count>0)
            return item;

        var idx=this.finditemidxofnum(this.items,itemnum);
        for (var i=idx;i<this.items.length-1;i++)
            this.items[i]=this.items[i+1];
        this.items.length--;
        return null;
    }

    this.deleteitems=function() {
        this.items.length=0;
    }

    this.setnums=function(numsstr){
        this.deleteitems();
        if(numsstr==null||numsstr=="")
            return this.items;

        var nums=numsstr.splittrim(",");
        for(var i=0;i<nums.length;i+=2){
            if (nums[i]!="")
                this.additem(nums[i],parseInt(nums[i+1]));
        }

        return this.items;
    }

    this.getnums=function(){
        var nums=new Array();
        for(var i=0;i<this.items.length;i++){
            nums[nums.length]=this.items[i].num;
            nums[nums.length]=this.items[i].count;
        }
        return makestr(nums,",");
    }

    this.findkorbitem=function(itemnum){
        return this.finditemofnum(this.items,itemnum);
    }

    this.finditem=function(itemnum){
        return this.finditemofnum(ALLITEMS,itemnum);
    }

    this.finditemofnum=function(itemarr,itemnum){
        var idx=this.finditemidxofnum(itemarr,itemnum);
        if(idx==-1)
            return null;
        else
            return itemarr[idx];
    }

    this.finditemidxofnum=function(itemarr,itemnum){
        for (var i=0;i<itemarr.length;i++)
            if (itemarr[i].num==itemnum)
                return i;
        return -1;
    }
}

function shpkorbitemclass() {
    this.num="";
    this.count=0;
    this.price="";

    this.setitem=function(item){
        if (item==undefined||item==null)
            return false;
        this.num=item.num;
        this.count=1;
        this.price=item.price;
        return true;
    }

    this.set=function(str){
        if (str==undefined||str==null||str=="")
            return false;
        var strs=str.splittrim("\t");
        if (strs.length!=3)
            return false;
        this.num=strs[0];
        this.count=parseInt(strs[1]);
        this.price=strs[2];
        return true;
    }
    this.get=function(){
        return this.num+'\t'+this.count+'\t'+this.price;
    }
}

