/* PUSH  FOR IE5 */
if(typeof Array.prototype.push=="undefined"){
	Array.prototype.push=function(){
		var n=this.length>>>0;
		for(var i=0;i<arguments.length;i++) {
			this[n]=arguments[i];
			n =n+1>>>0;
		}
		this.length=n;
		return n;
	};
}

/*
CSS Browser Selector v0.3.1 Rafael Lima (http://rafael.adm.br)
http://rafael.adm.br/css_browser_selector
License: http://creativecommons.org/licenses/by/2.5/
Contributors: http://rafael.adm.br/css_browser_selector#contributors
*/
	 function css_browser_selector(u){var ua = u.toLowerCase(),is=function(t){return ua.indexOf(t)>-1;},g='gecko',w='webkit',s='safari',h=document.getElementsByTagName('html')[0],b=[(!(/opera|webtv/i.test(ua))&&/msie\s(\d)/.test(ua))?('ie ie'+RegExp.$1):is('firefox/2')?g+' ff2':is('firefox/3')?g+' ff3':is('gecko/')?g:/opera(\s|\/)(\d+)/.test(ua)?'opera opera'+RegExp.$2:is('konqueror')?'konqueror':is('chrome')?w+' '+s+' chrome':is('applewebkit/')?w+' '+s+(/version\/(\d+)/.test(ua)?' '+s+RegExp.$1:''):is('mozilla/')?g:'',is('j2me')?'mobile':is('iphone')?'iphone':is('ipod')?'ipod':is('mac')?'mac':is('darwin')?'mac':is('webtv')?'webtv':is('win')?'win':is('freebsd')?'freebsd':(is('x11')||is('linux'))?'linux':'','js']; c = b.join(' '); h.className += ' '+c; return c;}; css_browser_selector(navigator.userAgent);

	 SessionTimeout=60000;
	 var searchSerivceURL = 'searchservice.aspx';
	 if (typeof PlantLibrary=="undefined") var PlantLibrary={}; //Create namespace

	 /* MOJ My Outdoor Journal */
	 if (typeof PlantLibrary.MOJ=="undefined") PlantLibrary.MOJ={};
	 if (typeof PlantLibrary.MOJ.Services=="undefined") PlantLibrary.MOJ.Services={};
	 PlantLibrary.MOJ.Services.addURI="services/redwood/addtomoj.asp"
	 PlantLibrary.MOJ.Services.getURI="services/redwood/getmoj.asp"
	 PlantLibrary.MOJ.markAsSaved=function(el){
	 el.style.background='url(../images/saved.png)';
	 el.style.backgroundRepeat='no-repeat';
	 var txt='Saved to My Outdoor Journal.';
	 el.alt=txt;
	 el.title=txt;
	 };
	 PlantLibrary.MOJ.addToMOJ=function(e){
	 //when we build the service the user has to be in session.
	 Event.stop(e);
	 var el=Event.element(e);
	 if (typeof el.data=="undefined") return;
	 var data=el.data;
	 params={'userid':_homedepotUID_,'PartNumber':data.partnumber,'Name':data.name,'Genus':data.genus,'Category':data.category};
			 var ajax = new Ajax.Request(PlantLibrary.MOJ.Services.addURI,
			 {onSuccess:function(request){
				 //var data=request.responseText.evalJSON(false);
				 try {
						PlantLibrary.MOJ.markAsSaved(el);
						PlantLibrary.MOJ.addToSavedPlants(params.PartNumber);
				 }
				 catch(ee){
						 //alert(ee);
				 }
				 }
			 ,parameters:params});
	 return;
	 };
	 PlantLibrary.MOJ.addDataToObject=function(obj,partnumber){
	 try{
	 if (typeof obj.data=="undefined") obj.data={};
	 partnumber=partnumber.replace(/F$/, ''); //remove the ending F
	 obj.data.partnumber=partnumber;
	 $(obj).writeAttribute('MOJPart',partnumber);
	 }catch(e){}
	 };
	 PlantLibrary.MOJ.savedPlants={};
	 PlantLibrary.MOJ.addToSavedPlants=function(tag){PlantLibrary.MOJ.savedPlants[tag]=true;};
	 PlantLibrary.MOJ.isTagSaved=function(tag){return !(typeof PlantLibrary.MOJ.savedPlants[tag]=="undefined");};
	 PlantLibrary.MOJ.markAllSaved=function(){
	 $$('div[MOJPart]').each(function(el){
	 if(isTagSaved(el.data)) PlantLibrary.MOJ.markAsSaved(el);			
	 });
	 };
	 PlantLibrary.MOJ.getMOJSavedPlants=function(){
	 if (typeof _homedepotUID_=="undefined") return;
	 var params={'userid':_homedepotUID_};
	 var ajax = new Ajax.Request(PlantLibrary.MOJ.Services.getURI,  {
	    onSuccess:function(request){
	    try { 
		  PlantLibrary.MOJ.savedPlants=request.responseText.evalJSON(false);
		  PlantLibrary.MOJ.markAllSaved();
	    }
	    catch(ee){}
	    },
		  onFailure:function(request){},
		  parameters:params});	
	 };
	 if(typeof _requestedPartNumber_!="undefined") PlantLibrary.MOJ.addToSavedPlants(_requestedPartNumber_.replace(/F$/, ''));
	 PlantLibrary.MOJ.getMOJSavedPlants();

	 /* Support Functions  */
	 PlantLibrary.createBotanicalName=function(genus,species,variety,commonName){
	 return '<span><span class="genus">' + genus + '</span><span class="species">' + species + '</span><span class="variety">' + variety + '</span><span class="commonname">' + commonName + '</span></span>';
	 }

	 PlantLibrary.object_highlight=function(e){ var el=Event.element(e).up('tr');	if(el) el.style.backgroundColor = "#efefe3";}
	 PlantLibrary.object_unhighlight=function(e){ var el=Event.element(e).up('tr'); if(el) el.style.backgroundColor = "#ffffff";} //see css .slightgrey

	 /* Page Functions  */
	 PlantLibrary.clearCookies=function(e){
	 Delete_Cookie('PlantID', '/', '');
	 Delete_Cookie('BotanicalName', '/', '');
	 Delete_Cookie('PlantCategory', '/', '');
	 Delete_Cookie('Zone', '/', '');
	 Delete_Cookie('PartNumber', '/', '');
	 $('SearchForm').reset();
	 document.getElementById('BotanicalName').data=null;
	 //$('Top5').show();
	 if(!clearButtonDebounce){
			 clearButtonDebounce=true;
			 PlantLibrary.State.setCurrent(PlantLibrary.States.TOP5);
			 paging1.reset(0,parseInt($('recordsPerPage').value));
			 $('ResultsArea').hide();
	 }
	 }

   /* Search Functions */
   //When you press the SEARCH button, it starts a timer.
   //The reason for this is if you jump right into the search, the page does not have time to display the animated spinner of to display Searching....
   //Normally a timer will just keep running, but it is canceled above.
   function callsearch()   {
	 document.getElementById('anispin').innerHTML = '<img src="../images/spinner.gif">';
	 timer = window.setTimeout('ajaxit()', 350);
   }

	 function drawResults(e){
	    $('results').removeAllChildern();
	    var recordset=SearchResultSet.SEARCH;
	    var rows=recordset.rows;
	    var indexStart, indexStop
	    if(e){
			    var firingpagingControl=Event.element(e);
			    indexStart=firingpagingControl.indexStart;
			    indexStop=firingpagingControl.indexStop;
	    }
	    else{
			    indexStart=0;
			    indexStop=$('recordsPerPage').value;
			    if(rows.length<indexStop) indexStop=rows.length;
	    }

	    var container=$('results');
	    var table=container.$cE('table.sch2.sortable',{cellpadding:1,cellspacing:2});
	    var tHeader=table.$cE('thead');
	    var tr
	    tr=tHeader.$cE('tr')
	    tr.$cE('th').$cT('');
	    tr.$cE('th').$cT('');

	    var adjustLength=function(str,len){
			    if(!!!str) return ''; //yes I do mean !!!
			    if(str.length<len) return str;
			    return str.slice(0,len)+'...';
	    }
	
	   var tbody=table.$cE('tbody');
	   var td;
	   for(var i=indexStart,len=indexStop;i<len;i++) {
		   tr=tbody.$cE('tr');
		   Event.observe(tr, 'mouseover',PlantLibrary.object_highlight, false);
		   Event.observe(tr, 'mouseout',PlantLibrary.object_unhighlight, false);
		   Event.observe(tr, 'click', function(e){PlantLibrary.State.setCurrent(PlantLibrary.States.PLANTDISPLAY); getPlantData(null,Event.element(e).up('tr').PartNumber);}, false);
		   tr.PlantId=recordset.get(i,'PlantID');
		   tr.PartNumber=recordset.get(i,'CustomPartNumber');
		   td=tr.$cE('td..centerImg');
		   drawThumbnailImage(td, 115, recordset.get(i, 'BotanicalName'), recordset.get(i, 'PhotoPath'), recordset.get(i, 'CustomPartNumber'));
		   td=tr.$cE('td');
		   td.$cE('div..BotanicalName').innerHTML=PlantLibrary.createBotanicalName(recordset.get(i,'Genus'),recordset.get(i,'Species'),recordset.get(i,'Variety'),recordset.get(i,'CommonName'));
		   var tempFeatureText=recordset.get(i,'ShortFeatureTextLanguage0');
		   td.$cE('div..FeatureText').innerHTML = adjustLength(tempFeatureText, 90);
		   }
	 }

	 
	 
	 
	 var SearchResultSet;

	 function ajaxit() {
	 var pnumber=$('PartNumber').value;
	 if(pnumber !=''){
	 getPlantData(null,pnumber+'F');  //add the ending F
	 $('anispin').innerHTML = '';
	 return;
	 }

	 var urladd = ''

	 //Remove any saved Cookie.
	 Delete_Cookie('PlantID', '/', '');
	 Delete_Cookie('BotanicalName', '/', '');
	 Delete_Cookie('BloomColor', '/en', '');
	 Delete_Cookie('Zone', '/', '');
	 Delete_Cookie('PlantCategory', '/', '');
	 Delete_Cookie('PartNumber', '/', '');

	 //This code is used for each TEXT box.
	 //It grabs the value and saves it to a valiable.  The Value it trimmed first.
	 //It is then checked to make sure it is not empty.
	 //Set_Cookie, well, creates a cookie, basically saves their search..
	 var PlantID=$('PlantID').value.strip();
	 if (PlantID != '') {	
	 Set_Cookie('PlantID',PlantID,30,'/','','');
	 }

	 var BotanicalName = $('BotanicalName').value.strip();
	 if (BotanicalName!='') {
	 Set_Cookie('BotanicalName',BotanicalName,410,'/','','');
	 }

	 var BloomColor = $('BloomColor').value.strip();
	 if (BloomColor!='')  {
	 Set_Cookie('BloomColor',BloomColor,30,'/','','');
	 }
	 
	 var Zone = $('Zone').value.strip();
	 if (Zone!=''&&Zone!='99999') Set_Cookie('Zone',Zone,30,'/','','');
	 else Set_Cookie('Zone','99999',30,'/','','');

	 var PlantCategory = $('PlantCategory').value.strip();
	 if (PlantCategory!='') Set_Cookie( 'PlantCategory', PlantCategory, 50, '/', '', '' );
	 else Set_Cookie('PlantCategory','99999',50,'/','','');

	 var PartNumber = $('PartNumber').value.strip();
	 if (PartNumber!='') {
	 Set_Cookie('PartNumber',PartNumber,12,'/','','');
	 }

	 //This code is what calls the AJAX methods.
	 //It POST all the above data to the below url.
	 //I specidied the data to be returns as CSV, you can specify XML too.

	 var elBotanicalName=document.getElementById('BotanicalName');
	 var BotanicalNameValue=(!!elBotanicalName.data)?elBotanicalName.data:elBotanicalName.value;
	 var params={
	    'BotanicalName':BotanicalNameValue,
	    'PlantID':document.getElementById('PlantID').value,
	    'BloomColor':document.getElementById('BloomColor').value,
	    'Zone':document.getElementById('Zone').value,
	    'PlantCategory':document.getElementById('PlantCategory').value,
	    'PartNumber':document.getElementById('PartNumber').value,
	    'FeatureSelect':document.getElementById('FeatureSelect').value
	 };

	 var ajax = new Ajax.Request(searchSerivceURL,
	 {onSuccess:function(request){
	    SearchResultSet=request.responseText.evalJSON(false);
	    $('ResultsArea').show();
	    Top5Hide();
	    $('PlantDisplay').innerHTML='';
	    if(SearchResultSet.SEARCH.rows.length==0){
	       $('results').innerHTML = 'No plants met your criteria.';
		  $('PageRecordsCount').hide();
		  }
	    else{drawResults();	$('PageRecordsCount').show()}
		  paging1.reset(SearchResultSet.SEARCH.rows.length,parseInt($('recordsPerPage').value));
		  paging2.reset(SearchResultSet.SEARCH.rows.length,parseInt($('recordsPerPage').value));

	    //Clear the timer and removed the animated spinner.
	    if (timer) {
	    window.clearTimeout(timer);
	    timer = null;
	    }
	    $('anispin').innerHTML = '';
	 },
	 onFailure:function(request){
		$('results').innerHTML='No plants met your criteria.';
		$('PageRecordsCount').hide();
		  paging1.reset(0,parseInt($('recordsPerPage').value));
		  paging2.reset(0,parseInt($('recordsPerPage').value));
		//Clear the timer and removed the animated spinner.
		  if (timer) {
			window.clearTimeout(timer);
			timer = null;
		  }
		  $('anispin').innerHTML = '';
	},
	parameters:params});
	    return;
	 }

	 /*  Clear button debounce */
	 var clearButtonDebounce=false;

	 /*  Display Plant   */
	 function getPlantData(PlantId,TagNumber){
	    if(!(PlantId || TagNumber)) return;
		  Top5Hide();
		  $('ResultsArea').hide();
		  var params, url;
		  if(PlantId){ params={'PlantId':PlantId}; } //url=infobyplantid;
		  else{params={'TagNumber':TagNumber}; } //url=infobytagnumber;
			url='details.aspx';
		  var ajax = new Ajax.Request(url,
		  {onSuccess:function(request){
			  var data=request.responseText.evalJSON(false);
			  drawPlant(data);
			  $('anispin').innerHTML = '';
			  }
		  ,parameters:params});
		   return;
		  }

   function drawPlant(data){
	 var null2Blank=function(val){return (val==null)?'':val;}
	 var _partnumber = data.DetailsLang0.get(0, 'CustomPartNumber');
	 var _DPID = data.DetailsLang0.get(0, 'DataPublishingID');
	 var _TDID = data.DetailsLang0.get(0, 'TemplateDetailID');
	 var _PID = data.DetailsLang0.get(0, 'PlantId'); 
	 var container=$('PlantDisplay');
	 container.innerHTML='';
	 if(data.DetailsLang0.get(0,'BotanicalName').fastTrim().length==0){ //check if we have data
	    container.innerHTML='No plants met your criteria.';
	 return;
	 }

	 var parseXMLForValue=function(xml,node){
	 var tmp='<'+node+'><![CDATA[';
	 var start=xml.indexOf(tmp,0)+tmp.length;
	 tmp=']]></'+node+'>';
	 var end=xml.indexOf(tmp,start);
	 return xml.substring(start,end);
	 }

	 var Lang0xml=data.DetailsLang0.get(0,'DetailsXML');
	 Lang0xml=decodeURIComponent(Lang0xml);
	 var Lang1xml=data.DetailsLang1.get(0,'DetailsXML');
	 Lang1xml=decodeURIComponent(Lang1xml);

	 var backbtnDiv=container.$cE('div.plantDisplayBackButtonDiv');
	 backbtn=backbtnDiv.$cE('img.plantDisplayBackButton.clickable',{src:'images/buttons/Back_EN.gif'});
	 Event.observe(backbtn, 'click',PlantLibrary.State.goBack, false);

	 var head=container.$cE('div.plantDisplayHeader');
	 //create 3 floating sections float left,left,right
	 var left=head.$cE('div.plantDisplayHeader_left');
	 var tmpstr0=parseXMLForValue(Lang0xml,"CommonName");
	 var tmpstr1=parseXMLForValue(Lang1xml,"CommonName");
	 left.$cE('div..commonname').innerHTML=(tmpstr0=='')?(tmpstr1=='')?'':tmpstr1:(tmpstr1=='')?tmpstr0:tmpstr0;
	 var tmp=left.$cE('div',{},{clear:'both'});
	 tmp.$cE('span..genus').innerHTML = null2Blank(data.DetailsLang0.get(0, 'Genus'));
	 tmp.$cE('span..species').innerHTML=null2Blank(data.DetailsLang0.get(0,'Species'));
	 tmp.$cE('span..variety').innerHTML=null2Blank(data.DetailsLang0.get(0,'Variety'));
	 var middle=head.$cE('div.plantDisplayHeader_middle');
	 var stlang0 = null2Blank(data.DetailsLang0.get(0, 'Category'))
	 var arrstlang0 = stlang0.split(",")	
	 var right=head.$cE('div.plantDisplayHeader_right');
	 right.$cE('div..planttype').innerHTML = null2Blank(data.DetailsLang0.get(0, 'SeasonType'));
	 right.$cE('div..planttype').innerHTML = ((null2Blank(arrstlang0[0]) == '') ? '' : null2Blank(arrstlang0[0]) + ' ');
	 	 
	 if(_homedepotUID_) {
	    var tmp=right.$cE('div',{},{clear:'both',float:'right'});   		
	    var mojbtn=tmp.$cE('div.plantDisplayBackButton.clickable');
	    PlantLibrary.MOJ.addDataToObject(mojbtn,_partnumber);
	    if(PlantLibrary.MOJ.isTagSaved(_partnumber.replace(/F$/, ''))) {
			    mojbtn.style.background='url(../Images/saved.png)';
			    mojbtn.style.width = '65px';
			    mojbtn.style.height = '33px';
	    }
	    else {
			    mojbtn.style.background='url(../Images/save.png)';
			    mojbtn.style.width='65px';
			    mojbtn.style.height = '33px';	
			    Event.observe(mojbtn, 'click',PlantLibrary.MOJ.addToMOJ, false);
	    }
	    }

	 //setup the split
	 var col=container.$cE('div..columns');
	 var left=col.$cE('div..leftc');
	 var right=col.$cE('div..rightc');

	 //draw section	  
	 var drawInfoSection=function(container,headingLang0, Lang0){
	 //Left Side
	 if(Lang0=='') return true;
	    var CapFirstLetter=function(str){return str.charAt(0).toUpperCase() + str.slice(1);};
	    var div=container.$cE('div..infoSection');
	    var heading=headingLang0;
	    div.$cE('h1').innerHTML=heading;
	    div.$cE('p').innerHTML=CapFirstLetter(Lang0);
	 };

	// drawInfoSection(left, 'Part Number', _partnumber + ' / ' + _DPID + ' / ' + _TDID);	 
	 drawInfoSection(left,'Features',parseXMLForValue(Lang0xml,"FeatureText"));
	 tmpstr0=parseXMLForValue(Lang0xml,"BloomColorText");
	 if(tmpstr0!='')	drawInfoSection(left,'Bloom Color',tmpstr0);
	 tmpstr0=parseXMLForValue(Lang0xml,"BloomText");
	 if(tmpstr0!='')	drawInfoSection(left,'Blooms',tmpstr0);
	 else {
	    tmpstr0=parseXMLForValue(Lang0xml,"BloomTimeCopy");
	 if((tmpstr0!='')&&tmpstr0!='no bloom') drawInfoSection(left,'Blooms',tmpstr0);
	 }
	 drawInfoSection(left,'Hardiness',parseXMLForValue(Lang0xml,"HardyZoneText"));
	 if(parseXMLForValue(Lang0xml,"WidthCopy")=='') drawInfoSection(left,'Height',parseXMLForValue(Lang0xml,"WidthCopy"));
	 else drawInfoSection(left,'Height',parseXMLForValue(Lang0xml,"HeightCopy"));
	 drawInfoSection(left,'Spacing', parseXMLForValue(Lang0xml, "SpaceCopy"));
	 drawInfoSection(left, 'Depth', parseXMLForValue(Lang0xml,"PlantDepth"));
	 drawInfoSection(left, 'Longevity', parseXMLForValue(Lang0xml, "LongevityText"));
	 drawInfoSection(left, 'Feed', parseXMLForValue(Lang0xml, "FertilizerDescription"));
	 drawInfoSection(left, 'Tips And Uses', parseXMLForValue(Lang0xml, "TipsAndUsesDescription"));
	 if (parseXMLForValue(Lang0xml, "MaintenanceDescription") == '') drawInfoSection(left, 'Maintenance',  parseXMLForValue(Lang0xml, "MaintenanceDescription"));
	 else drawInfoSection(left, 'Maintenance', parseXMLForValue(Lang0xml, "MaintenanceWinter"), parseXMLForValue(Lang1xml, "MaintenanceWinter"));
	 drawInfoSection(left, 'Habit', parseXMLForValue(Lang0xml, "HabitDescription"));
	 drawInfoSection(left, 'Water', parseXMLForValue(Lang0xml, "WaterCodeDescription"));
	 drawInfoSection(left, 'Preferred Light', parseXMLForValue(Lang0xml, "LightCodeCopyII"));

	 //Right Side
	 //Branding information	 	 
	 var brandstyle = 'brandstyle.aspx';	 
	 function getBrandLogo(_TDID) {
	   var params = { 'TemplateDetailID': _TDID, 'LanguageID': 0 };
	    var ajax = new Ajax.Request(brandstyle,
	  { onSuccess: function(request) {
	     var data = request.responseText.evalJSON(false);
	     drawBrandLogo(data.BRANDS);
	  } .bind(this)	     
	  , parameters: params
	  });
	    return;
	 }

	 function drawBrandLogo(data) {
	    if (!data) return;
	    if (data.rows.length == 0) return;
	   var container = $('BrandLogo');
	    if (!container) return;
	    var div = container.$cE('div..infoSection');
	    var table = div.$cE('table').$cE('tbody');
	    var tr, img;
	    for (var v = 0, len = data.rows.length; v < len; v++) {
	       if (v % 3 == 0) tr = table.$cE('tr');
	       var td = tr.$cE('td..');
	       var img = document.createElement('img');
	       img.src="images/BrandLogos/" + data.get(v, 'BrandStyleLogo') ;
	       img.setAttribute('alt', data.get(v, 'BrandStyleName'));
	       td.appendChild(img);
	    }
	 }

	 function getBrandCopy(_TDID) {
	    var params = { 'TemplateDetailID': _TDID, 'LanguageID': 0 };
	    var ajax = new Ajax.Request(brandstyle,
	  { onSuccess: function(request) {
	     var data = request.responseText.evalJSON(false);
	     drawBrandCopy(data.BRANDS);
	  } .bind(this)
	  , parameters: params
	  });
	    return;
	 }

	 function drawBrandCopy(data) {
	    if (!data) return;
	    if (data.rows.length == 0) return;
	    var container = $('BrandCopy');
	    if (!container) return;
	    var div = container.$cE('div..infoSection');
	    var table = div.$cE('table').$cE('tbody');
	    var tr, img;
	    for (var v = 0, len = data.rows.length; v < len; v++) {
	       if (v % 3 == 0) tr = table.$cE('tr');
	          var td = tr.$cE('td..');
	           td.$cT(data.get(v, 'BrandStyleCopy'));
	    }
	 }
	 
	 var displayvideo = 'videoURL.aspx'
	 function getVideo() {
	    var params = {'DPID': _DPID};
	    var ajax = new Ajax.Request(displayvideo,
	  { onSuccess: function(request) {
	     var data = request.responseText.evalJSON(false);
	     drawVideoURL(data.VIDEO);
	  } 
	  , parameters: params
	  });
	    return;
	 }
	 
	 function drawVideoURL(data) {
	    if (!data) return;
	    if (data.rows.length == 0) return;
	    var container = $('VideoURL');
	    if (!container) return;
	    var div = container.$cE('div..infoSection');
	    var table = div.$cE('table').$cE('tbody');
	    var tr, img;
	    var videoImage = 'images/TapForVideo.png'
	    for (var v = 0, len = data.rows.length; v < len; v++) {
	       if (v % 3 == 0) tr = table.$cE('tr');
	       var td = tr.$cE('td..clickable');
	       var img = document.createElement('img');
	       img.src = "images/TapForVideo.png";
	       img.setAttribute('alt', data.get(v, 'Video'));
	       img.setAttribute('border', 0);
	       var ahref = document.createElement('a');
	       ahref.href = data.get(v, 'VideoUrl');
	       ahref.appendChild(img);
	       td.appendChild(ahref);
	    }
	 }

	 var moreplantInfo = 'moreplantInfo.aspx'
	 function getMorePlantInfo() {
	    var params = { 'DPID': _DPID, 'LanguageID': 0 };
	    var ajax = new Ajax.Request(moreplantInfo,
	  { onSuccess: function(request) {
	     var data = request.responseText.evalJSON(false);
	     drawMorePlantInfo(data.MOREPLANTINFO);
	  } .bind(this)
	  , parameters: params
	  });
	    return;
	 }

	 function drawMorePlantInfo(data) {
	    if (!data) return;
	    if (data.rows.length == 0) return;
	    var container = $('MorePlantInfo');
	    if (!container) return;
	    var div = container.$cE('div.vertical_container');
	    
	    for (var MyCount = 1; MyCount <= 6; MyCount++) {
	       var intGroupKeyIDCount = 0;
	       var blnHeader = false;

	       for (var v = 0, len = data.rows.length; v < len; v++) {
	          var GroupKeyID = data.get(v, 'Group_KeyID');
	          var CatGroupKey = 'Category' + MyCount;
	          var CatDataGroupKey = 'CategoryData' + MyCount;
	          var Category = document.createElement("div");
	          Category.setAttribute('id', CatGroupKey);
	          Category.setAttribute('class', 'accordion_toggle');
	          var CategoryData = document.createElement("div");
	          CategoryData.setAttribute('id', CatDataGroupKey);
	          CategoryData.setAttribute('class', 'accordion_content');
	          if ((MyCount == GroupKeyID) && (intGroupKeyIDCount == 0)) {
	             if (intGroupKeyIDCount == 0) {
	                if (blnHeader == false) {
	                   div.appendChild(Category);
	                   document.getElementById(CatGroupKey).innerHTML = data.get(v, 'Description');	     
				    blnHeader = true;
				    $(CategoryData).hide();
				    div.appendChild(CategoryData);
	               }
	            } 
	                var ul = document.createElement('ul');
	                ul.setAttribute('class', 'ullevel' + data.get(v, 'CopyLevel'));

	                var li = document.createElement('li');
	                li.setAttribute('class', 'lilevel' + data.get(v, 'CopyLevel'));
	                if (data.get(v, 'CopyLevel') == 2) {
	                   li.innerHTML = data.get(v, 'CopyData');
	                }
	                else {
	                   li.innerHTML = data.get(v, 'CopyData');
	                };
	                ul.appendChild(li);
	                $(CatDataGroupKey).appendChild(ul);
	             //   console.log(data.get(v, 'CopyData'));
	        
	          }
	       }
	    }
	    var bottomAccordion = new accordion('vertical_container');
	 }     //End Function

	 right.$cE('div.BrandLogo');
	 getBrandLogo(_TDID);

	 var mainImg = right.$cE('img.PlantDisplayMainImg');
	 mainImg.src = 'services/jh/imagelarge.ashx?plantcode=' + _partnumber.replace(/F$/, '');
	 mainImg.setAttribute('alt', data.DetailsLang0.get(0, 'BotanicalName'));

	 right.$cE('div.BrandCopy');
	 getBrandCopy(_TDID);
	 
	 right.$cE('div.VideoURL');
	 getVideo();

	 right.$cE('div.companions');
	 getCompanions(data.DetailsLang0.get(0, 'PlantId'), data.DetailsLang0.get(0, 'Region_KeyId'));

	 right.$cE('div.MorePlantInfo');
	 getMorePlantInfo(_DPID);

	  //draw planting instructions
	  var tmpSeasonType=null2Blank(data.DetailsLang0.get(0,'SeasonType'));
	  if(tmpSeasonType!=''&&tmpSeasonType.search(/Houseplant/i)==-1){
	  var div=right.$cE('div..infoSection plantingInstructions');
	  div.$cE('h1').$cT("Planting Instructions");
	  div.appendChild(createPlantingDiagramLang0(null2Blank(data.DetailsLang0.get(0,'CommonName')),tmpSeasonType,null2Blank(data.DetailsLang0.get(0,'GroupName'))));
	  }
	 }

   //Plant companions
	 var companionbyplantid = 'companionbyplantid.aspx';

	 function getCompanions(PlantId, Region_KeyId) {
	    if (!(PlantId || Region_KeyId)) return;
	    params = { 'PlantId': PlantId, 'Region_KeyId': Region_KeyId };
	    var ajax = new Ajax.Request(companionbyplantid,
	  { onSuccess: function(request) {
	     var data = request.responseText.evalJSON(false);
	     drawCompanions(data.COMPANION);
	  }
	  , parameters: params
	  });
	    return;
	 }
	 
	 function drawCompanions(data){
	 if(!data) return;
	 if(data.rows.length==0) return;
	 var container=$('companions');
	 if(!container) return;
	 var div=container.$cE('div..infoSection');
	 div.$cE('h2').$cT('Companion Plants');
	 var table=div.$cE('table').$cE('tbody');
	 var tr,img;
	 for (var v=0,len=data.rows.length;v<len;v++) {
	    if(v%3==0) tr=table.$cE('tr');
	    var td=tr.$cE('td..clickable');
	    td.PartNumber=data.get(v,'CustomPartNumber');
	    drawThumbnail(td, 115, data.get(v, 'BotanicalName'), data.get(v, 'PhotoPath'), data.get(v, 'CustomPartNumber'));
	    Event.observe(td, 'click', function(e){getPlantData(null, Event.element(e).up('td').PartNumber);}, false);
	}
	 	 }

	 function drawThumbnailImage(attachToElement, size, label, PhotoPath, partnumber) {
	    var wrap = document.createElement('div');
	    wrap.className = 'thumbnailWrapper';
	    //width & height is set in css, for some reason will not obey in js.

	    var img = document.createElement('img');
	    partnumber = partnumber.replace(/F$/, '');
	    img.src = 'services/jh/imagesmall.ashx?plantcode=' + partnumber;
	    img.setAttribute('alt', 'Click for more information about ' + label.fastTrim() + '.');
	    img.width = size;
	    img.height = size;
	    wrap.appendChild(img);

	    if (_homedepotUID_) {
		  var moj = document.createElement('div');
		  moj.style.top = '-1px';
		  moj.style.right = '-1px';
		  var txt = 'Add this plant to My Outdoor Journal.';
		  moj.setAttribute('alt', txt);
		  moj.setAttribute('title', txt);
		  PlantLibrary.MOJ.addDataToObject(moj, partnumber);
		  wrap.appendChild(moj);

		  if (PlantLibrary.MOJ.isTagSaved(partnumber)) {
			moj.style.background = 'url(../images/Saved.png)';
		  }
		  else {
			moj.style.background = 'url(../images/Save.png)';
			Event.observe(moj, 'click', PlantLibrary.MOJ.addToMOJ, false);
        }
moj.style.backgroundRepeat = 'no-repeat';
        moj.width = '65px';
	    }
	    attachToElement.appendChild(wrap);
	 }

	 function drawThumbnail(attachToElement, size, label, PhotoPath, partnumber) {
	    drawThumbnailImage(attachToElement, size, label, PhotoPath, partnumber);
	    var div = document.createElement('div');
	    div.innerHTML = label;
	    div.className = 'thumbnailLabel';
	    attachToElement.appendChild(div);
	 }

