//<![CDATA[

/* vars set written at server
var ViewHeaderElmArray //array of element ids used in ViewSwitcher.ascx uc
var viewRepeaterContainer //container elementId of results repeater (used to find children controls for view toggling) 
var detailViewSwitchOptions //obj w/detail switch text & css
*/

/* GLOBAL VARS */
var SELECTED_VIEW_CLASS = "selected";
var MAP_PINS_CLASS = "mapPins";
var RESULTS_JOB_FIELDS_CLASS = "resultsJobFields";
var RESULTS_JOB_FIELDS_MAP_VIEW_CLASS = "resultsJobFields mapView";
var RESULTS_JOB_FIELDS_CNTRL_ROW_CLASS = "controlsRow";
var RESULTS_JOB_FIELDS_CNTRL_ROW_MAP_VIEW_CLASS = "controlsRow controlsRowmapView";
var RESULTS_DETAIL_CLASS = "jobDetail";
var RESULTS_DETAIL_SWITCH_CLASS = "expandCollapseSwitch";

var rptElm = null;
var resultElms = null;
var URL_MAP_JOBS = "/MapSearchResults.aspx?vw=";

/* PUBLIC METHODS */
function LoadView(vw) {
	ViewManager.View = vw;			
	InstantiateElms();
	//set view w/jobsearch.js
	ViewManager.SetState();
}
function SwitchView(vw)
{
	ViewManager.View = vw;	
	ViewManager.ToggleHeaders();
	ViewManager.Load();
}
function ToggleJobDetail(opener, detailID)
{
	var detailElm = JsUtil.GetEl(detailID);
	var switchOption = detailViewSwitchOptions.Expand;
	if (detailElm.style.display == 'none') {
		JsUtil.ShowElem(detailElm);
		switchOption = detailViewSwitchOptions.Collapse;		
	}
	else { JsUtil.HideElem(detailElm); }	
	ToggleJobDetailSwitch(opener, switchOption)
}
function ToggleJobDetailSwitch(elm, switchOption) {
	elm.innerHTML = switchOption.txt;
	elm.className = switchOption.css;
}
/* VIEW MANAGER OBJ */
var ViewManager = {	
	View : null,
	Load : function() {
		if (this.View != null) {
			this.SetState();					
			
			switch (this.View.toLowerCase()) {
				case JsConst.VIEWMAP :
					this.LoadMap();
					break;			
				case JsConst.VIEWDETAILED :			
					this.LoadDetailed();
					break;			
				case JsConst.VIEWBRIEF :	
				default :
					this.LoadBrief();
					break;					
			}
		}
	},

	SetState : function() {
		JsMain.SetView(this.View);	
	},
	
	ToggleHeaders: function() {
		if (typeof ViewHeaderElmArray != 'undefined') {		
			for (var i = 0; i < ViewHeaderElmArray.length; i++){
				var headerCntrlArray = ViewHeaderElmArray[i];
				
				for (var j = 0; j < headerCntrlArray.length; j++) {
					var header = headerCntrlArray[j];
					var elm = JsUtil.GetEl(header.elementId);
					if (elm != null) {
						elm.className = (header.view.toLowerCase() == this.View.toLowerCase()) ?
							SELECTED_VIEW_CLASS : "";
					}
				}
			}										
		}
	},

	LoadBrief : function() {
		if (typeof toggleMultiMap != 'undefined') {
			toggleMultiMap('none');
		}
		this.ToggleResults();			
	},

	LoadDetailed : function() {
		if (typeof toggleMultiMap != 'undefined') {
			toggleMultiMap('none');
		}
		this.ToggleResults();					
	},

	LoadMap : function() {	
		if (typeof elmiFrameMapSearchResults != 'undefined')
		{			
			var iframe = eval('window.frames.' + elmiFrameMapSearchResults);	
			if (typeof iframe != 'undefined') {
				toggleMultiMap('block');
				if (typeof iframe.LoadMap == 'undefined') {
					// iframe API not loaded, set src to instantiate onload method
					iframe.location.href = URL_MAP_JOBS + JsConst.VIEWMAP;
				}
				else
				{
					// iframe API loaded, call method directly
					iframe.LoadMap();
				}
				this.ToggleResults();	
			}			
		}
	},
	ToggleResults : function() {
		InstantiateElms(); //check for uninstantiated elements (can occur if SwitchView called before page is fully loaded).
		var view = this.View.toLowerCase();
		for(var i = 0; i < resultElms.length; i++){ //resultsElms
			var childElms = resultElms[i].getElementsByTagName('DIV');
			for(var j = 0; j < childElms.length; j++){				
				ToggleMapView(childElms[j], view);				
				if (view != JsConst.VIEWMAP) ToggleDetailView(childElms[j], view); 
			}
		}
	}			
}

/* private helpers */
function ShowElms (elmArray, displayStyle) {
	for(var i = 0; i < elmArray.length; i++){
		JsUtil.ShowElem(elmArray[i], displayStyle);
	}								
}

