/* 	The code on this page is dependant on:
	YUI - Utilities, DataTable, Datasource, Container, Tabview;
	common.js
*/

var YE = YAHOO.util.Event;
var YD = YAHOO.util.Dom;
var YA = YAHOO.util.Anim;

var JWP = window.JWP || {};



JWP.removeScriptingMessage = function(){
	YE.onAvailable('noJavascript',function(){
		var msg = document.getElementById('noJavascript');
			msg.parentNode.removeChild(msg);
	});
}();


JWP.enhanceInvSearch = function(){
	var bd,
		bd_hidden="",
		ft = "<a>Hide Suggestions</a>",
		ft_hidden = " Show Suggestions";
		var a = document.createElement('a');
		a.innerHTML=ft_hidden;
		a.className = "showInvSugs";
		
		var mod = new YAHOO.widget.Module("invSearchSuggestions",{
		visible:false
		});
		mod.setFooter(ft);

	return{
		init:function(){
			bd = YD.get('invLookup');
			if(!bd){return}
			var pt = bd.parentNode;
			pt.insertBefore(a,bd);
			mod.setBody(bd);
			mod.render(pt);
			this.showSuggestions();
			YE.addListener(a,"click",this.showSuggestions,this,true);
			YE.addListener(mod.footer,"click",this.hideSuggestions,this,true);
		},
		hideSuggestions:function(){
			mod.hide()
			a.style.display = a.style.display == "none"? "":"";
		},
		showSuggestions:function(){
			mod.show();
			a.style.display = a.style.display == "block"? "none":"none";
		}
	}
}()
YE.onDOMReady(JWP.enhanceInvSearch.init, JWP.enhanceInvSearch,true);

JWP.enhanceOrderSearch = function(){
	var trgr,trgr2,tx,tx2,toTog,toTogh3,elPar,elParh3;

	return{
		init:function(){
			YE.onDOMReady(function(){
				this.searchType();
				this.setupToggler();
			},JWP.enhanceOrderSearch,true)
		},
		searchType:function(){
			var select = YD.get('retrType');
				if(!select){return;}
			var parent= select.form;
				select.selectedIndex = 0;
			var input = YD.get('oSearchParam');
				input.style.display = "none";
			function toggleInput(e){
				if(select.selectedIndex !== 0){
					input.style.display = "";
					parent.selection.focus();
				}else{
					input.style.display = "none";
				}
			}
			YE.addListener(select,"change",toggleInput);
		},
		setupToggler:function(){
			elPar = YD.get('orderRetrieval');
			toTog = YD.get('advHistSearch');
			if(!elPar || !toTog){return};
			toTog.style.display = "none";

			trgr = document.createElement('span');
			trgr.className="toggleLink";
			trgr.innerHTML = "Advanced Search"
			tx = " ";
			tx = document.createTextNode(tx);
			trgr2 = trgr.cloneNode(true);
			tx2 = tx.cloneNode(true);
			trgr2.innerHTML = "Basic Search";
						
			toTogh3 = toTog.getElementsByTagName('h3')[0];
			toTogh3.appendChild(tx2);
			toTogh3.appendChild(trgr2)
			elParh3 = elPar.getElementsByTagName('h3')[0];
			elParh3.appendChild(tx);
			elParh3.appendChild(trgr);
			YE.addListener(trgr,"click",this.toggle);
			YE.addListener(trgr2,"click",this.toggle);
		},
		toggle:function(e){
			YE.stopEvent(e);
			YD.toggle(toTog);
			YD.toggle(elPar)
		}
	}	
}();
JWP.enhanceOrderSearch.init();


