// JavaScript Document

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function isEmail(email_address){
	var email = email_address;
	var expression = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	
	if(expression.test(email)){
		return true;
	}else{
		return false;
	}
}

function isPhone(phone_number){
	var phone = phone_number;
	var expression = /^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$/;
	if(expression.test(phone)){
		return true;
	}else{
		return false;
	}
}

function isUSZipCode(zip_code){
	var zipcode = zip_code;
	var expression = /(^\d{5}$)|(^\d{5}-\d{4}$)/;
	if(expression.test(zipcode)){
		return true;
	}else{
		return false;
	}
}

function setSelect(element, value){
	var DOM_Element = element;
	var target_value = value;	
	var options_length = DOM_Element.options.length;
	
	for(var i = 0; i < options_length; i++){
		if(DOM_Element.options[i].value == target_value){
			DOM_Element.selectedIndex = i;
			break;
		}
	}
}

function initializeImageGallery(){
	imgPrimary = document.getElementById("imgPrimary");
	imgPrimaryCaption = document.getElementById("large-image-caption");
	imgThumb_1 = document.getElementById("thumbnail_1");
	imgThumb_2 = document.getElementById("thumbnail_2");
	imgThumb_3 = document.getElementById("thumbnail_3");
	imgIndex = -1;
	
	if(images[0]){
	imgPrimary.src = images[0][0];
	imgPrimary.alt = images[0][3];
	imgPrimaryCaption.innerHTML = images[0][3];
	}
	if(images[0]){
	imgThumb_1.src = images[0][0];
	imgThumb_1.alt = images[0][3];
	imgIndex = 0;
	}
	if(images[1]){
	imgThumb_2.src = images[1][0];
	imgThumb_2.alt = images[1][3];
	}
	if(images[2]){
	imgThumb_3.src = images[2][0];
	imgThumb_3.alt = images[2][3];
	}
}

function swapPrimaryImage(thumb_source, thumb_alt){
	if(thumb_source.indexOf("no_listing_thumb.png") == -1){
		imgPrimary = document.getElementById("imgPrimary");
		imgPrimaryCaption = document.getElementById("large-image-caption");
		imgPrimary.src = thumb_source;
		imgPrimary.alt = thumb_alt;
		imgPrimaryCaption.innerHTML = thumb_alt;
	}
}

function rotateImageGalleryForward(){
	var imgThumb_1 = document.getElementById("thumbnail_1");
	var imgThumb_2 = document.getElementById("thumbnail_2");
	var imgThumb_3 = document.getElementById("thumbnail_3");

	if(imgIndex < images.length - 3){
		imgIndex++;	
	}
	
	if(imgIndex + 2 < images.length){
		if(images[imgIndex]){	
			imgThumb_1.src = images[imgIndex][0];
			imgThumb_1.alt = images[imgIndex][3];
		}else{
			imgThumb_1.src = "/images/no_listing_thumb.png";
			imgThumb_1.alt = "Image Undefined.";
		}
		if(images[imgIndex + 1]){
			imgThumb_2.src = images[imgIndex + 1][0];
			imgThumb_2.alt = images[imgIndex + 1][3];
		}else{
			imgThumb_2.src = "/images/no_listing_thumb.png";
			imgThumb_2.alt = "Image Undefined.";
		}
		if(images[imgIndex + 2]){
			imgThumb_3.src = images[imgIndex + 2][0];
			imgThumb_3.alt = images[imgIndex + 2][3];
		}else{
			imgThumb_3.src = "/images/no_listing_thumb.png";
			imgThumb_3.alt = "Image Undefined.";
		}
	}		
}

function rotateImageGalleryBackwards(){
	var imgThumb_1 = document.getElementById("thumbnail_1");
	var imgThumb_2 = document.getElementById("thumbnail_2");
	var imgThumb_3 = document.getElementById("thumbnail_3");
	
	if(imgIndex > 0){
		imgIndex--;	
	}
	
	if(imgIndex >= 0){
		if(images[imgIndex]){	
			imgThumb_1.src = images[imgIndex][0];
			imgThumb_1.alt = images[imgIndex][3];
		}else{
			imgThumb_1.src = "/images/no_listing_thumb.png";
			imgThumb_1.alt = "Image Undefined.";
		}
		if(images[imgIndex + 1]){
			imgThumb_2.src = images[imgIndex + 1][0];
			imgThumb_2.alt = images[imgIndex + 1][3];
		}else{
			imgThumb_2.src = "/images/no_listing_thumb.png";
			imgThumb_2.alt = "Image Undefined.";
		}
		if(images[imgIndex + 2]){
			imgThumb_3.src = images[imgIndex + 2][0];
			imgThumb_3.alt = images[imgIndex + 2][3];
		}else{
			imgThumb_3.src = "/images/no_listing_thumb.png";
			imgThumb_3.alt = "Image Undefined.";
		}
	}		
}

