// JavaScript Document
var xmlhttp;
var fElements = Array();
var thisFormElements = Array();
var validationErrors = Array();

var validationTypes = Array();
validationTypes['numeric'] = "0123456789";
validationTypes['alphanumeric'] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.,&%$@#()*^?=-+{}[]<> ";
validationTypes['dob'] = "0123456789/";
//validationTypes['FEDID'] = "0123456789-"

function disableText(obj){
	//alert("landlord_co_name is disabled " + obj.checked);
	try{
		if (obj.value==2){
			document.getElementById("landlord_co_name").disabled = true;			
			document.getElementById("rentmortgage").disabled = true;
			document.getElementById("landlord_fname").disabled = true;		
			document.getElementById("landlord_lname").disabled = true;		
			document.getElementById("landlord_phone1").disabled = true;
			document.getElementById("landlord_phone2").disabled = true;
			document.getElementById("landlord_phone3").disabled = true;
			document.getElementById("phone_ext").disabled = true;		
			document.getElementById("lease_date").disabled = true;
					
			document.getElementById("lease_term").disabled = true;
			document.getElementById("rent_current1").disabled = true;
			document.getElementById("rent_current2").disabled = true;
			
		}
		else{
			document.getElementById("landlord_co_name").disabled = false;			
			document.getElementById("rentmortgage").disabled = false;
			document.getElementById("landlord_fname").disabled = false;		
			document.getElementById("landlord_lname").disabled = false;		
			document.getElementById("landlord_phone1").disabled = false;
			document.getElementById("landlord_phone2").disabled = false;
			document.getElementById("landlord_phone3").disabled = false;
			document.getElementById("phone_ext").disabled = false;		
			document.getElementById("lease_date").disabled = false;
					
			document.getElementById("lease_term").disabled = false;	
			document.getElementById("rent_current1").disabled = false;
			document.getElementById("rent_current2").disabled = false;			
		}
	}
	catch(e){alert(e);} 
}

function loadXMLDoc(url) {
	xmlhttp=null;
	// code for Mozilla, etc.
	
	if (window.XMLHttpRequest){
  		xmlhttp=new XMLHttpRequest()
  	}
	// code for IE
	else if (window.ActiveXObject){
  		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
  	}
	if (xmlhttp!=null){
  		xmlhttp.onreadystatechange=formXMLInit;
  		xmlhttp.open("GET",url+'?r='+Math.random(),true);
  		xmlhttp.send(null);
  	}
	else{
  		alert("Your browser does not support XMLHTTP.")
  	}
}

function checkReadyState(obj){
	if(obj.readyState == 4){
		if(obj.status == 200){
    		return true;
    	}
    	else {
    		alert("Problem retrieving XML data");
    	}
  	}
}

function formXMLInit(){
	if(checkReadyState(xmlhttp)){
		/*
  		var response = xmlhttp.responseXML.documentElement;
  		x = response.getElementsByTagName("field");
  		*/
  		var x;
		var response;
		if (window.XMLHttpRequest){												
			if (window.ActiveXObject){			
				var xmlDocument = new ActiveXObject("Microsoft.XMLDOM");  		
				xmlDocument.loadXML(xmlhttp.responseText);
		  		x = xmlDocument.getElementsByTagName("field");
	  		}
	  		else{
	  			response = xmlhttp.responseXML;				
				x = response.getElementsByTagName("field");
	  		}	  					
	  	} else {
				var xmlDocument = new ActiveXObject("Microsoft.XMLDOM");  		
				xmlDocument.loadXML(xmlhttp.responseText);
		  		x = xmlDocument.getElementsByTagName("field");	  	
	  	} 
	  	
  		for (i=0;i<x.length;i++){
			var obj = new Object;
			for(j=0;j<x[i].childNodes.length;j++){
				var thisNode = x[i].childNodes[j];
				if(thisNode.tagName == 'id'){
					obj.id = thisNode.firstChild.data;
				}
				if(thisNode.tagName == 'min'){
					obj.minLen = thisNode.firstChild.data;	
				}
				if(thisNode.tagName == 'max'){
					obj.maxLen = thisNode.firstChild.data;	
				}
				if(thisNode.tagName == 'validationType'){
					obj.validationType = thisNode.firstChild.data;	
				}
				if(thisNode.tagName == 'group'){
					obj.groupSize = thisNode.firstChild.data;
				}
				if(thisNode.tagName == 'groupName'){
					obj.groupName = thisNode.firstChild.data;
				}
				if(thisNode.tagName == 'lastInGroup'){
					obj.lastInGroup = thisNode.firstChild.data;
				}
				if(thisNode.tagName == 'special'){
					obj.special = thisNode.firstChild.data;
				}
				if(thisNode.tagName == 'dateFormat'){
					obj.dateFormat = thisNode.firstChild.data;
				}
				if(thisNode.tagName == 'depend'){
					obj.depend = thisNode.firstChild.data;
				}
				if(thisNode.tagName == 'dependValue'){
					obj.dependValue = thisNode.firstChild.data.split(',');
				}
				if(thisNode.tagName == 'optional'){
					obj.optional = thisNode.firstChild.data;
				}
				if(thisNode.tagName == 'autoTab'){
					obj.autoTab = thisNode.firstChild.data;
				}
				if(thisNode.tagName == 'error'){
					obj.error = thisNode.firstChild.data;
				}
				if(thisNode.tagName == 'greaterthan'){
					obj.greaterthan = thisNode.firstChild.data;
				}											
				if(thisNode.tagName == 'earlierthan'){
					obj.earlierthan = thisNode.firstChild.data;
				}											
			}
			fElements.push(obj);
		}
		formInit();
	}
}

