// FUNCTIONS OF util/global.js SCRIPT FILE

var zlocale = '';
function setLocale(){
	if (document.getElementById('locale_lang')) zlocale = document.getElementById('locale_lang').value;
	return zlocale;
}

var scriptString;
function getElementsByClassName(oElm, strTagName, strClassName){
		var arrElements = (strTagName == "*" && document.all) ? document.all : oElm.getElementsByTagName(strTagName);
		var arrReturnElements = new Array();
		strClassName = strClassName.replace(/\-/g, "\\-");
		var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
		var oElement;
		for(var i=0; i<arrElements.length; i++){
			oElement = arrElements[i];
			if(oRegExp.test(oElement.className)){
					arrReturnElements.push(oElement);
			}
		}
		return (arrReturnElements);
}


function collapseStates(elementID){
	var allOpen = true;
	var allClosed = true;
	var wrapper = document.getElementById(elementID + '-wrapper');
	var container = document.getElementById(elementID);
	var arrCollapse = getElementsByClassName(container,'div','collapse');
	for(var i=0; i<arrCollapse.length; i++){
		if (arrCollapse[i].getElementsByTagName('div')[0] && arrCollapse[i].getElementsByTagName('div')[0].style.display == 'block') allClosed = false;
		if (arrCollapse[i].getElementsByTagName('div')[0] && arrCollapse[i].getElementsByTagName('div')[0].style.display == 'none') allOpen = false;
	}
	if (wrapper) {
		var arrOpenSwitches = getElementsByClassName(wrapper,'div','collapse-1');
		var arrCloseSwitches = getElementsByClassName(wrapper,'div','collapse-0');
		for(i=0; i<arrCloseSwitches.length; i++){arrCloseSwitches[i].style.color = "#999";}
		if (allOpen) {
			for(i=0; i<arrOpenSwitches.length; i++){arrOpenSwitches[i].style.color = "#999";arrOpenSwitches[i].style.cursor = 'default';}
			for(i=0; i<arrCloseSwitches.length; i++){arrCloseSwitches[i].style.color = "#000";arrCloseSwitches[i].style.cursor = 'pointer';}
		}
		else if (allClosed) {
			for(i=0; i<arrCloseSwitches.length; i++){arrCloseSwitches[i].style.color = "#999";arrCloseSwitches[i].style.cursor = 'default';}
			for(i=0; i<arrOpenSwitches.length; i++){arrOpenSwitches[i].style.color = "#000";arrOpenSwitches[i].style.cursor = 'pointer';}
		}
		else {
			for(i=0; i<arrCloseSwitches.length; i++){arrCloseSwitches[i].style.color = "#000";arrCloseSwitches[i].style.cursor = 'pointer';}
			for(i=0; i<arrOpenSwitches.length; i++){arrOpenSwitches[i].style.color = "#000";arrOpenSwitches[i].style.cursor = 'pointer';}
		}
	}
}

//attaches show/hide events to all divs with class "collapse"
function collapseEvents(){
	var collapseBody;
	var startopen = false;
	var arrCollapse = getElementsByClassName(document.getElementsByTagName('body')[0],'div','collapse');
	for(var i=0; i<arrCollapse.length; i++){
		arrCollapseH3 = arrCollapse[i].getElementsByTagName('h3')[0];
		if(arrCollapse[i].className.indexOf('startopen') > -1) startopen = true;
		if (arrCollapseH3 !=null)
		{
			arrCollapseH3.onmouseover = function(){
				this.style.cursor = 'pointer';
				};
		};
		if(startopen)arrCollapse[i].getElementsByTagName('div')[0].style.display = 'block';
		else {
			if (arrCollapse[i].getElementsByTagName('div')[0])	arrCollapse[i].getElementsByTagName('div')[0].style.display = 'none';
		}
		if (arrCollapseH3 !=null)
		{
			arrCollapseH3.onclick = function(){
				var div = this.parentNode.getElementsByTagName('div')[0];
				var divStyle = div.style;
				divStyle.display = (divStyle.display == 'block' ? 'none' : 'block');
				var headingStyle = this.style;
				headingStyle.backgroundImage = (divStyle.display == 'block' ? closeImgUrl : openImgUrl);
				collapseStates(this.parentNode.parentNode.id);
				var action = (divStyle.display == 'block') ? 'expand' : 'collapse';
				//var name = div.id; 
				var nameFromDiv = div.parentNode.id;
				//alert('name1='+nameFromDiv);
				if (nameFromDiv==null || (nameFromDiv.length==0))
					nameFromDiv = div.parentNode.parentNode.id;
				var actionName = nameFromDiv+'-'+action;
				//alert(parent+':'+name+':'+action);
				recordClientSideClick(actionName, false);	
			};

		//show close button as default
		if(startopen)arrCollapseH3.style.backgroundImage = closeImgUrl ;
		else arrCollapseH3.style.backgroundImage = openImgUrl ;
		arrCollapseH3.style.paddingLeft = '20px';
		};
	}
}