JWP.oHistoryWidget = function(){
	
    var container = YD.get("oHistory_webOnly");
	var	table = container.getElementsByTagName('table')[0];
    var columnDefs = [
        {key:"id",label:"Order ID",sortable:true,className:"col1"},
        {key:"date",label:"Order Date",className:"col2"},
        {key:"total",label:"Order Total",className:"col3"}
    ];

	this.myDataSource = new YAHOO.util.DataSource(table);
	this.myDataSource.responseType = YAHOO.util.DataSource.TYPE_HTMLTABLE;
	this.myDataSource.responseSchema = {
		fields: [{key:"id"},
		        {key:"date"},
		        {key:"total"}
			]
		};
    this.dataTable = new YAHOO.widget.DataTable(container,columnDefs,this.myDatasource,{scrollable:true});
	JWP.resolveHeights(container);

}
YE.onAvailable("oHistory_webOnly",JWP.oHistoryWidget,JWP.oHistoryWidget,true);


JWP.logoLibrary = function () {
	var loadingPanel = new YAHOO.widget.Panel("loadPanel",
						{
						width:"300px",
						close:false,
						draggable:false,
						zIndex:1000,
						visible:false,
						iframe:true,
						modal:true,
						fixedcenter:true,
						effect:{effect: YAHOO.widget.ContainerEffect.FADE,duration:1}
						});
	var panelContent = "<img src=\"/osp/images/loadingAnim.gif\" /><br/><strong>Processing...</strong><br/> Please wait while your logo is processed.<br/> Processing times vary, and may take several minutes.";
		loadingPanel.setBody(panelContent);
		loadingPanel.render(document.body);
		loadingPanel.showEvent.subscribe(submitLogo);
		
	var libr = YD.get('logoLibrary');
	var logos_1 = YD.getElementsByClassName('logo','li',libr)
	var d = Number(logos_1.length);
	var maxLogos = 200;
	
	function showPanel(){
		loadingPanel.show();
		}
	function submitLogo(){
		document.member_upload_logo.submit();
		}
	function validateForm(e){
				YE.stopEvent(e);
				if(d >= maxLogos){alert('You have reached the maximum number of logo uploads.'); return;}
				if(document.getElementById('uploadfield').value == ""){
					alert("Please select a logo to upload from your computer, by clicking the Browse button.");
					return false;
				}else if(document.getElementById('refname').value == ""){
					alert("Please enter a reference name for the logo you wish to upload.");
					return false;
				}else if(document.getElementById('loading')){
					return false;
				}else{
					showPanel();
				}
		}
	var deletes = YD.getElementsByClassName("logo_delete");
	for (var i=0; i < deletes.length; i++) {
		var btn = deletes[i]
		YE.addListener(btn,"click",function(e){
			YE.stopEvent(e);
			var deleteLogo = confirm("Are you sure you want to permanently delete this logo?");
			if(deleteLogo==true){
				this.form.submit();
			}else{
				return false;
			}
		});
	};
	var uploadBtn = document.member_upload_logo.sendfile;
	var uplForm = document.member_upload_logo;
	YE.addListener(uplForm,"submit",validateForm,this,true);
}
YE.onAvailable("logoLibrary",JWP.logoLibrary,JWP.logoLibrary,true);



