/*
	Copyright (c) 2004-2008, The Dojo Foundation
	All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
*/


if(dojo.version.flag!=="maccosmetics"){
dojo.registerModulePath("site","/js/v1/site");
}
dojo.require("generic.img");
dojo.require("site.cart");
dojo.require("generic._base");
dojo.require("generic.flashx");
dojo.require("site.popupMessage"); // utility nav
// footer
dojo.require("site.bottomFixed");
dojo.require("generic.menu");

var cartStatus={};
var global={cartHandler:new site.cart(),playerversion:null};
if(navigator.userAgent.indexOf("Macintosh")!=-1){
global.playerversion="10.0.0";
}
dojo.addOnLoad(function(){
heightHandler.init();
cartStatus.init();

    // utility nav in global nav
    utilitynav.init();

    // footer
    if (dojo.isIE == 6) {
        var footer = new site.bottomFixed({
            node: dojo.byId("footernav")
        });
    }   
    var utilityNavBottom = new site.bottomFixed({
        node: dojo.byId("utilitynav"),
        minTop: 472
    });
    // country chooser drop-up
    var footerMenu = new generic.menu({
        menu: "countries_container",
        target: "countries_hd"
    });
    
dojo.query("img.rollover").forEach(function(_1){
var _2=new generic.rollover(_1,null);
});
initLiveChatPopup("gnav_popup_live_chat");
initLiveChatPopup("popup_live_chat");
initLiveChatPopup("popup_live_chat_2");
});
cartStatus={doCartRefresh:false,init:function(){
this.countNode=dojo.byId("global_cart_count");
this.cartHandler=global.cartHandler;
this.updateCount();
var _3=dojo.byId("shopping_bag_items");
if(_3){
dojo.removeClass(_3,"hidden");
}else{
return;
}
var _4=this;
dojo.subscribe("/page/cart/alterCart",this,function(_5){
_4.onAlterCart(_5);
});
},onAlterCart:function(_6){
this.updateCount();
if(_6.action==="add"&&_6.cartType==="checkout"){
this.doCartRefresh=true;
if(dojo.global.mymacNav){
dojo.global.mymacNav.handlePanelRefresh({event:"alter_cart"});
}
}
},updateCount:function(){
if(this.countNode){
var _7=this.cartHandler.getItemCount();
this.countNode.innerHTML=_7;
}
}};
heightHandler={pagetype:null,min:620,winh:0,bodyh:0,bodyhOriginal:0,bodyhWithoutPanel:0,offset:0,isCMS:false,spacer:null,excludeOnResize:["color_play"],excludeOnload:["color_play","locator"],isLoading:false,isResizing:false,timer:null,isIE6:false,hasCMSLayers:false,init:function(){
this.hasCMSLayers=(dojo.query(".cms_layer","main_content_td").length>0);
if(this.hasCMSLayers){
this.cmsCleanup();
}
var _8=dojo.byId("globalnav_container");
if(!_8){
return;
}
var _9=dojo.byId("column_spacer");
if(dojo.isIE==6){
this.isIE6=true;
var _a=dojo.byId("color_nav_td");
_9=(_a?_a:_9);
}
this.spacer=_9;
this.setPageType();
var _b=dojo.byId("footernav");
this.offset=(_b?_b.offsetHeight:this.offset);
this.winh=this.getWindowHeight();
if(this.winh<=this.offset){
this.winh=(this.offset*2);
}
if(this.pagetype!=="home"){
this.bodyhOriginal=this.getBodyHeight();
this.bodyh=this.bodyhOriginal;
}
this.onLoad();
dojo.subscribe("/panelnav/event/show",this,function(_c){
var _d=(_c.type==="accordion"?true:false);
if(!_d){
try{
_d=dijit.byId(_c.subId).hasLoaded;
}
catch(err){
}
}
if(_d){
this.onPanel("show",_c);
}
});
dojo.subscribe("/globalnav/event/getcontent/onload",this,function(_e){
try{
_e.id=dijit.byId(_e.parentId).panelId;
}
catch(err){
}
if(_e.id){
this.onPanel("show",_e);
}
});
dojo.subscribe("/panelnav/event/hide",this,function(_f){
this.onPanel("hide",_f);
});
if(dojo.indexOf(this.excludeOnResize,this.pagetype)==-1){
dojo.connect(window,"onresize",this,"onResize");
}
this.isLoading=false;
},cmsCleanup:function(){
var _10=[];
dojo.forEach(dojo.query(".cms_layer","main_content_td"),function($_){
pushNew(_10,$_.parentNode);
});
dojo.forEach(_10,function($_){
if(!dojo.hasClass($_,"noCMSCleanup")){
parseCMSLayers($_);
}
});
function parseCMSLayers(_13){
var _14=false;
if(dojo.hasClass(_13,"hidden")){
_14=true;
_13.origLeft=_13.style.left;
_13.style.left="-5000px";
dojo.removeClass(_13,"hidden");
}
var _15=dojo.query(".cms_layer",_13);
try{
var _16=_15.sort(function(a,b){
return parseInt(a.style.top)-parseInt(b.style.top);
});
}
catch(e){
var _19=[];
for(var i=0;i<_15.length;i++){
_19.push(_15[i]);
}
try{
var _16=_19.sort(function(a,b){
return parseInt(a.style.top)-parseInt(b.style.top);
});
}
catch(e){
}
}
if(!_16){
console.log("parseCMSLayers: output is null");
return;
}
var _1d=[];
var _1e=[];
_1d[0]=[];
var _1f=0;
var _20=0;
for(var i=0;i<_16.length;i++){
_16[i].style.height="auto";
_16[i].cmsTop=parseInt(_16[i].style.top);
_16[i].actualHeight=parseInt(_16[i].clientHeight);
_16[i].impliedTopMargin=(i==0)?_16[i].cmsTop:_16[i].cmsTop-_16[i-1].cmsTop-_16[i-1].actualHeight;
_20=(i==0)?_16[i].style.top:_16[i-1].style.top;
if(_16[i].style.top==_20){
}else{
_1d[_1f]=_1d[_1f].sort(function(a,b){
return parseInt(a.style.left)-parseInt(b.style.left);
});
_1f++;
_1d[_1f]=[];
}
_1d[_1f].push(_16[i]);
}
_1d[_1f]=_1d[_1f].sort(function(a,b){
return parseInt(a.style.left)-parseInt(b.style.left);
});
var o={};
var css="";
var _27=(_13.id=="main_content_td")?476:0;
for(var i=0;i<_1d.length;i++){
for(var j=0;j<_1d[i].length;j++){
o=_1d[i][j];
css="position:relative;";
css+="width:"+o.style.width+";";
css+="height:"+o.actualHeight+"px;";
css+="margin-left:"+(parseInt(o.style.left)-_27)+"px;";
css+="margin-top:"+o.impliedTopMargin+"px;";
o.style.cssText=css;
_13.appendChild(o);
}
}
if(_14){
dojo.addClass(_13,"hidden");
_13.style.left=_13.origLeft;
}
};
function pushNew(arr,o){
var n=true;
for(var i=0;i<arr.length;i++){
if(arr[i]==o){
n=false;
break;
}
}
if(n){
arr.push(o);
}
};
try{
var _2d=(dojo.isSafari)?dojo.byId("color_nav_standalone"):dojo.byId("color_nav");
_2d.style.height=(dojo.byId("main_table").scrollHeight+dojo.byId("footernav").clientHeight+50)+"px";
}
catch(e){
}
},onLoad:function(){
if(dojo.indexOf(this.excludeOnload,this.pagetype)>-1){
if(!this.isIE6){
return;
}else{
if(!dojo.byId("color_nav_container")){
return;
}
}
}
this.isLoading=true;
var h=(this.winh>this.min)?this.winh:this.min;
var _2f=this.spacer;
if(this.pagetype==="home"){
h=(this.winh-this.offset);
this.spacer=_2f=dojo.byId("main_content");
_2f.style.height=h+"px";
}else{
if(!this.hasCMSLayers&&(h>=this.bodyh)){
_2f.style.height=h+"px";
}
if(this.isIE6){
var _30=(dojo.isSafari)?dojo.byId("color_nav_standalone"):dojo.byId("color_nav");
if(_30){
var _31=(2800>this.bodyh)?2800:this.bodyh;
if(dojo.isIE){
_30.style.height=this.bodyh+"px";
}else{
if(dojo.isSafari){
_30.style.height=_31+"px";
}else{
setTimeout(function(){
_30.style.height=_31+"px";
},2000);
}
}
}
_2f.style.height=this.bodyh+"px";
}else{
if(this.pagetype==="flash_browser"){
_2f.style.height=h+"px";
}
}
}
this.bodyhOriginal=this.bodyh=this.bodyhWithoutPanel=h;
},setPageType:function(){
var pd=dojo.global.page_data;
if(this.pagetype){
type=this.pagetype;
}else{
try{
this.pagetype=pd.panel_nav["default"].id;
}
catch(err){
}
}
this.isCMS=(pd?pd.cms_generated:null);
},onPanel:function(_33,_34){
if(this.isResizing){
return;
}
var _35=_34.type;
var _36=_34.parentId;
if(_36==="globalnav_container"&&_35==="accordion"){
return;
}
var _37=this.spacer;
var id=_34.id;
if(_35==="panel"){
this.activePanelId=id;
}
var _39=this.activePanelId;
var _3a=dojo.byId(_39);
if(!_3a){
return;
}
this.isResizing=true;
var _3b=this;
var _3c=function(){
if(_33==="hide"&&_35==="panel"){
var h=_3b.bodyhWithoutPanel;
if(h<_3b.winh){
h=_3b.winh;
}
_37.style.height=h+"px";
_3b.bodyh=h;
}else{
if(_33==="show"){
var _3e=_3a.offsetHeight;
if(_3e>_3b.winh&&_3e>_3b.bodyh){
_37.style.height=_3e+"px";
_3b.bodyh=_3e;
}
}
}
_3b.isResizing=false;
};
setTimeout(_3c,600);
},onResize:function(){
if((this.isResizing||this.isLoading)&&!this.isIE6){
return;
}
var _3f=this.getWindowHeight();
var _40=this.bodyh;
var _41=this.pagetype;
if(_3f>_40){
this.doResize(_41,_3f);
}else{
if(_41==="home"){
if((_3f<this.min)&&(this.min>_40)){
this.doResize(_41,this.min);
}
}else{
if(this.isIE6){
_40=this.getBodyHeight();
if(_40!=this.bodyh){
this.doResize(_41,_40);
this.bodyh=_40;
}
}
}
}
this.winh=_3f;
},doResize:function(_42,_43){
var _44=this.timer;
var _45=this.spacer;
var _46=this.offset;
var h=_43;
var _48=this;
var _49=function(){
if(_42==="home"){
h=(_43-_46);
}
_45.style.height=h+"px";
_48.bodyh=_48.bodyhWithoutPanel=h;
};
if(dojo.isIE){
if(_44){
clearTimeout(_44);
}
_44=setTimeout(_49,300);
}else{
_49();
}
},getBodyHeight:function(){
var h=dojo.body().scrollHeight;
return h;
},getWindowHeight:function(){
var h;
if(typeof window.innerHeight!=="undefined"){
h=window.innerHeight;
}else{
h=document.documentElement.clientHeight;
}
return h;
},getCMSHeight:function(){
var h=0;
var _4d=dojo.query(".cms_layer","#main_content_td");
if(_4d.length==0){
return 800;
}
var _4e=_4d[_4d.length-1];
_4e.style.height="auto";
var _4f=parseInt(_4e.clientHeight);
var _50=parseInt(_4e.style.top);
h=(_4f+_50+40);
return h;
}};