/*   Top 5 displays   */
var top5serviceURL = 'top5.aspx';
var Top5AllResultSet;
function getTop5All() {
   var params = {};
   var ajax = new Ajax.Request(top5serviceURL,
			{ onSuccess: function(request) {
			   Top5AllResultSet = request.responseText.evalJSON(false);
			   if (Top5AllResultSet.Annual.rows.length > 0) drawTop5(Top5AllResultSet.Annual, 'Top 5 annuals');
			   if (Top5AllResultSet.Perennial.rows.length > 0) drawTop5(Top5AllResultSet.Perennial, 'Top 5 perennials');
			   if (Top5AllResultSet.Nursery.rows.length > 0) drawTop5(Top5AllResultSet.Nursery, 'Top 5 nursery plants');
			   if (Top5AllResultSet.Indoor.rows.length > 0) drawTop5(Top5AllResultSet.Indoor, 'Top 5 indoor plants');
			   clearButtonDebounce = false;
			}
			, parameters: params
			});
   return;
}

function drawTop5(ResultSet, headName) {
   var pg = $('Top5');
   var head = document.createElement('div');
   head.className = 'top5head';
   head.innerHTML = headName;
   pg.appendChild(head);
   var tbl = document.createElement('table');
   pg.appendChild(tbl);
   var tbod = document.createElement('tbody');
   tbl.appendChild(tbod);
   var tr = document.createElement('tr');
   tbod.appendChild(tr);
   for (var v = 0, len = ResultSet.rows.length; v < len; v++) {
      var td = document.createElement('td');
      Event.observe(td, 'click', function(e) { PlantLibrary.State.setCurrent(PlantLibrary.States.PLANTDISPLAY); getPlantData(null, Event.element(e).up('td').PartNumber); }, false);
      td.PartNumber = ResultSet.get(v, 'CustomPartNumber');
      tr.appendChild(td);
      drawThumbnail(td, 115, ResultSet.get(v, 'BotanicalName'), ResultSet.get(v, 'PhotoPath'), ResultSet.get(v, 'CustomPartNumber'));
   }
}