function findElement(id){
	for(i=0;i<fElements.length;i++){
		if(fElements[i].id == id){
			return i;
		}
	}
	return -1;
}

function formInit(){
	var idName;
	var errorIdName;
	var errorMessage;
	var pos;
	var thisElement;
		
	var appForm = document.getElementById("app");
	if (appForm == null){	   
	    return;
	}
	//alert("Number of element in form : " + appForm.elements.length);
	for(n=0; n<appForm.elements.length; n++){
		thisElement = appForm.elements[n];
		idName = thisElement.id;
		if((thisElement.type == 'text' || thisElement.type == 'select-one' || thisElement.type == 'textarea' || thisElement.type == 'password') && idName != ''){
			errorIdName = idName + 'Error';
			pos = findElement(idName);
			thisElement.onfocus = hideError;
			if(pos != -1){
				errorMessage = fElements[pos].error;
				if(fElements[pos].validationType){
					thisElement.validationType = fElements[pos].validationType;
					//thisElement.onkeyup = stripCharsHandler;
					thisElement.onchange = stripCharsHandler;
				}
				if(fElements[pos].optional){
					thisElement.optional = fElements[pos].optional;
				}
				if(fElements[pos].depend){
					thisElement.depend = fElements[pos].depend;
					thisElement.dependValue = fElements[pos].dependValue;
				}
				if(fElements[pos].groupSize){
					thisElement.groupSize = fElements[pos].groupSize;
					thisElement.lastInGroup = fElements[pos].lastInGroup;
					thisElement.groupName = fElements[pos].groupName;
				}
				if(fElements[pos].maxLen){
					thisElement.maxLen = fElements[pos].maxLen;
				}
				if(fElements[pos].minLen){
					thisElement.minLen = fElements[pos].minLen;
					thisElement.onblur = minLenHandler;
				}
				if(fElements[pos].special){
					thisElement.special = fElements[pos].special;
					if(fElements[pos].special == 'currency'){
						thisElement.onblur = formatCurrencyHandler;
					}
					else if(fElements[pos].special == 'url'){
						thisElement.onblur = urlCheckHandler;
					}
					else if(fElements[pos].special == 'email'){
						thisElement.onblur = emailCheckHandler;
					}
					else if(fElements[pos].special == 'fedtax'){
						thisElement.onblur = FEDIDFormatCheckHandler;
					}
					else if(fElements[pos].special == 'password'){
						thisElement.onblur = PasswordFormatCheckHandler;
					}
					else if(fElements[pos].special == 'confirmPassword'){
						thisElement.onblur = ConfirmPasswordFormatCheckHandler;
					}					
					else if(fElements[pos].special == 'date'){
						thisElement.dateFormat = fElements[pos].dateFormat;
						if(fElements[pos].greaterthan){
							thisElement.greaterthan = fElements[pos].greaterthan;
						}						
						if(fElements[pos].earlierthan){
							thisElement.earlierthan = fElements[pos].earlierthan;
						}												
						thisElement.onblur = dateFormatHandler;
					}
				}
				if(fElements[pos].autoTab){
					thisElement.autoTab = fElements[pos].autoTab;
					thisElement.onkeyup = autoTabHandler;
				}
				thisFormElements.push(thisElement);
			}
			//else{
				//errorMessage = 'undefined';
			//}
			if(!document.getElementById(errorIdName) && errorMessage){
				createErrorDiv(idName, errorIdName, errorMessage);
				thisElement.errorIdName = errorIdName;
			}
			
		}
		else if((thisElement.type == 'checkbox' || thisElement.type == 'radio') && idName != ''){
			errorIdName = idName + 'Error';
			pos = findElement(idName);
			if(pos != -1){
				errorMessage = fElements[pos].error;
				if(fElements[pos].groupSize){
					thisElement.groupSize = fElements[pos].groupSize;
					thisElement.lastInGroup = fElements[pos].lastInGroup;
					thisElement.groupName = fElements[pos].groupName;
				}
				if(thisElement.type == 'checkbox'){
					thisElement.onblur = validateCheckboxesHandler;
				}
				else if(thisElement.type == 'radio'){
					thisElement.onblur = validateRadioHandler;
				}
				thisFormElements.push(thisElement);
			}
			if(!document.getElementById(errorIdName)){
				createErrorDiv(idName, errorIdName, errorMessage);
				thisElement.errorIdName = errorIdName;
			}
		}
	}
	//ToDo Need to define the method somewhere , javascript error on home page
	//if(document.getElementById('products')){
	//initProducts();
		
	//}
}

