// JavaScript Document

var _JsonObj = null;
var _iMarketIndex = null;
var _iRotaryIndex = null;
var _iShowingIndex = null;
var displayMarket = null;
// "site" object is create on the page's domready event
var Site = {
    // Add general site initialization functions here

    start: function() {

        Site.setupDropDowns();

    },

    // Variable to store current page style
    setupDropDowns: function() {

        if (!window.demo_path) window.demo_path = '/assets/';
        var demo_path = window.demo_path;
        // --

        var dataUrl = demo_path + 'ratecard.json';
        //console.log("dataUrl = " + dataUrl);

        // Create counter
        var iCount = 0;
        
        // Get the "Market" DD control
        var selMarket = $('selMarket');
        
        var request = new Request.JSON({
            method: 'get',
            url: dataUrl,
            onComplete: function(jsonObj) {

                _JsonObj = jsonObj;
                //setTimeout(displayMarketCall, 1000);

                if (displayMarket == null) {
                
                    // If the displayMarket function = null, define it (fix for IE7 only)
                    var displayMarket = function(rates) {
  
                        rates.each(function(rate) {
 
                            var elOption = new Element('option', { 'value': iCount });
                            elOption.set("text", rate.market);

                            elOption.inject(selMarket, 'bottom');

                            iCount += 1


                        });

                    }; // End var displayMarket = function(rates) {
                }

                displayMarket(_JsonObj.rates);

            }
        }).send()

        var displayMarketCall = function() {
            //alert('_JsonObj.rates = ' + _JsonObj);

        };

        var resetResults = function() {
            var elemResult1 = $('results1');
            var elemResult2 = $('results2');
            var elemResult3 = $('results3');


            elemResult1.set('text', '-');
            elemResult2.set('text', '');
            elemResult3.set('text', '');


        };

        var resetMarket = function() {


            var mChildren = selMarket.getChildren();

            mChildren.each(function(child) {
                if (child.getProperty("value") != "-1") {
                    child.destroy();
                }
            });
            selMarket.disabled = true;
        };

        var resetRotary = function() {

            var rChildren = selRotary.getChildren();


            rChildren.each(function(child) {
                if (child.getProperty("value") != "-1") {
                    child.destroy();
                }
            });
            selRotary.disabled = true;
        };


        var resetShowing = function() {

            var sChildren = selShowing.getChildren();


            sChildren.each(function(child) {
                if (child.getProperty("value") != "-1") {
                    child.destroy();
                }
            });

            selShowing.disabled = true;

        };

        var resetNumber = function() {

            var nChildren = selNumber.getChildren();


            nChildren.each(function(child) {
                if (child.getProperty("value") != "-1") {
                    child.destroy();
                }
            });
            selNumber.disabled = true;
        };

        

        

        //resetResults();

        // Update Market control DD
        var displayMarket = function(rates) {
 
            rates.each(function(rate) {


                var elOption = new Element('option', { 'value': iCount });
                elOption.set("text", rate.market);

                elOption.inject(selMarket, 'bottom');

                iCount += 1


            });

        }; // End var displayMarket = function(rates) {


        selMarket.addEvent('change', function(e) {
            e.stop();
            //console.log("e = " + e.target.value);
            _iMarketIndex = e.target.value;

            resetShowing();
            resetNumber();
            resetResults();

            if (_iMarketIndex != "-1") {
                displayRotary(_JsonObj.rates[_iMarketIndex].rotaries);
            }
        });



        var selRotary = $('selRotary');


        // Update Rotary control DD
        var displayRotary = function(rotaries) {

            //console.log("rotaries.rotary[0] = " + rotaries.rotary[0]);

            //console.log("rotaries = "+ rotaries.rotary.length);

            resetRotary();

            selRotary.disabled = false;


            //console.log("DISABLED = " + selRotary.getProperty('disabled'));

            iCount = 0;

            rotaries.rotary.each(function(rotary) {

                var elOption = new Element('option', { 'value': iCount });
                elOption.set("text", rotary);

                //console.log(elOption.get("text"));

                elOption.inject(selRotary, 'bottom');

                iCount += 1


            });

        }; // END var displayRotary = function(rotaries) {

        selRotary.addEvent('change', function(e) {
            e.stop();
            //console.log("!!e = " + e.target.value);
            _iRotaryIndex = e.target.value;
            //console.log("JSON = " + _JsonObj.rates.count);

            resetShowing();
            resetNumber();
            resetResults();
            displayShowing(_JsonObj.rates[_iMarketIndex].showings);

            //displayNumber(_JsonObj.rates[_iMarketIndex].numpanels);
        });




        var selShowing = $('selShowing');


        // Update Rotary control DD
        var displayShowing = function(showings) {

            //console.log("showings.rotary[0] = " + showings.showing[0]);

            //console.log("showings = "+ showings.showing.length);

            resetShowing();

            selShowing.disabled = false;


            iCount = 0;

            showings.showing[_iRotaryIndex].each(function(showing) {

                var elOption = new Element('option', { 'value': iCount });
                elOption.set("text", showing);

                //console.log(elOption.get("text"));

                elOption.inject(selShowing, 'bottom');

                iCount += 1


            });

        }; // END var displayShowing = function(showings) {



        selShowing.addEvent('change', function(e) {
            e.stop();
            //console.log("!!e = " + e.target.value);
            _iShowingIndex = e.target.value;
            //console.log("SELSHOWING CLICKED");
            displayAnswer(_JsonObj.rates[_iMarketIndex].outputs);
        });



        var selNumber = $('selNumber');


        // Update Numbers control DD
        var displayNumber = function(numpanels) {

            //console.log("showings.rotary[0] = " + numpanels.numpanel[0]);

            //console.log("showings = "+ numpanels.numpanel.length);

            resetNumber();

            selNumber.disabled = false;



            iCount = 0;

            numpanels.numpanel[_iRotaryIndex].each(function(numpanel) {

                var elOption = new Element('option', { 'value': iCount });
                elOption.set("text", numpanel);

                //console.log(elOption.get("text"));

                elOption.inject(selNumber, 'bottom');

                iCount += 1


            });

        }; // END var displayShowing = function(showings) {




        // Update Numbers control DD
        var displayAnswer = function(outputs) {

            var aPrices = outputs.output[_iRotaryIndex][_iShowingIndex];

            var elemResult1 = $('results1');
            var elemResult2 = $('results2');
            var elemResult3 = $('results3');

            var iTotalPrice = aPrices[0] * aPrices[1];

            elemResult1.set('text', String(aPrices[0]));
            elemResult2.set('text', dollarAmount(aPrices[1]));
            elemResult3.set('text', dollarAmount(iTotalPrice));

        }; // END var displayAnswer = function(outputs) {



    }
}
function dollarAmount(Num) { // idea by David Turley
    Num = new String(Num);
    dec = Num.indexOf(".");
    end = ((dec > -1) ? "" + Num.substring(dec, Num.length) : ".00");
    Num = "" + parseInt(Num);
    var temp1 = "";
    var temp2 = "";
    if (checkNum(Num) == 0) {
        alert("This does not appear to be a valid number.  Please try again.");
    }
    else {
        if (end.length == 2) end += "0";
        if (end.length == 1) end += "00";
        if (end == "") end += ".00";
        var count = 0;
        for (var k = Num.length - 1; k >= 0; k--) {
            var oneChar = Num.charAt(k);
            if (count == 3) {
                temp1 += ",";
                temp1 += oneChar;
                count = 1;
                continue;
            }
            else {
                temp1 += oneChar;
                count++;
            }
        }
        for (var k = temp1.length - 1; k >= 0; k--) {
            var oneChar = temp1.charAt(k);
            temp2 += oneChar;
        }
        temp2 = temp2 + end;
        return temp2;
    }
}


function checkNum(data) {      // checks if all characters 
    var valid = "0123456789.";     // are valid numbers or a "."
    var ok = 1; var checktemp;
    for (var i = 0; i < data.length; i++) {
        checktemp = "" + data.substring(i, i + 1);
        if (valid.indexOf(checktemp) == "-1") return 0;
    }
    return 1;
}

// Activate the site function on domready
window.addEvent('domready', Site.start);
