// *************************************************************
// *************************************************************
// Writen by Erik Rathkamp
// Idea Integration
// *************************************************************
	
// *************************************************************
// Variables
// *************************************************************
var mediatype = "";
var os="";
var region="";
var curcat1_1 = "";
var curcat1_2 = "";
var curcat2_1 = "";
var curcat2_2 = "";

var mediaTypeTitle = "Select a media type";
var osTitle = "Select an operating system";
var regionTitle = "Select a region";
var catBaseTitle = "Select a ";
var cat1_1Title = "Select a category";
var cat1_2Title = "Select a category";
var cat2_1Title = "Select a category";
var cat2_2Title = "Select a category";
	
// *************************************************************
// Control Generation
// *************************************************************
	
// *************************************************************
// GenerateMediaDD0
// *************************************************************
function GenerateMediaDD0(selected, divid, tagId, tagTitle)
{
	var xsl = "xsl/dd1.xsl";
	var xml = "xml/mediatype.xml";
	var lookupkey = "MediaType";
	var params = new Array();
	
	params[params.length] = ["selected", selected]
	params[params.length] = ["tagid", tagId]
	params[params.length] = ["tagtitle", tagTitle]
	params[params.length] = ["key", lookupkey]
	
	transformToTag(xsl, xml, params, divid);

}
// *************************************************************
// GenerateRegionDD0
// *************************************************************
function GenerateRegionDD0(selected, divid, tagId, tagTitle)
{
	var xsl = "xsl/dd1.xsl";
	var xml = "xml/region.xml";
	var lookupkey = "Region";
	var params = new Array();
	
	params[params.length] = ["selected", selected]
	params[params.length] = ["tagid", tagId]
	params[params.length] = ["tagtitle", tagTitle]
	params[params.length] = ["key", lookupkey]
	
	transformToTag(xsl, xml, params, divid);

}
// *************************************************************
// GenerateOSDD0
// *************************************************************
function GenerateOSDD0(selected, divid, tagId, tagTitle)
{
	var xsl = "xsl/dd1.xsl";
	var xml = "xml/os.xml";
	var lookupkey = "OS";
	var params = new Array();
	
	params[params.length] = ["selected", selected]
	params[params.length] = ["tagid", tagId]
	params[params.length] = ["tagtitle", tagTitle]
	params[params.length] = ["key", lookupkey]
	
	transformToTag(xsl, xml, params, divid);

}
// *************************************************************
// GenerateDD0
// *************************************************************
function GenerateDD0(selected, divid, tagId, tagTitle)
{
	var xsl = "xsl/dd0.xsl";
	var xml = "xml/lookup.xml";
	var params = new Array();
	
	params[params.length] = ["selected", selected]
	params[params.length] = ["tagid", tagId]
	params[params.length] = ["tagtitle", tagTitle]
	
	transformToTag(xsl, xml, params, divid);
	showdiv(divid);
	
}
// *************************************************************
// GenerateDD1
// *************************************************************
function GenerateDD1(selected, divid, tagId, tagTitle, tagKey)
{
	var xsl = "xsl/dd1.xsl";
	var xml = "xml/lookup.xml";
	var params = new Array();
	
	params[params.length] = ["selected", selected]
	params[params.length] = ["tagid", tagId]
	params[params.length] = ["tagtitle", tagTitle]
	params[params.length] = ["key", tagKey]
	
	transformToTag(xsl, xml, params, divid);
	showdiv(divid);
	
}
// *************************************************************
// GenerateFeaturedTable
// *************************************************************
function GenerateFeaturedTable()
{
	var divid = "featured_table";
	var xsl = "xsl/featuredlist.xsl";
	var xml = "xml/stories.xml";
	var params = new Array();
	
	transformToTag(xsl, xml, params, divid);
	
}

