/**
 * @author mholub
 */

var mapLightbox = null;
var displayMode = 'Table';
var expanded = false;
var detailedList = false;

var detect      = navigator.userAgent.toLowerCase();
var OS,browser,version,total,thestring = '';

var toolTipTimeout;
var currentRecentSearchesHeading;
var safeDialog = new Hash();

var activeHelptext = null;

var totalMwPsrImages;
var currentMwPsrImageIndex;


function toggleBox(id,image) {
	var box = $(id);
	var tab     = box.select('.tabs')[0];
	var content = box.select('.boxContent')[0];
	var footer  = box.select('.boxFooter')[0];
	var options = {duration:0.1,fps:25,queue: 'end'};
	
	if (expanded && id == 'contentBox') return;

	if (content != undefined) new Effect.toggle(content,'blind',options);
	if (tab     != undefined) new Effect.toggle(tab,    'blind',options);
	if (footer  != undefined) new Effect.toggle(footer, 'blind',options);	
	
	if ($(image).alt == 'Minimise panel') {
		minimiseBox(id);
	} else {
		restoreBox(id);
	}
}

function minimiseBox(id) {
	var restoreButton = $(id).getElementsBySelector('img[alt="Minimise panel"]')[0];
	if (restoreButton != undefined) {
		restoreButton.src = 'css/images/maximiseButton.gif';
		restoreButton.alt = 'Restore panel';
	}

	var hrefTitle = $(id).select('a[title="Minimise panel"]')[0];
	if (hrefTitle != undefined) hrefTitle.title = "Restore panel";

	var tab = $(id).select('.tabs')[0];
	if (tab != undefined) $(id).addClassName('boxToggleTabs');

	if (id == 'contentBox') {
		var cbet = $('contentBoxExpandToggle');
		if (cbet != undefined) cbet.setOpacity(0.1);
	}
	if (id == 'recentSearches') {
		var rs = $$('#recentSearches  .boxHeaderHeading')[0];
		if(rs!=undefined){
			currentRecentSearchesHeading = rs.innerHTML; 
			rs.innerHTML = 'Recent/Saved Searches';
		}
	}
}

function restoreBox( id ) {
	var minimiseButton = $(id).getElementsBySelector('img[alt="Restore panel"]')[0];
	if (minimiseButton != undefined) {
		minimiseButton.src = 'css/images/minimiseButton.gif';
		minimiseButton.alt = 'Minimise panel';
	}
	
	var hrefTitle = $(id).getElementsBySelector('a[title="Restore panel"]')[0];
	if (hrefTitle != undefined) hrefTitle.title = "Minimise panel";
	
	var tab = $(id).select('.tabs')[0];
	if (tab != undefined) $(id).removeClassName('boxToggleTabs');
	
	if (id == 'contentBox') {
		var cbet = $('contentBoxExpandToggle');
		if (cbet != undefined) cbet.setOpacity(1);
	}
	if (id == 'recentSearches') {
		var rs = $$('#recentSearches  .boxHeaderHeading')[0];
		if(rs!=undefined){
			rs.innerHTML = currentRecentSearchesHeading;
		}
	}
}

function toggleSearchCriteria(id,image){
	// disabled whilst sorting out behaviour of long queries and 'loading' buttons
	return false;
	
	// note: triggered during box toggling, so the alt image opposite of expected
	var tValue = $('autocomplete').value;
	if ($(image).alt == 'Minimise panel') {
		var tAutocomplete = $('boxHeaderAutocomplete').innerHTML;
		$('boxHeaderAutocomplete').innerHTML = '';
		$('autocompleter').innerHTML = tAutocomplete;
	}
	else {
		var tAutocomplete = $('autocompleter').innerHTML;
		$('autocompleter').innerHTML = '';
		$('boxHeaderAutocomplete').innerHTML = tAutocomplete;
	}
	
	autocompleteObject = Ajax.Autocompleter("autocomplete",
	   "autocomplete_choices",
	   "render.php?action=fastSearch",
   		{paramName: "search",
   		 onlyOneOfType: "fastsearch",
   		 minChars: autocompleteCharacters,
         evalScripts:true,
  		 indicator: 'indicator1',
   		 updateElement: handler}
	);
	
	$('autocomplete').value = tValue;
}