function HideElms (elmArray) {
	for(var i = 0; i < elmArray.length; i++){
		JsUtil.HideElem(elmArray[i]);
	}								
}
function ToggleMapView(elm, view) {	
	if (ContainsClassName(RESULTS_JOB_FIELDS_CLASS, 'DIV', elm)) { //resultsJobFields
		elm.className = (view == JsConst.VIEWMAP) ? RESULTS_JOB_FIELDS_MAP_VIEW_CLASS : RESULTS_JOB_FIELDS_CLASS;
		return;
	}
	if (ContainsClassName(RESULTS_JOB_FIELDS_CNTRL_ROW_CLASS, 'DIV', elm)) { //controlsRow (exapand/collapse)
		elm.className = (view == JsConst.VIEWMAP) ? RESULTS_JOB_FIELDS_CNTRL_ROW_MAP_VIEW_CLASS : RESULTS_JOB_FIELDS_CNTRL_ROW_CLASS;				
		return;			
	}
	if (elm.className == MAP_PINS_CLASS) { //mapPins
		(view == JsConst.VIEWMAP) ? JsUtil.ShowElem(elm, 'inline') : JsUtil.HideElem(elm);			
		return;			
	}
	return;				
}
function ToggleDetailView(elm, view) {
	if (elm.className == RESULTS_DETAIL_SWITCH_CLASS) { //detailSwitch
		var switchAnchors = elm.getElementsByTagName('A');		
		if (switchAnchors && switchAnchors.length > 0) {
			var switchAnchor = switchAnchors[0];
			var switchOption = (view == JsConst.VIEWBRIEF) ? detailViewSwitchOptions.Expand : detailViewSwitchOptions.Collapse;	
			ToggleJobDetailSwitch(switchAnchor, switchOption)
			return;				
		}		
	}	
	if (elm.className == RESULTS_DETAIL_CLASS) { //jobDetail
		(view == JsConst.VIEWDETAILED) ? JsUtil.ShowElem(elm) : JsUtil.HideElem(elm);			
		return;
	}
	return;	
}
function InstantiateElms() {
	//lazy initialization of result elements
	if (rptElm == null) {
		rptElm = JsUtil.GetEl(viewRepeaterContainer);		
	}
	if (resultElms == null) {
		resultElms = JsUtil.GetElementsByClassName("result", 'DIV', rptElm);	
	}
	}	
function ContainsClassName(className, tag, elm) {
	if (elm.tagName == tag) {
		var testClass = new RegExp("(^|\s*?)" + className + "(\s*?|$)");
		return testClass.test(elm.className);	
	}		
	return false;
}

/* WebTrends Click Tracking */
var JSTrackConst = {
	VIEWMAP : 'cviewmap',
	VIEWBRIEF : 'cviewbrief',
	VIEWDETAILED : 'cviewdetailed',
	SMALLMAP : 'csmallmap',	
	JOBEXPAND : 'cjobexpand',	
	JOBCOLLAPSE : 'cjobcollapse'			
}

/* WebTrends Key/Value pairs for dcsMultiTrack */
var JsViewTracker = new Array();
JsViewTracker[JSTrackConst.VIEWMAP] = new Array(['DCS.dcsqry', 're=144&vw=' + JsConst.VIEWMAP]); 
JsViewTracker[JSTrackConst.VIEWBRIEF] = new Array(['DCS.dcsqry', 're=9&vw=' + JsConst.VIEWBRIEF]); 
JsViewTracker[JSTrackConst.VIEWDETAILED] = new Array(['DCS.dcsqry', 're=10&vw=' + JsConst.VIEWDETAILED]); 
JsViewTracker[JSTrackConst.SMALLMAP] = new Array(['DCS.dcsuri', '/smallmap.aspx'], ['DCS.dcsqry', '']);
JsViewTracker[JSTrackConst.JOBEXPAND] = new Array(['gDcsId', ''], ['DCSext.object', 'joblisting'], ['DCSext.ID', 'detail']); 
JsViewTracker[JSTrackConst.JOBCOLLAPSE] = new Array(['gDcsId', ''], ['DCSext.object', 'joblisting'], ['DCSext.ID', 'brief']); 

function LogView(key) {	
	//dcsMultiTrack - declared in http://media.monster.com/js/wt/"+gDcsId+"_main.js
	if (typeof dcsMultiTrack  != 'undefined') {	
		var trackKeys = JsViewTracker[key];	
		if (trackKeys && trackKeys.length > 0) {		
			var wtparams = new Array();
			for (var i=0; i<trackKeys.length; i++) {
				var kvp = trackKeys[i];
				if (kvp[0] == 'gDcsId') {
					if (typeof gClickDcsId  != 'undefined') { kvp[1] = gClickDcsId; } //wt global var 
				} 			
				wtparams.push(kvp[0]);
				wtparams.push(kvp[1]);				
			}
			dcsMultiTrack.apply(this, wtparams);
		}	
	}
	else { 
		// alert('dcsMultiTrack function not found');
	}
}
/* //WebTrends Click Tracking */

//]]>
