// Entango Template Core JavaScript
/*jslint browser: true */ /*global Ent, window */
if(Ent.isUndefined(Ent.template)){Ent.addMember("template");}
if(Ent.isObject(Ent.template) && (Ent.template.entango === true)){
if(Ent.modules.ent_template_core !== true){
Ent.modules.ent_template_core = true;
// historical
var Ent_Template = Ent.template;
Ent.template.messages = {};
Ent.template.messages.verifyNoticeHeader = "Please correct these items before proceeding:";
Ent.template.addMember = function(memberName,duplicateAlert,memberItem){if(Ent.isString(memberName) && (Ent.trim(memberName) !== "")){if(Ent.isBoolean(duplicateAlert) && (duplicateAlert === true) && Ent.template.hasOwnProperty(memberName)){window.alert(memberName + " has already been added to Ent.template.");}else{if(Ent.isUndefined(memberItem)){if(!Ent.template.hasOwnProperty(memberName)){Ent.template[memberName] = {};}}else{Ent.template[memberName] = memberItem;}return Ent.template[memberName];}}else{window.alert("Ent.template can not have an empty member name.");return undefined;}};
Ent.template.calcItem = function(item,field){item = Ent.trim(Ent.getString(item));if(typeof Ent.client["calc_" + item] === "function"){return Ent.client["calc_" + item](field);}else if(typeof Ent.template["calc_" + item] === "function"){return Ent.template["calc_" + item](field);}};
Ent.template.calcClientField = function(name,field){return Ent.template.calcItem("clientField_" + name,field);};
Ent.template.calcTempField = function(name,field){return Ent.template.calcItem("tempField_" + name,field);};
Ent.template.verifyItems = (function(){
	// This is used for the 'all' function
	var verifyList = [];
	var verifyItems = function(){
		var retValue, index, item, msg;
		if(arguments.length > 1){
			retValue = [];
			for(index = 0; index < arguments.length; index++){
				msg = Ent.template.verifyItems(arguments[index]);
				if(msg){retValue.push(msg);}
			}
			if(retValue.length > 0){return retValue;}
		}
		else if(arguments.length === 1){
			item = arguments[0];
			if(Ent.isArray(item)){
				retValue = [];
				for(index = 0; index < item.length; index++){
					msg = Ent.template.verifyItems(item[index]);
					if(msg){retValue.push(msg);}
				}
				if(retValue.length > 0){return retValue;}
			}
			else{
				item = Ent.trim(Ent.getString(item));
				if(typeof Ent.client["verify_" + item] === "function"){return Ent.client["verify_" + item]();}
				else if(typeof Ent.template["verify_" + item] === "function"){return Ent.template["verify_" + item]();}
			}
		}
	};
	verifyItems.addItem = function(item){item = Ent.trim(Ent.getString(item));if(item !== ""){verifyList.push(item);}};
	verifyItems.addClientField = function(name){name = Ent.trim(name);if(name !== ""){verifyItems.addItem("clientField_" + name);}};
	verifyItems.addTempField = function(name){name = Ent.trim(name);if(name !== ""){verifyItems.addItem("tempField_" + name);}};
	verifyItems.all = function(){return Ent.template.verifyItems(verifyList);};
	verifyItems.removeItem = function(item){var index;item = Ent.trim(item);for(index = 0; index < verifyList.length; index++){if(verifyList[index] === item){verifyList.splice(index,1);break;}}};
	verifyItems.removeClientField = function(name){name = Ent.trim(name);if(name !== ""){verifyItems.removeItem("clientField_" + name);}};
	verifyItems.removeTempField = function(name){name = Ent.trim(name);if(name !== ""){verifyItems.removeItem("tempField_" + name);}};
	return verifyItems;
}());
Ent.template.verifyClientField = function(name){return Ent.template.verifyItems("clientField_" + name);};
Ent.template.verifyTempField = function(name){return Ent.template.verifyItems("tempField_" + name);};
Ent.template.defaultPersonalOnsubmit = function(){var alertMsg, msgs, index;msgs = Ent.template.verifyItems.all();if(Ent.isArray(msgs) && (msgs.length > 0)){alertMsg = Ent.template.messages.verifyNoticeHeader + "\n";for(index = 0; index < msgs.length; index++){alertMsg += "\n\n" + msgs[index];}window.alert(alertMsg);return false;}return true;};
Ent.template.personalOnsubmit = function(){if(typeof Ent.client.personalOnsubmit === "function"){return Ent.client.personalOnsubmit();}else{return Ent.template.defaultPersonalOnsubmit();}};
Ent.template.defaultCleanup = function(item){item = Ent.getElement(item);if(!Ent.isNUN(item)){var maxlength = ((typeof item.maxLength === "number") && (item.maxLength > 0) ? item.maxLength : Ent.clientFieldMaxLength);if(((item.tagName.toLowerCase() === "input") && (item.type === "text")) || (item.tagName.toLowerCase() === "textarea")){item.value = Ent.truncate(Ent.cleanUp(item.value),maxlength);}}};
Ent.template.initCustomState = function(prefix){
	var tempState = Ent.tempField(prefix + "State"), customState = Ent.clientField(prefix + "State");
	if(customState){customState.setValue(tempState ? tempState.getValue() : "");}
};
Ent.template.clearCustomState = function(prefix){
	var tempState = Ent.tempField(prefix + "State"), customState = Ent.clientField(prefix + "State");
	if(tempState){tempState.selectedIndex = 0;}
	if(customState){customState.setValue("");}
};
Ent.template.synchCustomState = function(prefix){
	var tempState = Ent.tempField(prefix + "State"), customState = Ent.clientField(prefix + "State"), tempCountry = Ent.tempField(prefix + "Country"), country, option;
	if(tempState && tempCountry){
		country = tempCountry.getValue();
		option = tempState.options[tempState.selectedIndex];
		if(((country !== "US") && (country !== "CA")) || ((country === "US") && !Ent.hasClass(option,"ent_state_US")) || ((country === "CA") && !Ent.hasClass(option,"ent_state_CA"))){tempState.selectedIndex = 0;if(customState){customState.setValue(tempState.getValue());}}
	}
};
Ent.template.initCustomCountry = function(prefix){
	var tempCountry = Ent.tempField(prefix + "Country"), customCountry = Ent.clientField(prefix + "Country");
	if(customCountry){customCountry.setValue(tempCountry ? tempCountry.getValue() : "");}
};
Ent.template.clearCustomCountry = function(prefix){
	var tempCountry = Ent.tempField(prefix + "Country"), customCountry = Ent.clientField(prefix + "Country");
	if(tempCountry){tempCountry.setValue("US");}
	if(customCountry){customCountry.setValue("");}
};
Ent.template.synchCustomCountry = function(prefix){
	var tempState = Ent.tempField(prefix + "State"), customCountry = Ent.clientField(prefix + "Country"), tempCountry = Ent.tempField(prefix + "Country"), option;
	if(tempState && tempCountry){
		option = tempState.options[tempState.selectedIndex];
		if(Ent.hasClass(option,"ent_state_US")){
			tempCountry.setValue("US");
			if(customCountry){customCountry.setValue("US");}
		}
		else if(Ent.hasClass(option,"ent_state_CA")){
			tempCountry.setValue("CA");
			if(customCountry){customCountry.setValue("CA");}
		}
	}
};
Ent.template.initCustomAddress = function(prefix){
	Ent.template.initCustomState(prefix);
	Ent.template.initCustomCountry(prefix);
};
Ent.template.clearCustomAddress = function(prefix){
	var item = Ent.clientField(prefix + "Address1"); if(item){item.setValue("");}
	item = Ent.clientField(prefix + "Address2"); if(item){item.setValue("");}
	item = Ent.clientField(prefix + "City"); if(item){item.setValue("");}
	Ent.template.clearCustomState(prefix);
	Ent.template.clearCustomCountry(prefix);
	item = Ent.clientField(prefix + "Zip"); if(item){item.setValue("");}
};
Ent.template.verifyCustomState = function(prefix){
	var tempState = Ent.tempField(prefix + "State"), customCountry = Ent.clientField(prefix + "Country"), state, country;
	if(tempState){
		state = Ent.trim(tempState.getValue());
		if(customCountry){
			country = customCountry.getValue();
			if(((country === "US") || (country === "CA")) && (state === "")){return false;}
		}
		else if(state === ""){return false;}
	}
	return true;
};
}}else{window.alert("Ent.template already defined outside Entango code.");}