function hideError() {
	if (this.maxLen != null) maxLen;
	var bClearErrorMessages = false;
	for (i = 0; i < validationErrors.length; i++) {
		if ((this.id + 'Error') == validationErrors[i]) {	
			bClearErrorMessages = true;
		}
	}
	if (bClearErrorMessages) {
		while (validationErrors.length > 0) {
			var thisError = validationErrors.pop();
			var thisErrorEl = document.getElementById(thisError);
			thisErrorEl.style.display = 'none';
		}
	}	
}

function showError(e, f){

	var errorEl = document.getElementById(e);
	
	var el = document.getElementById(e.substring(0, e.indexOf('Error')));
	//Vumaster ignore validate on js
	//alert("id: [" + el.id + "] ignore: " + el.v_ignore);
	if (el.v_ignore == 'yes'){
		errorEl.style.display = 'none';
		return;
	}
	
	if(el.depend){
		if(compareDependency(el.dependValue, getDependencyValue(el.depend))) {
		//if(el.dependValue == getDependencyValue(el.depend)){
			errorEl.style.display = (f) ? 'none' : 'block';
		} else {
			errorEl.style.display = 'none';
		}
	} else {
		errorEl.style.display = (f) ? 'none' : 'block';
	}
	if (errorEl.style.display == 'block') {
		validationErrors.push(e);	
	}
}

function autoTabHandler(){
	if(this.validationType){
		stripChars(this.value, this.id, this.validationType);	
	}
	if (caretPos(this) == this.maxLen)
	{
		autoTab(this.value, this.maxLen, this.autoTab);
	}
}

function autoTab(v, m, a){
	if(v.length == m)
	{
		document.getElementById(a).focus();
	}
}

// Returns the caret position in a textbox, 
// starting from 0, counting left to right.
function caretPos(el)
{
	var pos = -1;
	var i=el.value.length;
	
	// Internet Explorer
	if (el.createTextRange)
 	{
		theCaret = document.selection.createRange().duplicate();
		while ( theCaret.parentElement() == el && theCaret.move("character",1) == 1 ) 
		{	
			--i;
		}
		pos = i;
	}
	
    // Firefox
    else if (el.selectionStart >= 0)
    {
    	pos = el.selectionStart;
    }	
    return pos;
}

function stripCharsHandler(){
	stripChars(this.value, this.id, this.validationType);
}
function stripChars(v, id, t){
	if(validationTypes[t]){
		var chars = validationTypes[t];
	}
	else{
		return v;
	}
	var sourceStr = v;
	
	var stripped = "";
	for (var i = 0; i < sourceStr.length; i++){
		if (chars.indexOf(sourceStr.charAt(i)) != -1){
			//stripped += chars.indexOf(sourceStr.charAt(i));
			stripped += sourceStr.charAt(i);
		}
	}
	if (v != stripped) 
	{
		document.getElementById(id).value = stripped;
	}
}

function formatCurrencyHandler(){  	
	minLen(this.value, this.minLen, this.groupSize, this.groupName, this.lastInGroup, this.errorIdName);
	formatCurrency(this.value, this.id, this.maxLen);
}
function formatCurrency(v, id, m) {
	
	var obj = document.getElementById(id);
	var x = v;
	x = x.toString();
	x = x.replace(/,/g, "");
	iLen = x.length;
	pos = x.indexOf(".");
	if (pos > -1){
		iLen = pos;
	}
	var temp = "";
	temp = x.substring(0, iLen);
	for (var i = 0; i < Math.floor((temp.length-(1+i))/3); i++){
		temp = temp.substring(0,temp.length-(4*i+3))+','+temp.substring(temp.length-(4*i+3));
	}
	if(temp.length > m){
		obj.maxLength = temp.length;
	}
	obj.value = temp;
	    
}

