/*=====================================================\
*	Author	: Renante D. Entera						   *
*	Email	: entlouren@yahoo.com                      *
*	Created	: March 16, 2008 (12:30AM GMT+8)           *
\=====================================================*/

var curPhotoNum = 4;
function addMorePhotos() {
	curPhotoNum++;

	var inputsBox = document.getElementById("photoInputs");
	if (inputsBox) {
		var newInput = document.createElement("span");
		newInput.innerHTML = "Select file: <input type='file' name='photo" + curPhotoNum + "'><input type='radio' name='primaryPhoto' value='" + curPhotoNum + "'>Set as primary<br>";
		inputsBox.appendChild(newInput);
	}
	if (curPhotoNum == 8) {
		var addMoreLink = document.getElementById("addMorePhotosLink");
		addMoreLink.disabled=true;
	}
	
	return(false);
}
						
function checkField(formName, fieldArray) {
	var strArray = fieldArray.split(",");
	
	for(i=0; i<strArray.length; i++) {
		obj = document.forms[formName].elements[strArray[i]];
		strMsg = strArray[i].toUpperCase();
		msg = strMsg+" is required!";
		msgInvalid = strMsg+" is not valid!";
		
		// >> monitor field and process its validation based from its name
		switch(strArray[i]) {
			case 'password2':
				obj2 = document.forms[formName].elements['password'];
				strMsg = 'Confirm Password';
				msg = strMsg+" does not match!";				
				
				if(!compElement(obj, obj2, msg)) return false;
				
				break;
			
			case 'email2':
				obj2 = document.forms[formName].elements['email'];
				strMsg = 'Confirm Email';
				msg = strMsg+" does not match!";
				
				if(!compElement(obj, obj2, msg)) return false;
				
			case 'email':
				if(!isEmpty(obj, msg)) {
					return false;
				}
				else {			
					msg = strMsg+" is not valid!";
					if(!isValidEmail(obj, msg)) return false;
				}
				
				break;
				
			case 'zip':
			case 'squareFeet':
			case 'securityDeposit':
				if(!isNumeric(obj, msg, msgInvalid)) {
					return false;
				}
				
				break;
				
			default:				
				if(!isEmpty(obj, msg)) {
					return false;
				}
			
		}
		// << monitor field and process its validation based from its name
	}
	
	return true;
}

function compElement(obj1, obj2, msg) {
	if (trim(obj1.value) != trim(obj2.value)) {
		alert(msg);
		obj.focus();
		obj.select();
		
		return false;
	}

	return true;	
}

function isNumeric(objField, message, invalid, allowNull) {
	var strValue = objField.value.replace(",","");		

	if(trim(strValue)=='') {
		if(allowNull)
			return true;
		else {
			alert(message);
			objField.select();
			objField.focus();			
			return false;				
		}
	}
	
	if(isNaN(strValue) || strValue.indexOf(".") != -1) {
		alert(invalid);
		objField.select();
		objField.focus();			
		return false;			
	}
	else {
		objField.value = strValue;
		return true;
	}
}

function isEmpty(obj, msg) {
	if (trim(obj.value) == '') {
		alert(msg);
		obj.focus();
		obj.select();
		
		return false;
	}

	return true;
}

function isValidEmail(obj, msg) {
	var email = obj.value;
	var regEx = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	var isValid = regEx.test(email);
	if (!isValid) {
		alert(msg);
		obj.focus();
		obj.select();
		
		return false;
	}

	return true;
}