JWP.makeLogoWidget = function() {
	var par,upl,lgotab_1; /* references to content divs */
	var tabs,uplTab,libTab1; /* references to tab objects */
	var libr,view,logos_1,infoTables = [];
; /* references to logo library elements */
	var x=1,max; /*vars for scrolling controls */
	var infoPanel = new YAHOO.widget.Panel("logoInfoPanel",
						{
						//height:"100px",
						//width:"160px",
						close:true,
						draggable:false,
						zIndex:1000,
						underlay:"shadow",
						visible:false,
						iframe:true,
						effect:{effect: YAHOO.widget.ContainerEffect.FADE,duration:.5}
						});
	YE.onDOMReady(function(){
			infoPanel.setHeader("Details")
			infoPanel.setBody("");
			infoPanel.render(document.body);
			});

	return{
		init:function(){
			YE.onDOMReady(this.buildWidget,this,true);
		},
		buildWidget:function(){
			par = YD.get('dsh_Logo')
			upl = YD.get('upload');
			lgotab_1 = YD.get('view_myLogos');
			libr = YD.get('logoLibrary');
			view = YD.get('logo_container');
			if(!par || !upl || !lgotab_1 || !libr || !view){return};
			logos_1 = YD.getElementsByClassName('logo','li',libr)
			var d = Number(logos_1.length);
			max = Math.ceil(d/5);
			this.makeTabs();
			this.setStage();
			// prevent text selection if mis-clicking scrollers
			YE.addListener([libr,view],"mousedown",function(e){YE.stopEvent(e)})
		},
		makeTabs:function(){
			tabs = new YAHOO.widget.TabView()
			tabs.addTab( new YAHOO.widget.Tab({
				label:'Upload Logos',
				contentEl:upl,
				active:true
			}));
			tabs.addTab( new YAHOO.widget.Tab({
					label:'View Logos',
					contentEl:lgotab_1
				}));
			uplTab = tabs.getTab(0);
			libTab1 = tabs.getTab(1);
			if(logos_1.length === 0){
				libTab1.set('disabled',true);
				libTab1.addListener("click",
								function(){alert('You\'re Logo Library is currently empty')}
								);
			}
			tabs.appendTo(par);
		},
		setStage:function(){
			view.style.overflow = "hidden";
			var moveL = document.createElement('a');
			var moveR = document.createElement('a')
				moveL.id = "move_L";
				moveL.href = "";
				moveL.title = "click to scroll left";
				moveR.id = "move_R";
				moveR.href = "";
				moveR.title = "click to scroll right";
			//util.addSpans([moveL,moveR],2);
			libr.appendChild(moveL);
			libr.appendChild(moveR);
			YE.addListener([moveL,moveR],"click",this.scrollLogos)
						
			lgsInfo = YD.getElementsByClassName('logo_info','span',libr);
			for (var i=0; i<lgsInfo.length; i++) {
				var tb = lgsInfo[i]
					tb.id = "lgoInfo"+[i];
					tb.style.cursor = "pointer";
					tb.title = "Info"
				var contentID = "cnt_"+tb.id;
					tb.contentID = contentID;
				var tbl = tb.getElementsByTagName('table')[0];				
					tbl.id = contentID;
					tb.tbl = "<table id='"+tbl.id+"'>"+tbl.innerHTML+"</table>"; // convoluted b/c of IE's stupidity!
					tb.innerHTML = "<img src=\"http://catalog.hartwell.com/osp/images/icons/silk/information.png\" alt=\"info\"/>";
					YE.addListener(tb,'click', this.showInfoPanel);					
			};
			var p = document.createElement('p');
				p.innerHTML = "Click the arrows on the left and right to scroll";
				p.id = "logoInstruct";
			libr.appendChild(p);
		},
		showInfoPanel:function(e){
			infoPanel.cfg.setProperty("context",[this.id,"tl","br"]);
			infoPanel.setBody(this.tbl);
			var XX = (YD.get(this.contentID).offsetWidth +10) + "px";
			infoPanel.cfg.setProperty("width",XX);
			infoPanel.show();
		},
		scrollLogos:function(e){
			YE.stopEvent(e);
			var pixels = 660;
			var full = (max - 1) * pixels;

			switch(this.id) {
				case 'move_L':
					if ( x === 1 ) {
						var attributes = {
							points : {
								by : [-full, 0]
							}
						};
						x=max;
					}else{
						var attributes = {
							points : {
								by : [pixels, 0]
							}
						};
						x--;
					}				break;
				case 'move_R':
					if ( x === max ) {
						var attributes = {
							points : {
								by : [full, 0]
							}
						};
						x=1;
					}else{
						var attributes = {
							points : {
								by : [-pixels, 0]
							}
						};
						x++;
					}
				break;
			};
			var anim = new YAHOO.util.Motion('logos', attributes, 0.5, YAHOO.util.Easing.easeOut);
			anim.animate();
		}		
	};
}();
JWP.makeLogoWidget.init();