function closeStoredSearch(id) {
	new Effect.Fade($(id),'blind');
	
}

/**
 * If the map is already shown in the Map tag, we need to set it back at the end
 * of body tag and make it invisible (zindex -1000)
 */
function moveMapOutside() {

	document.getElementsByTagName('body')[0].appendChild($('skyponyMapPlaceholder'));	
	$('skyponyMapPlaceholder').hide();
	$('skyponyMapPlaceholder').style.zIndex = '-1000';	
	
	$('skyponyMapPlaceholder').style.width='100px';
	
}

/**
 * If mode is Map then we need to move the map from end of body tag to proper location
 * and make it visible.
 */
function moveMapInside() {
	var obj = $('skyponyMapPlaceholder');
	/* Here be dragons, setting the z-index fixes an IE8 tab switching bug */
	obj.style.zIndex = '-1000';
	
	try {
		$('contentBox').select('.boxContent')[0].appendChild(obj);
		obj.style.width="100%";
		obj.show();
		if (Element.getStyle(obj,'zIndex') == '-2000') {
			drawPage();
			//myMatrixMap.zoomToFullExtent();
			thestralMap.zoomToMaxExtent();
			//if (defaultMapExtents)
				//myMatrixMap.zoomToExtents(parseInt(defaultMapExtents[0]),
				//                          parseInt(defaultMapExtents[1]),
				//						  parseInt(defaultMapExtents[2]),
				//						  parseInt(defaultMapExtents[3]));
			//else
				//myMatrixMap.zoomToExtents(1164651,5378204,3834968,6724922);
		}		
		obj.style.zIndex = '1';	
	} 
	catch (err) {
		alert("Property Guru Error:"+err);
	}
}

function toggleResultTab(mode) {
	if($(mode+'Tab') == null) return;
	/* #contectBox should be #contentTabs, but that is non unique */
	$$('#contentBox li.selected').each(function(s,i){s.removeClassName('selected')});
	$(mode+'Tab').className="selected";
}


function myMapIsReadyToUse() {
	switchResultMode('Map');
	if (mapLightbox)
		mapLightbox.hideBox();
}

function switchResultMode(mode) {
	$('boxContent').style.height = 'auto'

	if (mode == 'Map' && thestralMap == null) {
		initMapPlaceholder();
		if (thestralMap == null) {
			alert("PropertyGuru Map Component initialisation failed.\nPlease refresh your page and re-initiate the map.");
			return;
		}
	}

  /*
   * If switching away from the map default to the pan tool as zoombox tool has issues! (overides tool selection, dirties map with red points)
   */
  if (displayMode == 'Map' && mode != 'Map') {
    if (mapToolPanel && mapToolPanel.active) {
      mapToolPanel.activateControl(mapToolPanel.getControlsByClass('OpenLayers.Control.MouseDefaults').first());
      mapToolPanel.deactivate();
    }
  }

	//if (mode == 'Map' && myKaMap.initializationState != 2) {
	//  	myMatrixMap.registerForEvent( KAMAP_READY_TO_USE,  null, myMapIsReadyToUse );
	//	mapLightbox = new Lightbox.base('myMapBox');
	//	return;
	//}
		
	displayMode = mode;

	toggleResultTab(mode);
	/**
	 * If the map is displayed and table is shown we need to move the map away
	 */
	if ( (displayMode == 'Welcome' || displayMode == 'DetailedTable' || displayMode == 'Table' || displayMode == 'MWTable'|| displayMode == 'MWSummary') && 
	     ($('skyponyMapPlaceholder').style.zIndex != '-1000')) {
	     moveMapOutside();
	}
	
	/**
	 * Update the result set
	 */
	updateQuery('');		

	/**
	 * We have just switched from table to map. Therefore we need some processing
	 */
	if (displayMode == 'Map' && (
		Element.getStyle($('skyponyMapPlaceholder'),'zIndex') == '-1000' || 		
		Element.getStyle($('skyponyMapPlaceholder'),'zIndex') == '-2000' || 
		$('skyponyMapPlaceholder').style.zIndex == '')) {	
		if (expanded) $('boxContent').style.height = document.body.parentNode.clientHeight-200+'px';
		
		//Hide the tools for the last tab, because map tools are slow to load.
		$$('div.boxToolbar').first().innerHTML = 'Loading map tools ...';
		
		moveMapInside();
		
		if ($('dtable') != null)					$('dtable').remove();
		if ($('columnSelector') != null)			$('columnSelector').remove();
		if ($('propertySummaryReport') != null)		$('propertySummaryReport').remove();
		if ($('welcomeContent') != null)            $('welcomeContent').remove();
		($$('.pager')).each(function(tdiv){tdiv.remove()});
		var reports = $$('.generatedReports');
		
		if (expanded) {			
			if (browser == "Internet Explorer" &&  version=="6") {
				$('viewport').style.height = (document.body.offsetHeight - 100) + 'px';
			} else {
				$('viewport').style.height = ($('contentBox').select('.boxContent')[0].getHeight() - 20) + 'px';
			}
			
		} else {

			var windowHeight = document.viewport.getHeight();
			
			if 	(windowHeight < 700){
				$('viewport').style.height = '350px';
			}else{
				$('viewport').style.height = (windowHeight-400)+'px';
			}
						
		}
		
		drawPage();
		
		if (reports.length > 0) reports.each(function(elem) {elem.remove()});		
		if(loadingStack != null) // If mode is MAP, the Loading at the top right is not cleaned properly
			loadingStack.pop();	 // decrement manually the variable, this fixes some hiding probs in IE
	}
	
	
}

