/*************************************************************
* Emap javascript:
*************************************************************/

var Emap = {
	focusMe: function() {
		$("input.focusme").each ( function (i) {
			this.focus();
		});
	},

    MAX_TEXT: 45,
    
    closeWindow: function () {
        window.close();
    },    
    
    addBookmark: function () {
        var title = document.title;
        var url = location.href;
        
        if (window.opera && window.print)  {
			alert("Please use the browser to add to favourites.");
			return false;
        }
        else if (window.sidebar) {
			window.sidebar.addPanel(title, url,"");
			return false;
        }        
        else if (document.all) {
			window.external.AddFavorite( url, title); 
			return false;
        }
        else {
			alert("Please use the browser to add to favourites.");
			return false;
        }
    },

	PageQuery: function (q) {
		if(q.length > 1) this.q = q.substring(1, q.length);
		else this.q = null;
		this.keyValuePairs = new Array();
		if(q) {
			for(var i=0; i < this.q.split("&").length; i++) {
				this.keyValuePairs[i] = this.q.split("&")[i];
			}
		}
	
		this.getKeyValuePairs = function() { return this.keyValuePairs; }
		
		this.getValue = function(s) {
			for(var j=0; j < this.keyValuePairs.length; j++) {
				if(this.keyValuePairs[j].split("=")[0] == s)
				return this.keyValuePairs[j].split("=")[1];
			}
			return false;
		}
		
		this.getParameters = function() {
			var a = new Array(this.getLength());
			for(var j=0; j < this.keyValuePairs.length; j++) {
				a[j] = this.keyValuePairs[j].split("=")[0];
			}
			return a;
		}
		this.getLength = function() { return this.keyValuePairs.length; }
	},	

	queryString: function (key) {
		var page = new Emap.PageQuery(window.location.search);
		return unescape(page.getValue(key));
	},

	getqueryItem: function (key){
		if(Emap.queryString(key)=='false') {
			return false;
		} else {
			return Emap.queryString(key);
		}
	},
	
	getUri: function (url) {
		var a = url.lastIndexOf("/");
		return url.substring(a+1, url.length)
	},
	
	getHiddenValue: function (hiddenInput) {
		return hiddenInput.val();
	},
	
	trim: function (str, ch) {		
		str = str.charAt(str.length-1) == ch ? str = str.substring(0, str.length-1) : str
		str = str.charAt(0) == ch ? str = str.substring(1, str.length) : str
		return str;
	},
	
	popupWindow: function (href) {
		var popupHref = href + "&ispp=true";
		window.open(popupHref, "", "scrollbars=1,resizable=1,width=610");
	},
	
	backToPrevious: function() {
		var h = window.history;
		if (h.length) {
			h.back();
		}
		return false;
	}
}

$(document).ready(function () {
	$("a.popupContent").bind("click", function () {
		Emap.popupWindow($(this).href());
		return false;
	});
});

/*************************************************************
* Show Hide More Less Text
*************************************************************/

var ShowHideText = {
	init: function (el) {
		var elem = el;
		var textVersionLong;
		//var textVersionFull;
		var textVersionShort;
		//var textFirstParagraph;
		var textTemp;
		var textArray;
		var textlength;
		
		
		elem.textVersionLong = ShowHideText.stripWhiteSpace($(elem).text());
		//elem.textVersionFull = $(elem).text();
		//alert(elem.textVersionFull);
		//textFirstParagraph = $(elem).find("p")[0];
		//alert(textFirstParagraph.innerHTML);
		//textTemp = textFirstParagraph;
		

		elem.textVersionShort = "";
		elem.textArray = ShowHideText.createTextArray(elem.textVersionLong);
		elem.textLength = elem.textArray.length;
		elem.containsFullText = false;
		
		if (elem.textLength>Emap.MAX_TEXT) {
			elem.textVersionShort = ShowHideText.getTextToDisplay(elem.textArray);
			ShowHideText.appendText(elem);
		}

//		if (textFirstParagraph) {
//			
//		}
	},
	showHideText: function (el) {
		var thisDiv = el;
		ShowHideText.appendText(thisDiv);
	},
	stripWhiteSpace: function(textToConvert) {
		textToConvert = textToConvert.replace(/^\s+|\s+$/g,"");
		return textToConvert;
	},
	createTextArray: function(textToConvert) {
		textToConvert = textToConvert.split(" ");
		return textToConvert;
	},
	getTextToDisplay: function(textArray) {
		var textToDisplay="";
		for(j=0; j<Emap.MAX_TEXT && j<textArray.length; j++) {
			textToDisplay += " " + textArray[j];
		}
		return textToDisplay;
	},
	appendText: function (el) {
		
		$(el).empty();
		if (el.containsFullText) {
			$(el).append('<p>'+el.textVersionLong+' '+'<a class="showMoreText" href="#">show less</a></p>');
		}
		else {
			$(el).append('<p>'+el.textVersionShort+' '+'<a class="showMoreText" href="#">show more</a></p>');			
		}
		
		$(el).find("a.showMoreText").bind("click", function () {
			ShowHideText.showHideText(el);
			return false;
		});
		el.containsFullText = !el.containsFullText;
	}
}


/************************************************
* Clear specified form values on focus
************************************************/

function clearOnFocus(type)
{
  if (!document.getElementsByTagName) return false;
  var fields = document.getElementsByTagName(type);
  for (var i=0; i < fields.length; i++) {
    if (fields[i].className.match("clearOnFocus")) {
      fields[i].onfocus = function() {
        if (this.value == this.defaultValue) {
          this.value = "";
          return false;
		}
      }
	  fields[i].onblur = function() {
        if (this.value == "") {
          this.value = this.defaultValue;
          return false;
		}
      }
    }
  }
}