// *************************************************************
// Event Handlers
// *************************************************************
// *************************************************************
// ResetClick
// *************************************************************
function ResetClick()
{
	// Category1 reset
	dd = document.getElementById('catdd1_1');
	if (dd != undefined)
	{
		dd.value = "";
	}
	
	// MediaType reset
	dd = document.getElementById('MediaId');
	if (dd != undefined)
	{
		dd.value = "";
	}
	
	// OS reset
	dd = document.getElementById('OSId');
	if (dd != undefined)
	{
		dd.value = "";
	}
	
	// Region reset
	dd = document.getElementById('RegionId');
	if (dd != undefined)
	{
		dd.value = "";
	}
	
	
	FilterClick(false)

}
// *************************************************************
// FilterClick
// *************************************************************
function FilterClick(jumpToResults)
{
	var mediatype = "";
	var region = "";
	var os = "";
	var cat1_1 = "";
	var cat1_2 = "";
	var cat2_1 = "";
	var cat2_2 = "";
	var dd;
	
	if (jumpToResults == true)
	{
		parent.location="#jump";
	}
	
	// Retrieve the drop down data
	
	// Media type
	dd = document.getElementById('MediaId');
	if (dd != undefined)
	{
		mediatype = dd.value;
	}
	
	// Region
	dd = document.getElementById('RegionId');
	if (dd != undefined)
	{
		region = dd.value;
	}
	
	// OS
	dd = document.getElementById('OSId');
	if (dd != undefined)
	{
		os = dd.value;
	}
	
	dd = document.getElementById('catdd1_1');
	if (dd != undefined)
	{
		cat1_1 = dd.value;
	}
	
	dd = document.getElementById('catdd1_2');
	if (dd != undefined)
	{
		cat1_2 = dd.value;
	}
	
	dd = document.getElementById('catdd2_1');
	if (dd != undefined)
	{
		cat2_1 = dd.value;
	}
	
	dd = document.getElementById('catdd2_2');
	if (dd != undefined)
	{
		cat2_2 = dd.value;
	}
	
	ProcessQuery(mediatype, region, os, cat1_1, cat1_2, cat2_1, cat2_2);

}
// *************************************************************
// ProcessQuery
// *************************************************************
function ProcessQuery(mediatype, region, os, cat1_1, cat1_2, cat2_1, cat2_2)
{
	var params = new Array();
	var xsl = "xsl/SelectByCategory0.xsl";
	var xml = "xml/stories.xml";
	var divid = "stories_table";
	
	// Set the Media Type parameter
	params[params.length] = ["mediatype", mediatype]
	params[params.length] = ["region", region]
	params[params.length] = ["os", os]
	
	// Set the selection parameters
	
	// Cat1_1
	if (cat1_1 != curcat1_1)
	{
		// Clear out the data in memory and on the screen
		curcat1_2 = "";
	    curcat2_1 = "";
	    curcat2_2 = "";
		cat1_2 = "";
		cat2_1 = "";
		cat2_2 = "";
		
		hidediv("Message");
		hidediv("catagory1_2");
		hidediv("catagory2_1");
		hidediv("catagory2_2");
		
		loadDiv("catagory1_2", "");
		loadDiv("catagory2_1", "");
		loadDiv("catagory2_2", "");
		
		curcat1_1 = cat1_1;
		
	}
	
	// Cat1_2
	if (cat1_2 != curcat1_2)
	{
		// Clear out the data in memory and on the screen
	    curcat2_1 = "";
	    curcat2_2 = "";
		cat2_1 = "";
		cat2_2 = "";
		
		showdiv("Message");
		
		hidediv("catagory2_1");
		hidediv("catagory2_2");
		
		loadDiv("catagory2_1", "");
		loadDiv("catagory2_2", "");
		
		
		curcat1_2 = cat1_2;

	}
	
	// Cat2_1
	if (cat2_1 != curcat2_1)
	{
		// Clear out the data in memory and on the screen
	    curcat2_2 = "";
		cat2_2 = "";
		
		showdiv("Message");
		
		hidediv("catagory2_2");
		
		loadDiv("catagory2_2", "");
		
		
		curcat2_1 = cat2_1;

	}
	
	// Cat2_2
	if (cat2_2 != curcat2_2)
	{
		showdiv("Message");
		
		curcat2_2 = cat2_2;

	}
	
	// Construct the query
	if ((cat1_1 != "") && (cat1_2 == ""))
	{
		GenerateDD1("", "catagory1_2", "catdd1_2", catBaseTitle + cat1_1, cat1_1);
		
		params[params.length] = ["category0", cat1_1]
		xsl = "xsl/SelectByCategory1.xsl";
	}
	else if ((cat1_2 != "") && (cat2_1 == ""))
	{
		GenerateDD0("", "catagory2_1", "catdd2_1", cat2_1Title);
		
		params[params.length] = ["category0", cat1_1]
		params[params.length] = ["category1", cat1_2]
		xsl = "xsl/SelectByCategory2.xsl";
	}
	else if ((cat2_1 != "") && (cat2_2 == ""))
	{
		GenerateDD1("", "catagory2_2", "catdd2_2", catBaseTitle + cat2_1, cat2_1);
		
		params[params.length] = ["category0", cat1_1]
		params[params.length] = ["category1", cat1_2]
		params[params.length] = ["category2", cat2_1]
		xsl = "xsl/SelectByCategory3.xsl";
	}
	else if (cat2_2 != "")
	{
		
		params[params.length] = ["category0", cat1_1]
		params[params.length] = ["category1", cat1_2]
		params[params.length] = ["category2", cat2_1]
		params[params.length] = ["category3", cat2_2]
		xsl = "xsl/SelectByCategory4.xsl";
	}
	
	transformToTag(xsl, xml, params, divid);

}
// *************************************************************
// init
// *************************************************************
function init()
{
	GenerateFeaturedTable();
	
	
	loadQuery();
}
// *************************************************************
// loadQuery
// *************************************************************
function loadQuery()
{
	var cat1_1 = "";
	var cat1_2 = "";
	var cat2_1 = "";
	var cat2_2 = "";
	
	var qsParm = new Array();
	
	// retrieve the query string
	var query = window.location.search.substring(1);
	var parms = query.split('&');
	for (var i=0; i<parms.length; i++) {
		var pos = parms[i].indexOf('=');
		if (pos > 0) {
			var key = parms[i].substring(0,pos);
			var val = parms[i].substring(pos+1);
			qsParm[key] = val;
		}
	}
	
	// Load the variables

	// Medtia Type
	if ((qsParm["mediatype"] != undefined) && (qsParm["mediatype"] != ""))
	{
		mediatype = qsParm["mediatype"];
	}
	GenerateMediaDD0(mediatype, "mediaTypeDropDown", "MediaId", mediaTypeTitle);

	// Region
	if ((qsParm["region"] != undefined) && (qsParm["region"] != ""))
	{
		region = qsParm["region"];
	}
	GenerateRegionDD0(region, "regionDropDown", "RegionId", regionTitle);

	// OS
	if ((qsParm["os"] != undefined) && (qsParm["os"] != ""))
	{
		os = qsParm["os"];
	}
	GenerateOSDD0(os, "osDropDown", "OSId", osTitle);
	
	//Cat 1
	if ((qsParm["cat1"] != undefined) && (qsParm["cat1"] != ""))
	{
		cat1_1 = unescape(qsParm["cat1"]);
		curcat1_1 = cat1_1;
	}
	GenerateDD0(cat1_1, "catagory1_1", "catdd1_1", cat1_1Title);
	
	//Cat 2
	if ((qsParm["cat2"] != undefined) && (qsParm["cat2"] != ""))
	{
		cat1_2 = unescape(qsParm["cat2"]);
		curcat1_2 = cat1_2;
		GenerateDD1(cat1_2, "catagory1_2", "catdd1_2", catBaseTitle + cat1_1, cat1_1);
	}
	
	
	//Cat 3
	if ((qsParm["cat3"] != undefined) && (qsParm["cat3"] != ""))
	{
		cat2_1 = unescape(qsParm["cat3"]);
		curcat2_1 = cat2_1;
		showdiv("Message");
		GenerateDD0(cat2_1, "catagory2_1", "catdd2_1", cat2_1Title);
	}
	
	//Cat 4
	if ((qsParm["cat4"] != undefined) && (qsParm["cat4"] != ""))
	{
		cat2_2 = unescape(qsParm["cat4"]);
		curcat2_2 = cat2_2;
		GenerateDD1(cat2_2, "catagory2_2", "catdd2_2", catBaseTitle + cat2_1, cat2_1);
	}
	

	ProcessQuery(mediatype, region, os, cat1_1, cat1_2, cat2_1, cat2_2);
}