// utility Nav
var utilitynav = {
    
    formelements: {},    
    buttonsets: {},
    
    init: function() {
        
        // button/form toggling
        
        var ns = dojo.query(".utilitynav_button", "utilitynav");
        var self = this;
        
        dojo.forEach(ns, function(node) {
            // button/form pair toggling relies on naming convention: utilitynav_[button or form]_[pair name]
            var name = node.id.replace(/utilitynav_button_/g, "");
            var formnode = dojo.byId("utilitynav_form_" + name);
            
            // get form element id's being used (not all locale's may have same elements)
            var ftext = dojo.query("input[type=text]", formnode);
            var fsubmit = dojo.query("input[type=image]", formnode);
            var fieldnode = ftext[0];
            var fieldsubmit = fsubmit[0];
                        
            if (name && formnode && fieldnode) {
                self.buttonsets[node.id] = name;
                self.buttonsets[fieldnode.id] = name;
                self.buttonsets[fieldsubmit.id] = name;
                
                self.formelements[name] = { field: fieldnode.id, submit: fieldsubmit.id };
                dojo.connect(node, 'onclick', self, "showForm");
                dojo.connect(fieldnode, 'onblur', self, "showButton");
                fieldsubmit.isfocused = false;
                fieldsubmit.onfocus = function() { this.isfocused = true; }
                dojo.connect(fieldsubmit, 'onblur', self, "showButton");
            }
        });
              
        // form submits
        if (this.formelements.email) {
            var email_submit = dojo.byId(this.formelements.email.submit);
            var email_field = dojo.byId(this.formelements.email.field);
        }
        if (this.formelements.locator) {
            var locator_submit = dojo.byId(this.formelements.locator.submit);
        }
        
        if (email_submit && email_field) {
            dojo.connect(email_submit, 'onclick', this, "validateEmail");
            dojo.connect(email_field, "onkeypress", this, "validateEmail");
        }
        if (locator_submit) {
            dojo.connect(locator_submit, 'onclick', this, "validateLocator");
        }

    },

    showForm: function(e) {
        var shownode, hidenode;
        var target = e.currentTarget;
        var hidenode = target;
        var name = this.buttonsets[target.id];
        var shownode = dojo.byId("utilitynav_form_" + name);
        this.toggle(hidenode, shownode);
        
        // focus on field
        var focusnode = (this.formelements[name] ? dojo.byId(this.formelements[name].field) : null);
        if (!focusnode) { return; }
        focusnode.focus();
        focusnode.value = "";
        focusnode.isfocused = true;
    },

    showButton: function(e) {
        var shownode, hidenode;
        var target = e.currentTarget;
        target.isfocused = false;
        var name = this.buttonsets[target.id];
        var self = this;
        var submitbtn = dojo.byId(this.formelements[name].submit);
        var field = dojo.byId(this.formelements[name].field);
        
        //console.log("target = "+e.target.id+" current = "+e.currentTarget.id+" name = "+name+" field is focused = "+field.isfocused+" submit is focused = "+submitbtn.isfocused);

        // wait for animation to finish
        var pause = function() {
            if (!submitbtn.isfocused && !field.isfocused) {
                var hidenode = dojo.byId("utilitynav_form_" + name);
                var shownode = dojo.byId("utilitynav_button_" + name);
                self.toggle(hidenode, shownode);           
            }
        }
        setTimeout(pause, 200);
    },
    
    toggle: function(hidenode, shownode) {
        if (hidenode && shownode) {
            hidenode.style.display = "none";
            shownode.style.display = "block";
        }
    },
    
    validateEmail: function(e) {
        var email_field = dojo.byId(this.formelements.email.field);
        dojo.require("dojox.validate.web");
        var popup;
        if ( e.type === "keypress" && (e.keyCode != dojo.keys.ENTER) ) {
            return false;           
        }
        if (dojox.validate.isEmailAddress(email_field.value)) {
            popup = new site.popupMessage({    
                popup: dojo.byId("pop_email_valid"),
                buttonClose: dojo.byId("pop_close_valid"),
                displayDuration: 5000
            });
            dojo.require("generic.jsonrpc");
            var requestArgs = [{
                email: email_field.value
            }];
            var request = new generic.jsonrpc();
            var d = request.callRemote('Customer.emailListSignup', requestArgs);
        } else {
            popup = new site.popupMessage({    
                popup: dojo.byId("pop_email_invalid"),
                buttonClose: dojo.byId("pop_close_invalid"),
                displayDuration: 5000
            });
        }
        popup.show();
        dojo.stopEvent(e);
        return false;    
    },
    
    validateLocator: function(e) {
        var address = dojo.byId(this.formelements.locator.field);
        if(!address.value) {
            var popup = new site.popupMessage({    
                popup: dojo.byId("pop_location_invalid"),
                buttonClose: dojo.byId("pop_close_location"),
                displayDuration: 5000
            });
            popup.show();
            dojo.stopEvent(e);
            return false;
        } 
    }
}