function prepareBackLinks() {
	if (!document.getElementsByTagName) return false;
	var links = document.getElementsByTagName("a");
	for (var i=0; i < links.length; i++) {
		if (links[i].className.match("backLink")) {
			links[i].onclick = function() {
				window.history.back();
				return false;
			}
		}
	}
}

function prepareResultsFilterToggle() {
	if (!document.getElementsByTagName) return false;
	var divs = document.getElementsByTagName("div");
	for (var i=0; i < divs.length; i++) {
		if (divs[i].className==("ResultFilter clearfix")) {
			var parent_container = divs[i];
			var inner_divs = divs[i].getElementsByTagName("div");
			var categories_div ="";
			for (var i=0; i < inner_divs.length; i++) {
				if(inner_divs[i].className.match("categories")) {
					categories_div = inner_divs[i];
					break;
				}
			}
			
			if (categories_div !="") {
				var para = document.createElement("p");
				para.className="hideShow";
				var link = document.createElement("a");
				link.appendChild(document.createTextNode("Show Categories"));
				categories_div.style.display="none";
				link.setAttribute("href","#");
				link.onclick = function() {
					if (categories_div.style.display=="block" || categories_div.style.display=="") {
						categories_div.style.display="none";
						this.innerHTML="Show categories";
					}
					else {
						categories_div.style.display="block";
						this.innerHTML="Hide categories";
					}
					return false;
				}
				para.appendChild(link);
				parent_container.insertBefore(para, categories_div);
			}
			break;
		}
	}
}

window.onload = function () {
	clearOnFocus("input");
	prepareResultsFilterToggle();
	internalAnchor.doInternalRedirect();
}//////////////////// scroll ////////////////////////////////////////////////////////////////////////////

/*  usage
$('#id').click(function(){
		$('#idto').ScrollTo(800);
		return false;
		});

*/

jQuery.getPos = function (e)
{
	var l = 0;
	var t  = 0;
	var w = jQuery.intval(jQuery.css(e,'width'));
	var h = jQuery.intval(jQuery.css(e,'height'));
	var wb = e.offsetWidth;
	var hb = e.offsetHeight;
	while (e.offsetParent){
		l += e.offsetLeft + (e.currentStyle?jQuery.intval(e.currentStyle.borderLeftWidth):0);
		t += e.offsetTop  + (e.currentStyle?jQuery.intval(e.currentStyle.borderTopWidth):0);
		e = e.offsetParent;
	}
	l += e.offsetLeft + (e.currentStyle?jQuery.intval(e.currentStyle.borderLeftWidth):0);
	t  += e.offsetTop  + (e.currentStyle?jQuery.intval(e.currentStyle.borderTopWidth):0);
	return {x:l, y:t, w:w, h:h, wb:wb, hb:hb};
};
jQuery.getClient = function(e)
{
	if (e) {
		w = e.clientWidth;
		h = e.clientHeight;
	} else {
		w = (window.innerWidth) ? window.innerWidth : (document.documentElement && document.documentElement.clientWidth) ? document.documentElement.clientWidth : document.body.offsetWidth;
		h = (window.innerHeight) ? window.innerHeight : (document.documentElement && document.documentElement.clientHeight) ? document.documentElement.clientHeight : document.body.offsetHeight;
	}
	return {w:w,h:h};
};
jQuery.getScroll = function (e) 
{
	if (e) {
		t = e.scrollTop;
		l = e.scrollLeft;
		w = e.scrollWidth;
		h = e.scrollHeight;
	} else  {
		if (document.documentElement && document.documentElement.scrollTop) {
			t = document.documentElement.scrollTop;
			l = document.documentElement.scrollLeft;
			w = document.documentElement.scrollWidth;
			h = document.documentElement.scrollHeight;
		} else if (document.body) {
			t = document.body.scrollTop;
			l = document.body.scrollLeft;
			w = document.body.scrollWidth;
			h = document.body.scrollHeight;
		}
	}
	return { t: t, l: l, w: w, h: h };
};

jQuery.intval = function (v)
{
	v = parseInt(v);
	return isNaN(v) ? 0 : v;
};

jQuery.fn.ScrollTo = function(s) {
	o = jQuery.speed(s);
	return this.each(function(){
		new jQuery.fx.ScrollTo(this, o);
	});
};

jQuery.fx.ScrollTo = function (e, o)
{
	var z = this;
	z.o = o;
	z.e = e;
	z.p = jQuery.getPos(e);
	z.s = jQuery.getScroll();
	z.clear = function(){clearInterval(z.timer);z.timer=null};
	z.t=(new Date).getTime();
	z.step = function(){
		var t = (new Date).getTime();
		var p = (t - z.t) / z.o.duration;
		if (t >= z.o.duration+z.t) {
			z.clear();
			setTimeout(function(){z.scroll(z.p.y, z.p.x)},13);
		} else {
			st = ((-Math.cos(p*Math.PI)/2) + 0.5) * (z.p.y-z.s.t) + z.s.t;
			sl = ((-Math.cos(p*Math.PI)/2) + 0.5) * (z.p.x-z.s.l) + z.s.l;
			z.scroll(st, sl);
		}
	};
	z.scroll = function (t, l){window.scrollTo(l, t)};
	z.timer=setInterval(function(){z.step();},13);
};