/**
 * Displays and hides the columns selector in table
 */
function toggleColumnSelector() {
	if ($('columnSelectorBody').style.display == 'none' || $('columnSelectorBody').style.display == '') {
		$('columnSelectorBody').style.display = 'block';
		$('columnSelector').style.width = '400px';
	} else {
		$('columnSelectorBody').style.display = 'none';
		$('columnSelector').style.width = '100px';		
	}

}

function fillInContentBoxWithDummyDiv() {
	var dummyDiv = document.createElement('div');
	dummyDiv.id = 'dummyDiv';
	dummyDiv.style.height = '350px';
	$('contentBox').select('.boxContent')[0].appendChild(dummyDiv);
}

function removeDummyDiv() {
	$('dummyDiv').remove();
}


function expandBox(boxIdToExpand,iconToChange) {
	if (inCmaMode()){$('context_box_expand').hide();return;}
	$('boxContent').style.height = 'auto';

	// 23/08/2007 R.Spittel
	// New feature required by MS
	// when toggeling the content box, the maximise button shall be diabled
	// we check if the button's opacity has been set to less then 1
	if ($('contentBoxExpandToggle').getOpacity() < 0.9)
		return;

	if (!expanded || !($(boxIdToExpand).hasClassName('expandedBox'))) {
		expanded = true;
		oldWidth = $(boxIdToExpand).style.width;
		oldHeight= $(boxIdToExpand).style.height;
		$(boxIdToExpand).style.width = document.body.offsetWidth-40+"px";
		
//		$$('select').each(function (el) {el.hide();});
		$('rightCol').hide();
		$('header').hide();
		$('searchBox').hide();
		if (browser == "Internet Explorer" && version == "6") {
			//Why does adding a class crash IE6, I guess I'll never know...
		}
		else {
			$(boxIdToExpand).addClassName('expandedBox');
		}
		$(iconToChange).src = 'css/images/contract.gif';
		$(iconToChange).alt = 'Restore panel';
		if ($('context_box_expand') != undefined) $('context_box_expand').title = 'Restore panel';
		if (displayMode == 'Map' && $('skyponyMapPlaceholder').style.zIndex != '-1000') {
			if (browser == "Internet Explorer" && version == "6") {
				$('viewport').style.height = (document.body.offsetHeight - 105) + 'px';
			}
			else {
				$('viewport').style.height = ($('contentBox').getHeight() - 105) + "px";
			}
			$('contentBox').style.height = '89%';
			drawPage();
		}
	} else {
		expanded = false;
		$(boxIdToExpand).removeClassName('expandedBox');
		$(boxIdToExpand).style.width=oldWidth;
		$(boxIdToExpand).style.height=oldHeight;
//		$$('select').each(function (el) {el.show();});
		$('rightCol').show();
		$('header').show();
		$('searchBox').show();
		$(iconToChange).src = 'css/images/expand.gif';
		$(iconToChange).alt = 'Expand panel';
		if ($('context_box_expand') != undefined) $('context_box_expand').title = 'Expand panel';
		if (window.myKaMap && $('skyponyMapPlaceholder').style.zIndex != '-1000') {
			$('viewport').style.height = '350px';
   			drawPage();
			/*if (x_pos != 0)	myMatrixMap.zoomToPosition(x_pos,y_pos);*/
		}
	}
}