// *************************************************************
// Utilities
// *************************************************************


// *************************************************************
// loadDiv
// *************************************************************
function loadDiv(id, data)
{
	var el = document.getElementById(id);
	        
	if (el != undefined) el.innerHTML = data;
}

// *************************************************************
// addLoadEvent
// *************************************************************
function addLoadEvent(func) {
  
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}
// *************************************************************
// removeAllOptions
// *************************************************************

function removeAllOptions(selectbox){
	var i;
	for(i=selectbox.options.length-1;i>=0;i--)
	{
	//selectbox.options.remove(i);
	selectbox.remove(i);
	}
}
// *************************************************************
// addOption
// *************************************************************
function addOption(selectbox, value, text){
	var optn = document.createElement("OPTION");
	optn.text = text;
	optn.value = value;
	selectbox.options.add(optn);
}
// *************************************************************
// Time Delay
// *************************************************************
function pausecomp(millis) 
{
    var date = new Date();
    var curDate = null;

    do { curDate = new Date(); } 
    while(curDate-date < millis);
} 
// *************************************************************
// show(id) - Shows by setting the style
// *************************************************************
function showdiv(id) {
	var ref = document.getElementById(id);
	if (ref != undefined)
	{
		ref.style.visibility = 'visible';
		ref.style.display = '';
	}
}

// *************************************************************
// hide(id) - Hides by setting the style
// *************************************************************
function hidediv(id) {
	var ref = document.getElementById(id);
	if (ref != undefined)
	{
		ref.style.visibility = 'hidden';
		ref.style.display = 'none';
	}
}

// *************************************************************
// transformToTag(xsl, xml, params[], targettag) - client side xlst to a div tag by id
// *************************************************************
function transformToTag(xsl, xml, params, targettag) {
	var regionProc = new dojo.xml.XslTransform(xsl);
	var getDDContent = {
		url: xml,
		mimetype: "text/xml",
		load: function(type, xmlDom, httpreq){
			var target = document.getElementById(targettag);
			regionProc.transformToRegion(xmlDom, params, target, document);
		}
	}
	dojo.io.bind(getDDContent);
} 

// *************************************************************
// Inline Code
// *************************************************************

addLoadEvent(init);
	
// *************************************************************
// *************************************************************
// *************************************************************

