var CFWI={};
	
	CFWI.Css={
		removeClassName:function(el,CssClass){
			if(CFWI.IsDefined(el)){
				if(el.className.toLowerCase().indexOf(CssClass.toLowerCase())>-1){
					el.className=el.className.replace(CssClass,'');
				}else{
					return;
				}
			}else{
				return;
			}
		}
	};
	
	// create custom defaultButtons object
	CFWI.DefaultButtons={
		registerButton:function(cId,bId){
			var oC=document.getElementById(cId);
			var oB=document.getElementById(bId);
			if(CFWI.IsDefined(oC)&&CFWI.IsDefined(oB)){
				attachEventListener(oC,'keypress',function(e){
					CFWI.DefaultButtons.fireDefaultButton(e,oB);
				},true);
			}
		},
		fireDefaultButton:function(e,lbtn){
			if(!e.which&&!e.keyCode){
				return;
			}else{
				var k=(e.which||e.keyCode);
				var t=(e.target||e.srcElement);
				try{
					if(k===13){
						if(t.type!=='textarea'){
							if(lbtn.getAttribute('onclick')){
								if(!(document.all)){
									s=lbtn.getAttribute('onclick').toString();
								}else{
									s=lbtn.attributes["onclick"].value;
								}
								if(s.indexOf('return ')>-1){
									s=s.replace('return ','');
								}
								if(eval(s)){
									eval(lbtn.href);
								}else{
									if(e.preventDefault){e.preventDefault();}
									e.returnValue = false;
									return false;
								}
							}else{
								eval(lbtn.href);
								return false;
							}
						}
					}
				}
				catch(err){
					//alert(err);
					return false;
				}
			}
		}
	};
	// Example: CFWI.DefaultButtons.registerButton('containerID','buttonID');
	
	
	// Check to see if an object is defined (HTML Object, Javascript Object, Variable)
	CFWI.IsDefined=function(what){
		if(typeof(what)!=='undefined'&&what!=='null'&&what!==null){
			return true;
		}else{
			return false;
		}
	}
	
