// ====================================
//  Included by xRails component xForm
// ====================================
function xformSelectAllTextarea(id) {
	var fld=document.getElementById(id);
	fld.focus()
	fld.select()
}
function xformConvertToLower(str) {
	return str.toLowerCase();
}
function xformConvertToUpper(str) {
	return str.toUpperCase();
}
function xformCapitalize(str) {
	var str=xformConvertToLower(str);
    return str.replace(/[^\s-]+/g, function(str) {
		return str.charAt(0).toUpperCase() + str.substring(1);
	});
};
function xformNormalize(str,charset) {
	var charsets=new Array;
	if (charset=="") charset='paranoid';
	charsets['name']="abcdefghijklmn�opqrstuvwxyzABCDEFGHIJKLMN�OPQRSTUVWXYZ .-";
	charsets['paranoid']="abcdefghijklmnopqrstuvwxyz0123456789";
	charsets['onlymays']="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	charsets['paranoid']="abcdefghijklmnopqrstuvwxyz0123456789";
	charsets['username']="abcdefghijklmnopqrstuvwxyz0123456789_";
	charsets['email']="abcdefghijklmnopqrstuvwxyz0123456789.@-_";
	charsets['dimension']="x0123456789";
	charsets['tel']="0123456789";
	charsets['extel']="0123456789-+(). ";
	charsets['number']="0123456789"
	charsets['date']="0123456789-";
	charsets['datetime']="0123456789- :";
	charsets['floatnumber']="0123456789."
	var validcharset=(charsets[charset]);
	var normalized="";
	var sch=""
	for (i=0;i<str.length;i++) {
			var ch=str.charAt(i);
			if (ch=="�") normalized+="a";
			if (ch=="�") normalized+="e";
			if (ch=="�") normalized+="i";
			if (ch=="�") normalized+="o";
			if (ch=="�") normalized+="u";
			if (ch=="�") normalized+="n";
			if (validcharset.indexOf(ch)!=-1) {
				normalized+=str.charAt(i);
			}
	}
	//alert("Normalized:"+normalized);
	return normalized;
}
function xformNormalizeInto(fieldName,str,charset) {
	document.getElementById(fieldName).value=normalize(str,charset);
}
function xformReloadSecurityImage(image,url) {
	image.blur();
	image.addClass("xform-securityimage-off");
	image.attr("src",url+""+Math.round((Math.random())*100000));
	image.load( function() {image.removeClass('xform-securityimage-off')});
	return false;
}
function xformCheckWYSIWYGCode(instance) {
	// Get the editor instance that we want to interact with.
	var oEditor = FCKeditorAPI.GetInstance(instance) ;
	var xhtml=oEditor.GetXHTML();
	if (xhtml.length>0) return true;
	return false;
}
function xformFocusIframeOnTab(caller, tabTargetId, callEvent) {
    // If keypress TAB and not SHIFT+TAB
    if(callEvent.keyCode == 9 && !callEvent.shiftKey)
        document.getElementById(tabTargetId).contentWindow.focus();
}
function xformResetForm(formname,msg) {
	if (confirm(msg)) {
		$('#'+formname+'').resetForm();
		$('#'+formname+' input').removeClass('xform-status-error');
		$('#'+formname+' input').parent().parent().removeClass('xform-status-error');
		$('#'+formname+' input').parent().parent().parent().removeClass('xform-status-error');
		$('#'+formname+' select').removeClass('xform-status-error');
		$('#'+formname+' select').parent().parent().removeClass('xform-status-error');
		$('#'+formname+' select').parent().parent().parent().removeClass('xform-status-error');
		eval('xform_defaultvalues_'+formname+'()');
	}
}
function xformCleanForm(formname,msg) {
		$('#'+formname+'').clearForm();
		$('#'+formname+' input').removeClass('xform-status-error');
		$('#'+formname+' input').parent().parent().removeClass('xform-status-error');
		$('#'+formname+' input').parent().parent().parent().removeClass('xform-status-error');
		$('#'+formname+' select').removeClass('xform-status-error');
		$('#'+formname+' select').parent().parent().removeClass('xform-status-error');
		$('#'+formname+' select').parent().parent().parent().removeClass('xform-status-error');
		$('#'+formname+' select').attr('value','');
}
function xformCheckMcheckboxMinrequired(fieldName,nRequired) {
	var nTotal=$('#'+fieldName+'___total').fieldValue()[0];
	var nSelected=0;
	for (i=1;i<=nTotal;i++) {
		if ($('#'+fieldName+'___'+i).fieldValue()[0] && $('#'+fieldName+'___'+i).fieldValue()[0]!="") nSelected++;
	}
	if (nSelected>=nRequired) {
		return true;
	} else {
		return false;
	}
}
function xformCheckRadioMinrequired(fieldName,nRequired) {
	var nTotal=$('#'+fieldName+'___total').fieldValue()[0];
	var nSelected=0;
	for (i=1;i<=nTotal;i++) {
		if ($('#'+fieldName+'___'+i).fieldValue()[0] && $('#'+fieldName+'___'+i).fieldValue()[0]!="") nSelected++;
	}
	if (nSelected>=nRequired) {
		return true;
	} else {
		return false;
	}
}
function xformAllCheckboxes(fieldName) {
	nCheckboxes=$('#'+fieldName+'___total').fieldValue()[0];
	for (i=1;i<=nCheckboxes;i++) {
		$('#'+fieldName+'___'+i).attr("checked","checked");
	}
}
function xformNoneCheckboxes(fieldName) {
	nCheckboxes=$('#'+fieldName+'___total').fieldValue()[0];
	for (i=1;i<=nCheckboxes;i++) {
		$('#'+fieldName+'___'+i).attr("checked","");
	}
}
function xformInvertCheckboxes(fieldName) {
	nCheckboxes=$('#'+fieldName+'___total').fieldValue()[0];
	for (i=1;i<=nCheckboxes;i++) {
		if ($('#'+fieldName+'___'+i).fieldValue()=="") {
			$('#'+fieldName+'___'+i).attr("checked","checked");
		} else {
			$('#'+fieldName+'___'+i).attr("checked","");
		}
	}
}
function xformAddRadioDefault(fieldName,defaultChecked) {
	var nTotal=$('#'+fieldName+'___total').fieldValue()[0];
	for (i=1;i<=nTotal;i++) {
		if ($('#'+fieldName+'___'+i).attr("value")==defaultChecked) $('#'+fieldName+'___'+i).attr("checked","checked");
	}
}
function xformAddStatusClass(className,fieldName) {
	$('#'+fieldName).addClass('xform-status-'+className);
	$('#'+fieldName+' input').addClass('xform-status-'+className);
	$('#'+fieldName+' select').addClass('xform-status-'+className);
	$('#'+fieldName).parent().parent().addClass('xform-status-'+className);
	$('#'+fieldName).parent().parent().parent().addClass('xform-status-'+className);
}
function xformRemoveStatusClass(className,fieldName) {
	$('#'+fieldName).removeClass('xform-status-'+className);
	$('#'+fieldName+' input').removeClass('xform-status-'+className);
	$('#'+fieldName+' select').removeClass('xform-status-'+className);
	$('#'+fieldName).parent().parent().removeClass('xform-status-'+className);
	$('#'+fieldName).parent().parent().parent().removeClass('xform-status-'+className);
}