// color bar strip flash
var colorNav = { 
   placeholder: "color_nav_placeholder",
   flashid: "color_nav",
   offW: 8,
   onW: 90,
   timer: null,
 
   embed: function() {   
        if (dojo.isSafari) {
            var cn = dojo.byId("color_nav_container");
            if (cn) { cn.style.display = "none"; }
            this.placeholder = "color_nav_placeholder_standalone";
            this.flashid = "color_nav_standalone";
        } 
 
        var flashvars = {
            gradient_uri: "/flash/color_nav/assets/color_gradient.png",
            application_uri: "/flash/color_play/index.tmpl",
            application_query_string: "?colorplaysample="
        };
    
        var params = {
            quality: "high",
            menu: "false",
            swliveconnect: "true",
            allowscriptaccess: "always",
            scale: "noScale",
            allowfullscreen: "false",
            wmode: "transparent",
            movie: "/flash/color_nav/color_nav.swf",
            flashvars: dojo.objectToQuery(flashvars)
        };
    
        var attr = {
            id: this.flashid,
            name: this.flashid,
            data: "/flash/color_nav/color_nav.swf",
            width: this.offW,
            height: "100%",
            hspace: 0,
            vspace:0,
            align: "top"
        };
        
        if (global.playerversion) {
            attr.playerversion = global.playerversion;
        }
    
        generic.flash.Api.embedSwf(attr, params, this.placeholder); 
         
    },
    setWidth: function(e) {   
        //console.log("setWidth: "+e);
	if (e=="mouseover") { 
	     clearTimeout(colorNav.timer);  
	     dojo.byId(this.flashid).style.width = this.onW + "px";	 
	} else {	 
	     colorNav.timer = setTimeout(function(){    
	         dojo.byId(colorNav.flashid).style.width = colorNav.offW + "px";	 
	     }, 600);
	}
	
    }	
}



