//$Rev: 9572 $

/**
 * New Click Through Action (CTA) script
 * =====================================
 *
 * Functions:
 * ---------
 *	* mm_call(func, arg, action, value, attribute, handler)
 *		Performs Action passing to the Maxymiser server and delayed call of specified function func with agrgument arg
 *		Parameters:
 *			func -- function for delayed call; "false" cause no call; predefined functions are described below
 *			arg -- argument of func;
 *			action -- action name; "false" means no action
 *			value -- action's value
 *			attribute -- action's attribute
 *			handler -- function for additional action collecting; "false" or mm_empty_handler mean no additional handling
 *
 *
 *	* mm_tag(obj, action, value, attribute, handler)
 *		Adds handlers to the hyperlinks and forms
 *		Parameters:
 *			obj -- object to tag; should be form or link;
 *			action -- action name or false
 *			value -- action's value
 *			attribute -- action's attribute
 *			handler -- function for additional action collecting; "false" or mm_empty_handler mean no additional handling
 *
 * Predefined functions for delayed calls:
 * --------------------------------------
 *	* mm_followLink(uri) -- moving to specified location
 *	* mm_formSubmit(form) -- specified form submitting
 *
 * Settings:
 * --------
 *	* mm_js_in_href -- defines behaviour when link's href property contains "javascript:..." structure;
 *		possible values are:
 *		'ignore' -- to do nothing; acceptable when scripts performs form.submit() call
 *		'action' -- sends action on event; useful when script changes document.location.href property
 *	* mm_cta_name -- contains part of the script name; is used for auto self full URI retrieving.
 *
 * Note:
 * --------
 *	Script doesn't work for some page in some browsers ( Opera8.5, IE6)
 */


// Multiple inclusion means delayed function call.
// Function should be stored in the mm_cta_func variable; argument -- mm_cta_arg

if (typeof( mm_cta_func)!="undefined" &&  mm_cta_func)
{
	mm_cta_func(mm_cta_arg);
	mm_cta_func = false; // reset variables
	mm_cta_arg = false;
}