//expand/collapse all elements with class "collapse" within a given container
function allCollapse(elementID,action){
	var container = document.getElementById(elementID);
	var arrCollapse = getElementsByClassName(container,'div','collapse');
	for(var i=0; i<arrCollapse.length; i++){
		arrCollapse[i].getElementsByTagName('div')[0].style.display = (action == 1 ? 'block' : 'none');
		headingStyle = arrCollapse[i].getElementsByTagName('h3')[0].style;
		headingStyle.backgroundImage = (action == 1 ? closeImgUrl  : openImgUrl );
	}
	collapseStates(elementID);
}

//expand/collapse module, eg. filter 1
function collapseModule(btn,el){
	var btn_open_path = btnOpen;
	var btn_close_path = btnClose;

	elStyle = document.getElementById(el).style;
	if (elStyle.display === '') {
		if (btn.src.indexOf(btn_close_path) > -1) elStyle.display = 'block';
		else elStyle.display = 'none';
	}
	if (elStyle.display == 'block'){
		elStyle.display = 'none';
		btn.src = btn_open_path;
	}
	else if (elStyle.display == 'none'){
		elStyle.display = 'block';
		btn.src = btn_close_path;
	}
}

function getElementsByClassNameFromElement(strClass, strTag, objContElm) {
  strTag = strTag || "*";
  objContElm = objContElm || document;
  var objColl = (strTag == '*' && document.all) ? document.all : objContElm.getElementsByTagName(strTag);
  var arr = new Array();
  var delim = strClass.indexOf('|') != -1  ? '|' : ' ';
  var arrClass = strClass.split(delim);
  for (var i = 0, j = objColl.length; i < j; i++) {
    var arrObjClass = objColl[i].className.split(' ');
    if (delim == ' ' && arrClass.length > arrObjClass.length) continue;
    var c = 0;
    comparisonLoop:
    for (var k = 0, l = arrObjClass.length; k < l; k++) {
      for (var m = 0, n = arrClass.length; m < n; m++) {
        if (arrClass[m] == arrObjClass[k]) c++;
        if (( delim == '|' && c == 1) || (delim == ' ' && c == arrClass.length)) {
          arr.push(objColl[i]);
          break comparisonLoop;
        }
      }
    }
  }
  return arr;
}
// To cover IE 5.0's lack of the push method
Array.prototype.push = function(value) {
  this[this.length] = value;
};

function getParentByTagName(elm, tag) {
	if (elm == null || elm.parentNode == null) return null;
	
	if (elm.parentNode.nodeType == 1 && elm.parentNode.tagName.toLowerCase() == tag.toLowerCase()) return elm.parentNode;
	else return getParentByTagName(elm.parentNode, tag);
}

// help overlay

function helpOverlayInit( topOffset ) {

	//var helpOverlay = document.getElementById("help-overlay");


	//var leftOffset = new Point(setX('help'), leftOffset );
	//var leftTailOffset = new Point(-48,-12);
	
	//var helpOverlayLeft  = new Overlay("help-overlay", leftOffset , null);
	//var tailOverlayLeft = new Overlay("help-overlay-tail", leftTailOffset , null);
	if( document.getElementById('help') ){
		Event.addEvent('help','click', getParamsFilter1Step1);
	}
	
	//Event.addEvent("help-close", "click", helpOverlayLeft.hide, helpOverlayLeft);
	//Event.addEvent("help-close", "click", tailOverlayLeft.hide, tailOverlayLeft);
	
	//Event.addEvent('help', "click", helpOverlayLeft.show, helpOverlayLeft);
	//Event.addEvent('help', "click", tailOverlayLeft.show, tailOverlayLeft);

	Event.addEvent('help', "mouseover", function() {this.style.cursor = "pointer";},this);
	//Event.addEvent('help', "mouseout", function() {this.style.cursor = "default";},this);

	/*
	changeOverlayContent = function(obj) {
		
		return;
		
	}
	resultsOverlayRight.setChangeContentCallback(changeOverlayContent);
	resultsOverlayLeft.setChangeContentCallback(changeOverlayContent);*/
	//alert(strn);
}