function maxLen(){
	if(this.validationType == 'numeric'){
		stripChars(this.value, this.id, this.validationType);
	}
	this.maxLength = this.maxLen;
}

function minLenHandler(){
	minLen(this.value, this.minLen, this.groupSize, this.groupName, this.lastInGroup, this.errorIdName, this.optional);
}
function minLen(v, m, s, n, l, e, optional){
	var flag;
	//alert("Min len perform " + "|" + v + "|" + m + "|" + s + "|" + n + "|" + l + "|" + e + "|" + optional);
	if (v!=null)
		v = v.replace(/^\s+|\s+$/g,"");
	if(optional == 'yes' && v.length == 0 && !l){
		showError(e, true);
		return true;
	}
	
	if(v.length < m){
		flag = false;
	}
	else {
		flag = true;
	}
	
	if(!s){
		showError(e, flag);
		return flag;
	}
	else if(l == 'yes'){
		return validateGroup(n, s, optional);	
	}
}

function minLen2(v, m){
	if(v.length < m){
		return false;
	}
	else{
		return true;
	}
}

function validateGroup (name, s, optional){
	var flag = true;
	//alert("validateGroup: " + name ); 
	var e = document.getElementById(name+1).errorIdName;
	if(optional == 'yes'){
		var optionalFlag = false;
		for(i=1;i<=s;i++){
			obj = document.getElementById(name+i);
			if(obj.value.length){
				optionalFlag = true;
			}
		}
		if(!optionalFlag){
			showError(e, true);
			return true;
		}
	}
	for(i=1;i<=s;i++){
		obj = document.getElementById(name+i);
		if(obj.minLen){
			if(flag){
				flag = minLen2(obj.value, obj.minLen);
			}
		}
	}
	showError(e, flag);
	return flag;
}

function validateCheckboxesHandler(){
	validateCheckboxes(this.groupName, this.groupSize, this.lastInGroup, this.checked, this.errorIdName);
}
function validateCheckboxes(n, s, l, c, e){
	if(!l){
		showError(e, c);
		var flag = c;
	}
	else{ // if(l == 'yes'){
		var flag = false;
		for(i=1;i<=s;i++){
			obj = document.getElementById(n+i);
			if(!flag){
				flag = obj.checked;
			}
		}
		var er = document.getElementById(n+1).errorIdName;
		showError(er, flag);
	}
	return flag;
}

function validateRadioHandler(){
	validateRadio(this.groupName, this.groupSize, this.lastInGroup);
}
function validateRadio(n, s, l){
	//alert("valid radio: " + n);
	//if(l == 'yes'){
		var flag = false;
		for(i=1;i<=s;i++){
			obj = document.getElementById(n+i);
			if(!flag){
				flag = obj.checked;
			}
		}
		var er = document.getElementById(n+1).errorIdName;
		showError(er, flag);
		return flag;
	//}
}

function urlCheckHandler(){
	minLen(this.value, this.minLen, this.groupSize, this.groupName, this.lastInGroup, this.errorIdName, this.optional);
	urlCheck(this, this.value, this.errorIdName, this.optional);
}

