﻿//	****************************************************************************************************
//	*																								   *
//	*	File Name :		olrjslib.js																	   *
//	*	Version :		1.0.0.0																		   *
//	*	Created By :	Martin Holly																   *
//	*	Last Updated :	01/13/09																	   *
//	*	Updates :																					   *
//	*	01/19/09	- OLRBasicSelect.SetValues now does not create a default option specified by 	   *
//	*				  "label" argument if "label" is null or empty string.							   *
//	*	02/04/09	- Added ArrayList object. This is a rudimentary array object with a couple of 	   *
//	*				  usefull functions: AddValue(v), RemoveAll(v) and RemoveOne(v)					   *
//	*	02/05/09	- Added the functions IndexOf(v), Copy() and AddRange(arr) to ArrayList			   *
//	****************************************************************************************************

function ArrayList()
{
	//CLASS DATA
	var _array = new Array();
	
	//FUNCTIONS
	this.Length = function(){return _array.length;};
	this.Copy = function()
	{
		var _newArrayList = new ArrayList();
		_newArrayList.AddRange(this);
		return _newArrayList;
	};
	this.AddValue = function(value)
	{
		if(value==null){return this;}
		else{_array[this.Length()]=value; return this;}
	};
	this.AddRange = function(array)
	{
		if(array==null){return this;}
		
		if(array instanceof Array){for(var i=0; i<array.length; i++){_array[this.Length()]=array[i];} return this;}
		if(array instanceof ArrayList){var _tarr = array.ToArray(); for(var i=0; i<_tarr.length; i++){_array[this.Length()]=_tarr[i];} return this;}
		return this;
	};
	this.ToArray = function()
	{
		var _arrcpy = new Array();
		for(var i=0; i<this.Length(); i++)
			_arrcpy[i] = _array[i];
		return _arrcpy;
	};
	this.IndexOf = function(value)
	{
		if(value==null){return null;}
		for(var i=0; i<this.Length(); i++){if(_array[i]==value){return i;}}
		return null;
	};
	this.RemoveAll = function(value)
	{
		if(value==null){return this;}

		var _narr = new Array();
		for(var i=0; i<this.Length(); i++)
		{
			if(_array[i]==value){continue;}
			else{_narr[_narr.length]=_array[i];}
		}//End for
		_array = _narr;
		return this;
	};
	this.RemoveOne = function(value)
	{
		if(value==null){return this;}

		var _narr = new Array();
		var _isRemoved = false;
		for(var i=0; i<this.Length(); i++)
		{
			if(_array[i]==value && !_isRemoved){_isRemoved=true; continue;}
			else{_narr[_narr.length]=_array[i];}
		}//End for
		_array = _narr;
		return this;
	};
	return this;
}//End ArrayList()


var OLRString = OLRString ? OLRString :
{
    IsNullOrEmpty: function(string){return (string=="" || string==null);},
    IsValidDateMMDDYYYY: function(string)
    {
        var _regex = /^\d{2}\/\d{2}\/\d{4}$/;
        if(this.IsNullOrEmpty(string)){return false;}
        else 
        {
            if(string.match(_regex)!=null){return true;}
            else{return false;}
        }
    },
    IsValidDateMMDDYY: function(string)
    {
        var _regex = /^\d{2}\/\d{2}\/\d{2}$/;
        if(this.IsNullOrEmpty(string)){return false;}
        else
        {
            if(string.match(_regex)!=null){return true;}
            else{return false;}
        }
    },
    IsValidPhoneNumber: function(string)
    {
        var _regex = /^\(\d{3}\)\s*\-\s*\d{3}\s*\-\s*\d{4}$/;
        if(this.IsNullOrEmpty(string)){return false;}
        else
        {
            if(string.match(_regex)!=null){return true;}
            else{return false;}
        }
    },
    IsValidPhoneNumber10Digit: function(string)
    {
        var _regex = /^\d{3}[-]{0,1}\d{3}[-]{0,1}\d{4}$/;
        if(this.IsNullOrEmpty(string)){return false;}
        else
        {
            if(string.match(_regex)!=null){return true;}
            else{return false;}
        }
    },
    IsValidEmail: function(string)
    {
        var _regex =/^\w+([+-_]\w+)*@\w+([-]\w+)*\.\w+([-.]\w+)*$/;
        if(this.IsNullOrEmpty(string)){return false;}
        else
        {
            if(string.match(_regex)!=null){return true;}
            else{return false;}
        }
    }
}