function savedHelpOverlayInit() {

	//var rightOffset = new Point(setX('help-saved'),setY('help-saved'));
	//var rightTailOffset = new Point(-135,16);
	
	//var savedHelpOverlayRight  = new Overlay("help-overlay-saved", rightOffset , null);
	//var tailOverlayRight = new Overlay("help-overlay-tail-saved", rightTailOffset , null);
	
	Event.addEvent('help-saved', 'click', getSavedParamsStep1);
	
	//Event.addEvent("help-close-saved", "click", savedHelpOverlayRight.hide, savedHelpOverlayRight);
	//Event.addEvent("help-close-saved", "click", tailOverlayRight.hide, tailOverlayRight);
	
	//Event.addEvent('help-saved', "click", savedHelpOverlayRight.show, savedHelpOverlayRight);
	//Event.addEvent('help-saved', "click", tailOverlayRight.show, tailOverlayRight);

	Event.addEvent('help-saved', "mouseover", function() {this.style.cursor = "pointer";},this);
	Event.addEvent('help-saved', "mouseout", function() {this.style.cursor = "default";},this);
	
} 

function setCookie(cookieName,cookieValue) {
	if(cookieValue.length === 0) {
		document.cookie = cookieName+"=;path=/;expires=Fri, 02-Jan-1970 00:00:00 GMT";
	} else {
		var expires = new Date(new Date().getTime() + (7*2*24)*3600000);
		document.cookie = cookieName + "=" + cookieValue.sort().join(",") +";path=/;expires="+expires+";";
	}
}
function getCookie(cookieName) {
	var start = document.cookie.indexOf(cookieName+"=");
	if (start === null || start == -1) return null;
	var len = start + cookieName.length+1;
	var end = document.cookie.indexOf(";",len);
	if (end == -1) end = document.cookie.length;
	var cookie = document.cookie.substring(len,end).split(",");
	return cookie;
}

// function for dynamic Flash content
// added "openSiteTour" to pass true or false (string) to siteTour.swf on homepage
function showFlash(idName, swfURL, swfWidth, swfHeight, swfColor,altPath, flashVars, openSiteTour) {
	var newFlashVars = "swfPath=" + flashVars;
	if(openSiteTour == "true"){
		newFlashVars += "&openSiteTour=true";
	} else {
		newFlashVars += "&openSiteTour=false";
	}
	newFlashVars += "&done=true";
	var node = document.getElementById(idName);
	var children = node.getElementsByTagName('div');
		if(checkIt('safari')) {
			//node.innerHTML = '<img src="'+ altPath +'" alt=\"\" width=\"661\" height=\"251\" alt=\"\" ">';
			node.innerHTML = altPath;
		}else{
			var objectTag = '';
			objectTag += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="../../../fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="'+swfWidth+'" height="'+swfHeight+'">';
			objectTag += '<param name="allowScriptAccess" value="sameDomain" />';
			objectTag += '<param name="movie" value="'+swfURL+'" />';
			objectTag += '<param name="quality" value="high" /><param name="bgcolor" value="#ffffff" />';
			objectTag += '<param name="wmode" value="transparent" />';
			objectTag += '<param name="flashVars" value="swfPath='+ flashVars+'">';
			objectTag += '<embed src="' + swfURL + '" wmode="transparent" quality="high" bgcolor="' + swfColor + '" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="../../../www.macromedia.com/go/getflashplayer" flashvars="' + newFlashVars + '" width="' + swfWidth + '" height="' + swfHeight + '" scale="noscale" ></embed></object>';
			node.innerHTML = objectTag;
		}
}

var concatflashVars = '';
function checkAndShowFlash(idName, swfURL, swfWidth, swfHeight, swfColor, imageOffer, flashVars, openSiteTour)
{
	if(canPlayFlash()){
	
		showFlash(idName, swfURL, swfWidth, swfHeight, swfColor,imageOffer, flashVars, openSiteTour);
	}else{
		var node = document.getElementById(idName);
		node.innerHTML = '<h2>'+imageOffer+'</h2>';
	}
}


// function for dynamic Flash content
function showFlashGeneral(idName, swfURL, swfWidth, swfHeight, swfColor,altPath) {
	var flashVars = "";
	var node = document.getElementById(idName);
	var children = node.getElementsByTagName('div');
	for( var x = 0; x < children.length; x++ ) {
		flashVars += children[x].getAttribute("id") + "=" + children[x].innerHTML;
		if (x != children.length-1) flashVars += "&";
	}		
	node.innerHTML = '<embed src="' + swfURL + '" wmode="transparent" quality="high" bgcolor="' + swfColor + '" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="../../../www.macromedia.com/go/getflashplayer" flashvars="' + flashVars + '" width="' + swfWidth + '" height="' + swfHeight + '" scale="noscale" ></embed>';
}