/**
 * Used to display short property summary report when the user mouseovers a table row
 */
function showShortPropertySummaryReport() {

		
}

function showToolTipPropertySummaryInner(valRef,mouseY,link) {
		new Ajax.Updater('addressTooltip','render.php', {
						parameters: 'action=GetPSRLite&valref=' + valRef,
						evalScripts: true,
						onComplete: function() {}
						}); 
}

function showToolTipPropertySummary(linkElement,valRef,evt) {

	linkElement = $(linkElement);
	//console.log('windowY: ' + document.documentElement.clientHeight + ' cursor: ' + (Event.pointerY(evt)) + ' link: ' + findPos(linkElement)[1]);
	if ($('addressTooltip') != undefined) $('addressTooltip').remove();
	
	var	divHeight = 150;
	var div = document.createElement('div');
	div.id = 'addressTooltip';
	div.innerHTML = '<div style="height:'+divHeight+'px;padding-top:100px;text-align:center"><img src="css/images/throbber.gif"/><br/><br/><br/><h2>Loading report preview...</h2></div>';
	
	if ((Event.pointerY(evt) + divHeight + linkElement.getHeight()) >= document.documentElement.clientHeight)
		div.style.top = findPos(linkElement)[1] - divHeight  - linkElement.getHeight() + 'px';
	else
		div.style.top = findPos(linkElement)[1] + linkElement.getHeight() + 'px';
		
	div.style.left = findPos(linkElement)[0] + linkElement.getWidth() + 'px';
	
	$('dtable').appendChild(div);
	
	toolTipTimeout = window.setTimeout('showToolTipPropertySummaryInner(\'' + valRef + '\','+Event.pointerY(evt)+',\''+linkElement.id+'\')',150);
	
}