function isValidDate(objfield, required, dbFormat) {
	dateStr = objfield.value;
	
	if (!required && (trim(dateStr)=='')) {
		return true;
	}
	
	if (required) {
		isEmpty(objfield, 'Date is required!');
	}

	
	// >> date format checking
	switch(dbFormat) {
		case 0: // yyyy/mm/dd
			var datePat = /^(\d{4})(\/)(\d{1,2})\2(\d{1,2})$/;
			
			parseMonth = 3;
			parseDay = 4;
			parseYear = 1;
		
			break;
			
		case 1: // yyyy-mm-dd
			var datePat = /^(\d{4})(\-)(\d{1,2})\2(\d{1,2})$/;
			
			parseMonth = 3;
			parseDay = 4;
			parseYear = 1;
			
			break;
			
		case 2: // mm/dd/yyyy
			var datePat = /^(\d{1,2})(\/)(\d{1,2})\2(\d{4})$/;
			
			parseMonth = 1;
			parseDay = 3;
			parseYear = 4;
			
			break;
			
		case 3: // mm-dd-yyyy
			var datePat = /^(\d{1,2})(\-)(\d{1,2})\2(\d{4})$/;
			
			parseMonth = 1;
			parseDay = 3;
			parseYear = 4;
			
			break;
			
		default:
	}
	// << date format checking
	
	var matchArray = dateStr.match(datePat); // is the format ok?
	
	if (matchArray == null) {		
		alert(dateStr + " Date is not in a valid format.")
		objfield.focus();		
		objfield.select();
		
		return false;
	}
	
	month = matchArray[parseMonth]; // parse date into variables
	day = matchArray[parseDay];
	year = matchArray[parseYear];
	
	//alert("Month = "+month+"; Day = "+day+"; Year = "+year);

	if (month < 1 || month > 12) { // check month range		
		alert("Month must be between 1 and 12.");
		objfield.focus();		
		objfield.select();
		
		return false;
	}
	if (day < 1 || day > 31) {
		alert("Day must be between 1 and 31.");
		objfield.focus();		
		objfield.select();
		
		return false;
	}
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		alert("Month "+month+" doesn't have 31 days!")
		objfield.focus();		
		objfield.select();
		
		return false;
	}
	if (month == 2) { // check for february 29th
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day>29 || (day==29 && !isleap)) {
			alert("February " + year + " doesn't have " + day + " days!");
			objfield.focus();		
			objfield.select();
			
			return false;
		}
	}
	return true;
}

function trim(inputString) {
	if (typeof inputString != "string") {
		return inputString;
	}
	
	var retValue = inputString;
	var ch = retValue.substring(0, 1);
		
	while (ch == " ") { 
		/* Check for spaces at the beginning of the string*/
		retValue = retValue.substring(1, retValue.length);
		ch = retValue.substring(0, 1);
	}	
	ch = retValue.substring(retValue.length-1, retValue.length);
	
	while (ch == " ") { 
		/* Check for spaces at the end of the string*/
		retValue = retValue.substring(0, retValue.length-1);
		ch = retValue.substring(retValue.length-1, retValue.length);
	}
	
	while (retValue.indexOf("  ") != -1) { 
		/* Note that there are two spaces in the string - look for multiple spaces within the string*/
		retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length);
	}
	
	return retValue;
}

// >> added by Nante 05.02.2008 [ajax script]
function createRequestObject() { 
	var req; 
	
	if(window.XMLHttpRequest){ 
		// Firefox, Safari, Opera... 
		req = new XMLHttpRequest(); 
	} else if(window.ActiveXObject) { 
		// Internet Explorer 5+ 
		req = new ActiveXObject("Microsoft.XMLHTTP"); 
	} else { 
		// There is an error creating the object, 
		// just as an old browser is being used. 
		alert('Problem creating the XMLHttpRequest object'); 
	} 
	
	return req; 	
} 

function handleDivTag(divtag) { 
//   var divtag; 
//  return divtag; 
} 

var divhandler = new handleDivTag(null); 		
var http = createRequestObject();	

function sendRequest(divId, httpFile, urlParam) { 
	var urlAddress = httpFile;
	
	if(urlParam)
		urlAddress = urlAddress + urlParam;
	
	//alert(urlAddress);
	// Open PHP script for requests 
	http.open('get', urlAddress); 
	http.onreadystatechange = handleResponse; 
	divhandler.divtag = divId;
	http.send(null); 
	
} 

function handleResponse() { 
	if(http.readyState == 4 && http.status == 200){ 		
		// Text returned FROM the PHP script 
		var response = http.responseText; 
		
		if(response) { 
		 // UPDATE ajaxTest content 
		 //alert(response);
		 document.getElementById(divhandler.divtag).innerHTML = response; 
		} 	
	}	
}
// << added by Nante 05.02.2008 [ajax script]
