var gPageProducts = new Array ();
var gNumItems;
var gDaibikiCol = false;
var gCartData = new Array();

// utils
function extrFile(url)
{
    var sstr = url;
    var lpos, spos;
    for (;;)
        {
        if ( (spos = sstr.indexOf("/")) < 0 )
            break;
        sstr = sstr.substr(lpos = (spos+1));
        }
    return sstr;
}
function round2(realv,prec)
{
	intVal = Math.pow(10, prec) * realv;
	intVal = Math.round (intVal);
	return  intVal/Math.pow(10, prec);
}
function addcom(numvalue)
{
    var i,j;
    var numv = 0;
    var numvr = 0;
    var nums = "";
    var nums1 = "";
    numv = Number(numvalue);
    if ( numv < 1000 )
    	return numvalue;
    for (i=0;i<3;i++)
        {
        numvr = numv % 1000;
        nums1 = (numvr + 1000).toString().substr(1,3);
        if ( nums == "" )
            nums = nums1; else
            nums = nums1 + ',' + nums;
        numv -= numvr;
        numv /= 1000;
        if ( numv == 0 )
            {
            nums = nums.substr( 3 - numvr.toString().length);
            return nums;
            }
        }
}


//cartCont object
// code:num:url

function cartCont(code,num,url,descr,price,stock,daibiki,charge,weight)
{
   this.code=code;
   this.num=num;
   this.url=url;
   this.descr=descr;
   this.price=price;
   this.stock=stock;
   this.daibiki=daibiki; // 0:furikomionly, 1:daibikiOk
   this.charge=charge; // 0:furikomi, 1:daibiki
   this.weight = weight;
//   this.shipdatem=0;
//   this.shipdated=0;
//   this.shipdayweek=0;
//   this.shiptime=0;
//   this.shipflag=0; // 0:nonspec, 1:timepresent, 2:date, 4:weekday
}
function changeVal(itemIndx)
{
    gPageProducts[itemIndx].order = document.orderOne.elements[gPageProducts[itemIndx].code].selectedIndex;
    if ( gPageProducts[itemIndx].daibiki == 1 )
        gPageProducts[itemIndx].charge = document.orderOne.elements[(gPageProducts[itemIndx].code+'Chrg')].selectedIndex; else
        gPageProducts[itemIndx].charge = 1; // furikomi
    if ( gPageProducts[itemIndx].cartIndex == -1 )
        {
        gCartData[gNumItems] = new cartCont( gPageProducts[itemIndx].code, gPageProducts[itemIndx].order, document.URL,
                                    gPageProducts[itemIndx].descr, gPageProducts[itemIndx].price, gPageProducts[itemIndx].stock,
                                    gPageProducts[itemIndx].daibiki, gPageProducts[itemIndx].charge, gPageProducts[itemIndx].weight );
        gPageProducts[itemIndx].cartIndex = gNumItems;
        gNumItems++;
        } else
        {
        gCartData[gPageProducts[itemIndx].cartIndex].num = gPageProducts[itemIndx].order;
        gCartData[gPageProducts[itemIndx].cartIndex].charge = gPageProducts[itemIndx].charge;
        }
    
    saveCookie();
}
function removeOne(indx)
{
    remCart(indx);
    window.location = window.location;
}
function remCart(indx)
{
    var i;
    if ( gNumItems > 1 )
        {
        for ( i = indx ; i < gNumItems-1; i++ )
            {
            gCartData[i] = gCartData[i+1];
            }
        }
    gNumItems--;
    saveCookie();
}

