/*
Machine finder support.
CMS#41446
http://intranet.jgsullivan.net/kb/index.php/DWP_Machine_Finder
*/
$(document).ready(function(){
	var hasMF = $(".machineFinder:visible").length > 0;
	//console.debug("renderMachines visible?", hasMF, $(".machineFinder:visible"))

	if ($(".machineFinder:visible").length > 0 || $("#machineFinderTable").length > 0) {
		var date = new Date();
		var dayRnd = date.getFullYear() + "" + date.getMonth() + "" + date.getDate()
		$.ajax({
			type: "GET",
			url: "/dwp/machine-finder.do",
			dataType: "json",
			data: {'r': dayRnd},
			cache: true,
			success: renderMachines,
			error: function(XMLHttpRequest, textStatus, errorThrown) {
				$(".machineFinder").empty();
				if (console && console.debug) {
			    	console.debug(textStatus, errorThrown);
			    }
			}
		});
	}
});	

function renderMachines(jsonData) {
	var hasMF = $(".machineFinder:visible").length > 0,
		hasMFTbl = $("#machineFinderTable").length > 0,
		machineData = jsonData.machines, 
		imgCnt = 0
	
	if (hasMF) {
		$(".machineFinder:visible").html('<div class="jCarouselLite"><ul class="machines"></ul></div>');
	}
	if (hasMFTbl) {
		$("#machineFinderTable").html('<table class="tablesorter"><thead>'
			//+'<tr><th></th><th>Description</th><th>Price</th><th>Location</th></tr>
			+'</thead><tbody></tbody></table>')
		$("#machineFinderTable").append('<div id="pager" class="pager"><form><img src="/dwp/media/tablesorter/first.png" class="first"/><img src="/dwp/media/tablesorter/prev.png" class="prev"/><span class="pagedisplay"></span><img src="/dwp/media/tablesorter/next.png" class="next"/><img src="/dwp/media/tablesorter/last.png" class="last"/><input type="hidden" class="pagesize" value="10"></form></div>');
	} else {
		//randomize content
		for(i = 0; i < machineData.length; i++) {
			machineData[i]["displayOrder"] = Math.floor(Math.random()*1000);
		}
		machineData.sort(function(a, b) {
			return a.displayOrder - b.displayOrder;
		});
	}	

	var tbody = $("#machineFinderTable tbody");
	for(i = 0; i < machineData.length; i++) {
		var md = machineData[i];	
		var id = md.id, 
			url = md.image,
			price = (md.price ? "$"+md.price : ""),
			name = md.modelYear + " " + md.manufacturer + " " + md.model,
			imgAlt = name + " " + price, //md.category, 
			description = md.description,
			operationHours = md.operationHours,
			location = md.locationNotes;
		
		if (hasMF && md.image != "") { //ignoring entries that do not have an image
			imgCnt++
			$(".machines").append('<li><div><a href="http://www.machinefinder.com/ww/en-US/machine/'+ id+ '" target="_blank">'
				+'<img src="'+url+'" border="0" title="'+imgAlt+'" width="140" height="95"/></a>'
				+'<span class="description"><a href="http://www.machinefinder.com/ww/en-US/machine/'+ id+ '" class="item_hdr_news_font" style="text-decoration: none;" target="_blank">'+name+'</a><br/>'
				+description+'<br/>'
				+location+'<br/>'
				+price+'</span></div></li>');
		}
		if (hasMFTbl) {
        	var tr = "";
			tr += '<td>'
				+ (url != "" ? '<a href="http://www.machinefinder.com/ww/en-US/machine/'+ id+ '"><img src="'+url+'" border="0" alt="'+imgAlt+'" width="140" height="95"/></a>' : "&nbsp;")
				+'</td>';
			tr += '<td><a href="http://www.machinefinder.com/ww/en-US/machine/'+ id+ '" class="item_hdr_news_font" style="text-decoration: none;">'+name+'</a><br/>'+description+'</td>';
			tr += '<td>'+price;
			if (operationHours != "" && operationHours != "0") {
				tr += '<br>Hours: '+operationHours;
			}
			tr += '</td>';
			tr += '<td>'+location+'</td>';
        	tbody.append('<tr>' + tr + '</tr>');
		}
	}
	if (hasMFTbl && machineData.length > 0) {
        $("#machineFinderTable table.tablesorter").tablesorter({
			headers: { 0: {sorter:false}, 1:{sorter:false}, 2:{sorter:false}, 3:{sorter:false} },
			widgets: ['zebra']	
        }).tablesorterPager({container: $("#pager"), size:10, positionFixed:false}); 
            
	}		
	if (hasMF && imgCnt > 0) {
		$(".machineFinder:visible").each(function (idx, elem) {
			var mf = $(elem);
			var verticalVal = mf.height() > mf.width();
			//console.debug(mf, mf.width(), $($("li", mf)[0]).width())
			
			var contanerDim = verticalVal ? mf.height() : mf.width();
			var itemDim = verticalVal ? $($("li", mf)[0]).height() : $($("li", mf)[0]).width();
			var visibleVar = Math.min(imgCnt, Math.floor(contanerDim/itemDim));
			//var startVar = Math.floor(Math.random() * (imgCnt+1));
			//console.debug(elem, startVar,  verticalVal, visibleVar, contanerDim, itemDim, imgCnt);
			
			$(".jCarouselLite", elem).jCarouselLite({
			        auto: 500,
			        speed: 2000,
			        vertical: verticalVal,
			        visible: visibleVar
			});
		});
	}
}