function Top5Show() {
   $('PlantDisplay').innerHTML = '';
   var pg = $('Top5');
   pg.hide();
   pg.innerHTML = '';
   getTop5All();
   pg.show();
}
function Top5Hide() {
   $('Top5').hide();
}

/* Application States */
if (typeof PlantLibrary.States == "undefined") PlantLibrary.States = {};
PlantLibrary.States.SEARCHING = 0;
PlantLibrary.States.TOP5 = 1;
PlantLibrary.States.PLANTDISPLAY = 2;
/* Application State */
if (typeof PlantLibrary.State == "undefined") PlantLibrary.State = {};
PlantLibrary.State.current = PlantLibrary.States.TOP5; //init
PlantLibrary.State.previous = null;
PlantLibrary.State.currentPage = null;

PlantLibrary.State.setCurrent = function(state) {
   if (PlantLibrary.State.current == PlantLibrary.States.SEARCHING) {  //we are moving away from the search page
      PlantLibrary.State.currentPage = $('paging1').pagingControl.currentPage;
   }
   if (state == PlantLibrary.States.SEARCHING) {
      if (SearchResultSet) {
         drawResults();
         $('PageRecordsCount').show();
         Top5Hide();
         $('PlantDisplay').innerHTML = '';
         $('paging1').pagingControl.setCurrentPage(PlantLibrary.State.currentPage);
         $('paging1').fire('pagingControl:onChange');
         $('ResultsArea').show();
      } else {
         callsearch();
      }
   }
   else if (state == PlantLibrary.States.TOP5) {
      Top5Show.delay(1);
   }
   PlantLibrary.State.previous = PlantLibrary.State.current;
   PlantLibrary.State.current = state;
};

PlantLibrary.State.goBack = function() {
   PlantLibrary.State.setCurrent(PlantLibrary.State.previous);
};