// for expanding/collapsing flash modules within Identify Theft template
function resizeFlashDiv(elFlash,elText,action){
	var flashDiv = document.getElementById(elFlash);
	var textDiv = document.getElementById(elText);
	if (action == 'expand') {
		flashDiv.style.width = '408px';
		flashDiv.style.height = '217px';
		flashDiv.style.zIndex = '20';
		textDiv.style.zIndex = '10';
	}
	if (action == 'contract') {
		flashDiv.style.width = '176px';
		flashDiv.style.height = '80px';
		flashDiv.style.zIndex = '10';
		textDiv.style.zIndex = '20';
	}
}

function showPointer() { this.style.cursor = "pointer";};
function showDefaultCursor() { this.style.cursor = "default";};

function setECMCookie()
{
	var today = new Date();
 	var expire = new Date();
	expire.setTime(today.getTime() + (3600000*24*60));
	document.cookie = "ECM=Y;expires="+expire.toGMTString();
}


// FUNCTIONS OF util/event.js SCRIPT FILE

var Event = function () {
	var listeners = [];
	
	return {
		addEvent: function(el, eventType, fn, scope) {
			if (this._isCollection(el)) {
				var isOk = true;
				for (var i=0; i< el.length; ++i) {
						isOk = ( this.addEvent(el[i], eventType, fn, scope) && isOk );
				}
				return isOk;
			
			}
			else if (typeof el == "string") {
				el = document.getElementById(el);
			}
			
			if (!el) {
					return false;
			}
			
			var wrappedFn = function(e) {
				return fn.call(el,e,scope);
			};

			var li = [el, eventType, fn, wrappedFn, scope];
			var index = listeners.length;
			listeners[index] = li;
			
			if (el.addEventListener) {
				el.addEventListener(eventType, wrappedFn, false);
			} else if (el.attachEvent) {
				el.attachEvent("on"+eventType, wrappedFn);
			}
			wrappedFn = null;
			return true;
		},
		removeEvent: function(el, eventType, fn) {
			if (this._isCollection(el)) {
				var isOk = true;
				for (var i=0; i< el.length; ++i) {
						isOk = ( this.removeEvent(el[i], eventType, fn) && isOk );
				}
				return isOk;
			
			}
			else if (typeof el == "string") {
				el = document.getElementById(el);
			}

			var cacheItem = null;
			var index = this._getCacheIndex(el, eventType, fn);

			if (index >= 0) {
					cacheItem = listeners[index];
			}

			if (!el || !cacheItem) {
					return false;
			}
			
			var cachedFunction = cacheItem[3];
			
			if (el.removeEventListener) {
					el.removeEventListener(eventType, cachedFunction, false);
			} else if (el.detachEvent) {
					el.detachEvent("on" + eventType, cachedFunction);
			}
			
			delete listeners[index][3];
			delete listeners[index][2];
			delete listeners[index];
			
			return true;
		},
		stopEvent: function(ev) {
				this.stopPropagation(ev);
				this.preventDefault(ev);
		},
		
		stopPropagation: function(ev) {
				if (ev.stopPropagation) {
						ev.stopPropagation();
				} else {
						ev.cancelBubble = true;
				}
		},
		preventDefault: function(ev) {
				if (ev.preventDefault) {
						ev.preventDefault();
				} else {
						ev.returnValue = false;
				}
		},		
		getPageX: function(el) {
			return this.getPageXY(el).pageX;
		},
		
		getPageY: function(el) {
			return this.getPageXY(el).pageY;
		},
		
		getPageXY: function(elem) {
			var offsetTrail = elem;
			var offsetLeft = 0;
			var offsetTop = 0;
			while (offsetTrail) {
					offsetLeft += offsetTrail.offsetLeft;
					offsetTop += offsetTrail.offsetTop;
					offsetTrail = offsetTrail.offsetParent;
			}
			if (navigator.userAgent.indexOf("Mac") != -1 && 
					typeof document.body.leftMargin != "undefined") {
					offsetLeft += parseInt(document.body.leftMargin);
					offsetTop += parseInt(document.body.topMargin);
			}
			return {pageX:offsetLeft, pageY:offsetTop};
		},
		removeAllEvents: function(el,obj) {
			
			if (listeners && listeners.length > 0) {
				for (var i = 0; i < listeners.length; ++i) {
					var l = listeners[i];
					if (l) {
						obj.removeEvent(l[0], l[1],l[2]);
					}
				}
				listeners = null;
			}
		},
		getListeners: function() {
			return listeners;
		},
		_getCacheIndex: function(el, sType, fn) {
				for (var i=0; i< listeners.length; ++i) {
						var li = listeners[i];
						if ( li           &&
								 li[2] == fn  &&
								 li[0] == el  &&
								 li[1] == sType ) {
								return i;
						}
				}
				return -1;
		},
		_isCollection: function(obj) {
			return ( obj										&&
							 obj.length							&&
							 typeof obj != "string"	&&
							 !obj.tagName						&&
							 !obj.alert							&&
							 typeof obj[0] != "undefined");
		}
	};
} ();