function urlCheck(f, v, e, optional){
	var temp;
	if(optional == 'yes' && v.length == 0){
		showError(e, true);
		return true;
	}
	temp = v.replace(/^(https|http):\/\//, '');
	f.value = temp;	
	var urlReg = /^[a-zA-Z]{3}\.\w{2,}\.+[a-zA-Z.]{2,}$/;
	if(urlReg.test(temp)){
		showError(e, true);
		return true;
	}
	else{
		showError(e, false);
		return false;
	}
}

function emailCheckHandler(){
	minLen(this.value, this.minLen, this.groupSize, this.groupName, this.lastInGroup, this.errorIdName, this.optional);
	emailCheck(this.value, this.errorIdName, this.optional);
}

function FEDIDFormatCheckHandler(){
	minLen(this.value, this.minLen, this.groupSize, this.groupName, this.lastInGroup, this.errorIdName, this.optional);
	FEDIDCheck(this.value, this.errorIdName, this.optional);
}

function PasswordFormatCheckHandler(){
	minLen(this.value, this.minLen, this.groupSize, this.groupName, this.lastInGroup, this.errorIdName, this.optional);
	PasswordCheck(this.value, this.errorIdName, this.optional);
}

function ConfirmPasswordFormatCheckHandler(){
	minLen(this.value, this.minLen, this.groupSize, this.groupName, this.lastInGroup, this.errorIdName, this.optional);
	ConfirmPasswordCheck(this.value, this.errorIdName, this.optional);
}


function FEDIDCheck(v, e, optional) {
	if(optional == 'yes' && v.length == 0){
		showError(e, true);
		return true;
	}
	var FEDRe =/^[0-9]{2}-[0-9]{6}/;
	if(FEDRe.test(v)){
		showError(e, true);
		return true;
	}
	else{
		showError(e, false);
		return false;
	}
}

function PasswordCheck(v, e, optional) {
	if(optional == 'yes' && v.length == 0){
		showError(e, true);
		return true;
	}		
	v = v.toString();
	if (		(v.length < 8)
			||	(v.search(/[a-z]/)==-1)
  			|| 	(v.search(/[A-Z]/)==-1)
  			|| 	(v.search(/[0-9]/)==-1)	) {
		showError(e, false);
		return false;		
	} else {
		showError(e, true);
		return true;
	}
}

function ConfirmPasswordCheck(v, e, optional) {
	if(optional == 'yes' && v.length == 0){
		showError(e, true);
		return true;
	}		
	v = v.toString()
	var new_password_text = document.getElementById("new_password").value.toString();
	if (new_password_text != v) {	
		showError(e, false);
		return false;
	} else {	
		showError(e, true);
		return true;
	}	
}

function emailCheck(v, e, optional) {
	if(optional == 'yes' && v.length == 0){
		showError(e, true);
		return true;
	}
	var emailRe = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*\.(\w{2}|(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum))$/;
	if(emailRe.test(v)){
		showError(e, true);
		return true;
	}
	else{
		showError(e, false);
		return false;
	}
}

function dateFormatHandler(){
	minLen(this.value, this.minLen, this.groupSize, this.groupName, this.lastInGroup, this.errorIdName, this.optional);
	dateFormat(this.value, this.dateFormat, this.errorIdName, this.optional, this.greaterthan, this.earlierthan, 0);	
}
function dateFormat(v, f, e, optional,opGreater, opEarlier, age){
	if(optional == 'yes' && v.length == 0){
		showError(e, true);
		return true;
	}
	var dateRe;
	if(f == 'mm/dd/yyyy'){
		dateRe = /\b\d{2}[\/]\d{2}[\/]\d{4}\b/;
	}
	else if(f == 'mm/yyyy'){
		dateRe = /\b\d{2}[\/]\d{4}\b/;
	}
	var flag = false;
	if(dateRe.test(v)){
		flag = validateDate(v, f);		
		if(flag){
			if(opGreater != null){							
				flag = requireDateGreater(v,f,opGreater,age);				
			} else if (opEarlier != null){
				flag = requireDateEarlier(v,f,opEarlier,age);				
			}
		}
	}
	showError(e, flag);
	return flag;
}

function validateDate(v, f){
	var m_arrDate = v.split("/");
	var m_MONTH = parseFloat(m_arrDate[0])-1;
	if(f == 'mm/dd/yyyy'){
		var m_DAY = parseFloat(m_arrDate[1]);
		var m_YEAR = parseFloat(m_arrDate[2]);
	}
	else if(f == 'mm/yyyy'){
		var m_DAY = 1;
		var m_YEAR = parseFloat(m_arrDate[1]);
	}
	var testDate = new Date(m_YEAR, m_MONTH, m_DAY);	
		
	if(testDate.getMonth() == m_MONTH){
		return true;
	} 
	else{
		return false;
	}
}
function requireDateGreater(v,f,op,age){

	var now = new Date();
	var c_day = now.getDate();
	var c_month = now.getMonth();
	var c_year = fourdigits(now.getYear());	
	if(age){
		//c_year = c_year - parseInt(age);
	}
	var m_arrDate = v.split("/");
	var m_MONTH = parseInt(m_arrDate[0])-1;
	var m_DAY = 1;
	var m_YEAR = 1;
	if(f == 'mm/dd/yyyy'){
		m_DAY = parseInt(m_arrDate[1]);
		m_YEAR = parseInt(m_arrDate[2]);
	}
	else if(f == 'mm/yyyy'){
		m_DAY = 1;		
		m_YEAR = parseInt(m_arrDate[1]);
		c_day = 1;
	}		
	/*var vdate = new Date(m_YEAR, m_MONTH, m_DAY);
	var today = new Date(c_year,c_month, c_day);
	//alert("RES:"+today+" == "+vdate);
	var flag = false; 				
	if(op == 'yes' && vdate > today){		
		flag = true;
	}
	if(op == 'no' && vdate <= today){		
		flag = true;
	}*/	
	var flag = false; 				
	if(compareDate(m_YEAR,m_MONTH,m_DAY,c_year, c_month, c_day) > 0){
		if(op == 'yes'){
			flag = true;
		}
	}
	else{
		if(op == 'no'){		
			flag = true;
		}	
	}	
	return flag;		
}

function requireDateEarlier(v,f,op,age){

	var now = new Date();
	var c_day = now.getDate();
	var c_month = now.getMonth();
	var c_year = fourdigits(now.getYear());	
	if(age){
		//c_year = c_year - parseInt(age);
	}
	var m_arrDate = v.split("/");
	var m_MONTH = parseInt(m_arrDate[0])-1;
	var m_DAY = 1;
	var m_YEAR = 1;
	if(f == 'mm/dd/yyyy'){
		m_DAY = parseInt(m_arrDate[1]);
		m_YEAR = parseInt(m_arrDate[2]);
	}
	else if(f == 'mm/yyyy'){
		m_DAY = 1;		
		m_YEAR = parseInt(m_arrDate[1]);
		c_day = 1;
	}					
	/*var vdate = new Date(m_YEAR, m_MONTH, m_DAY);
	var today = new Date(c_year,c_month, c_day);
	//alert("RES:"+today+" == "+vdate);
	var flag = false; 			
	if(op == 'yes' && vdate > today){			
		flag = true;
	}
	if(op == 'no' && vdate <= today){		
		flag = true;
	}*/	
	var flag = false; 				
	if(compareDate(m_YEAR,m_MONTH,m_DAY,c_year, c_month, c_day) < 0){
		if(op == 'yes'){
			flag = true;
		}
	}
	else{
		if(op == 'no'){		
			flag = true;
		}	
	}
	return flag;		
}
function fourdigits(number)	{
      return (number < 1000) ? number + 1900 : number;
}
function compareDate(m_YEAR,m_MONTH,m_DAY,c_year, c_month, c_day)
{
	if(m_YEAR>c_year) return 1;
	if(m_YEAR==c_year){
		if(m_MONTH>c_month) return 1;
		if(m_MONTH==c_month){
			if(m_DAY>c_day) return 1;
			if(m_DAY==c_day) return 0;
		}
	}
	return -1;
}
function getDependencyValue(id){
	var obj = document.getElementById(id);
	var group;
	if(obj.groupName){
		group = obj.groupName;
	}
	else{
		group = id;
	}
	if(obj.type == 'radio'){
		var radios = document.getElementsByName(group);
		for(var i=0;i<radios.length;i++){
			if(radios[i].checked)
				return radios[i].value;
		}
		return 'none'
	}
	else {
		return document.getElementById(id).value;	
	}
}

function compareDependency(dv, v){
	for(x=0;x<dv.length;x++){
		if(dv[x] == v){
			return true;
		}
	}
	return false;
}

function checkDependency(dv, g){
	if(g){
		if(compareDependency(dv, getDependencyValue(g)))
		//if(dv == getDependencyValue(g))
			return false;
		else
			return true;
	}
	else{
		return false;
	}
}

function validateForm(){
	var f;
	var flag = true;
	//alert("Start valid..." + thisFormElements.length);
	var i =0;
	try{
	for(i=0;i<thisFormElements.length;i++){
		f = document.getElementById(thisFormElements[i].id);
		if((f.type == 'text' || f.type == 'select-one' || f.type == 'textarea' || f.type == 'password')){
			if(f.validationType){
				stripChars(f.value, f.id, f.validationType);
			}
			if(f.minLen){
				if(!minLen(f.value, f.minLen, f.groupSize, f.groupName, f.lastInGroup, f.errorIdName, f.optional) && (f.lastInGroup == 'yes' || !f.groupName)){
					if(!checkDependency(f.dependValue, f.depend)){
						flag = false;
					}
				}
			}
			if(f.special){
				if(f.special == 'currency'){
					formatCurrency(f.value, f.id, f.maxLen);
				}
				else if(f.special == 'url'){
					if(!urlCheck(f, f.value, f.errorIdName, f.optional)){
						if(!checkDependency(f.dependValue, f.depend)){
							flag = false;
						}
					}
				}
				else if(f.special == 'email'){
					if(!emailCheck(f.value, f.errorIdName, f.optional)){
						if(!checkDependency(f.dependValue, f.depend)){
							flag = false;
						}
					}
				}
			}
		}
		else if(f.type == 'checkbox'){
			if(!validateCheckboxes(f.groupName, f.groupSize, f.lastInGroup, f.checked, f.errorIdName) && (f.lastInGroup == 'yes' || !f.groupName)){
				if(!checkDependency(f.dependValue, f.depend)){
					flag = false;
				}
			}
		}
		else if(f.type == 'radio'){
			if(f.lastInGroup == 'yes'){
				if(!validateRadio(f.groupName, f.groupSize, f.lastInGroup)){
					if(!checkDependency(f.dependValue, f.depend)){
						flag = false;
					}
				}
			}
		}
	}
	}
	catch (e){
	    alert("Validation Error : " + e + "\r\n" + thisFormElements[i].id);
	}	
	//alert("Validate form .." + flag);
	return flag;
}

function validateForm(choice){
	
	var f;
	var flag = true;
	var thisEl;
	var choiceFlag;
	var choiceArray = new Array();
	//alert("Start account stuff valid..." + thisFormElements.length);
	var errorIdName;
	var errorMessage='<div class=error>Amount should be greater than zero</div>';
	var mperrorMessage='<div class=error>Mortgage Payment cannot be null and should be greater than zero</div>';
	var errorMessageYrs = '<div class=error>Duration should be at least one month</div>';
	var errorMessageimg = '<img height=7 src="/AMIPortal/framework/skins/amigreen/images/bizoodle/images/error_popup_arrow.gif" width=16></div>';
	var msg;
	try{
	for(var i=0;i<thisFormElements.length;i++){
		thisEl = true;
		f = document.getElementById(thisFormElements[i].id);
		if(f.v_ignore == 'yes'){
			//alert("Ignore: " + f.name);
			showError(thisFormElements[i].id +"Error",false);
			continue;
		}
		if(f.disabled == true){
			//alert("Ignore: " + f.name);
			continue;
		}
		else{
			//alert("Valid: " + f.id + " status: " + f.disabled);
		}
		if((f.type == 'text' || f.type == 'select-one' || f.type == 'textarea' || f.type == 'password')){
			if(f.validationType){
				stripChars(f.value, f.id, f.validationType);
			}
			if(f.minLen){
				if(!minLen(f.value, f.minLen, f.groupSize, f.groupName, f.lastInGroup, f.errorIdName, f.optional) && (f.lastInGroup == 'yes' || !f.groupName)){
					if(!checkDependency(f.dependValue, f.depend)){
						flag = false;
						thisEl = false;
					}
				}
			}
			if(f.special){
				if(f.special == 'currency'){
					formatCurrency(f.value, f.id, f.maxLen);
				}
				else if(f.special == 'url'){
					if(!urlCheck(f, f.value, f.errorIdName, f.optional)){
						if(!checkDependency(f.dependValue, f.depend)){
							flag = false;
							thisEl = false;
						}
					}
				}
				else if(f.special == 'email'){
					if(!emailCheck(f.value, f.errorIdName, f.optional)){
						if(!checkDependency(f.dependValue, f.depend)){
							flag = false;
							thisEl = false;
						}
					}
				}
			}
		}
		else if(f.type == 'checkbox'){
			if(!validateCheckboxes(f.groupName, f.groupSize, f.lastInGroup, f.checked, f.errorIdName) && (f.lastInGroup == 'yes' || !f.groupName)){
				if(!checkDependency(f.dependValue, f.depend)){
					flag = false;
					thisEl = false;
				}
			}
		}
		else if(f.type == 'radio'){
			if(f.lastInGroup == 'yes'){
				if(!validateRadio(f.groupName, f.groupSize, f.lastInGroup)){
					if(!checkDependency(f.dependValue, f.depend)){
						flag = false;
						thisEl = false;
					}
				}
			}
		
		}
		if(choice){
			if(f.id.indexOf(choice) != -1 && f.selectionGroup){
				if(thisEl){
					if(f.value.length < f.minLen){
						thisEl = false;	
					}
				}
				choiceArray.push(thisEl);
			}
		}
 	
	if(f.id == 'funding_amount' || f.id == 'yearly_revenue' ||f.id == 'yearly_cardvolume' ||f.id == 'month1' ||f.id == 'month2' || f.id == 'month3' ||f.id == 'month4' ||f.id =='bizAvgTicket' || f.id=='rentmortgage'|| f.id=='annual_income'|| f.id=='monthly_loan')
	{
		errorIdName=f.id + 'Error'
		if(f.value <=0 || f.value ==null || f.value==''){
			var msg1 = document.getElementById(errorIdName).innerHTML;
			msg = errorMessage+'<div class=arrow id='+f.id+'img>'+errorMessageimg;
			document.getElementById(errorIdName).innerHTML = msg;
			document.getElementById(errorIdName).style.visibility = 'visible';    
			document.getElementById(errorIdName).style.display = 'block';    
	   		flag=false;
	   	}
	}
	if(f.id == 'residenceyears')
	{
		var months = document.getElementById('residencemonths');
		errorIdName=f.id + 'Error'
		if(f.value + months.value <=0)
		{
			var msg1 = document.getElementById(errorIdName).innerHTML;
			msg = errorMessageYrs+'<div class=arrow id='+f.id+'img>'+errorMessageimg;
			document.getElementById(errorIdName).innerHTML = msg;
			document.getElementById(errorIdName).style.visibility = 'visible';    
			document.getElementById(errorIdName).style.display = 'block';    
			flag=false;
		
		}  	
	}
 	if(choiceArray.length){
		choiceFlag = false;
		for(j=0;j<choiceArray.length;j++){
			if(choiceArray[j]){
				choiceFlag = true;
			}
		}
		if(choiceFlag){
			document.getElementById('choice-label').className = '';
		}
		else{
			document.getElementById('choice-label').className = 'app-error';
			flag = choiceFlag;
		}
		}
	}}
	catch (e){
		alert("Error 8859:\r\n" + e);
	}
	
	//alert(flag);	
    if(flag)
    {
        removeCommas()
    }
	return flag;
}

function resizeForm(){
	for(var i=0;i<thisFormElements.length;i++){
		elID = thisFormElements[i].id;
		if(thisFormElements[i].errorIdName){
			elErrorID = thisFormElements[i].errorIdName;
			adjustErrorDivPos(elID, elErrorID);
		}
	}
}

function createErrorDiv(idName, errorIdName, errorMessage){
    
	var errorDiv = document.createElement('div');
	errorDiv.setAttribute('id', errorIdName);
	document.body.appendChild(errorDiv);
	errorDiv.className = 'error-popup';
	var copyDiv = document.createElement('div');
	copyDiv.innerHTML = errorMessage;
	copyDiv.className = 'error';
	document.getElementById(errorIdName).appendChild(copyDiv);
	var arrowDiv = document.createElement('div');
	arrowDiv.setAttribute('id', errorIdName + 'img');
	arrowDiv.className = 'arrow';
	document.getElementById(errorIdName).appendChild(arrowDiv);
	var arrowImage = document.createElement('img');
	arrowImage.src = '/AMIPortal/framework/skins/amigreen/images/bizoodle/images/error_popup_arrow.gif';
	document.getElementById(errorIdName + 'img').appendChild(arrowImage);
	var elementPos = findPos(document.getElementById(idName));
	errorDiv.style.left = elementPos[0] + 'px';
	if(document.getElementById(idName).type != 'textarea'){
		errorDiv.style.top = elementPos[1] - document.getElementById(idName).offsetHeight - 6 + 'px';
	}
	else{
		errorDiv.style.top = elementPos[1] - 25 + 'px';
	}
}

function adjustErrorDivPos(idName, errorIdName){
	var elementPos = findPos(document.getElementById(idName));
	document.getElementById(errorIdName).style.left = elementPos[0] + 'px';
	if(document.getElementById(idName).type != 'textarea'){
		document.getElementById(errorIdName).style.top = elementPos[1] - document.getElementById(idName).offsetHeight - 6 + 'px';
	}
	else{
		document.getElementById(errorIdName).style.top = elementPos[1] - 25 + 'px';
	}
}

window.onresize = resizeForm;

//
function submitByFormAction(id_form, id_href)
{									
	var form = document.getElementById(id_form);			
	var anchor = document.getElementById(id_href);
	if(form){	
		if(anchor){			
			form.action = anchor.href;		
		}
		form.submit();
		return true;
	}
	return;
}  
function go_anchor(id_href, title)
{	
	var anchor = document.getElementById(id_href);
	if(anchor){
		v_href = anchor.href;
		if(v_href != '' && v_href != '0'){	
			var msgerr = "delete the selected items";
			if(title && title != ''){ 
				msgerr = title;
			}
			var window_name	 = "amiportal";	
			window.name = window_name;//To want to open this link on the current window		
			answer = confirm("Are you sure you want to " + msgerr + "?");
			if (answer==true){		
				var openWindow = window.open(v_href,window_name);
				openWindow.focus();
			}
		}
	}		
	return;
}  
function removeCommas()
{		var f;
		for(var i=0;i<thisFormElements.length;i++){
			f = document.getElementById(thisFormElements[i].id);
			if(f.id == 'funding_amount' || f.id == 'yearly_revenue' ||f.id == 'yearly_cardvolume' ||f.id == 'month1' ||f.id == 'month2' || f.id == 'month3' ||f.id == 'month4' ||f.id =='bizAvgTicket'||f.id=='rentmortgage'|| f.id=='annual_income'|| f.id=='monthly_loan'|| f.id=='home_value'|| f.id=='mortgage_balance'|| f.id=='mortgage_payment')
			{
				var amount = f.value;
				amount=amount.replace(/,/g,"");
				f.value=amount;
				
			}
		}
}