﻿function GetShippingCost(cost, site, location, service)
{
    switch (site)
    {
        case "Amazon":
             switch (location)
            {
                 case "United States":
                 if (cost >= 25.00)
                 {
                    return "0.00";
                 }
                 
                    switch (service)
                    {
                        case "Regular":
                        case "Expedited":                     
                            return "3.97";
                        case "Two Day Air":
                            return "9.98";
                        case "Overnight":
                            return "18.98";
                    }
                break;
                case "Canada":
                    switch (service)
                    {
                        case "Regular":
                            return "5.98";
                        case "Expedited":                     
                            return "9.98";
                        case "Two Day Air":
                        case "Overnight":
                            return "23.98";
                    }
                case "Germany":
                case "France":
                case "United Kingdom":
                    switch (service)
                    {
                        case "Regular":
                            return "8.98";
                        case "Expedited":                     
                            return "12.98";
                        case "Two Day Air":
                        case "Overnight":
                            return "35.98";
                    }
                break;
                case "Japan":    
                    switch (service)
                    {
                        case "Regular":
                            return "11.48";
                        case "Expedited":                     
                            return "15.98";
                        case "Two Day Air":
                        case "Overnight":
                            return "28.98";
                    }
                break;                    
                case "Australia":
                     switch (service)
                    {
                        case "Regular":
                            return "11.98";
                        case "Expedited":                     
                            return "15.98";
                        case "Two Day Air":
                        case "Overnight":
                            return "32.98";
                    }
                break;    
                case "Other":
                    switch (service)
                    {
                        case "Regular":
                            return "11.98";
                        case "Expedited":                     
                            return "16.98";
                        case "Two Day Air":
                        case "Overnight":
                            return "38.98";
                    }
                break;    
            }
        break;    
        case "Amazon Marketplace":
             switch (location)
            {
                case "United States":
                    switch (service)
                    {
                        case "Regular":
                            return "3.99";
                        case "Expedited":                     
                            return "6.99";
                        case "Two Day Air":
                        case "Overnight":
                            return "N/A";
                    }
                break;
                case "Canada":
                case "Germany":
                case "Japan":
                case "France":
                case "United Kingdom":
                case "Australia":
                case "Other":
                    return (service == "Regular" ? "12.49" : "N/A");
            }
        break;
        case "eBay":
            //we should never get here, eBay has its own functions
            return "See Site";
        break;
        
        case "Bookbyte":
             switch (location)
            {
                case "United States":
                    switch (service)
                    {
                        case "Regular":
                            return "3.45";
                        case "Expedited":                     
                            return "12.00";
                        case "Two Day Air":
                            return "15.00";
                        case "Overnight":
                            return "35.00";
                    }
                break;
                case "Canada":
                case "Germany":
                case "Japan":
                case "France":
                case "United Kingdom":
                case "Australia":
                case "Other":
                    return "N/A";
            }
        
        case "eCampus":
            switch (location)
            {
                case "United States":
                    switch (service)
                    {
                        case "Regular":
                        case "Expedited":                     
                            return "3.97";
                        case "Two Day Air":
                            return "9.98";
                        case "Overnight":
                            return "18.98";
                    }
                break;
                case "Canada":
                    return (service == "Regular" ? "15.00" : "N/A"); 
                case "Germany":
                case "Japan":
                case "France":
                case "United Kingdom":
                case "Australia":
                case "Other":
                    return (service == "Regular" ? "23.00" : "N/A");
            }
        break;
        case "Alibris":
            switch (location)
            {
                case "United States":
                    switch (service)
                    {
                        case "Regular":
                            return "3.49";
                        case "Two Day Air":
                            return "9.95";
                        case "Overnight":
                            return "18.95";
                        case "Expedited":
                            return "5.79";
                    }
                break;
                case "Canada":
                    return (service == "Expedited" || service == "Regular" ? "12.95" : "N/A"); 
                case "Germany":
                case "Japan":
                case "France":
                case "United Kingdom":
                case "Australia":
                case "Other":
                    return (service == "Regular" ? "11.95" : "N/A");
            }
        break;
        case "BooksAMillion":
                    switch (location)
            {
                case "United States":
                    if (cost > 25.00)
                    {
                        return "0.00";
                    }
                
                    switch (service)
                    {
                        case "Regular":
                        case "Expedited":                       
                            return "3.98";
                        case "Two Day Air":
                            return "8.98";
                        case "Overnight":
                            return "13.98";
                    }
                break;
                case "Canada":
                case "Germany":
                case "Japan":
                case "France":
                case "United Kingdom":
                case "Australia":
                case "Other":
                    return (service == "Expedited" || service == "Regular" ? "12.95" : "N/A"); 
            }
        break;
        case "BiggerBooks":
            if (location != "United States")
            {
                return "N/A";
            }
            
            switch (service)
            {
                case "Regular":
                case "Expedited":                       
                   return "3.97";
                case "Two Day Air":
                   return "9.98";
                case "Overnight":
                   return "18.98";
            }
        break;
        case "BookCloseouts":
            return "See Site"; //they dont offer standardized shipping prices!
        break;
        case "BunchesOfBooks":
            switch (location)
            {
                case "United States":
                    switch (service)
                    {
                        case "Regular":
                            return "3.00";
                        case "Two Day Air":
                            return "8.25";
                        case "Overnight":
                            return "18.95";
                        case "Expedited":
                            return "5.00";
                    }
                break;
                case "Canada":
                case "Germany":
                case "Japan":
                case "France":
                case "United Kingdom":
                case "Australia":
                case "Other":
                    return (service == "Regular" || service == "Expedited" ? "12.50" : "N/A");
            }
        break;
        case "Buy":
        
            switch (location)
            {
                case "United States":
                    if (cost > 25.00)
                    {
                        return "0.00";
                    }
                
                    switch (service)
                    {
                        case "Regular":
                            return "2.39";
                        case "Two Day Air":
                            return "9.08";
                        case "Overnight":
                            return "11.71";
                        case "Expedited":
                            return "6.38";
                    }
                break;
                case "Canada":
                case "Germany":
                case "Japan":
                case "France":
                case "United Kingdom":
                case "Australia":
                case "Other":
                    return "N/A";
            }
               
        break;
        case "Wiley":
        
            switch (location)
            {
                case "United States":
                    if (cost <= 15.00)
                    {
                        return "4.00";
                    }
                
                    switch (service)
                    {
                        case "Regular":
                        case "Expedited":                    
                            return "5.00";
                        case "Two Day Air":
                            return "10.50";
                        case "Overnight":
                            return "17.50";
                    }
                break;
                case "Canada":
                     switch (service)
                    {
                        case "Regular":
                        case "Expedited":       
                            return "6.00";
                        case "Two Day Air":                          
                        case "Overnight":
                            return "15.00";
                    }
                case "Germany":
                case "Japan":
                case "France":
                case "United Kingdom":
                case "Australia":
                case "Other":
                     switch (service)
                    {
                        case "Regular":
                        case "Expedited":       
                            return "10.50";
                        case "Two Day Air":                          
                        case "Overnight":
                            return "37.50";
                    }
            }
        
        break;
        case "FamilyChristian":
            switch (location)
            {
                case "United States":
                    switch (service)
                    {
                        case "Regular":
                            return "1.99";
                        case "Two Day Air":
                            return "6.99";
                        case "Overnight":
                            return "11.99";
                        case "Expedited":
                            return "2.99";
                    }
                break;
                case "Canada":
                case "Germany":
                case "Japan":
                case "France":
                case "United Kingdom":
                case "Australia":
                case "Other":
                    return (service == "Regular" ? "8.99" : "N/A");
            }
        break;
        case "eBooks":
            return "0.00";
        break;
    }
}

function shippingChanged(locddl, servddl, curddl)
{
        var location = locddl.options[locddl.selectedIndex].text;
        var service = servddl.options[servddl.selectedIndex].text;
        
        spans = document.getElementsByName("shipping");
        for (var i = 0; i < spans.length; i++)
        {
            var id = spans[i].id;
            var site = id.substring(0, spans[i].id.indexOf("_"));
            id = id.replace(site + "_", "");
            var cost = id.substring(0, id.indexOf("_")).replace("$","");
            var rowIndex = id.substring(id.indexOf("_") + 1, spans[i].id.length);
            
            
            
            if (site.indexOf("Buy.com") != -1)
            {
                site = "Buy";
            }
            site = site.replace(".com","");
            
            if (site != "eBay")
            {
                spans[i].innerHTML = GetShippingCost(parseFloat(cost), site, location, service);
            }
            else
            {
                spans[i].innerHTML = eval("GetShippingCostEbay" + rowIndex + "('" + location + "','" + service + "')");
                if (spans[i].innerHTML == "-1")
                {
                    spans[i].innerHTML = "See Site";
                }
            }
        }
        
        currencyChanged(curddl, true, false);
}