String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}

String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}

String.prototype.trim = function() {
	return this.ltrim().rtrim();
}

function rmObj(myObj){
	if(myObj){
		if(myObj.hasChildNodes()){
			for(var i = 0;i < myObj.childNodes.length;i++){
				rmObj(myObj.childNodes[i]);
			}
		}
		myObj.parentNode.removeChild(myObj);
	}
}

function checkDate(myDate){
	if(mouseDown == true){
		continueCheck = true;
		moveDown = false;
		moveUp = false;
		origFocusDiv = focusDiv;
	
		while(continueCheck){
			if(focusDiv.previousSibling){
				focusDiv = focusDiv.previousSibling;
				if(focusDiv.getElementsByTagName && focusDiv.getElementsByTagName("P")[0].innerHTML.trim() == ""){
					continueCheck = false;
				}
				if(myDate == focusDiv){
					moveUp = true;
					continueCheck = false;
				}
			}
			else{
				continueCheck = false;	
			}
		}
		
		focusDiv = origFocusDiv;
		
		if(!moveUp){
			continueCheck = true;
			while(continueCheck){
				if(focusDiv.nextSibling){
					focusDiv = focusDiv.nextSibling;
					if(focusDiv.getElementsByTagName && focusDiv.getElementsByTagName("P")[0].innerHTML.trim() == ""){
						continueCheck = false;
					}
					if(myDate == focusDiv){
						moveDown = true;
						continueCheck = false;
					}
				}
				else{
					continueCheck = false;	
				}
			}			
		}
		
		focusDiv = origFocusDiv;

		if(moveDown){
			while(focusDiv != myDate && mouseDown){
				focusDiv = focusDiv.nextSibling;
				if(focusDiv.getElementsByTagName && focusDiv.getElementsByTagName("P")[0].innerHTML.trim() == ""){
					mouseDown = false;
				}
				else if(focusDiv.getElementsByTagName && focusDiv.getElementsByTagName("P")[0].innerHTML.trim() != ""){
					focusDiv.className = "availability_calendar_date_on";
					focusDiv.getElementsByTagName("INPUT")[0].value = focusDiv.title;
				}
			}
		}
		else if(moveUp){
			while(focusDiv != myDate && mouseDown){
				focusDiv = focusDiv.previousSibling;
				if(focusDiv.getElementsByTagName && focusDiv.getElementsByTagName("P")[0].innerHTML.trim() == ""){
					mouseDown = false;
				}
				else if(focusDiv.getElementsByTagName && focusDiv.getElementsByTagName("P")[0].innerHTML.trim() != ""){
					focusDiv.className = "availability_calendar_date_on";
					focusDiv.getElementsByTagName("INPUT")[0].value = focusDiv.title;
				}
			}			
		}
	}
}

function clickDate(myDate){
	if(myDate.className != "availability_calendar_date_on"){	
		myDate.className = "availability_calendar_date_on";
		myDate.getElementsByTagName("INPUT")[0].value = myDate.title;
		focusDiv = myDate;
	}
	else{
		myDate.className = "availability_calendar_date_off";
		myDate.getElementsByTagName("INPUT")[0].value = "";
		window.setTimeout(function() {mouseDown = false;}, 0);
	}
}

function limitText(limitField, limitCount, limitNum) {
	if (limitField.value.length > limitNum) {
		limitField.value = limitField.value.substring(0, limitNum);
	} else {
		if(limitCount != ""){
			limitCount.value = limitNum - limitField.value.length;
		}
	}
}

function moveArrayItem(myArray, val_init, val_target){
	var init_pos = -1;
	var target_pos = -1;
	
	for(var i=0;i<myArray.length;i++){
		if(myArray[i] == val_init){
			init_pos = i;
			i = myArray.length;
		}
	}
	for(var i=0;i<myArray.length;i++){
		if(myArray[i] == val_target){
			target_pos = i;
			i = myArray.length;
		}
	}

	if(init_pos == -1 || target_pos == -1 || init_pos == target_pos){
		return myArray;
	}
	
	var targetArray = Array();
	targetArray[0] = val_init;
	
	myArray.splice(init_pos,1);

	for(var i=0;i<myArray.length;i++){
		if(myArray[i] == val_target){
			target_pos = i;
			i = myArray.length;
		}
	}

	if(target_pos < init_pos){
		myArray.splice(target_pos,0,targetArray);
	}
	else if(target_pos >= init_pos){
		myArray.splice(target_pos + 1,0,targetArray);
	}
	
	return myArray;
}


function limitDomTextLength(element, display, length){
	
	var chars = element.value.length;
	
	var remaining = length - chars;
	
	display.innerHTML = remaining;
	
	if(remaining <= 0){
		display.innerHTML = "0";
		element.value = element.value.substr(0, length);
	}
}