function popupPropertySummary(valRef,event) {
	displayPopup(event,'cmaPopup',{width: '540px', align: 'left'}, false);
	new Ajax.Updater('cmaPopup','render.php', {
						parameters: 'action=GetPSRLite&isPopup=1&valref=' + valRef,
						evalScripts: true,
					    onComplete: function() {
					    	updateShadow('cmaPopup');
	                  }});	
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

function hideToolTipPropertySummary() {
	if ($('addressTooltip') != undefined) $('addressTooltip').remove();
}

/**
 * If in property summary report you can go back to list (if there is any) by clicking on back button in 
 * report header. Hide all controls that are not available in list mode.
 */
function propertyBackButton(json) {
	if ($('propertyReports') != undefined) $('propertyReports').remove();
	if ($('radiusSearch') != undefined) $('radiusSearch').remove();
	if (displayMode == 'Map') $('contentBox').select('.boxHeaderHeading')[0].innerHTML = 'Results';
	actionRewrite = 'PropertySummaryBackButtonAction';
	updateQuery(json);
}

function updateShadow(id) {
		Shadower.shadow(id, {
				  distance: 4,
				  angle: 130,
				  opacity: 0.7,
				  nestedShadows: 4,
				  color: '#000000'
				}, true);
}

function displayPopup(event,id,dimensions, shim, xPos, yPos) {
	shim = (shim == null || shim != false);
	if(shim) iFrameShim.unshim(id);
	Shadower.deshadow(id);

	if(xPos == null) var xPos=Event.pointerX(event);
	if(yPos == null) var yPos=Event.pointerY(event);

	element=$(id);

	popupX=(xPos-(element.scrollWidth));
	
	if (popupX<10) 
		popupX=xPos;
	
	element.style.left = popupX-10+'px';
	element.style.top  = (yPos-30)+'px';
	if (dimensions) {
		element.style.width=dimensions.width;
		
		if (dimensions.x && dimensions.y) {
			element.style.left = dimensions.x+'px';
			element.style.top  = dimensions.y+'px';
		}
		
		if (dimensions.align && dimensions.align == "left" && dimensions.width) {
			var dWidth = xPos - dimensions.width.match(/\d+/)[0];
			if (dWidth < 20) dWidth = 20;
			element.style.left = dWidth + 'px';
			element.style.top = ( yPos - 16 ) + 'px';
		}
		noShadow = dimensions.noShadow != undefined && dimensions.noShadow == 'true';
	} else {
		noShadow = false;
	}
	element.style.position='absolute';
	
	element.show();	
	
	if (!noShadow) updateShadow(element.id);	
	new Draggable(element.id, { change: function() {
									if (!noShadow) updateShadow(element.id);
									if(shim) iFrameShim.shim(element.id);
								}, 	
								starteffect: Prototype.emptyFunction,
								reverteffect: Prototype.emptyFunction, 
								endeffect: Prototype.emptyFunction});
	if(shim) iFrameShim.shim(element.id);
}

function closePopup(id) {
	iFrameShim.unshim(id);
	Shadower.deshadow(id);
	$(id).hide();
}

function displayLocationSearch(event) {

	var xPos=Event.pointerX(event);
	var yPos=Event.pointerY(event);
	displayPopup(event,'addLocationSearch',{width:'550px',x:xPos-550,y:yPos-80});
	new	Ajax.Updater('addLocationSearch','render.php',{
						evalScripts: true,
						parameters: {'action':'fastSearch',
								   'street':true},
								   onComplete: function() 
										{new Ajax.Autocompleter("autocomplete_street",
										   "autocomplete_street_choices",
										   "render.php?action=fastSearch&street=true&all_results=false",
										   		{paramName: "search",
										   		 minChars: 5,
						                         evalScripts:true,
							 			   		 indicator: 'indicator1',
							 			   		 updateElement: streetHandler}); 
							 			$('autocomplete_street').focus();

										}
	});
	
	
	
}

function displayNewHelp(){
	//Open a new browser window at url
	help_app_url = '/gurux/training/';	
	window.open(help_app_url, 
				'PropertyGuru_Help'+new Date().getTime(), 
				'height=800,width=1200,scrollbars=yes,resizable=yes,status=1,toolbar=1,location=1,menubar=1,directories=1');
				//status=1,toolbar=1,location=1,menubar=1,directories=1
}

function displayTutorialPopup(event,file, valRef) {
	$('helpBox').setStyle({'height':'auto'});
	displayPopup(event,'helpBox',{width:'720px', align: 'left'});
	params = 'action=help&file=' + file;
	if(valRef != null) params += '&valRef=' + valRef;
	new Ajax.Updater('helpBox','render.php',
	                  {
					  	evalScripts: true,
					  	parameters: params,
					  	onComplete: function() {
					  		updateShadow('helpBox');
					  		iFrameShim.shim('helpBox');
	                  }});	
}
/*
function displayCmaFeedbackPopup(event,file) {
	$('helpBox').setStyle({'height':'auto'});
	displayPopup(event,'helpBox',{width:'720px', align: 'left'}, null, 700, 100);
	new Ajax.Updater('helpBox','render.php',
	                  {
					  	evalScripts: true,
					  	parameters: 'action=help&file=' + file,
					  	onComplete: function() {
					  		updateShadow('helpBox');
					  		iFrameShim.shim('helpBox');
	                  }});	
}
*/
function displayHelpPopup(event,file) {
	$('helpBox').setStyle({'height':'auto'});
	displayPopup(event,'helpBox',{width: '540px', align: 'left'});
	new Ajax.Updater('helpBox','help/popup/'+file+'.html',
	                  { evalScripts: true,
					    onComplete: function() {
					    	updateShadow('helpBox');
					    	iFrameShim.shim('helpBox');
	                  }});	
}

function forgotPwdPopup(event) {
	$('helpBox').setStyle({'height':'auto'});
	displayPopup(event,'helpBox',{width: '250px', align: 'left'});
	new Ajax.Updater('helpBox','forgotPassword.php',
	                  { evalScripts: true,
					  	method: 'get',
					    onComplete: function() {
					    	updateShadow('helpBox');
					    	iFrameShim.shim('helpBox');
	                  }});
	return false;	
}

/* Not used - uncomment if needed */
function displayPageloadPopup(file) {
	$('helpBox').setStyle({'height':'auto'});
	displayPopup('pageLoad','pageloadBox',{width: '630px', align: 'left', noShadow: 'true'}, null, 700, 200);
	new Ajax.Updater('pageloadBox','help/popup/'+file+'.html',
	                  { evalScripts: true,
					    onComplete: function() { iFrameShim.shim('pageloadBox'); }
					  });	
}


// 02/07/2007 R.Spittel
// FROM TERRANET - used by maximise contentBox
function checkIt(string) {
	place = detect.indexOf(string) + 1;
	thestring = string;
	return place;
}

// 02/07/2007 R.Spittel
// FROM TERRANET - used by maximise contentBox
if (checkIt('konqueror')) {
	browser = "Konqueror";
	OS = "Linux";
}
else if (checkIt('safari')) browser = "Safari"
else if (checkIt('omniweb')) browser = "OmniWeb"
else if (checkIt('opera')) browser = "Opera"
else if (checkIt('webtv')) browser = "WebTV";
else if (checkIt('icab')) browser = "iCab"
else if (checkIt('msie')) browser = "Internet Explorer"
else if (!checkIt('compatible')) {
	browser = "Netscape Navigator"
	version = detect.charAt(8);
} else 
	browser = "An unknown browser";

if (!version) 
	version = detect.charAt(place + thestring.length);

if (!OS) {
	if (checkIt('linux')) OS = "Linux";
	else if (checkIt('x11')) OS = "Unix";
	else if (checkIt('mac')) OS = "Mac"
	else if (checkIt('win')) OS = "Windows"
	else OS = "an unknown operating system";
}


function initDialogStorage($dialogId){
	if(safeDialog[$dialogId]){
		safeDialog[$dialogId].each(function(element){
		    var foundElements = document.getElementsByName(element[0]);
		    if(foundElements){
		        var firstElement = foundElements[0];
		        if(firstElement){
		            if(firstElement.type=='checkbox'){
		                firstElement.checked = element[1];    
		            } else {
		                firstElement.value = element[1];    
		            }
		        }
		    }        
		});
	}	

	resetDialogStorage($dialogId);
	
	$($dialogId).getElementsBySelector('input').each(function(element){
        if(element.type=='checkbox'){
			safeDialog[$dialogId][element.name] = element.checked;
        } else {
			safeDialog[$dialogId][element.name] = element.value;
        }
	});
}

function resetDialogStorage($dialogId){
	safeDialog[$dialogId] = new Hash();
}

function displayColumnsPopUp(event,columnSelectorWidth) {
	initDialogStorage('columnSelectorContainer');
	displayPopup(event,'columnSelector',{width: columnSelectorWidth + 'px'});
}




function displayFieldsPopUp(event) {
	initDialogStorage('columnSelector');
	displayPopup(event,'columnSelector',{width: '350px'});
}

function resetToHome() {
	activeHelptext = null;
	selectSingleProperty('WELCOME_TO_PROPERTYGURU');
}

function setContentTabStatus( count ) {
	if ( count > 1) {
		if ($('WelcomeTab')!= undefined) $('WelcomeTab').hide();
		if ($('PSRTab')!= undefined) $('PSRTab').hide();
		if ($('TableTab')!= undefined) $('TableTab').show();
		if ($('DetailedTableTab')!= undefined) $('DetailedTableTab').show();
		//if ($('CMATab')!= undefined) $('CMATab').show();
	} else if ( count == 1) {
		if ($('WelcomeTab')!= undefined) $('WelcomeTab').hide();
		if ($('PSRTab')!= undefined) $('PSRTab').show();
		if ($('TableTab')!= undefined) $('TableTab').hide();
		if ($('DetailedTableTab')!= undefined) $('DetailedTableTab').hide();
		//if ($('CMATab')!= undefined) $('CMATab').hide();
	} else {
		// count == 0 or undefined
		if ($('WelcomeTab')!= undefined) $('WelcomeTab').show();
		if ($('PSRTab')!= undefined) $('PSRTab').hide();
		if ($('TableTab')!= undefined) $('TableTab').hide();
		if ($('DetailedTableTab')!= undefined) $('DetailedTableTab').hide();
		//if ($('CMATab')!= undefined) $('CMATab').hide();
	}
}

function updateTableAfterSelectingColumns(isMap) {	


	resetDialogStorage('columnSelectorContainer');
	var elements = $$('.columnsSelectorCheckbox');
	var result = '';
	if (isMap) {
		var suffix = '=on&';
	} else {
		var suffix = ',';
	}


	for(i=0;i<elements.length;i++) {
		var elementFieldName = elements[i].name.replace(/^column_/,'');
		elementFieldName = elementFieldName.replace(/,.*/,'');
		if (elements[i].checked) result+=elementFieldName+suffix;			
	}
	
	if (isMap) {
		wms_overlay_layer.params['updateAnnotation'] = 'on';
		//tLayer_Overlay.setTile(result);
		for(i=0;i<elements.length;i++) {
			var elementFieldName = elements[i].name.replace(/^column_/,'');
			elementFieldName = elementFieldName.replace(/,.*/,'');
			if (elements[i].checked) {
				wms_overlay_layer.params[elementFieldName] = 'on';
			} else {
				wms_overlay_layer.params[elementFieldName] = null;
			}			
		}
		wms_overlay_layer.clearGrid();
		wms_overlay_layer.redraw();
		//console.log(result);
	} else {
		for(i=0;i<elements.length;i++) {
			var elementFieldName = elements[i].name.replace(/^column_/,'');
			elementFieldName = elementFieldName.replace(/,.*/,'');
			if (elements[i].checked) result+=elementFieldName+suffix;			
		}		
		updateContentBox({action:'updateQuery',columns: result.replace(/,$/,'')});
	}

	closePopup('columnSelector'); 
	
}

function updateTableAfterSelectingOrder(sortOrder) {
	reloadWidgets = false;
	updateContentBox({action:'updateQuery',order: sortOrder});
}

function updateTableAfterSelectingPage(newPage,pageChanged,scrollToTop) {
	if (scrollToTop) scroll(0,0);
	reloadWidgets = false;
	updateContentBox({action:'updateQuery',page: newPage,pageChanged:pageChanged?'true':'false'});
}

function SelectAllByClassName(cls) {
	$$('.'+cls).each(function (item) {if(!item.disabled) item.checked = 1;});
}

function SelectDefault(cls) {
	$$('.'+cls).each(function (item) {
		item.checked = item.hasClassName('default');
	});
}

function DeselectAllByClassName(cls) {
	$$('.'+cls).each(function (item) {if (!item.disabled) item.checked = 0;});
}

function InvertSelectionByClassName(cls) {
	$$('.'+cls).each(function (item) {if (!item.disabled) item.checked = !item.checked});
}

function showAerialLayerSelector() {
	$('aerialImageryButton').style.display = 'none';
	$('aerialImageryLayers').style.display = 'block';	
}

function changeAerialLayers(valRef) {
	var img = $('image_' + valRef + '_em');
	var overlayThrobber = document.createElement('div');
	overlayThrobber.setAttribute('id','overlayThrobber');
	overlayThrobber.setAttribute('width',img.getWidth());
	overlayThrobber.setAttribute('height',img.getHeight());	
	overlayThrobber.style.position = 'absolute';
	overlayThrobber.style.left = findPosX(img)+'px';
	overlayThrobber.style.top = findPosY(img)+'px';
	overlayThrobber.style.width = img.getWidth()-2+'px';
	overlayThrobber.style.height = img.getHeight()-2+'px';
	overlayThrobber.style.backgroundImage = 'url(css/images/indicator.3.gif)';	
	overlayThrobber.className = 'aerialImage';
	$('propertySummaryReport').appendChild(overlayThrobber);
	var src = img.src;	
	if (src.match(/&layers=.*/)) src = src.replace(/&layers=.*/,'');
	if (!$('legalDescriptionLayer').checked && $('noLayers').checked) var layers = '99';
	if (!$('legalDescriptionLayer').checked && $('titleLayer').checked) var layers = '05';	
	if (!$('legalDescriptionLayer').checked && $('ownerLayer').checked) var layers = '04';	
	if ($('legalDescriptionLayer').checked && $('noLayers').checked) var layers = '01';	
	if ($('legalDescriptionLayer').checked && $('titleLayer').checked) var layers = '03';	
	if ($('legalDescriptionLayer').checked && $('ownerLayer').checked) var layers = '02';		
	src += '&layers=' + layers;	
	img.src = src;
}

function selectAerialLayers(suffix) {
	if (
		$('legalDescriptionLayer') == undefined ||
		$('noLayers') == undefined ||
		$('ownerLayer') == undefined ||
		$('titleLayer') == undefined) 
	return;
		
	switch (suffix) {
		case '99': $('legalDescriptionLayer').checked = false; $('noLayers').checked = true;break;
		case '01': $('legalDescriptionLayer').checked = true; $('noLayers').checked = true;break;
		case '02': $('legalDescriptionLayer').checked = true; $('ownerLayer').checked = true;break;
		case '03': $('legalDescriptionLayer').checked = true; $('titleLayer').checked = true;break;
		case '04': $('legalDescriptionLayer').checked = false; $('ownerLayer').checked = true;break;
		case '05': $('legalDescriptionLayer').checked = false; $('titleLayer').checked = true;break;
	}
}

function hideOverlayTrobber() {
	if ($('overlayThrobber') != undefined) $('overlayThrobber').remove();
}

function findPosX(obj)
  {
    var curleft = 0;
    if(obj.offsetParent)
        while(1) 
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
  }

  function findPosY(obj)
  {
    var curtop = 0;
    if(obj.offsetParent)
        while(1)
        {
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;
    return curtop;
  }
  
  function expandMWContentBox(boxToExpandId, imageToToggleId, minRows, maxRows) {
  	if($(boxToExpandId).hasClassName('expandedBox')) {
  	
  	} else {
  	
  	}
  	
  	expandBox(boxToExpandId, imageToToggleId);
  }

// welcome page help text. only show one block at a time.
function helptextToggle(showDiv) {
	$$('span.helptextToggle').each(function(s) { s.hide(); });
	if(activeHelptext != showDiv) {
		activeHelptext = showDiv;
		$(showDiv).show();
	}
	else {
		activeHelptext = null;
	}
	return false;
}

var myAccountEditMode = false;

var myAccountCancelEdit = function() {
  if ($('editOfficeDetails')) $('editOfficeDetails').hide();
  $('viewOfficeDetails').show();
  
  $('editPersonalDetails').hide();
  $('viewPersonalDetails').show();
  
  $('viewPasswordLink').show();
  $('viewPasswordTitle').hide();
  $('changePasswordDiv').hide();
  
  $('ChangeProfilePhoto').hide();
  
  myAccountEditMode = false;
}

var myAccountEdit = function(section) {
  if (section == myAccountEditMode) { 
    myAccountCancelEdit();
  } else if (myAccountEditMode != false) {
    alert("You are currently editing your details in another field. Please save or cancel these changes.");
  } else {
    switch(section) {
      case 'ChangePassword':
        $('viewPasswordLink').hide();
        $('viewPasswordTitle').show();
        $('changePasswordDiv').show();
        break;
      case 'EditPersonalDetails':
        $('viewPersonalDetails').hide();
        $('editPersonalDetails').show();
        break;
      case 'EditOfficeDetails':
        $('viewOfficeDetails').hide();
        $('editOfficeDetails').show();
        break;
      case 'ChangeProfilePhoto':
        $('viewPersonalDetails').hide();
        $('ChangeProfilePhoto').show();
        break;
    }
    myAccountEditMode = section;
  }
}

// preload spinner
var mw_preload_image = new Image(240,170);
mw_preload_image.src = 'css/images/mw_loading.gif';
function switchMWPsrImages(action, valref, listingId){
	if(action == 'next'){
		if(currentMwPsrImageIndex == (totalMwPsrImages - 1)) idMwReq = 0;
		else											     idMwReq = currentMwPsrImageIndex + 1;
	}else{
		if(currentMwPsrImageIndex == 0) idMwReq = totalMwPsrImages - 1;
		else							idMwReq = currentMwPsrImageIndex - 1;
	}
	currentMwPsrImageIndex = idMwReq;
	$('image_'+valref+'_mw').src = mw_preload_image.src;
	$('image_'+valref+'_mw').src = 'render.php?listingid='+listingId+'&imagetype=psr&action=GetMarketWatchImageContent&imgId='+idMwReq
	$('countMwImgPsr').innerHTML = idMwReq + 1;	
}
