var site = brand;

site.init = function() {  
    /** testing **/
    //generic.flash.abort = true;  
    //site.view.colorNav.abort = true; 
    //site.globalnav.abort = true;
    //site.checkout.abort = true;  
    //site.product.abort = true;
    //site.customerService.abort = true;
       
    /** temporary changes **/
    //turn off features not ready for launch

  
    generic.init(); 
    generic.templatefactory.templateHash = "jsTemplates";

    // brand extention(s) of generic
    generic.overlay = brand.overlay;
    
    getGlobalRBKeys();
    site.setGlobalParams();
    
    site.forms.init();
    
    try {
    var id = page_data.panel_nav["default"].id;
    } catch(e) {
    console.log("page_data.panel_nav missing");
    return;
    }
    
    site.view.init();
    site.globalnav.init();
    site.account.init();
    site.checkout.init();
    site.product.init();
    site.customerService.init();    
    site.livechat.init();
    
    site.overlay.initLinks();
	
};

document.observe("dom:loaded", site.init );


//---------------------------------------------global settings
var global = global || {};
global.isipad = false;

site.setGlobalParams = function () {
    if (page_data) {
        if (page_data.is_ipad_user_agent && page_data.is_ipad_user_agent == 1) {
            global.isipad = true;
        }
    }
};

//-----------------------------------------------------rb keys
var getGlobalRBKeys = function () {    
    generic.rb.language = generic.rb("language");
    global.rb = global.rb || {};
    global.rb.popup_error_message = generic.rb.language.get("popup_error_message");
    generic.rb.language.rb_close = generic.rb.language.get('close');
    //global.rb.download_flash = generic.rb.language.get("download_flash"); // needed?
};
      

//--------------------------------------------------extensions
generic.overlay = brand.overlay;
var mac = mac || {};
mac.productView = mac.productView || {};
brand.product = brand.product || {};
mac.productView.addButton = brand.product.addButton;


//-----------------------------------------------------hacks
//cms-output html panel_navs sometimes have this ancient js
//eg. Artists panel or Customer Service panel
var el = function() { return legacy};
var legacy = { addBehavior:function() {}} 
var BehaviorRollover = false;  


//-----------------------------------------------------legacy    
generic.flash.Api = {};
generic.flash.Api.jsCall = function(method, args) { 
    if (generic.flash.ApiMethods[method]) {
        var resp = generic.flash.ApiMethods[method](args);
        return resp;
    } else {}  
};

generic.flash.ApiMethods = { 
    cuePoint: function() {  
        var args = arguments[0];
        generic.events.fire({event:"videoPlayer:cuePoint", msg:args}); 
    //  var inc = Object.toJson(args);
    //  return {"results": args} 
    },

    cuePointProduct: function(args) {
        var passthru = args[0].actions[0];
        this.cuePoint(passthru);
    },

    alterCart: function(args) {   
        console.log("generic.flash.apiMethods.alterCart "+Object.toJSON(args));
        site.checkout.alterCart.alter(args); 
    },

    pageData: function(nargs) { alert("generic.flash.ApiMethods.pageData");
        var args = nargs[0];
        var result;
        var pd = parent.page_data;
        if (!pd) return;
        if (args && args.query) {
            //console.log("retrieving page_data with query: " + args.query);
            var path = args.query.split(".");
            var length = path.length;
            var value = pd;
            for (var i = 0; i < length; i++) {
                var key = path.shift();
                value = value[key];
            }
            result = value;
        } else {
            result = pd;
        }
        return { "results": result } 
    }, 
    
    notifyEvent: function(nargs) {    
        site.view.colorNav.setWidth(nargs.event);
    },
    
    setElementSize: function(nargs) {  
        //brand.view.setElementSize(nargs[0]);
        site.view.productBrowser.resizeEmbedContainer(nargs[0]);
    }
};


// cms inline functions
//-----------------------------------------------------

function openFullWindow(url, name, w, h) {
    var w = window.open(url, name, "menubar=1, toolbar=1, resizable=1, scrollbars=1, width=" + w + ", height=" + h);
};


