/*
	Last published on : 15-Dec-09 16:41
	Location          : \commercial\selfassist\cms\selfassist\static\js
	Filename          : selfassist-internal.js
*/
var initSelfAssistHelper = function(){
	window.sahelper = new SelfAssistHelper();
}

var SelfAssistHelper = function(){
	this.parentNode = YAHOO.util.Dom.get('klm-doc');
	this.layOver = new Overlay(this.parentNode, {id: "xlink-overlay", speed: .3, opacity: .8, animate: true});
	this.searchTerm = '';
	this.locale = "nl_en";
	if(top.sa){
		this.locale = top.sa.country + '_' + top.sa.lang;
		if (this.searchTerm != top.sa.defaultSearchTerm) {
			this.searchTerm = top.sa.searchTerm;
		}
	}
	this.initRedirectLinks();
	this.initExtLinks();
	this.initSearchBox();
	this.initBanners();
}

SelfAssistHelper.prototype.initBanners = function(){
	var banners = YAHOO.util.Dom.getElementsByClassName("trigger");
	if (banners.length > 0) {
		YAHOO.util.Event.addListener(banners, "mouseover", function() {
			YAHOO.util.Dom.addClass(this, "hover");
		});
		YAHOO.util.Event.addListener(banners, "mouseout", function() {
			YAHOO.util.Dom.removeClass(this, "hover");
		});
	}
	var links = YAHOO.util.Dom.getElementsByClassName('sa-banner-link', 'a');
	var helper = this;
	var popup_enabled = false;
	if(YAHOO.util.Cookie){
		if(YAHOO.util.Cookie.get("popup") != null && YAHOO.util.Cookie.get("popup") == '1' && YAHOO.util.Dom.get('sa-error') == null){
		  	popup_enabled = true;
		}
	}
	YAHOO.util.Event.addListener(links, 'click', function(e){
			if(popup_enabled && this.attributes.getNamedItem('external')){
				YAHOO.util.Event.preventDefault(e);
				return helper.showLinkWarning(this);
			}
	});
}

SelfAssistHelper.prototype.initRedirectLinks = function(){
	var links = YAHOO.util.Dom.getElementsByClassName('sa_redirect', 'a');
	var helper = this;
	var popup_enabled = false;
	if(YAHOO.util.Cookie){
		if(YAHOO.util.Cookie.get("popup") != null && YAHOO.util.Cookie.get("popup") == '1' && YAHOO.util.Dom.get('sa-error') == null){
		  	popup_enabled = true;
		}
	}
	for(i = 0; i < links.length; i++){
		var link = links[i];
		this.addLinkIcon(link);
		if(popup_enabled ){
			link.onclick = function(){
				return helper.showLinkWarning(this);
			}
			this.showLinkWarning(link);
		}else{
			link.target = "_top";
			if(top)
				top.document.location = link.href;
			else
				window.document.location = link.href;
		}
	}
}

SelfAssistHelper.prototype.initExtLinks = function(){
	var links = this.getLinks();
	var helper = this;
	var popup_enabled = false;
	if(YAHOO.util.Cookie){
		if(YAHOO.util.Cookie.get("popup") != null && YAHOO.util.Cookie.get("popup") == '1' && YAHOO.util.Dom.get('sa-error') == null){
	  		popup_enabled = true;
		}
	}
	var self = document.location.href;
	if (self.indexOf('?') >= 0) self = self.substr(0, self.indexOf('?'));
		self = self.substr(0, self.lastIndexOf('/'));
	for(i = 0; i < links.length; i++){
		var link = links[i];
		var href = link.href;
		var target = link.target;
		if(href.substr(0, self.length) == self)
			continue;
		if(!link.className.match('btn') && this.trim(link.innerHTML) != ''){
			this.addLinkIcon(link);
			if(popup_enabled){
				link.onclick = function(){
					return helper.showLinkWarning(this);
				}
			}else{
				link.target = '_top';
			}
		}else if(target == null || target == '_self' || target == ''){
			link.target = '_top';
		}
	}
}

SelfAssistHelper.prototype.initSearchBox = function(){
	var oSearchBox = YAHOO.util.Dom.get('sa-ask-question-input');
	var oSearchButton = YAHOO.util.Dom.get('sa-ask-question-button');
	this.defaultSearchTerm = null;
	
	if(oSearchBox){
		oSearchBox.title = oSearchBox.value;
		this.defaultSearchTerm = oSearchBox.value;
		YAHOO.util.Event.addListener(oSearchBox, "keyup", this.onSubmitHandler, oSearchBox);
		YAHOO.util.Event.addListener(oSearchBox, "focus", this.inputFocus, oSearchBox);
		YAHOO.util.Event.addListener(oSearchBox, "blur", this.inputBlur, oSearchBox);
	}
	if(oSearchButton){
		YAHOO.util.Event.addListener(oSearchButton, "click", this.onSubmitHandler, oSearchBox);
	}
}

