var scrollPosX,scrollPosY;
var DownPaymentDreams={};
DownPaymentDreams.IsDefined=function(what){
	if(typeof(what)!=='undefined'&&what!=='null'&&what!==null){
		return true;
	}else{
		return false;
	}
}
DownPaymentDreams.Page={
	CenterObj:function(obj){
		if(typeof(obj)!=='undefined'){
			if(obj.style.display==='block'||obj.style.display===''){
				var posX=((DownPaymentDreams_getWHofViewport()[0]-obj.offsetWidth)/2)+DownPaymentDreams_getXYofViewportScroll()[0]+'px';
				var posY=((DownPaymentDreams_getWHofViewport()[1]-obj.offsetHeight)/2)+DownPaymentDreams_getXYofViewportScroll()[1]+'px';
				obj.style.left=posX;
				obj.style.top=posY;
				return;
			}
		}else{
			return;
		}
	},
	AlignObj:function(obj,target){
		if(typeof(obj)!=='undefined'){
			var posX=DownPaymentDreams_getXYofElement(target)[0]+'px';
			var posY=DownPaymentDreams_getXYofElement(target)[1]+'px';
			obj.style.left=posX;
			obj.style.top=posY;
		}else{
			return;
		}
	},
	MapLoaded:false
};
DownPaymentDreams.Page.Fx={
	getOpacity:function(id){
		var o=getObj(id);
		if(typeof(o)!=='undefined'){
			if(typeof(o.style.opacity)!=='undefined'){
				if(o.style.opacity.toString().length>0){
					return (o.style.opacity*100);
				}else{
					return '';
				}
			}else if(typeof(o.style.MozOpacity)!=='undefined'){
				if(o.style.MozOpacity.toString().length>0){
					return (o.style.MozOpacity*100);
				}else{
					return '';
				}
			}else if(typeof(o.style.KhtmlOpacity)!=='undefined'){
				if(o.style.KhtmlOpacity.toString().length>0){
					return (o.style.KhtmlOpacity*100);
				}else{
					return '';
				}
			}else if(typeof(o.style.filter)!=='undefined'){
				if(o.style.filter.toString().length>0){
					return parseInt(o.style.filter.toString());
				}else{
					return '';
				}
			}
		}
	},
	setOpacity:function(id,v){
		var o=getObj(id),x=(v/100);
		if(typeof(o)!=='undefined'){
			o.style.opacity=(x);
			o.style.MozOpacity=(x);
			o.style.KhtmlOpacity=(x);
			o.style.filter="alpha(opacity="+v+")";
		}
	},
	fade:function(id,which,ms,display){
		var timer=0,i,speed,v,o;
		if(typeof(ms)==='undefined'){ms=500;}
		if(typeof(display)==='undefined'){display='block';}
		speed=Math.round(ms/100);
		if(typeof(id)!=='undefined'&&typeof(which)!=='undefined'){
			o=getObj(id);
			switch(which){
				case 'out':
					v=DownPaymentDreams.Page.Fx.getOpacity(id);
					if(v.toString().length===0||v.toString().length>1){
						for(i=100;i>=0;i--){
							setTimeout("DownPaymentDreams.Page.Fx.setOpacity('"+id+"',"+i+");",(timer*speed));
							timer++;
						}
						setTimeout(function(){
							o.style.display='none';
						},ms);
					}
					break;
				case 'in':
					v=DownPaymentDreams.Page.Fx.getOpacity(id);
					if(v.toString().length>0&&v.toString().length<3){
						getObj(id).style.display=display;
						for(i=0;i<=100;i++){
							setTimeout("DownPaymentDreams.Page.Fx.setOpacity('"+id+"',"+i+");",(timer*speed));
							timer++;
						}
					}
					break;
				default:
					break;
			}
		}
	}
}
DownPaymentDreams.Iframe={
	Current:'',
	FrameLoaded:false,
	FrameUnLoaded:false,
	CurrentFrame:function(){if(typeof(DownPaymentDreams.Iframe.Current)!=='undefined'){return parent.frames[DownPaymentDreams.Iframe.Current];}},
	LoadFrame:function(url){
		var iframe=DownPaymentDreams.Iframe.CurrentFrame();
		if(typeof(iframe)!=='undefined'&&iframe.location.href.indexOf(url)===-1){
			iframe.location.replace(url);
		}
	}
};
DownPaymentDreams.Search={
	Results:0,
	MaxResults:500,
	CurrentElement:null
}
DownPaymentDreams.Search.Map={
	loaded:false
}
DownPaymentDreams.Tabs={
	SetTabPageHeight:function(args){
		if(!(document.all)){
			var obj;
			if(DownPaymentDreams.IsDefined(args)){
				if(args.length>0){
					for(var i=0;i<args.length;i+=1){
						obj=$get(args[i]);
						if(DownPaymentDreams.IsDefined(obj)){
							obj.style.height='auto';
							if(obj.offsetParent){
								obj.offsetParent.style.height='100px';
								obj.offsetParent.style.height='auto';
							}
						}
					}
				}
			}
		}
	}
}
function CFWI_ComboBoxHeightControl(iframe){
	var m_h1=0,m_h2=0,m_loadHeight=0,m_height=0,m_adjustedHeight=0,m_isInitialized=false,m_oF=null;
	var me=this;
	this.init=function(){
		m_oF=parent.getObj(iframe);
		m_isInitialized=true;
		m_height=me.get_height(true);
		m_loadHeight=m_height;
	};
	this.get_height=function(b){
		var ri,adj;
		m_h1=0;
		m_h2=0;
		if(m_isInitialized===true){
			m_h1=document.documentElement.scrollHeight;
			m_h2=document.documentElement.offsetHeight;
			if(m_height===0){
				var n=document.all?0:10;
				if(m_h1>m_h2){
					ri=(m_h1+n);
				}else{
					ri=(m_h2+n);
				}
			}else{
				adj=(m_h1>m_h2)?m_h1:m_h2;
				ri=adj;
			}
			if(b){
				return ri;
			}
		}
	};
	this.set_height=function(v){
		m_oF.style.height=v+'px';
	};
	this.adjust_height=function(){
		var h = me.get_height(true);
		m_adjustedHeight=h;
		me.set_height(h);
	};
	this.restore_height=function(){
		m_oF.style.height=m_loadHeight+'px';
		var h = me.get_height(true);
		me.set_height(h);
	};
}
//create custom defaultButtons object
	var defaultButtons={registerButton:function(cId,bId){var oC=document.getElementById(cId);var oB=document.getElementById(bId);if(DownPaymentDreams.IsDefined(oC)&&DownPaymentDreams.IsDefined(oB)){if(typeof(oC.addEventListener)!=='undefined'){oC.addEventListener('keypress',function(e){defaultButtons.fireDefaultButton(e,oB);},false);}else if(typeof(oC.attachEvent)!=='undefined'){oC.attachEvent('onkeypress',function(e){defaultButtons.fireDefaultButton(e,oB);});}}},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'){lbtn.focus();eval(lbtn.href);return true;}}}catch(err){return false;}}}};
	// Example: defaultButtons.registerButton('containerID','buttonID');
	
// Adds Load Listener to the window.onload event handler.
	function addLoadListener(fn){if(typeof window.addEventListener!='undefined'){window.addEventListener('load',fn,false);}else if (typeof document.addEventListener != 'undefined'){document.addEventListener('load',fn,false);}else if(typeof window.attachEvent!='undefined'){window.attachEvent('onload',fn);}else{return false;}return true;}

// 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;}

// Determines what triggered an event
	function getEventTarget(e){var o;if(!e){var e=window.event;}if(e.target){o=e.target;}else if(e.srcElement){o=e.srcElement;}if(o.nodeType==3){o=o.parentNode;}return o;}

// Generic GetHTML Object Functions
	function getObj(oId){var d=document,i,el;el=d.getElementById?d.getElementById(oId):d.all?d.all[oId]?d[oId]:d[oId]:null;if(!el){if(d.forms.length>0){for(i=0; !el && i<d.forms.length; i++){el=d.forms[i][oId];}}}return el;}
	function get_HtmlObjWH(obj){if(obj.offsetWidth&&obj.offsetHeight){return [obj.offsetWidth,obj.offsetHeight];}else{return [0,0];}}
	function DownPaymentDreams_getXYofElement(obj){var x=y=0;if(obj.offsetParent){x=obj.offsetLeft;y=obj.offsetTop;while(obj=obj.offsetParent){x+=obj.offsetLeft;y+=obj.offsetTop;}}return [x,y];}

// Get Viewport Dimensions & Scroll Distances
	function DownPaymentDreams_getWHofViewport(){var w=window.innerWidth?window.innerWidth-21:document.documentElement?document.documentElement.clientWidth:document.body.clientWidth?document.body.clientWidth:null;var h=window.innerHeight?window.innerHeight-21:document.documentElement?document.documentElement.clientHeight:document.body.clientHeight?document.body.clientHeight:null;if(w&&h){return [w,h];}}
	function DownPaymentDreams_getXYofViewportScroll(){var x=window.innerWidth?window.pageXOffset:document.documentElement?document.documentElement.scrollLeft:document.body.scrollLeft?document.body.scrollLeft:null;var y=window.innerHeight?window.pageYOffset:document.documentElement?document.documentElement.scrollTop:document.body.scrollTop?document.body.scrollTop:null;return [x,y];}
	function DownPaymentDreams_setInitialXYofViewportScroll(){scrollPosX=DownPaymentDreams_getXYofViewportScroll()[0],scrollPosY=DownPaymentDreams_getXYofViewportScroll()[1];}
	attachEventListener(window,'load',DownPaymentDreams_setInitialXYofViewportScroll,false);

// Generic Set Title function
	function DownPaymentDreams_setElementTitle(obj,txt){
		if(typeof(obj)!=='undefined'&&obj!==null){
			if(typeof(txt)!=='undefined'&&txt!==null){
				if(txt.length===0){txt='';}
				obj.title=txt;
			}
		}
	}
// Generic Append / Replace Css ClassName functions
	function DownPaymentDreams_appendCssClass(obj,n){if(typeof(obj)!=='undefined'&&obj!==null){obj.className+=n;}}
	function DownPaymentDreams_restoreCssClass(obj,n){if(typeof(obj)!=='undefined'&&obj!==null){obj.className=obj.className.replace(n,'');}}
// Generic Focus Event Handler for IE Forms 
	function _ieFocus(obj,which){var cssclass=' has-focus';if(document.all){if(which.toLowerCase()=='focus'){DownPaymentDreams_appendCssClass(obj,cssclass);}else if(which.toLowerCase()=='blur'){DownPaymentDreams_restoreCssClass(obj,cssclass);}}else{return true;}}
	
// Generic Append to URL function
	// usage: 
	// srcId = Name of Cookie or Textbox that contains the value to be appended / replaced in the url
	// targetName = Name assigned to URL to be updated via the name attribute (e.g. <a name="mylink" href="">some text</a>
	// paramName = Name of Variable to find / append (e.g. find "key" in savedListing.aspx?format=print&key=guid&otherparams=something)
	function _appendToUrl(srcId,targetName,paramName){try{var strToAppend='',strToReplace='',newStr='',iStart,iStop,arr=document.getElementsByName(targetName),url='',val=getCookie(srcId);if(val==null||val=='null'){val=getObj(srcId);if(val&&val.type=='text'){val=val.value;}else{val='';}}if(arr&&arr.length>0){for(var i=0;i<arr.length;i++){url=arr[i].href;if(url.indexOf(paramName)==-1){strToAppend="?"+paramName+"="+val;if(url.indexOf("?")>-1){url=url.replace("?",(strToAppend+"&"));if(url.lastIndexOf("&")==url.length-1){url=url.substring(0,url.length-1);}}else{url=url+strToAppend;}}else if(url.indexOf(paramName)>-1){startindex=url.indexOf(paramName);stopindex=url.indexOf("&",startindex);newStr=paramName+"="+val;if(stopindex==-1){stopindex=url.length;}strToReplace=url.substring(startindex,stopindex);url=url.replace(strToReplace,newStr);}arr[i].href=url;}}}catch(err){}}

// Uses location.replace() method to set the href of the targeted iframe to prevent iframe url's from being added to history object.
	function DownPaymentDreams_loadUrl(sender){try{if(sender.target){var theIframe=parent.frames[sender.target.toString()];if(theIframe){theIframe.location.replace(sender.href);}}else{if(sender.href){location.replace(sender.href);}}}catch(err){}}

// Generic Toggle Display Functions
	function DownPaymentDreams_toggleDisplay(id,which){var obj=getObj(id);if(typeof obj=='undefined'){return}else{obj.style.display=which;return;};}

// Create Instance of a Flash Object inside an HTML container object via script. Bypasses "Click to Activate Control" message in IE
// Usage: <script type="text/javascript">var oFlash=new insertFlashObject(['oContainerId','id','url','w','h','wmode']);</script>
// Notes: 'wmode' is an optional override and is not required when creating a new insertFlashObject call...simply end the array after 'h'...example: var oFlash=new insertFlashObject(['oContainerId','id','url','w','h']);
	function insertFlashObject(args){var oContainerId=args[0],id=args[1],url=args[2],w=args[3],h=args[4],wmode=args[5]?args[5]:'transparent';if(oContainerId.length>0)var oFlashContainer=getObj(oContainerId);if(oFlashContainer&&url){var oStartTag  = '<object type="application/x-shockwave-flash" id="'+id+'" data="'+url+'" width="'+w+'" height="'+h+'">';var strParams  = '<param name="allowScriptAccess" value="sameDomain" /><param name="movie" value="'+url+'" /><param name="menu" value="false" /><param name="quality" value="high" /><param name="scale" value="exactfit" /><param name="autoStart" value="true" /><param name="WMode" value="'+wmode+'" />';var oEndTag = '</object>';oFlashContainer.innerHTML=oStartTag+strParams+oEndTag;}}

// Used to set the iframe width/height within the DownPaymentDreams UI Popup Window
	function DownPaymentDreams_UIPopupWindow_ContentFrameSize(){this.initialize=function(){var w,h,mW=420,mH=300,frameWidth,frameHeight,title;if(typeof this.Title!='undefined'){title=this.Title;}if(typeof this.Width!='undefined'){w=this.Width;}if(typeof this.Height!='undefined'){h=this.Height;}if(typeof this.OnClose_ReloadParent!='undefined'){reload_parent=this.OnClose_ReloadParent;}else{reload_parent=false;}if(typeof this.OnClose_PostParent!='undefined'){post_parent=this.OnClose_PostParent;}else{post_parent=false;}if(typeof this.OnClose_ChangeParent!='undefined'){change_parent=this.OnClose_ChangeParent;}else{change_parent='';}function adjust(){var oParentFrame=parent.document.getElementById('DownPaymentDreams_UIWindow_iframe');var oParentTitle=parent.getObj('DownPaymentDreams_UIWindow_Title');if(typeof oParentFrame=='undefined'){return;}else{try{var c=get_HtmlObjWH(getObj("iframe-page-content"));if(typeof c!='undefined'){if(typeof w=='undefined'){if(c[0]>mW){frameWidth=mW;}else{frameWidth=c[0];}}else{frameWidth=parseInt(w);}if(typeof h=='undefined'){if(c[1]>mH){frameHeight=(mH+20);frameWidth+=19;}else{frameHeight=c[1]+20;}}else{frameHeight=parseInt(h)+20;}if(typeof title=='undefined'){title='';}if(oParentFrame){oParentFrame.style.width=frameWidth+'px';}if(oParentFrame){oParentFrame.style.height=frameHeight+'px';}if(oParentTitle){oParentTitle.innerHTML=title;}}}catch(err){}}}this._modify=function(){adjust()};attachEventListener(window,'load',adjust,false);}}

// Close the Dialog Window
	function DownPaymentDreams_UIPopupWindow_Close(){
		if(typeof(parent.dialog)!=='undefined'){
			parent.dialog.Close();
		}
		if(typeof(parent.Dialog)!=='undefined'){
			parent.Dialog.Close();
		}
		if(typeof(dialog)!=='undefined'){
			dialog.Close();
		}
		if(typeof(Dialog)!=='undefined'){
			Dialog.Close();
		}
	}

// Determine how to handle, then process the parent window.  Used via Dialog Content iFrame.
	// Refresh, Change, Post Parent Window Functions
	function DownPaymentDreams_UIPopupWindow_ReloadParent(){parent.document.location.replace(parent.document.location.href);}
	function DownPaymentDreams_UIPopupWindow_ChangeParent(url){parent.document.location.replace(url);}
	function DownPaymentDreams_UIPopupWindow_PostParent(){parent.document.forms[0].submit();}
	// Prep, then Handle / Process Parent Window
	function DownPaymentDreams_PrepParentWindow(action,url){if(typeof action=='undefined'){return false;}else if(typeof url=='undefined'){return false;}else{try{var v=action+'|'+url;writeCookie("HandleParentWindow",v);return true;}catch(err){}}}
	function DownPaymentDreams_HandleParentWindow(){if(getCookie("HandleParentWindow")&&getCookie("HandleParentWindow").length>0){var action=getCookie("HandleParentWindow").split("|")[0];var url=''+getCookie("HandleParentWindow").split("|")[1];writeCookie("HandleParentWindow",'');DownPaymentDreams_ProcessParentWindow(action,url);}}
	function DownPaymentDreams_ProcessParentWindow(action,url){if(typeof action=='undefined'){return false;}else{try{window.setTimeout('DownPaymentDreams_UIPopupWindow_Close()',250);switch(action.toLowerCase()){case "changeparent":DownPaymentDreams_UIPopupWindow_ChangeParent(url);break;case "reloadparent":DownPaymentDreams_UIPopupWindow_ReloadParent();break;case "postparent":DownPaymentDreams_UIPopupWindow_PostParent();break;case "none":break;default:break;}}catch(err){}}}


	
// ### Last Selected Tab Code ### //

    // Control Tabstrip Tab Select event on individual tabs to use location.replace() method to prevent tab selections from being
    // remembered in history.  This function works both separately and in conjuction with the tabstrip-wide DownPaymentDreams_onTabSelect functions.
    function DownPaymentDreams_TabstripTabSelect(sender){
		var iframe=parent.frames[sender.Target];
		if(!iframe){iframe=frames[sender.Target];}
		if(DownPaymentDreams.IsDefined(iframe)){
			try{
				if(iframe.location.href.toLowerCase().indexOf(sender.NavigateUrl.toLowerCase())===-1){
					iframe.location.replace(sender.NavigateUrl);
				}else{
					return false;
				}
			}
			catch(err){}
		}
	}
	
	//DownPaymentDreams_onSideBarLoad
	function DownPaymentDreams_onSideBarLoad(sender, eventArgs){
		if(getCookie("SelectedTabs")){
		    var selectedTabsList=getCookie("SelectedTabs");
		    var arr=selectedTabsList.split("|");
		    var found=false;
		    for(var i=0;i<arr.length;i++){
			    if(arr[i].indexOf(sender.get_id())>-1){
				    found=true;
				    break;
			    }
		    }
		    if(!found){
			    DownPaymentDreams_setSelectedTab(sender.get_id(),0);
			    sender.get_tabs().getTab(0).select();
			    return;
		    }else{
				return;
		    }
	    }else{
			DownPaymentDreams_setSelectedTab(sender.get_id(),0);
			sender.get_tabs().getTab(0).select();
		    return;
	    }
	}
    
    // Function to select the default tab index for the sidebar tabstrip control
	function DownPaymentDreams_SelectDefault(){
		if(typeof tsSidebar!=='undefined'){
			var isVisible = tsSidebar.getSelectedTab().get_visible();
			if(isVisible!==true||isVisible!=='true'||isVisible!==1||isVisible!=='1'){
				DownPaymentDreams_SelectedTab('tsSidebar',0);
			}
		}
	}
	
	// TabStrip-wide event handler that Selects, then stores the last selected TabStrip Tab
    function DownPaymentDreams_onTabSelect(sender, eventArgs){
	    var oTabStripId=sender.get_id();
	    var oSelectedTabId=eventArgs.get_tab().get_id();
	    var selectedTabsList='';
	    var strFn=oTabStripId+'.findTabById(\''+oSelectedTabId+'\')';
	    var found=false;
	    
    	
	    if(getCookie("SelectedTabs")){
		    selectedTabsList=getCookie("SelectedTabs");
		    var arr=selectedTabsList.split("|");
		    for(var i=0;i<arr.length;i++){
			    if(arr[i].indexOf(oTabStripId)>-1){
				    selectedTabsList=selectedTabsList.replace(arr[i],strFn);
				    found=true;
				    break;
			    }
		    }
		    if(!found){
			    if(selectedTabsList.length>0){
				    selectedTabsList+='|'+strFn;
			    }else{
				    selectedTabsList=strFn;
			    }
		    }
	    }else{
		    selectedTabsList=strFn;
	    }
	    writeCookie("SelectedTabs",selectedTabsList);
    	if(eval(strFn+'.isSelected()')){
    		return false;
    	}
    }

    function DownPaymentDreams_setLastSelectedTab(){
	    if(getCookie("SelectedTabs")){
		    var arr=getCookie("SelectedTabs").split("|"),updateTabsList=getCookie("SelectedTabs"),fn='',isVisible='',tn='';
		    for(var i=0;i<arr.length;i++){
			    try {
					tn=eval(arr[i]+'.get_id()');
					isVisible=arr[i]+'.get_visible()';
					fn=arr[i]+'.select()';
					if(eval(isVisible)===true||eval(isVisible)==='true'||eval(isVisible)===1||eval(isVisible==='1')){
						eval(fn);
					}else{
						throw("Tab " + tn + " Not Found");
					}					
			    } 
			    catch(err){
					//The tab doesn't exist on this page...so we clear this path from the cookie.
				    if(updateTabsList.length>0){
					    if(updateTabsList.indexOf('|'+arr[i])>-1){
						    updateTabsList=updateTabsList.replace('|'+arr[i],'');
					    }else if(updateTabsList.indexOf(arr[i]+'|')>-1){
						    updateTabsList=updateTabsList.replace(arr[i]+'|','');
					    }else{
						    updateTabsList=updateTabsList.replace(arr[i],'');
					    }
				    }
				    //If the Tab Strip in question is the Sidebar, and the previously selected tab is no longer visible,
				    //then we default its view to the first tab (index 0);
				    DownPaymentDreams_SelectDefault();
			    }
		    }
		    writeCookie("SelectedTabs",updateTabsList);
	    }
    }

    // Usage: DownPaymentDreams_setSelectedTab('<%=TabStrip.ClientID %>',index);
    // Index value of -1 exits the function before it runs
    function DownPaymentDreams_setSelectedTab(tabStripId, index){
	    try {
		    if(index>-1){
			    var updateTabsList='',itemToReplace='';
			    var strFn=tabStripId+'.get_tabs().getTab('+index+')';
			    if(getCookie("SelectedTabs")){
				    var arr=getCookie("SelectedTabs").split("|"),updateTabsList=getCookie("SelectedTabs");
				    for(var i=0;i<arr.length;i++){
					    if(arr[i].indexOf(tabStripId)>-1){
						    itemToReplace=arr[i];
						    break;
					    }
				    }
				    if(itemToReplace.length>0 && updateTabsList.length>0){
					    updateTabsList=updateTabsList.replace(itemToReplace,strFn);
				    }else{
					    if(updateTabsList.length>0){
						    updateTabsList+='|'+strFn;
					    }else{
						    updateTabsList=strFn;
					    }
				    }
			    }else{
				    updateTabsList=strFn;
			    }
			    writeCookie("SelectedTabs",updateTabsList);
		    }
		    return;
	    }
	    catch(err){
			return;
	    }
    }

    function DownPaymentDreams_SelectedTab(tabStripId,index){
	    var strFn=tabStripId+'.get_tabs().getTab('+index+').select()';
	    eval(strFn);
    }

// ### Generic Checkbox List Function with Master Checkbox(es)
// Usage: var o<%=this.ClientID %> = new generic_CbxList('cbxSS','<%= txtSelectedItems.ClientID %>');	
function generic_CbxList(prefix,targetId,append){
	var target=getObj(targetId),arrCbxs=new Array(),arrMasterCbxs=new Array(),checkedCount=0,isInitialized=false;
	if(append){
		var srcId=append[0];
		if(append.length>1){
			var btnName=append[1];
		}
	}
	/* Get */
	function get_CheckedCount(){var checked=0;for(var i=0;i<arrCbxs.length;i++){if(arrCbxs[i].checked==true){checked++;}}return checked;}
	/* Process Functions */
	function process_MakeSelectedList(el,action){var thelist=target?target.value:'',rv=true;switch(action){case "add":if(thelist.length==0){thelist=el.value;}else{if(thelist.indexOf(el.value)==-1){thelist+='|'+el.value;}}break;case "remove":if(thelist.length>0){if(thelist.indexOf("|"+el.value)>-1){thelist=thelist.replace("|"+el.value,'');}else if(thelist.indexOf(el.value+"|")>-1){thelist=thelist.replace(el.value+"|",'');}else if(thelist.indexOf(el.value)>-1){thelist=thelist.replace(el.value,'');}}break;default:break;}return [rv,thelist];}
	function process_MasterCbx(el){if(el.checked){process_AllCbxs("on");}else if(!el.checked){process_AllCbxs("off");}if(arrMasterCbxs.length>0){if(get_CheckedCount()==arrCbxs.length){for(var i=0;i<arrMasterCbxs.length;i++){arrMasterCbxs[i].checked=true;}}else{for(var i=0;i<arrMasterCbxs.length;i++){arrMasterCbxs[i].checked=false;}}}}
	function process_Cbx(el){var arr;if(el.checked){arr=process_MakeSelectedList(el,"add");}else{arr=process_MakeSelectedList(el,"remove");}if(get_CheckedCount()==arrCbxs.length){for(var i=0;i<arrMasterCbxs.length;i++){arrMasterCbxs[i].checked=true;}}else{for(var i=0;i<arrMasterCbxs.length;i++){arrMasterCbxs[i].checked=false;}}set_TargetValue(arr[1]);}
	function process_AllCbxs(action){var arr;switch(action){case "on":for(var i=0;i<arrCbxs.length;i++){arrCbxs[i].checked=true;arr=process_MakeSelectedList(arrCbxs[i],"add");set_TargetValue(arr[1]);}break;case "off":for(var i=0;i<arrCbxs.length;i++){arrCbxs[i].checked=false;arr=process_MakeSelectedList(arrCbxs[i],"remove");set_TargetValue(arr[1]);}break;default:break;}}
	/* Set */
	function set_TargetValue(olist){if(target){target.value=olist;try{_appendToUrl(srcId,btnName,'key')}catch(err){}}}
	/* Load */
	function init(){var f=document.forms[0],c=0,mc=0;for(var i=0;i<f.length;i++){if(f.elements[i].id.indexOf(prefix)>-1&&f.elements[i].type=='checkbox'){if(f.elements[i].id.toLowerCase().indexOf("master")>-1){arrMasterCbxs[mc]=f.elements[i];arrMasterCbxs[mc].onclick=function(){process_MasterCbx(this)};mc++;}else{arrCbxs[c]=f.elements[i];arrCbxs[c].onclick=function(){process_Cbx(this)};if(target.value.indexOf(arrCbxs[c].value)>-1){arrCbxs[c].checked=true;}c++;}}}checkedCount=get_CheckedCount();if(checkedCount==arrCbxs.length){for(var i=0;i<arrMasterCbxs.length;i++){arrMasterCbxs[i].checked=true;}}}
	if(!isInitialized){
		init();
		isInitialized=true;
	}
}



function loadCompareScreen(listSrc){
	var list=getCookie(listSrc),compareWin=null;
	if(list==null||list=='null'){
		list=getObj(listSrc);
		if(list&&list.type=='text'){list=list.value;}
	}
	if(list&&list.length>0){
		compareWin = window.open('/idx/search/compare.aspx?key='+list, 'CompareWindow', 'width=800,height=600,left=0,top=0,menubar=yes,resizable=yes,scrollbars=yes,status=yes');
		compareWin.window.focus();
	}else{
		alert("At least 1 item must be selected to view the compare screen.");
		return false;
	}
	return true;
}


// ### Form Validation Functions
	function _restrictTo(e,what){
		var key,keyChar,regexp;
		if(window.event){key=e.keyCode;}else if(e.which){key=e.which;}
		keyChar=String.fromCharCode(key);
		switch(what){
			case 'alpha':
				regexp=/[a-zA-Z\-\']|\0|[\b]|\t/;
				if(!regexp.test(keyChar)){
					if(e.preventDefault){e.preventDefault();}
					e.returnValue = false;
					return false;
				}
				break;
			case 'alphanumeric':
				regexp=/[a-zA-Z\-\']|\s|\d|\0|[\b]|\t/;
				if(!regexp.test(keyChar)){
					if(e.preventDefault){e.preventDefault();}
					e.returnValue = false;
					return false;
				}
				break;
			case 'integer':
				regexp=/\d|\0|[\b]|\t/;
				if(!regexp.test(keyChar)){
					if(e.preventDefault){e.preventDefault();}
					e.returnValue = false;
					return false;
				}
				break;
			case 'decimal':
				regexp=/\d|\.|\0|[\b]|\t/;
				if(!regexp.test(keyChar)){
					if(e.preventDefault){e.preventDefault();}
					e.returnValue = false;
					return false;
				}
				break;
			case 'email':
				regexp=/\S|\t/;
				if(!regexp.test(keyChar)){
					if(e.preventDefault){e.preventDefault();}
					e.returnValue = false;
					return false;
				}
				break
			case 'alphanumwithoutspace':
				regexp=/[a-zA-Z\-\']|\d|\0|[\b]|\t/;
				if(!regexp.test(keyChar)){
					if(e.preventDefault){e.preventDefault();}
					e.returnValue = false;
					return false;
				}
			default:
				break;
		}
	}
	var g_tabTarget;
	function _integer_moveToNextField(e,args){
		if(window.event){key=e.keyCode;el=e.srcElement}else if(e.which){key=e.which;el=e.target};
		var regexp=/(48)|(49)|(50)|(51)|(52)|(53)|(54)|(55)|(56)|(57)|(96)|(97)|(98)|(99)|(100)|(101)|(102)|(103)|(104)|(105)/;
		var limit=args[0],id=args[1].toLowerCase(),tabTarget;
		if(regexp.test(key)){
			if(el.value.length==limit){
				try{
					tabTarget=document.getElementById(id);
					
					if(!tabTarget){
						for(i=0;i<document.forms[0].length;i++){
							if(document.forms[0].elements[i].id.toLowerCase().indexOf(id)>-1){
								tabTarget=document.forms[0].elements[i];
								break;
							}
						}
					}
					g_tabTarget = tabTarget;
					if(g_tabTarget){g_tabTarget.focus();}
					if(g_tabTarget.type==='text'||g_tabTarget.type==='textarea'){
						if(g_tabTarget.value.length>0){
							g_tabTarget.select();
						}
					}
				}
				catch(err){
					alert(err);
				}
			}
		}
	}
	
	function _compareValues(src1Id,src2Id,msgPhldrId,passCssClass,passMsgText,failCssClass,failMsgText){
		var oMsgPhldr=getObj(msgPhldrId);
		var oSrc1=getObj(src1Id);
		
				
		var oSrc2=getObj(src2Id);
		if(typeof(oSrc1)!=='undefined'&&typeof(oSrc2)!=='undefined'&&typeof(oMsgPhldr)!=='undefined'){
			if(oSrc1.value.length>0||oSrc2.value.length>0){
				if(oSrc1.value===oSrc2.value){
					oMsgPhldr.className=passCssClass;
					oMsgPhldr.innerHTML=passMsgText;
					oMsgPhldr.style.display='block';
				}else{
					oMsgPhldr.className=failCssClass;
					oMsgPhldr.innerHTML=failMsgText;
					oMsgPhldr.style.display='block';
				}
			}else if(oSrc1.value.length===0&&oSrc2.value.length===0){
				oMsgPhldr.className='';
				oMsgPhldr.innerHTML='';
				oMsgPhldr.style.display='none';
			}
		}
	}

	var validate_isEmail,validate_targetObject;
	function validateEmail(el) {
		var regexp = "^([a-zA-Z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}\$";
		var oRegEx = new RegExp(regexp);
		if(el.value.length!=0){
			if(!oRegEx.test(el.value)){
				alert("The email address you entered appears to be invalid.\nPlease double-check your entry and make sure it is properly formatted.\nex: name@address.com");
				validate_isEmail=false;
				validate_targetObject=el;
				window.setTimeout('_resetFocus()',1);
			}
		}
	}

	function _formatPhone(el){
		var t=el.value,nv='';
		if (el.value.length < 7) {
			return false;
		} else {
			if(t.length==7){
				nv = t.substr(0,3);
				nv += "-" + t.substr(3,4);
			}else if(t.length==10){
				nv += "(" + t.substr(0,3) + ")"; // area code
				nv += " " + t.substr(3,3); // prefix
				nv += "-" + t.substr(6,4); // suffix
			}else{
				nv=t;
			}
			el.value = nv;
			return true;
		}
	}
	
	//Determines if v (value) is an Integer.  Returns true/false
		function isInteger(v){var oRegExp=/(^-?\d\d*$)/;return oRegExp.test(v);}
	
	//Validates and Formats Currency / returns value to source input field
		function validatePrice(el){var a='0123456789',n='',i,j,t;if(el.value.length>0){t=el.value.split(".");for(i=0;i<t[0].length;i++){for(j=0;j<a.length;j++){if(t[0].charAt(i)==a.charAt(j)){n+=a.charAt(j);break;}}}if(n.length==0){el.value='';}else if(n==0||n=='0'){el.value='';}else{el.value=FormatCurrency(n);}}}
		function FormatCurrency(num){num=num.toString().replace(/\$|\,/g,'');if(isNaN(num))num="0";var sign=(num==(num=Math.abs(num)));num=Math.floor(num*100+0.50000000001);cents=num%100;num=Math.floor(num/100).toString();if(cents<10)cents="0"+cents;for(var i=0;i<Math.floor((num.length-(1+i))/3); i++)num=num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));return(((sign)?'':'-')+'$'+num);}
	
	//Parses / Validates v (value) as Positive Integer / returns integer value to source input field unless value is 0, then returns zero-length string
		function validatePosInt(el){var t;if(el.value.length>0){t=parseInt(el.value);if(!isInteger(t)||t<0||t==0||t=='0')t='';el.value=t;return true;}}

	//Two List Boxes Control stuff
		function twoListBoxes_focusOnAvailable(id){var obj=getObj(id);for(var i=0;i<obj.options.length;i++){if(obj.options[i].selected==true){obj.options[i].selected=false;}}}
		function twoListBoxes_focusOnSelected(id){var obj=getObj(id);if(obj){for(var i=0;i<obj.options.length; i++){if(obj.options[i].selected==true){obj.options[i].selected=false;}}}}

/* ### Cookies 
 * Sets a Cookie with the given name and value.
 *
 * name       Name of the cookie
 * value      Value of the cookie
 * [expires]  Expiration date of the cookie (default: end of current session)
 * [path]     Path where the cookie is valid (default: path of calling document)
 * [domain]   Domain where the cookie is valid
 *              (default: domain of calling document)
 * [secure]   Boolean value indicating if the cookie transmission requires a
 *              secure transmission
*/
function setCookie(name, value, expires, path, domain, secure){
	var arrKeys=value.split("|"),c=arrKeys.length,newValue=value,tempValue='';
	var msg= 'A maximum of 50 listings may be selected for comparison at one tithis.\n';
		msg+='You have selected '+ c +' listings for comparison.\n';
		if((c-50)==1){
			msg+='The last listing will be de-selected automatically from your list.';
		} else {
			msg+='The last '+ (c-50) +' listings will be de-selected automatically from your list.';
		}
	if(arrKeys.length>50){
		for(var i=0;i<50;i++){
			if(tempValue==''){
				tempValue=arrKeys[i];
			} else {
				tempValue+='|'+arrKeys[i];
			}
		}
		newValue=tempValue;
		alert(msg);
	}
	writeCookie(name, newValue, expires, path, domain, secure);
} 

function writeCookie(name, value, expires, path, domain, secure)
{
    document.cookie= name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires.toGMTString() : "") +
        ("; path=/") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}

/*
 * Gets the value of the specified cookie.
 *
 * name  Name of the desired cookie.
 *
 * Returns a string containing value of specified cookie,
 *   or null if cookie does not exist.
*/
function getCookie(name){
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1){
        begin = dc.indexOf(prefix);
        if (begin == -1) return null;
    }
    else
    {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1)
    {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}

/**
 * Deletes the specified cookie.
 *
 * name      name of the cookie
 * [path]    path of the cookie (must be same as path used to create cookie)
 * [domain]  domain of the cookie (must be same as domain used to create cookie)
 */
function deleteCookie(name, path, domain)
{
    if (getCookie(name))
    {
        document.cookie = name + "=" + 
            ("; path=/") +
            ((domain) ? "; domain=" + domain : "") +
            "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
}


//Time related functions
	function timeFixMinutes(minutes){var results=minutes; if (minutes<=9){results='0'+minutes;}; return results;}
	function timeFixHours(hours){var results=hours; if (hours>=13){results=hours-12;}; if (results=='0'){results=12}; return results;}
	function timeGetAMPM(hours){var results = 'AM'; if (hours<=12){results='AM';} else {results='PM';}; return results;}
	function dateGetMonthName(month){}

	function formatDateTime(item){
		var d=item;
		var results='';
		var intMonth=d.getMonth();
		var intDay=d.getDate();
		var intYear=d.getFullYear();
		var intHours=timeFixHours(d.getHours());
		var int24Hours=d.getHours();
		var intMinutes=timeFixMinutes(d.getMinutes());
		var strAMPM=timeGetAMPM(d.getHours());
	    
		var strMilitaryTime=int24Hours + ':' + intMinutes;
		var strAMPMTime=intHours + ':' + intMinutes + ' ' + strAMPM;
	    
		var strMMDDYYYY=intMonth + '/' + intDay + '/' + intYear;
		var strDDMMYYYY=intDay + '/' + intMonth + '/' + intYear;
	    
		results = strMMDDYYYY + ' ' + strAMPMTime;
		return results
	}
	
	