if (typeof(mm_call)=="undefined") // We'll define functions and global variables only 1 time.
{

var mm_js_in_href = 'action'; // behaviour when anchor's href contains "javascript:" possible values: 'ignore', 'action'
var mm_cta_name = 'mm_caller'; // the name of teh script itself; is used for getting full self URI.

var mm_cta_func = false;
var mm_cta_arg = false;

// mmGetSelfUri retrieves full URI to script file by fragment of name.
// This function should be moved to maxymiser.js file (instaed of mmGetSelfUri).
var mm_self_js = new Array();

if (typeof(mmGetSelfUri)=="undefined")
var mmGetSelfUri = function(name)
{
	if (typeof(mm_self_js[name]) == "undefined" || mm_self_js[name]=="") 
	{
		mm_self_js[name] = "";
		var scrList = document.getElementsByTagName("script");
		for (var i=0; i<scrList.length; i++)
			if (scrList[i].src.indexOf(name+".js")!=-1) {
				mm_self_js[name] = scrList[i].src;
				break;
			}
		if (mm_self_js[name] == "") {
			for (var i=0; i<scrList.length; i++)
				if (scrList[i].src.indexOf(name)!=-1) {
					mm_self_js[name] = scrList[i].src;
					break;
				}
		}
		if ((idx=mm_self_js[name].indexOf("?"))!=-1)
			mm_self_js[name]=mm_self_js[name].substring(0,idx);
	}
	return mm_self_js[name];
}

// Function performs Maxymiser action call for specified action
var mm_call = function(func, arg, action, value, attribute, handler)
{
//	alert(typeof(mm_followLink));
	if (mm_cta_func) return;

	mm_cta_func = func;
	mm_cta_arg = arg;

	if (typeof(handler)!="undefined" && handler) try{handler();}catch(e){};
	if (typeof(action)!="undefined" && action) mmSetAction(action, value, attribute);
	mmGo();
//alert("action: "+action+", value: "+value+", attribute: "+attribute);

	if (func)
	{
		var script = document.createElement('script');
		script.type = 'text/javascript';
		script.src = mmGetSelfUri(mm_cta_name)+"?"+Math.floor(Math.random()*999999);
		document.getElementsByTagName('head')[0].appendChild(script);
	}
}

// Pattern for hyperlink (makes redirect)
var mm_followLink = function(uri) {document.location.href = uri;}
//var mm_followLink = function(uri) {alert("document.location.href = "+uri);} // This is debug one

// Pattren for form submitting
var mm_formSubmit = function(form) {if (typeof(form.mm_submit)!="undefined") form.mm_submit(); else form.submit();}
//var mm_formSubmit = function(form) {alert(form+".mm_submit()");} // This is debug one

// Handler for anchor's onclick event
var mm_a_onclick = function()
{
	var res = true;
	try
	{
		if (typeof(this.mm_onclick)!="undefined")
			res = this.mm_onclick();
	}
	catch (e) {}
	if (typeof(res)=="undefined" || res)
	{
		var href_js_pos = this.href.toLowerCase().indexOf("javascript:");
		if (href_js_pos==-1)
			mm_call(mm_followLink, this.href, this.mm_action, this.mm_value, this.mm_attribute, this.mm_handler);
		else
			if (mm_js_in_href == 'action')
				mm_call(eval("function(arg){"+this.href.substring(href_js_pos+11)+"}"), 0, this.mm_action, this.mm_value, this.mm_attribute, this.mm_handler);
			else
				return true;
	}
	return false;
}

// Handler for submit control (<input type="submit" ... />) onclick event
var mm_submit_onclick = function()
{
	var res = true;
	try
	{
		if (typeof(this.mm_onclick)!="undefined")
			res = this.mm_onclick();
	}
	catch (e) {}
	if (typeof(res)=="undefined" || res)
		this.form.submit();
	
	return false;
}

// Handler for form.submit() method
var mm_form_submit = function() {mm_call(mm_formSubmit, this, this.mm_action, this.mm_value, this.mm_attribute, this.mm_handler);}

// this pattern is used to replace empty "onclick" handler
var mm_empty_handler = function (){}

// Adds CTA handler to the hyperlink obj
var mm_tag_a = function(obj, action, value, attribute, handler)
{
	if (typeof(obj)=="undefined" || typeof(obj.tagName)=="undefined" || obj.tagName.toUpperCase()!="A") return false;
	if (typeof(obj.mm_onclick)!="undefined" && obj.mm_onclick) return false;
	obj.mm_onclick = (typeof(obj.onclick)!="undefined" && obj.onclick)? obj.onclick: mm_empty_handler;
	
	obj.mm_action = action;
	obj.mm_value = value;
	obj.mm_attribute = attribute;
	obj.mm_handler = handler;
	obj.onclick = mm_a_onclick;
	return true;
}

// mm_tag_submit installs ONCLICK interceptor for <input type="submit" ... /> element,
// but it DOES NOT call mm_call()! It just call this.form.submit() method.
var mm_tag_submit = function(obj)
{
	if (typeof(obj)=="undefined" || typeof(obj.tagName)=="undefined" || obj.tagName.toUpperCase()!="INPUT" || (obj.type.toLowerCase()!="submit" && obj.type.toLowerCase()!="image")) return false;
	if (typeof(obj.mm_onclick)!="undefined" && obj.mm_onclick) return false;
	obj.mm_onclick = (typeof(obj.onclick)!="undefined" && obj.onclick)? obj.onclick: mm_empty_handler;
	obj.onclick = mm_submit_onclick;
	return true;
}

// intercepts form's submit() method; calls mm_tag_submit() for all <input type="submit" ... /> children
var mm_tag_form = function(obj, action, value, attribute, handler)
{
	if (typeof(obj)=="undefined" || typeof(obj.tagName)=="undefined" || obj.tagName!="FORM") return false;
	if (typeof(obj.mm_submit)!="undefined" && obj.mm_submit) return false;
	obj.mm_submit = obj.submit;
	
	obj.mm_action = action;
	obj.mm_value = value;
	obj.mm_attribute = attribute;
	obj.mm_handler = handler;
	obj.submit = mm_form_submit;

	var inputs = obj.getElementsByTagName("input");
	for (idx=0; idx<inputs.length; idx++)
		if ((inputs[idx].type.toLowerCase()=="submit") || (inputs[idx].type.toLowerCase()=="image"))
			mm_tag_submit(obj[idx]);
	return true;
}

// Mutiplexor for interceptors
var mm_tag = function(obj, action, value, attribute, handler)
{
	if (typeof(obj)=="undefined" || typeof(obj.tagName)=="undefined") return false;
	if (obj.tagName.toUpperCase()=="A") return mm_tag_a(obj, action, value, attribute, handler);
	if (obj.tagName.toUpperCase()=="FORM") return mm_tag_form(obj, action, value, attribute, handler);
	return false;
}
}

a = function() {
	try {
		mm_CGcallType = 1;
	
		mm_el = document.getElementById('agent_info');
		if (mm_el) {
			linksCol = mm_el.getElementsByTagName('a');
			for (i in linksCol) {
				mm_track = false;
				mm_linkInnerHTML = linksCol[i].innerHTML;
	
				if (mm_linkInnerHTML) {
					if (mm_linkInnerHTML.indexOf("phone number") != -1) mm_track = true;
					if (mm_linkInnerHTML.indexOf("email") != -1) mm_track = true;
					if (mm_linkInnerHTML.indexOf("arrange a viewing") != -1) mm_track = true;
					if (mm_linkInnerHTML.indexOf("arrange a valuation") != -1) mm_track = true;
					if (mm_linkInnerHTML.indexOf("agent's website") != -1) mm_track = true;
	
					if (mm_track) linksCol[i].onclick = function() { actionAttr = ''; spansCol = this.getElementsByTagName('span'); if (spansCol.length) actionAttr = spansCol[0].innerHTML; actionAttr = actionAttr.replace(/^\s/, "").replace(/\s/g, "_").replace(/'/g, "_"); mm_call(false, false, "Secure_lead", "1", actionAttr, false); };
				}
			}
		}
	} catch(err) { }
}

window.onload = a;