function compareCart(a,b)
{
    if ( a.code < b.code )
        return -1;
    if ( a.code > b.code )
        return 1;
    return 0;
}
function getCart( cartDisp )
{
    var startCpos, endCpos, yourData;
    var i, j, k;

    gNumItems = 0;
    if ( document.cookie != "" )
        {
        startCpos = document.cookie.indexOf("cart=");
        if ( startCpos >= 0 )
            {
            startCpos += 5;
            yourData = document.cookie.substring(startCpos,document.cookie.length);
            endCpos = yourData.indexOf(";");
            if ( endCpos < 0 )
                 endCpos = yourData.length;
            yourData = unescape(yourData.substring(0, endCpos));
            var arrayOfStrings = yourData.split("*");
            for (gNumItems=i=0; i<arrayOfStrings.length; i+=5)
                {
                if ( cartDisp )
                    {
	            for ( j=0; j<itemlist.length; j++ )
		        {
		        if ( arrayOfStrings[i] == itemlist[j].code )
		            {
                            for ( tmpStock=-1, k=0; k<stocklist.length; k++ )
                                {
                                if ( arrayOfStrings[i] == stocklist[k].code )
                                    {
                                    itemlist[j].stock = stocklist[k].stock;
                                    break;
                                    }
                                }
		            gCartData[gNumItems++] = new cartCont( arrayOfStrings[i], Number(arrayOfStrings[i+1]), arrayOfStrings[i+2],
		                          itemlist[j].descr, itemlist[j].price, itemlist[j].stock,
		                          Number(arrayOfStrings[i+3]), Number(arrayOfStrings[i+4]), itemlist[j].weight );
		            break;
		            }
		        }
		    } else
		    {
		    gCartData[gNumItems++] = new cartCont( arrayOfStrings[i], Number(arrayOfStrings[i+1]), arrayOfStrings[i+2], // code,num,url
		                                       "", 0, 0, Number(arrayOfStrings[i+3]), Number(arrayOfStrings[i+4]), 0 ); // descr, price,stock
                    }
                }
            }
        }
}
function InitPage()
{
    var i,j,k,l=gShopHeere.length, numDaibiki;
    for ( numDaibiki=i=0; i<itemlist.length; i++ )
        for ( j=0; j<gShopHeere.length; j++ )
            {
            if ( gShopHeere[j] == itemlist[i].code )
                {
                gPageProducts[j] = new pro(itemlist[i].code, itemlist[i].descr, itemlist[i].price, itemlist[i].daibiki, itemlist[i].weight );
                numDaibiki += itemlist[i].daibiki;
                for ( k=0; k<stocklist.length; k++ )
                    {
                    if ( gShopHeere[j] == stocklist[k].code )
                        {
                        gPageProducts[j].stock = stocklist[k].stock;
                        break;
                        }
                    }
                for ( k=0; k<gNumItems; k++ )
                    {
                    if ( gShopHeere[j] == gCartData[k].code )
                        {
                        gPageProducts[j].order = gCartData[k].num;
                        gPageProducts[j].cartIndex = k;
                        break;
                        }
                    }
                }
            }
    gDaibikiCol = ( numDaibiki > 0 );
}
function clearAll()
{
    var i;
    for (i=0;i<gShopHeere.length; i++)
        {
        if ( gPageProducts[i].order > 0 )
            gCartData[gPageProducts[i].cartIndex].num = document.orderOne.elements[gPageProducts[i].code].selectedIndex = 0;
        }
    saveCookie();
}
function saveCookie()
{
    var smsg = "";
    for ( i = 0 ; i < gNumItems; i++ )
        {
        if ( gCartData[i].num > 0 )
            {
            smsg += "*" + gCartData[i].code + "*" + gCartData[i].num.toString() + "*" + gCartData[i].url + "*" + gCartData[i].daibiki + "*" + gCartData[i].charge; 
            }
        }
    document.cookie = "cart=" + escape(smsg.substr(1)) + ";path=/";
}
function clearCart()
{
    gNumItems = 0;
    saveCookie();
    window.location = "index.html";
}
function gotoCart()
{
    var i, total;
    for ( total = i = 0 ; i < gNumItems; i++ )
        {
        if ( gCartData[i].num > 0 )
            {
            window.location = "cart.html";
            return;
            }
        }
    alert ("カートは空です");
}
/*
*****
*/
function getDesc( itemCode )
{
    var i;
    for ( i=0;i<gShopHeere.length;i++ )
        {
        if ( gPageProducts[i].code == itemCode )
            {
            return gPageProducts[i].descr;
            }
        }
    return itemCode+"該当なし";
}
function getIndex( itemCode )
{
    var i;
    for ( i=0;i<gShopHeere.length;i++ )
        {
        if ( gPageProducts[i].code == itemCode )
            {
            return i;
            }
        }
    return -1;
}
/*
** 0 >= stock
** 0 < n/a
*/
function getStock( itemCode )
{
    var i;
    for ( i=0;i<gShopHeere.length;i++ )
        {
        if ( gPageProducts[i].code == itemCode )
            {
	    return gPageProducts[i].stock;
            }
        }
    return -1;
}
function getStockText( itemCode )
{
    if ( (cs = getStock( itemCode )) >= 0 )
        return "在庫数："+cs+""; else
        return "";
}
function getUp( itemCode )
{
    var i;
    for ( i=0;i<gShopHeere.length;i++ )
        {
        if ( gPageProducts[i].code == itemCode )
            {
            return gPageProducts[i].price;
            }
        }
    return 0;
}
/*
** maxorder:0 -> gMaxOrder
*/
function getOrderPopup( itemCode, maxorder )
{
    var i, cst;
    if ( (cst = getStock(itemCode)) == 0 )
    	{
    	document.write('<font color=#FF0000>品切れ</font>');
    	return;
    	}
    maxorder++;
    for ( i=0;i<gShopHeere.length;i++ )
        {
        if ( gPageProducts[i].code == itemCode )
            {
	    document.write('<select name="' + gPageProducts[i].code + '" onChange="changeVal(' + i + ');">');
	    if ( maxorder == 0 )
	        numSel = gMaxOrder; else
	        numSel = maxorder;
	    if ( cst >= 0 )
	        {
	        if ( cst < numSel )
	            numSel = cst+1;
	        }
	    for(j=0;j<numSel;j++)
		document.write ( '<option value="' + j + '">' + j );
	    document.write('</select>');
            }
        }
}
function getDaibikiPopup( itemCode )
{
    var i;
    for ( i=0;i<gShopHeere.length;i++ )
        {
        if ( gPageProducts[i].code == itemCode )
            {
            document.write('<select name="' + itemCode + 'Chrg" onChange="changeVal(' + i + ');"><option value=0>代金引換<option value=1>銀行振込');
            }
        }
}
function canuseDaibiki( itemCode )
{
    var j;
    var localDaibikiCol = false;
    if ( gDaibikiCol )
        {
	for ( i=0;i<gShopHeere.length;i++ )
	    {
	    if ( gPageProducts[i].code == itemCode )
		{
		return ( gPageProducts[i].daibiki == 1 );		    
		}
	    }
        } else
        {
        return false;
        }
}