/* AJAX */
function xformAjaxSelect(fieldName) {
	$('#'+fieldName).select();
}
function xformAjaxUpdateSelect(fieldName,datasource,params,post) {
	$('#'+fieldName+" option").remove();
	$('#'+fieldName).fadeTo("fast",0.4);
	$('#'+fieldName).append("<option value=''>"+ajaxMsgWait+"</option>");
	//alert(datasource);
	$.get(datasource,
		function(data){
			$('#'+fieldName+" option").remove();
			if (data!='') {
				result=xformAjaxGetArrayFromResult(data);
				for(i=0;i<result.length;i++) {
					$('#'+fieldName).append("<option value='"+result[i]+"'>"+result[i]+"</option>");
				}
				$('#'+fieldName+' option:first').attr("selected","selected");
				$('#'+fieldName).fadeTo("fast",1);
			} else {
				$('#'+fieldName).append("<option value=''>"+ajaxMsgNoResults+"</option>");
				$('#'+fieldName).fadeTo("fast",1);
			}
			setTimeout("xformAjaxSelect('"+fieldName+"')",500);
		}
	);
}
function xformAjaxUpdateText(fieldName,datasource,params,post) {
	$('#'+fieldName).fadeTo("fast",0.4);
	$('#'+fieldName).attr("value",ajaxMsgWait);
	if (post.length>0) {
		$.ajax({
			type: "POST",
			url: datasource,
			data: post,
			success: function(data){
				result=data;
				$('#'+fieldName).attr("value",result);
				$('#'+fieldName).fadeTo("fast",1);
				setTimeout("xformAjaxSelect('"+fieldName+"')",500);
			}
		});
	} else {
		$.get(datasource,
			function(data){
				//alert("Data Loaded: " + data);
				result=data;
				$('#'+fieldName).attr("value",result);
				$('#'+fieldName).fadeTo("fast",1);
				setTimeout("xformAjaxSelect('"+fieldName+"')",500);
			}
		);
	}
}
function xformAjaxGetArrayFromResult(result) {
	result=result.split("<<>>");
	return result;
}
function xformAjaxBuildPost(fieldType,fieldName) {
	var postVars="";
	switch (fieldType) {
		case "text":
			break;
		case "multicheckbox":
			// Recorremos todo el multicheckbox y rellenamos el array
				total=$("#"+fieldName+"___total").attr("value");
				for (i=1;i<=total;i++) {
					if ($("#"+fieldName+"___"+i).attr("checked")==true) {
						postVars=postVars+fieldName+'___'+i+'='+$('#'+fieldName+'___'+i).attr('value')+'&';
					}
				}
			break;
	}
	if (postVars!="") postVars=postVars;
	return postVars;
}


/* DYNAMICS */
function xformSwitchGroup(formName,groupName,groups) {
	groups=groups.split(",");
	// Ocultamos todo
		for(i=0;i<groups.length;i++) {
			$("#"+formName+"___group___"+groups[i]).attr("value","0");
			$("#"+formName+"___group___"+groups[i]+"___fields").addClass("xform-hide");
		}
	// Mostramos grupo seleccionado
		$("#"+formName+"___group___"+groupName).attr("value","1");
		$("#"+formName+"___group___"+groupName+"___fields").removeClass("xform-hide");
}
function xformSwitchNestedGroup(formName,groupName,groups) {
	groups=groups.split(",");
	// Ocultamos todo
		for(i=0;i<groups.length;i++) {
			$("#"+formName+"___group___"+groups[i]).attr("value","0");
			$("#"+formName+"___group___"+groups[i]+"___fields").addClass("xform-hide");
		}
	// Mostramos grupo anidado seleccionado hasta que nos encontremos con el que corresponda y nos salimos del bucle.
		if (groupName!="") {
			for(i=0;i<groups.length;i++) {
				$("#"+formName+"___group___"+groups[i]).attr("value","1");
				$("#"+formName+"___group___"+groups[i]+"___fields").removeClass("xform-hide");
				if (groupName==groups[i]) {
					return;
				}
			}
		}
}