//Event.addEvent(window,"unload",Event.removeAllEvents,Event);

function handleError(err, isXML) {
	var errUrl, errMsg, errElmId;

	if (isXML) {
		var errs = err.getElementsByTagName('error');

		var errorsElms = err.getElementsByTagName('errors');

		if (errorsElms.length > 0 && errorsElms[0].getAttribute('url')) {
			errUrl = errorsElms[0].getAttribute('url');
		}
	} else {
		var errs = new Array();
		var errStartTag = '<error>';
		var errEndTag = '</error>';

		var index = err.indexOf(errStartTag);

		while (index != -1) {
			errs[errs.length] = err.substring(index + errStartTag.length, err.indexOf(errEndTag, index));
			index = err.indexOf(errStartTag, index+1);
		}

		var errUrlStartTag = 'url="';
		var errUrlStart = err.indexOf(errUrlStartTag);
		if (errUrlStart != -1) errUrl = err.substring(errUrlStart + errUrlStartTag.length, err.indexOf('"', errUrlStart + errUrlStartTag.length));
	}
	
	if (errUrl) {
		location.href = errUrl;
		return;
	}
	
	for (var i=0; i < errs.length; i++) {
		if (isXML) {
			var errMsgElms = errs[i].getElementsByTagName('message');
			if (errMsgElms.length > 0 && errMsgElms[0].firstChild) {
				errMsg = errMsgElms[0].firstChild.nodeValue;
			}
	
			var errIdElms = errs[i].getElementsByTagName('id');
			if (errIdElms.length > 0 && errIdElms[0].firstChild) {
				errElmId = errIdElms[0].firstChild.nodeValue;
			}
		} else {
			var errMsgStartTag = '<message>';
			var errMsgStart = errs[i].indexOf(errMsgStartTag);
			errMsg = errs[i].substring(errMsgStart + errMsgStartTag.length, errs[i].indexOf('</message>'));
	
			var errIdStartTag = '<id>';
			var errIdStart = errs[i].indexOf(errIdStartTag);
			errElmId = errs[i].substring(errIdStart + errIdStartTag.length, errs[i].indexOf('</id>'));
		}
		
		if (errElmId && errMsg) {
			addServerErrorMessage(errElmId, errMsg);
		} else if (errMsg) { 
			alert(errMsg);
		}
	}	

}

function addServerErrorMessage(id, msg) {
	var elm = document.getElementById(id);
	
	if (elm) {
		var msgCell 		= elm.parentNode;
		var msgDiv 			= document.createElement("div");
		msgDiv.className 	= 'err-server-msg';
		msgCell.insertBefore(msgDiv, msgCell.childNodes[0]);
		msgDiv.innerHTML 	= msg;

		removeDuplicateServerErrorMessages();
	} else {
		alert(msg);
	}
}

function removeDuplicateServerErrorMessages() {
	var allErrors = getElementsByClassName(document, 'div', 'err-server-msg');

	for (var i=1; i<allErrors.length; i++) {
		if (allErrors[i].innerHTML==allErrors[i-1].innerHTML && allErrors[i].parentNode == allErrors[i-1].parentNode) {
			allErrors[i].parentNode.removeChild(allErrors[i-1]);
		}
	}
}

function removeAllServerErrorMessages() {
	var allErrors = getElementsByClassName(document, 'div', 'err-server-msg');

	for (var i=0; i<allErrors.length; i++) {
		allErrors[i].parentNode.removeChild(allErrors[i]);
	}
}
function resetBreadCrumbPreviousCookie(){setBreadCrumbPreviousCookie("N");}
function setBreadCrumbPreviousCookie(cookieValue){var expiryDate=new Date();expiryDate.setDate(expiryDate.getDate()+14);if(cookieValue.length==0){document.cookie="citi-breadcrumb-previous=;path=/;expires=Fri, 02-Jan-1970 00:00:00 GMT;";}else{document.cookie="citi-breadcrumb-previous="+cookieValue+";path=/;expires="+expiryDate+";";}}

Event.addEvent(window,"load", resetBreadCrumbPreviousCookie);