function clearField(_51,_52){
_52=_52?_52:"";
_51.value=_52;
if(_51.createTextRange){
var rng=_51.createTextRange();
rng.move("character",0);
rng.select();
}else{
if(_51.selectionStart){
_51.focus();
_51.setSelectionRange(0,0);
}
}
};
var livechatPopArgs={url:"/includes/live_chat_popup.tmpl",resizable:"no",scrollbars:"no",width:483,height:409};
function initLiveChatPopup(_54){
var lc=new generic.popup({activator:_54,url:livechatPopArgs.url,resizable:livechatPopArgs.resizable,scrollbars:livechatPopArgs.scrollbars,width:livechatPopArgs.width,height:livechatPopArgs.height,onOpen:function(){
livechat_cm_tag();
}});
};
function openLiveChatPopup(){
var lc=window.open(livechatPopArgs.url,"live_chat","resizable=0, scrollbars=0, width="+livechatPopArgs.width+", height="+livechatPopArgs.height);
livechat_cm_tag();
};
function openFullWindow(url,_58,w,h){
var w=window.open(url,_58,"menubar=1, toolbar=1, resizable=1, scrollbars=1, width="+w+", height="+h);
};
var newsPopup={open:function(id){
var pop=dojo.byId("pop_news-"+id);
if(pop){
dojo.style(pop,"top","0");
}
},close:function(id){
var pop=dojo.byId("pop_news-"+id);
if(pop){
dojo.style(pop,"top","-5000px");
}
}};
function livechat_cm_tag(){
cmCreateConversionEventTag("Live Chat","1","ASK AN ARTIST","10");
};