var OLRBasicSelect = OLRBasicSelect ? OLRBasicSelect :
{
	SetValues:	function(containerId, array, label, formatter)
	{
		if(OLRString.IsNullOrEmpty(containerId)){return;}
		if(containerId.charAt(0)!="#"){containerId="#"+containerId;}
		if(!OLRString.IsNullOrEmpty(label)){jQuery(containerId).empty().append(OLRBasicSelect.CreateOption("",label));}
		else{jQuery(containerId).empty();}
		jQuery.each(array, function(i)
		{
			if(formatter!=null&&typeof(formatter)=="function"){jQuery(containerId).append(OLRBasicSelect.CreateOption(array[i],formatter(array[i])));}
			else{jQuery(containerId).append(OLRBasicSelect.CreateOption(array[i],array[i]));}
		});

		//jQuery(containerId).get(0).options[0].selected=true;
		//alert(jQuery(containerId).get(0));
		jQuery(containerId).get(0).selectedIndex=0;
	},
	CreateOption:	function(value,text){return jQuery("<option></option>").attr("value",value).append(text);},
	CurrencyFormatter:	function(number)
	{
		if(number==null){return null;}
		number = number.toString().replace(/\$|\,/g,"");
		if((number*1)==NaN){number="0";}
		var _sign = (number == Math.abs(number));
		number = Math.floor(number*100+0.50000000001);
		var _cents = number%100;
		number = Math.floor(number/100).toString();
		if(_cents<10){_cents = "0"+_cents;}
		for(var i=0;i<Math.floor((number.length-(1+i))/3);i++)
			number = number.substring(0,number.length-(4*i+3))+","+number.substring(number.length-(4*i+3));
		return (((_sign)?"":"-")+"$"+number);
	},
	BedroomFormatter:	function(number)
	{
		if(number==null){return null;}
		if(number==0){return "Studio";}
		if(number==1){return number+" Bedroom";}
		if(number>1&&number<4){return number+" Bedrooms";}
		return number+"+ Bedrooms";
	}
}

var OLRArray = OLRArray ? OLRArray :
{
	Contains: function(array,object)
	{
		if(array==null||object==null){return false;}
		else{for(i in array){if(array[i]==object){return true;}}return false;}
	}
}

var OLRCheckBox = OLRCheckBox ? OLRCheckBox :
{
    IsChecked: function(id){return ($("#"+id+":checked").val()!=null);},
    SetExclusivity: function(nspace)
    {
        if(OLRString.IsNullOrEmpty(nspace))return;
    }
}

function SetExclusiveSelect(checkBoxClass)
{
    if(OLRString.IsNullOrEmpty(checkBoxClass))return; //Invalid input
    $("input."+checkBoxClass).bind("click", function(e)
    {
		var current = $(this);
		$("input."+checkBoxClass).removeAttr("checked");   //uncheck everything
		current.attr("checked","checked");  //check selected
	});
}

function ForceToggle(sourceCheckBox, checkBoxClass)
{
    if(IsNullOrEmpty(sourceCheckBox)||IsNullOrEmpty(checkBoxClass))return;  //Invalid input
    $("#"+sourceCheckBox).bind("click",function(e)
    {
        if($("#"+sourceCheckBox+":checked").val()!=null){$("input."+checkBoxClass).attr("checked","checked");}
        else{$("input."+checkBoxClass).removeAttr("checked");}
    });    
}

var OLRData = OLRData ? OLRData : 
{
    Rents: [ 500,600,700,800,900,1000,1250,1500,1750,2000,2500,3000,3500,4000,4500,5000,6000,7000,8000,9000,10000,15000,20000,25000,30000 ],
    Prices:[ 100000,200000,300000,400000,500000,600000,700000,800000,900000,1000000,1250000,1500000,
            1750000,2000000,2500000,3000000,3500000,4000000,4500000,5000000,5500000,6000000,6500000,7000000,
            7500000,8000000,8500000,9000000,9500000,10000000,15000000,20000000,30000000,40000000,50000000,
            60000000,70000000,80000000,90000000,100000000 ],
	ApartmentBedrooms:[ 0,1,2,3,4 ]
}

function Pager(object,interval,previousButton,nextButton)
{
	var _interval = interval;
	var _pageIndex = 1;
	var _pageCount = Math.ceil(object.length/interval);
	
	var $contentArray = object;
	var $pButton = previousButton.hide();
	var $nButton = nextButton;
	$contentArray.slice(interval).hide()
            
	if(_interval >= $contentArray.length){$nButton.hide();}
            
	$pButton.click(function(e)
	{
		--_pageIndex;
		if(_pageIndex>1){$pButton.show();}
		else{$pButton.hide();}
		
		if(_pageCount != _pageIndex){$nButton.show();}
		else{$nButton.hide();}
		
		$contentArray.hide();
		var _start = _interval*(_pageIndex-1);
		$contentArray.slice(_start,_start+_interval).show();
	});
	$nButton.click(function(e)
	{
		++_pageIndex;
		if(_pageIndex>1){$pButton.show();}
		else{$pButton.hide();}
		
		if(_pageCount != _pageIndex){$nButton.show();}
		else{$nButton.hide();}
		
		$contentArray.hide();
		var _start = _interval*(_pageIndex-1);
		$contentArray.slice(_start,_start+_interval).show();
	});
}