CFWI.ResizeDialog={
		IsInitialized:false,
		Title:'',
		Width:'',
		Height:'',
		MinWidth:250,
		MinHeight:100,
		oParent:'',
		oParentFrame:'',
		oParentTitle:'',
		oContent:'',
		Init:function(){
			CFWI.ResizeDialog.oParent=parent.getObj('BrokerIDX_UIWindow');
			CFWI.ResizeDialog.oParentFrame=parent.document.getElementById('BrokerIDX_UIWindow_iframe');
			CFWI.ResizeDialog.oContent=getObj('iframe-page-content');
			CFWI.ResizeDialog.oParentTitle=parent.getObj('BrokerIDX_UIWindow_Title');
			if(CFWI.ResizeDialog.Width.length===0){
				CFWI.ResizeDialog.Width=CFWI.ResizeDialog.GetWH()[0]+30;
			}
			if(CFWI.ResizeDialog.Height.length===0){
				CFWI.ResizeDialog.Height=CFWI.ResizeDialog.GetWH()[1]+30;
			}
			if(CFWI.ResizeDialog.Title.length!==0){
				CFWI.ResizeDialog.oParentTitle.innerHTML=CFWI.ResizeDialog.Title;
			}
		},
		GetWH:function(){
			var w,h,arr=get_HtmlObjWH(CFWI.ResizeDialog.oContent);
			if(arr[0]<CFWI.ResizeDialog.MinWidth){
				w=CFWI.ResizeDialog.MinWidth;
			}else{
				w=arr[0];
			}
			if(arr[1]<CFWI.ResizeDialog.MinHeight){
				h=CFWI.ResizeDialog.MinHeight;
			}else{
				h=arr[1];
			}
			return [w,h];
		},
		SetWH:function(arr){
			var aW=0,aH=0;
			if(typeof(arr)!=='undefined'){
				if(arr.length>0){
					aW=arr[0];
					aH=arr[1];
				}
			}
			CFWI.ResizeDialog.Width=CFWI.ResizeDialog.GetWH()[0]+30+aW;
			CFWI.ResizeDialog.Height=CFWI.ResizeDialog.GetWH()[1]+30+aH;
		},
		Resize:function(){
			if(!(CFWI.ResizeDialog.IsInitialized)){CFWI.ResizeDialog.Init();}
			CFWI.ResizeDialog.oParent.style.width=CFWI.ResizeDialog.Width+'px';
			CFWI.ResizeDialog.oParentFrame.style.width='99.5%';
			CFWI.ResizeDialog.oParentFrame.style.height=CFWI.ResizeDialog.Height-20+'px';
			if(typeof(parent.oDialog)!=='undefined'){
				parent.oDialog.style.width=CFWI.ResizeDialog.Width+'px';
				parent.oDialog.style.height=CFWI.ResizeDialog.Height+'px';
				parent.BrokerIDX_snapDialogToElement();
			}
		},
		UpdateTitle:function(s){
			if(CFWI.IsDefined(s)){
				if(s.length>0){
					CFWI.ResizeDialog.oParentTitle.innerHTML=s;
					return true;
				}else{
					CFWI.ResizeDialog.oParentTitle.innerHTML=CFWI.ResizeDialog.Title;
					return true;
				}
			}
		},
		Exec:function(){
			attachEventListener(window,'load',CFWI.ResizeDialog.Resize,false);
		}
	};
	
	CFWI.Search={};
	
	CFWI.Search.Map={
		loaded:false
	}

	CFWI.Search.Images = {
		Main: {
			id: '',
			src: '',
			css: '',
			width: 400,
			enlargeWidth: 600,
			enlargeHeight: 450,
			useEnlargeFunc: false,
			enlargeFunc: function (src) {
				try {
					// Determine correct height of enlarge image to maintain proper aspect ratio
					var el = getObj(this.id), title = '', w, h, r = 1.333333;
					if (CFWI.IsDefined(el)) {
						r = (el.offsetWidth / el.offsetHeight);
						this.enlargeHeight = (this.enlargeWidth / r);
						mh = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight;
						if (this.enlargeHeight > mh) {
							this.enlargeHeight = (mh - 70);
							this.enlargeWidth = (this.enlargeHeight * r);
						}
					}
					title = CFWI.Search.Images.Text.span().innerHTML + ' (enlarged)';
					w = this.enlargeWidth + 50;
					h = this.enlargeHeight + 20;

					// Call custom function here.
					Details_usePhotoDialog(title, src, w, h, false);
				}
				catch (err) {

				}
			},
			create: function () {
				var el = '<img class="' + this.css + '" id="' + this.id + '" src="' + this.src + '" width="' + this.width + '" onclick="CFWI.Search.Images.Main.enlarge(this)" title="Enlarge this photo." alt="Enlarge this photo." />';
				document.write(el);
			},
			update: function (sender, d) {
				var img, el = getObj(CFWI.Search.Images.Main.id), n, l = CFWI.Search.Images.Thumbs.items.length;
				if (CFWI.IsDefined(el) && CFWI.IsDefined(sender)) {
					if (!(CFWI.IsDefined(d))) {
						el.src = sender.href;
						this.enlargeHeight = el.offsetHeight;
						img = sender.getElementsByTagName('img')[0];
						CFWI.Search.Images.Thumbs.cPos = CFWI.Search.Images.Thumbs.index(img);
						CFWI.Search.Images.Buttons.toggle(CFWI.Search.Images.Thumbs.cPos, l);
					} else {
						CFWI.Search.Images.Thumbs.cPos = CFWI.Search.Images.Thumbs.index(el);
						if (d === 'p') {
							n = (CFWI.Search.Images.Thumbs.cPos - 1);
							if (n >= 0) {
								el.src = CFWI.Search.Images.Thumbs.items[n].parentNode.href;
								this.enlargeHeight = el.offsetHeight;
								CFWI.Search.Images.Buttons.toggle(n, l);
							}
						} else if (d === 'n') {
							n = (CFWI.Search.Images.Thumbs.cPos + 1);
							if (n <= (l - 1)) {
								el.src = CFWI.Search.Images.Thumbs.items[n].parentNode.href;
								this.enlargeHeight = el.offsetHeight;
								CFWI.Search.Images.Buttons.toggle(n, l);
							}
						}
					}
					CFWI.Search.Images.Text.write();
				}
				return false;
			},
			enlarge: function (sender) {
				if (CFWI.IsDefined(sender)) {
					try {
						var src = sender.src, ri = null, arr = src.split('&');
						if (arr.length > 1) {
							for (var i = 0; i < arr.length; i++) {
								if (arr[i].indexOf('width=') > -1) {
									ri = arr[i].toString();
									break;
								}
							}
							if (ri !== null) {
								src = src.replace(ri, 'width=' + this.enlargeWidth);
							}
						}
						if (this.useEnlargeFunc) {
							this.enlargeFunc(src);
						} else {
							window.open(src);
						}
					}
					catch (err) {
						//alert(err);
					}
				}
			},
			init: function () {
				if (CFWI.IsDefined(CFWI.Search.Images.Thumbs.items)) {
					var el = getObj(CFWI.Search.Images.Main.id);
					if (CFWI.IsDefined(el)) {
						if (CFWI.Search.Images.Thumbs.length() > 0) {
							el.src = CFWI.Search.Images.Thumbs.items[0].parentNode.href;
							el.style.visibility = 'visible';
							CFWI.Search.Images.Buttons.toggle(CFWI.Search.Images.Thumbs.cPos, CFWI.Search.Images.Thumbs.length());
							if (CFWI.Search.Images.Thumbs.length() === 1) {
								el.src = CFWI.Search.Images.Thumbs.items[0].parentNode.href;
								try {
									CFWI.Search.Images.Buttons.lbtnRow().style.display = 'none';
									CFWI.Search.Images.Thumbs.col().style.display = 'none';
								} catch (err) {
									//alert(err);
								}
							}
						} else {
							el.src = CFWI.Search.Images.Main.src;
							el.style.visibility = 'visible';
							try {
								CFWI.Search.Images.Buttons.lbtnRow().style.display = 'none';
								CFWI.Search.Images.Thumbs.col().style.display = 'none';
							} catch (err) {
								//alert(err);
							}
						}
					}
				}
			}
		},
		Thumbs: {
			items: null,
			containerId: '',
			scrollLayerId: '',
			cPos: 0,
			col: function () {
				return getObj(this.containerId);
			},
			length: function () {
				if (CFWI.IsDefined(CFWI.Search.Images.Thumbs.items) && CFWI.Search.Images.Thumbs.items.length > 0) {
					return CFWI.Search.Images.Thumbs.items.length;
				} else {
					return 0;
				}
			},
			index: function (el) {
				var v = 0;
				if (CFWI.IsDefined(this.items) && this.items.length > 0) {
					for (var i = 0; i < this.items.length; i++) {
						if (this.items[i].src == el.src) {
							v = i;
							break;
						} else if (this.items[i].parentNode.href == el.src) {
							v = i;
							break;
						}
					}
				}
				return v;
			},
			adjust: function () {
				if (document.all) {
					var el = getObj(CFWI.Search.Images.Thumbs.scrollLayerId), h, offset = 15;
					if (CFWI.IsDefined(el)) {
						h = el.offsetHeight;
						if (CFWI.IsDefined(h)) {
							setTimout(function(){el.style.height = (h + offset) + 'px'},500);
							return;
						}
					}
				}
			}
		},
		Buttons: {
			rowId: 'CFWI_imagePaging',
			prevId: 'lbtnPrev',
			nextId: 'lbtnNext',
			lbtnPrev: function () {
				return getObj(this.prevId);
			},
			lbtnNext: function () {
				return getObj(this.nextId);
			},
			lbtnRow: function () {
				return getObj(this.rowId);
			},
			toggle: function (index, count) {
				if (CFWI.IsDefined(index) && CFWI.IsDefined(count)) {
					if (index >= 0 && index <= (count - 1)) {
						if (index === 0 && CFWI.IsDefined(CFWI.Search.Images.Buttons.lbtnPrev())) {
							CFWI.Search.Images.Buttons.lbtnPrev().className = CFWI.Search.Images.Buttons.disabledCssClass;
						} else {
							CFWI.Search.Images.Buttons.lbtnPrev().className = '';
						}
						if (index === (count - 1) && CFWI.IsDefined(CFWI.Search.Images.Buttons.lbtnNext())) {
							CFWI.Search.Images.Buttons.lbtnNext().className = CFWI.Search.Images.Buttons.disabledCssClass;
						} else {
							CFWI.Search.Images.Buttons.lbtnNext().className = '';
						}
						CFWI.Search.Images.Thumbs.cPos = index;
					}
				} else {
					return;
				}
			},
			disabledCssClass: 'disabled-button'
		},
		Text: {
			id: 'CFWI_viewText',
			span: function () {
				return getObj(this.id);
			},
			write: function () {
				if (CFWI.IsDefined(this.span)) {
					var s = '';
					if (CFWI.IsDefined(CFWI.Search.Images.Thumbs.items) && CFWI.Search.Images.Thumbs.items.length > 0) {
						s = 'viewing <b>' + (CFWI.Search.Images.Thumbs.cPos + 1) + '</b> of <b>' + CFWI.Search.Images.Thumbs.length() + '</b>';
						this.span().innerHTML = s;
					}
				}
			}
		}
	};

// Attaches an Event Listener to a valid document event type
	function attachEventListener(target, eventType, functionRef, capture){if(typeof target.addEventListener!="undefined"){target.addEventListener(eventType,functionRef,capture);}else if(typeof target.attachEvent!="undefined"){target.attachEvent("on"+eventType,functionRef);window.attachEvent("onunload",function(e){removeListeners(target,eventType,functionRef,capture);});}else{return false;}return true;}
	function removeListeners(target, eventType, functionRef, capture){if(typeof target.removeEventListener!="undefined"){target.removeEventListener(eventType,functionRef,capture);}else if(typeof target.detachEvent!="undefined"){target.detachEvent("on"+eventType,functionRef);}else{return false;}return true;}