function makeInput2( orderarray )
{
    var i, j, k, numSel,numItem;
    var localDaibikiCol = false;
    if ( gDaibikiCol )
        {
        for ( j=0; j<gShopHeere.length; j++ )
            {
            for ( i = 0; i< orderarray.length;i++)
                {
                if ( gPageProducts[j].code == orderarray[i] )
                    {
                    if ( gPageProducts[j].daibiki == 1 )
                        {
                        localDaibikiCol = true;
                        }
                    }
                }
            if ( localDaibikiCol )
                break;
            }
        }
    
    if ( localDaibikiCol )
        document.write('<tr><td>Code</td><td>説明</td><td>単価</td><td>注文数</td><td>お支払方法</td></tr>'); else
        document.write('<tr><td>Code</td><td>説明</td><td>単価</td><td>注文数</td></tr>');
    for (numItem=i=0;i<gShopHeere.length;i++)
        {
        for ( k = 0; k< orderarray.length;k++)
            {
            if ( gPageProducts[i].code == orderarray[k] )
                {
		numSel = gMaxOrder;
		document.write('<tr><td>' + gPageProducts[i].code + '</td>' );
		if ( gPageProducts[i].stock >= 0 )
		    {
		    document.write('<td>' + gPageProducts[i].descr + '</td>' );
		    if ( gPageProducts[i].stock < gMaxOrder )
			numSel = gPageProducts[i].stock;
		    } else
		    {
		    document.write('<td>' + gPageProducts[i].descr + '</td>' );
		    }
		numSel++;
		document.write('<td align="right">' + addcom(gPageProducts[i].price) + '</td>' );
		document.write('<td><select name="' + gPageProducts[i].code + '" onChange="changeVal(' + i + ');">');
		for(j=0;j<numSel;j++)
		    document.write ( '<option value="' + j + '">' + j );
		document.write('</select></td>');
		if ( gPageProducts[i].daibiki == 1 )
		    {
		    document.write('<td><select name="' + gPageProducts[i].code + 'Chrg" onChange="changeVal(' + i + ');"><option value=0>代金引換<option value=1>銀行振込</td></tr>');
		    } else
		    {
		    if (localDaibikiCol)
			document.write('<td>銀行振込のみ</td></tr>'); else
			document.write('</tr>'); 
		    }
		numItem++;
		break;
		}
	    }
	if ( numItem >= orderarray.length )
	    break;
        }
    document.write('<tr><td align="center" colspan="');
    if ( localDaibikiCol )
        document.write('5'); else
        document.write('4');
//   document.write('"><input type="button" value="クリア" onClick="clearAll()"><input type="button" value="カートを表示" onClick="gotoCart();"></td></tr>');
    document.write('"><input type="button" value="カートを表示" onClick="gotoCart();"></td></tr>');
}

