/**
 * @version
 * The print module provides methods for interactive print experience.
 * @requires YUI yahoo, event, dom
 * @package mapsaura_us_site_print
 */

YAHOO.Maps.Print.Controls = {
		fontSize: [['85',''],['100','default'],['122','']], //uses font.css conversion
		layoutType: [['mdd','Map & Directions','default'],['m','Map Only',''],['dd','Directions Only','']],
		//abbreviations: s = start, e = end, f = finish
		mapSize: {sef_s:[289,180], sef_e:[289,180], sef_f: [590,310], se_s: [590, 245], se_e: [590, 245]},
		YDom: YAHOO.util.Dom,
		YEv: YAHOO.util.Event,
		imgs: {},
		msg: {},
		
		addTabs: function() {
			
			var t = document.createElement('div');
			t.id = 'ymaptabs';
			this.YDom.get('ymaptabcont').appendChild(t);
			
			for(var i=0, len = this.layoutType.length; i < len;i++) {
				var o = document.createElement('span');
				o.id = 'ymaptabs_btn' + this.layoutType[i][0];
				o.innerHTML = this.layoutType[i][1];
				
				if(this.layoutType[i][2] != 'default') {
					this.YDom.addClass(o,'ymaptb');
				} else {
					this.YDom.addClass(o,'ymaptb_r');
				}
				
				this.YDom.get('ymaptabs').appendChild(o);
				var self = this;
				this.YEv.addListener(o, "click", function(e){self.handleTabs(e);});
			}
			
			var b = document.createElement('div');
			b.id = 'ymapborder';
			this.YDom.get('ymaptabs').appendChild(b);
		},
		
		handleTabs: function(e) {
			var el = this.YEv.getTarget(e);
			var id = 'ymap_' + el.id.replace(/ymaptabs_btn/,'');
			
			switch(id){
				case 'ymap_m':
					this.YDom.setStyle('ymap_dd', 'display' , 'none');
					this.YDom.setStyle('ymap_m', 'display' , '');
					this.YDom.setStyle('ymapmapselect', 'display' , 'block');
					YAHOO.Maps.Print.MapsSelector.setMode('M');
					if(this.YDom.inDocument(['ymapfnt','ymapcucont'])) {
						this.YDom.setStyle('ymapfnt', 'display' , 'none');
						this.YDom.setStyle('ymapcucont', 'display' , 'none');
					}
                    this.YDom.setStyle('dd_opts', 'display', 'none');
				break;
				case 'ymap_dd':
					this.YDom.setStyle('ymap_m', 'display' , 'none');
					this.YDom.setStyle('ymap_dd', 'display' , 'block');
					this.YDom.setStyle('ymapmapselect', 'display' , 'none');
					this.YDom.get('ymap_m_img').className = 'ymapimgcont1';
					if(this.YDom.inDocument(['ymapfnt','ymapcucont'])) {
						this.YDom.setStyle('ymapfnt', 'display' , 'block');
						this.YDom.setStyle('ymapcucont', 'display' , 'block');
					}
                    this.YDom.setStyle('dd_opts', 'display', 'block');
				break;
				default:
					this.YDom.setStyle('ymap_m', 'display' , '');
					this.YDom.setStyle('ymap_dd', 'display' , 'block');
					this.YDom.setStyle('ymapmapselect', 'display' , 'block');
					YAHOO.Maps.Print.MapsSelector.setMode('D');
					if(this.YDom.inDocument(['ymapfnt','ymapcucont'])) {
						this.YDom.setStyle('ymapfnt', 'display' , 'block');
						this.YDom.setStyle('ymapcucont', 'display' , 'block');
					}
                    this.YDom.setStyle('dd_opts', 'display', 'block');
				break;
			}
			YAHOO.Maps.Data.pvProxy.call("Print.Maps.changeTemplate"); 
			//handle the button states
			var coll = this.YDom.get('ymaptabs').getElementsByTagName('span');
			var cn = ['ymaptb_r','ymaptb'];
			for(var i=0, len = coll.length; i < len;i++) {
				this.YDom.removeClass(coll[i], cn[0]);
				this.YDom.addClass(coll[i], cn[1]);
			}
			//turnon button
			this.YDom.addClass(el, cn[0]);
		},
		
		setLoadedTitles: function() {
		
			if(this.YDom.inDocument('ymapsumhd')) {
			
				this.YDom.get('ymapsumhd').title = this.msg.summaryBtn.max;
			
			}
			
			if(this.YDom.inDocument('ymapt')) {
			
				this.YDom.get('ymapt').title = this.msg.inline;
			
			}
			
			if(this.YDom.inDocument('ymapnoteswrap')) {
			
				this.YDom.get('ymapnoteswrap').title = this.msg.inline;
			
			}
		},
		
		handlePrintBtn: function() {
			var coll = YAHOO.util.Dom.getElementsByClassName('print-button');
			for(var i=0;i<coll.length;i++) {
				this.YEv.addListener(coll[i], "click", function(){
						window.print();
					}
				);
				coll[i].title = this.msg.print;
			}
		},

        handleBackBtn: function() {
			var backBtns = YAHOO.util.Dom.getElementsByClassName('back-button');
			for(var i=0;i<backBtns.length;i++) {
				this.YEv.addListener(backBtns[i], "click", function(){
			        history.go(-1);
				});
                backBtns[i].title = this.msg.back;
			}
        },
		
		init: function() {
			var self = this;
			
			//browser detection was used for inline editing bug
			//fixed bug so we probably dont need the detection anymore
			var agt = navigator.userAgent.toLowerCase();
			var isSafari = (agt.indexOf("safari")!=-1);
			var isOpera = (window.opera);
			
			if (this.YDom.inDocument('ymaptabcont')) {
				this.addTabs();
			}
			
			//print button
			this.handlePrintBtn();

			//back button
			this.handleBackBtn();
				
			//set title attributes
			this.setLoadedTitles();
			
		}
};
