function MultiLang(cFormName , cTempInputUniquePrefix, cInputPrefix, cRecordID, cMbrLangCode){
	this.featureName = cTempInputUniquePrefix;
	this.cleanHTML = true;
	this.oForm = document.forms[cFormName];
	this.inputPrefix = cInputPrefix;
	this.recordID = cRecordID;
	this.mbrLangCode = cMbrLangCode;
	this.oParent = document.getElementById(cTempInputUniquePrefix + "" + cRecordID + "_Parent");
	this.oSelect = document.getElementById(cTempInputUniquePrefix + "" + cRecordID + "_LangSelect")
	this.oPlaceHolder = document.getElementById(cTempInputUniquePrefix + "" + cRecordID + "_PlaceHolder");
	this.oDivParent = document.getElementById(cTempInputUniquePrefix + "" + cRecordID + "_DivParent")
	if(this.oPlaceHolder.type == 'textarea'){
		this.textAreaOffset = 1;
	}else{
		this.textAreaOffset = 0;
	}
	this.arrHiddenFields = this.oParent.getElementsByTagName('INPUT');
	this.arrTextAreas = this.oParent.getElementsByTagName('TEXTAREA');
	this.arrLanguageSelectOptionDivs =this.oDivParent.getElementsByTagName('DIV');
	this.divHoverBackgroundColor = 'pink';
	this.divActiveBackgroundColor = '#CECFEE';
	this.activeLanguageDivIndex = null;
	this.defaultTextContainer=null;
	this.activeLanguageCode = cMbrLangCode;
	var oObj = getObject(this);
	addEvent(this.oPlaceHolder, "blur", function(){ oObj.checkMarkLanguage(); }, true)
}
MultiLang.prototype.init = function(){
	this.arrLanguagesProvided = []
	for(var i=this.textAreaOffset;i<this.arrTextAreas.length;i++){
		
		if(this.arrTextAreas[i].value.trim() != ""){
			var cTextAreaID = this.arrTextAreas[i].id;
			var cCurrLangCode = cTextAreaID.substr(cTextAreaID.lastIndexOf("_") + 1 , cTextAreaID.length);
			this.arrLanguagesProvided.push(cCurrLangCode);
		}
	}
	var arrDivObjects = [];
	var oMultiLang = getObject(this);
	for(var i=0;i<this.arrLanguageSelectOptionDivs.length;i++){	
		var oCurrCheckBox = this.arrLanguageSelectOptionDivs[i].getElementsByTagName('INPUT')[0];
		this.arrLanguageSelectOptionDivs[i].onmouseover = function(){ this.style.backgroundColor=oMultiLang.divHoverBackgroundColor;}
		this.arrLanguageSelectOptionDivs[i].onmouseout =  function(){ this.style.backgroundColor='transparent'; }
		this.arrLanguageSelectOptionDivs[i].onclick =  function(){ oMultiLang.activateLanguage(this); }
		this.arrLanguageSelectOptionDivs[i].getElementsByTagName('INPUT')[0].onclick=function(){oMultiLang.activateLanguage(this.parentNode);return false;}
		var cCurrLangCode = oCurrCheckBox.value;
		if(cCurrLangCode == this.mbrLangCode){
			var cCheckBoxID = oCurrCheckBox.id;
			this.activeLanguageDivIndex = i;
			this.oPlaceHolder.value = this.oForm.elements[this.featureName + "" + this.recordID + "_Lang_" + cCurrLangCode].value;
			this.activateLanguage(this.arrLanguageSelectOptionDivs[i]);					
		}		
	}	
	this.checkMarkLanguages();
	var oObj = getObject(this);
	addEvent(this.oPlaceHolder, "keyup", function(){ oObj.checkMarkLanguage(); }, true)
}
MultiLang.prototype.isValid = function(){
	var arrInputs = this.oParent.getElementsByTagName('INPUT');
	for(var i=0;i<arrInputs.length;i++){
		if(arrInputs[i].type == 'hidden' && arrInputs[i].value.trim() != ''){
			return true;				
		}	
	}
	return false;
}	
MultiLang.prototype.activateLanguage = function(oDiv){
	var oCheckBox = oDiv.getElementsByTagName('INPUT')[0];
	if(this.activeLanguageDivIndex != null){
		var oMultiLang = getObject(this);
		var oPrevActiveDiv = this.arrLanguageSelectOptionDivs[this.activeLanguageDivIndex]
		oPrevActiveDiv.style.backgroundColor = 'transparent';
		oPrevActiveDiv.onmouseover = function(){ this.style.backgroundColor=oMultiLang.divHoverBackgroundColor;}
		oPrevActiveDiv.onmouseout =  function(){ this.style.backgroundColor='transparent'; }			
	}
	var cCheckBoxID = oCheckBox.id;
	oDiv.onmouseout = null;
	oDiv.onmouseover = null;
	oDiv.style.backgroundColor = this.divActiveBackgroundColor;
	for(var i=0;i<this.arrLanguageSelectOptionDivs.length;i++){
		if(oDiv == this.arrLanguageSelectOptionDivs[i]){
			this.activeLanguageDivIndex = i;
			break;
		}	
	}
	this.activeLanguageCode = oCheckBox.value;
	this.populatePlaceHolder(oCheckBox.value);
}
MultiLang.prototype.enableTextAreaCounter = function(){
	if(document.getElementById(this.featureName + "" + this.recordID + "_PlaceHolder_MaxChars")){
		var cMaxChars = document.getElementById(this.featureName + "" + this.recordID + "_PlaceHolder_MaxChars").innerHTML;
		document.getElementById(this.featureName + "" + this.recordID + "_PlaceHolder_Counter").value = "[" + cMaxChars +"]";
		taCounter(this.oPlaceHolder , cMaxChars);
		var oObj = getObject(this);
		addEvent(this.oPlaceHolder, "keypress", function(){ return taMax(oObj.oPlaceHolder,cMaxChars); }, true)
		addEvent(this.oPlaceHolder, "keyup", function(){ taCounter(oObj.oPlaceHolder,cMaxChars) }, true)
		if(this.defaultTextContainer != null){
			var oDiv = this.arrLanguageSelectOptionDivs[this.activeLanguageDivIndex];
			var oCurrCheckBox = oDiv.getElementsByTagName('INPUT')[0];			
			if(this.oForm.elements[this.inputPrefix + "" + this.recordID + "_Lang_" + oCurrCheckBox.value].value.trim() == ''){
				if(document.getElementById(this.featureName + "" + this.recordID + "_PlaceHolder_MaxChars")){
					 document.getElementById(this.featureName + "" + this.recordID +  '_PlaceHolder_Counter').value = "[" + cMaxChars +"]";
				}
			}
		}		
	}
}
MultiLang.prototype.populatePlaceHolder = function(cSelectedLang){
	if(this.defaultTextContainer != null){
		if(this.oForm.elements[this.inputPrefix + "" + this.recordID + "_Lang_" + cSelectedLang].value.trim() == ''){
			this.oPlaceHolder.value='';
			this.setDefaultText(this.defaultTextContainer.id);
			if(document.getElementById(this.featureName + "" + this.recordID + "_PlaceHolder_MaxChars")){
				document.getElementById(this.featureName + "" + this.recordID +  '_PlaceHolder_Counter').value = "[" + document.getElementById(this.featureName + "" + this.recordID + "_PlaceHolder_MaxChars").innerHTML + "]";
			}
			return true;
		}
	}
	this.oPlaceHolder.value = this.oForm.elements[this.featureName + "" + this.recordID + "_Lang_" + cSelectedLang].value;
	this.oPlaceHolder.isPrePopulated = (this.oPlaceHolder.value != '' && this.defaultTextContainer == null ? true : false);
	if(document.getElementById(this.featureName + "" + this.recordID + "_PlaceHolder_MaxChars")){
		var cMaxChars = document.getElementById(this.featureName + "" + this.recordID + "_PlaceHolder_MaxChars").innerHTML;
		taCounter(this.oPlaceHolder , cMaxChars);
	}
}
MultiLang.prototype.populateHiddenField = function(cCurrLangCode , oTextLocation){
	if(this.cleanHTML){
		var cText = this.cleanHTMLtags(oTextLocation);
	}else{
		var cText = oTextLocation.value;
	}
	this.oForm.elements[this.inputPrefix + "" + this.recordID + "_Lang_" + cCurrLangCode].value = cText;
	this.oForm.elements[this.featureName + "" + this.recordID + "_Lang_" + cCurrLangCode].value = cText;	
}
MultiLang.prototype.cleanHTMLtags = function(oTextLocation){
	var cCleanedHTML = "";	
	cCleanedHTML = oTextLocation.value.replace(/</g,"[").replace(/>/g,"]");	
	return cCleanedHTML
}
MultiLang.prototype.enableFields = function(cCurrLangCode){
	this.oForm.elements[this.inputPrefix + "" + this.recordID + "_Lang_" + cCurrLangCode].disabled = false;
	this.oForm.elements[this.featureName + "" + this.recordID + "_Lang_" + cCurrLangCode].disabled = false;
}
MultiLang.prototype.disableFields = function(cCurrLangCode){
	this.oForm.elements[this.inputPrefix + "" + this.recordID + "_Lang_" + cCurrLangCode].disabled = true;
	this.oForm.elements[this.featureName + "" + this.recordID + "_Lang_" + cCurrLangCode].disabled = true;
}
MultiLang.prototype.checkMarkLanguage = function(){
	var oDiv = this.arrLanguageSelectOptionDivs[this.activeLanguageDivIndex];
	var oCurrCheckBox = oDiv.getElementsByTagName('INPUT')[0];
	if(this.defaultTextContainer != null){
		if(this.oPlaceHolder.value.trim() == this.defaultTextContainer.innerHTML.trim()){
			oCurrCheckBox.checked = false;
			oCurrCheckBox.disabled = true;
			this.oForm.elements[this.inputPrefix + "" + this.recordID + "_Lang_" + oCurrCheckBox.value].value = '';
			this.oForm.elements[this.featureName + "" + this.recordID + "_Lang_" + oCurrCheckBox.value].value = '';
			return true;
		}
	}
	if(this.oPlaceHolder.value.trim() != ""){
		oDiv.style.color = '#000000';
		var oImage = oDiv.getElementsByTagName('IMG')[0]
		oImage.src = oImage.src.replace(/_off\./gi,'_on.');	
		oCurrCheckBox.checked = true;
		oCurrCheckBox.disabled = false;
		this.enableFields(oCurrCheckBox.value);
	}else{
		var oImage = oDiv.getElementsByTagName('IMG')[0]
		oImage.src = oImage.src.replace(/_on\./gi,'_off.');		
		this.oPlaceHolder.value = (this.oPlaceHolder.isPrePopulated ? ' ' : '');
		oCurrCheckBox.checked = false;
		oCurrCheckBox.disabled = true;
	}	
	this.populateHiddenField(oCurrCheckBox.value , this.oPlaceHolder);
	return true;
}
MultiLang.prototype.checkMarkLanguages = function(){
	if(this.arrLanguagesProvided.length > 0){
		var nLength = this.arrLanguageSelectOptionDivs.length;
		for(var i=0;i<nLength;i++){
			var oCurrDiv = this.arrLanguageSelectOptionDivs[i];
			var oCurrCheckBox = oCurrDiv.getElementsByTagName('INPUT')[0];			
			var cCurrLangCode = oCurrCheckBox.value;	
			if(this.arrLanguagesProvided.inArray(cCurrLangCode)){
				oCurrDiv.style.color = '#000000';
				var oImage = oCurrDiv.getElementsByTagName('IMG')[0]
				oImage.src = oImage.src.replace(/_off\./gi,'_on.');	
				oCurrCheckBox.checked = true;
				oCurrCheckBox.disabled = false;
				this.populateHiddenField(cCurrLangCode , this.oForm.elements[this.featureName + "" + this.recordID + "_Lang_" + cCurrLangCode]);
				this.enableFields(cCurrLangCode);
				//alert(cCurrLangCode + ' ' +  this.mbrLangCode)
			}			
		}
	}
	this.enableTextAreaCounter();
}
MultiLang.prototype.setDefaultText = function(cTextElementID){
	this.defaultTextContainer = document.getElementById(cTextElementID);
	if(this.oPlaceHolder.value.trim() == ""){
		this.oPlaceHolder.value=this.defaultTextContainer.innerHTML.trim();
		var oPassedMultiLang = getObject(this);
		addEvent(this.oPlaceHolder,'focus', function clearDefaultText(){
							if(oPassedMultiLang.oPlaceHolder.value.trim()==oPassedMultiLang.defaultTextContainer.innerHTML.trim()){
								oPassedMultiLang.oPlaceHolder.value='';
							}
							removeEvent(oPassedMultiLang.oPlaceHolder,'focus', clearDefaultText);
						     });
		addEvent(this.oPlaceHolder,'blur', function restoreDefaultText(){
							if(oPassedMultiLang.oPlaceHolder.value==''){
								oPassedMultiLang.oPlaceHolder.value=oPassedMultiLang.defaultTextContainer.innerHTML.trim();
								addEvent(oPassedMultiLang.oPlaceHolder,'focus', function clearDefaultText(){
													if(oPassedMultiLang.oPlaceHolder.value.trim()==oPassedMultiLang.defaultTextContainer.innerHTML.trim()){
														oPassedMultiLang.oPlaceHolder.value='';
													}
													removeEvent(oPassedMultiLang.oPlaceHolder,'focus', clearDefaultText);
												    });
							}
						   });
	}
}