SelfAssistHelper.prototype.ask = function(query){
	if(query == this.searchTerm)
		query = '';
	else if(query == ''){
		this.searchTerm = '';
	}else if(query.indexOf(this.searchTerm + ' ') == 0){
		this.searchTerm = query;
		query = '';
	}
	var currentQuery = this.searchTerm;
	if(query != ''){
		this.searchTerm = currentQuery + ' ' + query;
	}
	var IsSAAvailable = false;
	var uri = null;

	//Check if there is a top frame and if that frame has loaded the Self Assist Class
	if(top){
		if(top.sa){
			IsSAAvailable = true;
		}
	}
	if(this.trim(this.searchTerm) != this.trim(this.defaultSearchTerm) && this.trim(this.searchTerm) != ''){
		uri = 'ask.htm';
		parameters = '&query=' + encodeURIComponent(this.searchTerm);
		if (this.origHandle && this.origHandle != undefined)
			parameters += '&origHandle=' + encodeURIComponent(this.origHandle);
	}else{
		uri = 'start.htm';
		parameters = '';
	}

	//Load uri in SelfAssist or current frame.
	if(IsSAAvailable){
		top.sa.loadUri(uri, parameters)
	}else{
		window.document.location = uri + parameters;
	}
}

SelfAssistHelper.prototype.parseUrl = function(url){
	return substr(url.lastIndexOf('/'));
}

SelfAssistHelper.prototype.addLinkIcon = function(element){
	if ((!YAHOO.util.Dom.get('sa-error')) && (!YAHOO.util.Dom.get('previewtable'))){
		var oSpan = document.createElement('span');
		oSpan.innerHTML = '&nbsp;';
		YAHOO.util.Dom.addClass(oSpan, 'external-link');
		YAHOO.util.Dom.insertAfter(oSpan, element);
	}
}

SelfAssistHelper.prototype.getLinks = function(){
	return document.getElementsByTagName('a');
}

SelfAssistHelper.prototype.showLinkWarning = function(element){
	this.layOver.show();
	var helper = this;
	YAHOO.util.Dom.replaceClass('sa-extlink-warning', 'closed', 'open');
	var btnYes = YAHOO.util.Dom.get('sa-extlink-yes');
	var btnNo = YAHOO.util.Dom.get('sa-extlink-no');
	var url = element.href
	btnYes.onclick = function(){
		window.open(url);
		helper.hideLinkWarning();
		return false;
	}
	btnNo.onclick = function(){
		if(top.document.location){
			top.document.location = url;
		}else{
			document.location.href = url;
		}
		return false;
	}
	return false;
}

SelfAssistHelper.prototype.hideLinkWarning = function(){
	this.layOver.hide();
	YAHOO.util.Dom.replaceClass('sa-extlink-warning', 'open', 'closed');
	return false;
}

SelfAssistHelper.prototype.trim = function(value){
	value = value.replace(/^\s+/,'');
	value = value.replace(/\s+$/,'');
	return value;
}

/* EVENTHANDLERS */
SelfAssistHelper.prototype.onSubmitHandler = function(e, obj){
	if((e.type == 'keyup' && e.keyCode == 13) || (e.type == 'click')){
		window.sahelper.ask(obj.value);
	}
	return false;
}

SelfAssistHelper.prototype.inputFocus = function(e , obj) {
	obj.value = "";
	obj.style.color = "#003145";
}

SelfAssistHelper.prototype.inputBlur = function(e, obj) {
	if(obj.value == obj.title || window.sahelper.trim(obj.value) == ''){
		obj.value = obj.title;
		obj.style.color = "";
	}
}

SelfAssistHelper.prototype.onSADropdownChange = function(el, qid) {
	var aid = el.value;
	var a1 = YAHOO.util.Dom.get('a1-' + qid);
	var a2 = YAHOO.util.Dom.get('a2-' + qid);

	this.renderUri(a1, aid);
	this.renderUri(a2, aid);

	window.location = a1.href;
}

SelfAssistHelper.prototype.renderUri = function(aElement, aid){
	var url = aElement.href;
	var urlArr = url.split('?');
	var querystring = urlArr[1];
	var qsArr = querystring.split('&');
	var iCount = 0;
	url = urlArr[0] + '?';

	for(i = 0; i < qsArr.length; i++){
		var keyValuePair = qsArr[i].split('=');
		if(keyValuePair[0] != 'aid'){
			if(iCount > 0){
				url = url + '&';
			}
			url = url + keyValuePair[0] + '=' + keyValuePair[1];
			iCount = iCount + 1;
		}
	}

	aElement.href = url + '&aid=' + aid;
} 
