﻿/** 
* Copyright 2006-2007 massimocorner.com
* License: http://www.massimocorner.com/license.htm
* @author      Massimo Foti (massimo@massimocorner.com)
* @version     0.3.1, 2007-01-28
* @require     tmt_core.js
*/

if(typeof(tmt)=="undefined"){alert("Error: tmt.core JavaScript library missing");}
tmt.form={};tmt.form.MESSAGE_CLASS="tmtFormMessage";tmt.form.ERROR_MESSAGE_CLASS="tmtFormErrorMessage";tmt.form.checkFields=function(){tmt.setNodeAttribute(arguments,"checked",true);}
tmt.form.uncheckFields=function(){tmt.setNodeAttribute(arguments,"checked",false);}
tmt.form.toggleCheckFields=function(){for(var i=0;i<arguments.length;i++){var fieldNode=tmt.get(arguments[i]);if(fieldNode){fieldNode.checked?fieldNode.checked=false:fieldNode.checked=true;}}}
tmt.form.checkSelect=function(theNode,values){var valueArray=values.split(",");var selectNode=tmt.get(theNode);if(selectNode==null){selectNode=document.getElementsByName(theNode)[0];}
for(var i=0;i<selectNode.options.length;i++){for(var j=0;j<valueArray.length;j++){if(valueArray[j]==tmt.form.getOptionNodeValue(selectNode.options[i])){selectNode.options[i].selected=true;}}}}
tmt.form.resetSelect=function(theNode){var selectNode=tmt.get(theNode);if(selectNode==null){selectNode=document.getElementsByName(theNode)[0];}
for(var i=0;i<selectNode.options.length;i++){selectNode.options[i].selected=false;}}
tmt.form.checkGroup=function(groupName,values){var valueArray=values.split(",");var groupNodes=document.getElementsByName(groupName);for(var i=0;i<groupNodes.length;i++){for(var j=0;j<valueArray.length;j++){if(groupNodes[i].value==valueArray[j]){groupNodes[i].checked=true;}}}}
tmt.form.resetGroup=function(groupName){var groupNodes=document.getElementsByName(groupName);for(var i=0;i<groupNodes.length;i++){groupNodes[i].checked=false;}}
tmt.form.disableFields=function(){tmt.setNodeAttribute(arguments,"disabled",true);}
tmt.form.enableFields=function(){tmt.setNodeAttribute(arguments,"disabled",false);}
tmt.form.toggleEnableFields=function(){for(var i=0;i<arguments.length;i++){var fieldNode=tmt.get(arguments[i]);if(fieldNode){fieldNode.disabled?fieldNode.disabled=false:fieldNode.disabled=true;}}}
tmt.form.getParentForm=function(startNode){var parentObj=startNode.parentNode;while(parentObj){if(parentObj.tagName.toLowerCase()=="form"){return parentObj;}
else{parentObj=parentObj.parentNode;continue;}}
return false;}
tmt.form.getOptionNodeValue=function(optionNode){var optionValue=optionNode.value;if(!optionValue){optionValue=optionNode.text;}
return optionValue;}
tmt.form.getSubmitNodes=function(startNode){var submitArray=[];var inputNodes=startNode.getElementsByTagName("input");for(var i=0;i<inputNodes.length;i++){if(inputNodes[i].getAttribute("type").toLowerCase()=="submit"){submitArray[submitArray.length]=inputNodes[i];}}
return submitArray;}
tmt.form.serializeForm=function(formNode,demoronize){var values=[];for(var i=0;i<formNode.elements.length;i++){var fieldNode=formNode.elements[i];if(!fieldNode||!fieldNode.name||fieldNode.tagName.toLowerCase()=="fieldset"){continue;}
var fieldName=encodeURIComponent(fieldNode.name);var fieldType=fieldNode.type.toLowerCase();switch(fieldType){case"select-multiple":for(var j=0;j<fieldNode.options.length;j++){if(fieldNode.options[j].selected){values.push(fieldName+"="+encodeURIComponent(tmt.form.getOptionNodeValue(fieldNode.options[j])));}}
break;case"select-one":for(var k=0;k<fieldNode.options.length;k++){if(fieldNode.options[k].selected){values.push(fieldName+"="+encodeURIComponent(tmt.form.getOptionNodeValue(fieldNode.options[k])));break;}}
break;case"radio":case"checkbox":if(fieldNode.checked){values.push(fieldName+"="+encodeURIComponent(fieldNode.value));}
break;case"reset":break;case"button":break;default:var fieldValue=fieldNode.value;if(demoronize){fieldValue=tmt.form.stringDemoronizer(fieldNode.value);}
values.push(fieldName+"="+encodeURIComponent(fieldValue));break;}}
return values.join("&");}
tmt.form.displayMessage=function(formNode,html){tmt.form.displayBox(formNode,html,tmt.form.MESSAGE_CLASS);}
tmt.form.displayErrorMessage=function(formNode,html){tmt.form.displayBox(formNode,html,tmt.form.ERROR_MESSAGE_CLASS);}
tmt.form.displayBox=function(formNode,html,cssClass){if(!cssClass){cssClass=tmt.form.MESSAGE_CLASS;}
var displayNode=document.createElement("div");var errorId="tmtFormMessageBox";if(formNode.getAttribute("id")){errorId+=formNode.getAttribute("id");}
else if(formNode.getAttribute("name")){errorId+=formNode.getAttribute("name");}
displayNode.setAttribute("id",errorId);displayNode.className=cssClass;displayNode.innerHTML=html;var oldDisplay=document.getElementById(errorId);if(oldDisplay){formNode.parentNode.replaceChild(displayNode,oldDisplay);}
else{formNode.parentNode.insertBefore(displayNode,formNode);}}
tmt.form.stringDemoronizer=function stringDemoronizer(str){str=str.replace(new RegExp(String.fromCharCode(710),"g"),"^");str=str.replace(new RegExp(String.fromCharCode(732),"g"),"~");str=str.replace(new RegExp(String.fromCharCode(8216),"g"),"'");str=str.replace(new RegExp(String.fromCharCode(8217),"g"),"'");str=str.replace(new RegExp(String.fromCharCode(8220),"g"),'"');str=str.replace(new RegExp(String.fromCharCode(8221),"g"),'"');str=str.replace(new RegExp(String.fromCharCode(8211),"g"),"-");str=str.replace(new RegExp(String.fromCharCode(8212),"g"),"--");str=str.replace(new RegExp(String.fromCharCode(8218),"g"),",");str=str.replace(new RegExp(String.fromCharCode(8222),"g"),",,");str=str.replace(new RegExp(String.fromCharCode(8226),"g"),"*");str=str.replace(new RegExp(String.fromCharCode(8230),"g"),"...");str=str.replace(new RegExp(String.fromCharCode(8364),"g"),"€");return str;}