function makeInput()
{
    var i, j, numSel;
    if ( gDaibikiCol )
        document.write('<tr><td>Code</td><td>説明</td><td>単価</td><td>注文数</td><td>お支払方法</td></tr>'); else
        document.write('<tr><td>Code</td><td>説明</td><td>単価</td><td>注文数</td></tr>');
    for (i=0;i<gShopHeere.length;i++)
        {
        numSel = gMaxOrder;
        document.write('<tr><td>' + gPageProducts[i].code + '</td>' );
        if ( gPageProducts[i].stock >= 0 )
            {
            document.write('<td>' + gPageProducts[i].descr + '<br>在庫数：' + gPageProducts[i].stock + '</td>' );
            if ( gPageProducts[i].stock < gMaxOrder )
                numSel = gPageProducts[i].stock;
            } else
            {
            document.write('<td>' + gPageProducts[i].descr + '</td>' );
            }
        numSel++;
        document.write('<td align="right">' + addcom(gPageProducts[i].price) + '</td>' );
        document.write('<td><select name="' + gPageProducts[i].code + '" onChange="changeVal(' + i + ');">');
        for(j=0;j<numSel;j++)
            document.write ( '<option value="' + j + '">' + j );
        document.write('</select></td>');
        if ( gPageProducts[i].daibiki == 1 )
            {
            document.write('<td><select name="' + gPageProducts[i].code + 'Chrg" onChange="changeVal(' + i + ');"><option value=0>代金引換<option value=1>銀行振込</td></tr>');
            } else
            {
            if (gDaibikiCol)
                document.write('<td>銀行振込のみ</td></tr>'); else
                document.write('</tr>'); 
            }
        }
    document.write('<tr><td align="center" colspan="');
    if ( gDaibikiCol )
        document.write('5'); else
        document.write('4');
//   document.write('"><input type="button" value="クリア" onClick="clearAll()"><input type="button" value="カートを表示" onClick="gotoCart();"></td></tr>');
    document.write('"><input type="button" value="カートを表示" onClick="gotoCart();"></td></tr>');
}

function setCurrent()
{
    var i;
    for (i=0;i<gShopHeere.length; i++)
        {
        if ( (gPageProducts[i].stock > 0) || (gPageProducts[i].stock == -1) )
            document.orderOne.elements[gPageProducts[i].code].selectedIndex = gPageProducts[i].order;
        if ( gPageProducts[i].daibiki == 1 )
            document.orderOne.elements[(gPageProducts[i].code+'Chrg')].selectedIndex = gPageProducts[i].charge;
        }
}

