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)){
							el.style.height=(h+offset)+'px';
							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;}