﻿/**
 * Observer external core functions
 * Version: 1.21
 * Author: ScanRealty Ltd.
 *
 * Set of functions for Real Estate Market Observer internal use
 * Do NOT save this script to your server and do NOT change it (this will cause Observer malfunction). Instead let it be taken from its original location at ScanRealty site.
 */

/**
 * Function creates assistant div to display text when Flash player requires DOM visualization
 * @return void
 */
function createAssist(observerId, assistId, styles)
{
	var insert = false;
	var self = document.getElementById(observerId);
	var assist = document.getElementById(assistId);
	
	if (!assist) {
		assist = document.createElement('div');
		insert = true;
	}

	for (var property in styles) {
		assist.style[property] = styles[property];
	}

	if (insert) {
		assist.id = assistId;
		assist.style.display = "none";
		self.parentNode.insertBefore(assist, self);
	}
}

/**
 * Function displays assistant div
 * @return void
 */
function showAssist(observerId, assistId, message)
{
	var self = document.getElementById(observerId);
	var assist = document.getElementById(assistId);

	if (!assist) return;

	assist.innerHTML = message;

	if (assist.style.display == "none") {
		assist.style.display = "block";
		self.height = self.offsetHeight - assist.offsetHeight;
	}
}

/**
 * Function hides assistant div
 * @return void
 */
function hideAssist(observerId, assistId, originalHeight)
{
	var self = document.getElementById(observerId);
	var assist = document.getElementById(assistId);

	if (!assist) return;

	assist.style.display = "none";
	assist.innerHTML = "";
	self.height = originalHeight;
}

/**
 * Function returns SWF application handle
 * @param applicationName:String - name of SWF application
 * @return - SWF Object
 */
function getSWFApplication(appName)
{
	if (navigator.appName.indexOf("Microsoft") != -1) {
		return window[appName];
	} else {
		return document[appName];
	}
}

/**
 * Function sends query to Observer application, which is processed and displayed in Observer
 * @param method:String - method name for the query
 * @param parameters:Object - arguments that depend on the method as described below
 * @return void
 * 
 * Query types (note that all parameters should comply with ScanRealty terminology)
 * Reuired dictionaries can be found at www.scanrealty.com/network/formats/
 * 
 * Method displays news list
 * @param method "getNews" - displays list of news
 * @param parameters.country:String - country name
 * @param parameters.city:String - region or city name
 * @param parameters.locations:Array - array of location names (optional)
 *
 * Method displays property listings list
 * @param method "getListings" - displays list of property listings
 * @param parameters.code:String - listings identification code (optional, if specified, other parameters shall be ignored)
 * @param parameters.country:String - country name
 * @param parameters.city:String - region or city name
 * @param parameters.locations:Array - array of location names (optional)
 * @param parameters.transaction:Number - transaction type identifier
 * @param parameters.property:Number - property type identifier
 * @param parameters.market:Number - market type identifier (optional)
 * @param parameters.room:Number - rooms type identifier (optional)
 * @param parameters.material:Number - material type identifier (optional)
 *
 * Method displays property evaluation results
 * @method "getEvaluation"
 * @param parameters.country:String - country name
 * @param parameters.city:String - region or city name
 * @param parameters.locations:Array - array of location names (optional)
 * @param parameters.transaction:Number - transaction type identifier
 * @param parameters.property:Number - property type identifier
 * @param parameters.market:Number - market type identifier (optional)
 * @param parameters.room:Number - rooms type identifier (optional)
 * @param parameters.material:Number - material type identifier (optional)
 * @param parameters.space:Number - property total space in sqare meters
 * 
 * Method displays market analysis results on a line or column chart
 * @method "getAnalysisChart"
 * @param parameters.type:Number - chart type, 1 - line chart (default), 2 - column chart (optional)
 * @param parameters.index:Number - analysis index identifier
 * @param parameters.country:String - country name
 * @param parameters.city:String - region or city name
 * @param parameters.locations:Array - array of location names (optional)
 * @param parameters.transaction:Number - transaction type identifier
 * @param parameters.property:Number - property type identifier
 * @param parameters.market:Number - market type identifier (optional)
 * @param parameters.room:Number - rooms type identifier (optional)
 * @param parameters.material:Number - material type identifier (optional)
 * 
 * Method displays market analysis results on a map
 * @method "getAnalysisMap"
 * @param parameters.index:Number - analysis index identifier
 * @param parameters.country:String - country name
 * @param parameters.city:String - region or city name (optional)
 * @param parameters.transaction:Number - transaction type identifier
 * @param parameters.property:Number - property type identifier
 * @param parameters.market:Number - market type identifier (optional)
 * @param parameters.room:Number - rooms type identifier (optional)
 * @param parameters.material:Number - material type identifier (optional)
 */
function observerRequest(method, parameters)
{
	getSWFApplication('observer').observerRequest(method, parameters);
}
