document.write("<script type='text/javascript' src='url.js'></script>");

var VALIDATE_REQUIRED	= "VALIDATE_REQUIRED";
var VALIDATE_EMAIL 		= "VALIDATE_EMAIL";
var VALIDATE_PHONE		= "VALIDATE_PHONE";
var VALIDATE_ZIP_CODE	= "VALIDATE_ZIP_CODE";
var VALIDATE_NUMBER		= "VALIDATE_NUMBER";
var VALIDATE_DATE		= "VALIDATE_DATE";

var EMAIL_MASK			= "name@website.com";
var DATE_MASK			= "yyyy-mm-dd";
var ZIP_CODE_MASK		= "99999";
var PHONE_MASK			= "(999) 999-9999";

/**
 * gTLD = Generic top-level domain
 * ccTLD= Country code top-level domain
 * Both list can be found at  in http://en.wikipedia.org/wiki/List_of_Internet_top-level_domains
 */
var gTLD			= "aero|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel"
var ccTLD			= "ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw";

var empty = true;
var formObject = new Array();
var chars = new Array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
var nums = new Array(0,1,2,3,4,5,6,7,8,9);
var elementsArray = new Array();
var contentSave="<table id='formContent'>";
/**
 * This array will have the fields that need validation, and the kind of validation or validations
 */
 
var fieldToValidate = new Array();

function AjaxObject(){
	var xmlhttp=false;
 	try {
 		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
 	} catch (e) {
 		try {
 			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
 		} catch (E) {
 			xmlhttp = false;
 		}
  	}

	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
 		xmlhttp = new XMLHttpRequest();
	}
	return xmlhttp;
}

function isNumeric(sText){
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
}


function isValidID(e){
	t = e.target;
	e=e.which;
	if ( ! e )
    {
        e = event.keyCode;
    }
	e = String.fromCharCode(e);
		
		if (chars.indexOf(e) != -1) {
			return true;
		}
		if(document.getElementById("fieldName").value.length > 0){
			if (nums.indexOf(e) != -1) {
				return true;
			}
		}
		alert( "replace" );
		t.value=t.value.replace(e,"");
}


function buildSQL(_url){
	if(isFormEmpty()){
		alert("You can't build an empty form!");
		return;
	}
	
	var tableName = document.getElementById('formName').value;
	
	if(tableName.length == 0){
		alert("You need to specify a name for your form!");
		return;
	}
	if(tableName.charAt(0) == " " || isNumeric(tableName.charAt(0))){
		alert("The name of your form is not valid! The first character can't be a whitespace nor a number.");
		return;
	}
	
	var email = document.getElementById('email').value;
	if (email != "" && !validateEmail(email)){
		alert("The email address is not valid");
		return;	
	}
	var validTableName	= getValidTableName( tableName );	
	var SQL = 'CREATE TABLE IF NOT EXISTS ' + validTableName + ' (';
	//data VARCHAR(100)
	
	
	for (j = 0; j < formObject.length; j++) {
		if (formObject[j] != ""){
			SQL += formObject[j][0] + ' ' + getColumnType(formObject[j][1]) + ',';
		}
	}
	SQL = SQL.slice(0,SQL.length-1); 
	SQL += ' );';
	
	ajax = new AjaxObject();	
	url = _url+'wp-content/plugins/ows-custom-forms/classes/class.formgenerator.php?function=createDBSchema&sql='+SQL;
	
	
	if(nameTableValidate( validTableName )){
		getArrayElement();
		/*alert(contentSave);*/
		/*alert(SQL);*/
		if(contentSave != "<table id='formContent'>"){
			contentSave+="</table>";
			contentSave+=getArrayWithValidations();			
			saveFormDOM(_url,SQL,contentSave);
		}
	}else{
		alert("The name of your form is not valid!");
	}
	
}

function getValidTableName(tableName){
	var ValidChars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890';
	var modify= '';
	for (var i=0;i < tableName.length; i++ ){		
		if (ValidChars.indexOf(tableName[i]) == -1){
			modify	+=  '_';
		}else{
			modify	+=  tableName[i];
		}
	}	
	return  modify.toLowerCase();
	
}

function validateEmail( strValue) {
/************************************************
DESCRIPTION: Validates that a string contains a
  valid email pattern.

 PARAMETERS:
   strValue - String to be tested for validity

RETURNS:
   True if valid, otherwise false.

REMARKS: Accounts for email with country appended
  does not validate that email contains valid URL
  type (.com, .gov, etc.) or valid country suffix.
*************************************************/
//var objRegExp  = /(^[a-z]([a-z_\.]*)@([a-z_\.]*)([.][a-z]{3})$)|(^[a-z]([a-z_\.]*)@([a-z_\.]*)(\.aero|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$)/i;
//var objRegExp  = /(^[a-z]([a-z_\.]*)@([a-z_\.]{1,2}).(aero|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw))/i;
//var objRegExp  = /^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i
//var objRegExp  = /^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})((?:\.aero|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i
var objRegExp	= /^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+(aero|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw))$/i;
//REGULAR expression at http://www.regular-expressions.info/email.html
//var objRegExp	= "[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|"+ gTLD +"|" + ccTLD+ ")\b";

  //check for valid email
  return objRegExp.test(strValue);
}

function saveFormDOM(_url,SQL,contX){	
	// delete extra buttons in the form
	deleteExtraButtons();
	
	var content 	= document.getElementById('formDiv').innerHTML;//content to form
	var form_name 	= document.getElementById('formName').value;//name of the table
	var e_mail 		= document.getElementById('email').value;//email to send the form information 
	ajax = new AjaxObject();
	
	
	content = content.replace('<tbody>','');
	content = content.replace('</tbody>','');
	content = Url.encode(content.toString());
	
	contX = Url.encode(contX.toString());
	
	//url = 'http://127.0.0.1:8000/ows-custom-forms/classes/class.formgenerator.php?function=saveFormDOM&content='+content+'&form_name='+form_name;
	url = _url+'wp-content/plugins/ows-custom-forms/classes/class.formgenerator.php?function=saveFormDOM&form_name='+form_name+'&content='+content.toString();	
	
	
	var formSend=document.getElementById('formGenerate')
	formSend.method="post";
	formSend.innerHTML='<input id="sql" name="sql" type="hidden" value="'+SQL+'" />' +
						'<input id="form_name" name="form_name" type="hidden" value="'+form_name+'" />' +						
						'<input id="content" name="content" type="hidden" value="'+contX.toString()+'" />' +
						'<input id="email" name="email" type="hidden" value="'+e_mail+'" />' +
						'<input id="function" name="function" type="hidden" value="createDBSchema" />';
	/*alert(formSend.innerHTML);*/
	formSend.action=_url+"wp-admin/edit.php?page=options_form"
	formSend.submit();
	
	/*
	alert('FORMNAME VALUE->'+form_name+'\n'+url);	
	
	ajax.open("GET", url, true);
	
	ajax.onreadystatechange=function() {
		if (ajax.readyState==4) {
  			 alert(ajax.responseText)
  			 // reset form generator
			 resetFormGenerator();
  			 
  		}
 	}
 	ajax.send(null)
 	*/
}

function getContenFormJS(nameTable,_url){
	ajax = new AjaxObject();
	var cont="";
	var content;
	url = _url+'wp-content/plugins/ows-custom-forms/classes/class.formgenerator.php?function=getContentFormPage&nameTable='+nameTable;
	ajax.open("GET", url,true);
	ajax.onreadystatechange=function(){
		if (ajax.readyState==4) {
  			 //alert(ajax.responseText)
  			cont=ajax.responseText;
  			 //alert(conten.toString());
  			 //document.write(conten.toString());
  			cont = Url.decode(cont.toString());
  			content = document.getElementById("content");
  			content.value = content.value + cont; 
  			// return conten.toString();
			switchEditors.go('content');
  		}
 	}
 	
 	ajax.send(null)
}

function getColumnType(fieldType){
	
	if(fieldType == 'Text')
		return 'VARCHAR(255)'	
	if(fieldType == 'Number')
		return 'INT'
	if(fieldType == 'Date')
		return 'DATE'
	if(fieldType == 'Checkbox')
		return 'VARCHAR(255)'
	if(fieldType == 'Dropdown')
		return 'VARCHAR(255)';
	if(fieldType == 'Radio')
		return 'VARCHAR(255)';
	if(fieldType == 'Text Area') 
		return 'TEXT';
	if(fieldType == 'Email')
		return 'VARCHAR(255)'
	if(fieldType == 'Zipcode')
		return 'VARCHAR(255)'
	if(fieldType == 'Phone')
		return 'VARCHAR(255)'	
}

function elementExists(elementName){
	
	for(j=0;j<formObject.length;j++){
		if (formObject[j]!= "")
			if (formObject[j][0].toLowerCase() == elementName.toLowerCase()) {
				alert("The name you specified, is already in use, please select a different name.");
				return true;
		}
	}
	return false;
}

function removeElementFromMemory(elementName){
	
	for(j=0;j<formObject.length;j++){
		
		if (formObject[j]!= "")
			if(formObject[j][0].toLowerCase() == elementName.toLowerCase()) {
				formObject[j] = "";
				for(var it=0;it<elementsArray.length;it++){
					if(elementsArray[it][0].toLowerCase() == elementName.toLowerCase()){
						elementsArray.splice(it,1);
					}
				}
				return;
		}
	}
}

function addDropdownItem(itemID){

	var item = document.getElementById(itemID);
	var random_number = 0;
	var option="";
	do{
		random_number = Math.floor(Math.random()*1111);
	}while(document.getElementById('option'+random_number)!= null);
	option=prompt('Enter the Text of the Item:');
	if ( option == null || option.length <= 0  ){
		return;
	}	
	item.options[item.options.length]=new Option(option,"option"+random_number);
	
	for(var it=0;it<elementsArray.length;it++){		
		if(elementsArray[it][0] == itemID){
			elementsArray[it][4].push(new Array('<option value="'+option+'" >'+option+'</option>'));
		}
	}
	
}

function addRadioButtonItem(itemID){

	var item = document.getElementById(itemID);
	var random_number = 0;
	var option="";
	do{
		random_number = Math.floor(Math.random()*1111);
	}while(document.getElementById('option'+random_number)!= null);
	option=prompt('Enter the Text of the Item:')
	if ( option == null || option.length <= 0  ){
		return;
	}	
	item.options[item.options.length]=new Option(option,"option"+random_number)	
	for(var it=0;it<elementsArray.length;it++){		
		if(elementsArray[it][0] == itemID){
			elementsArray[it][4].push(new Array('<td align="right">'+option+'</td><td align="left"><input type="radio" group="'+itemID+'" id="'+itemID+'" name="'+itemID+'" value="'+option+'" ></td>'));
		}
	}
	
}

function addCheckBoxItem(itemID){

	var item = document.getElementById(itemID);
	var random_number = 0;
	var option="";
	do{
		random_number = Math.floor(Math.random()*1111);
	}while(document.getElementById('option'+random_number)!= null);
	option=prompt('Enter the Text of the Item:')
	if ( option == null || option.length <= 0  ){
		return;
	}	
	item.options[item.options.length]=new Option(option,"option"+random_number)	
	for(var it=0;it<elementsArray.length;it++){		
		if(elementsArray[it][0] == itemID){
			var itemIndex	= elementsArray[it][4].length;
			elementsArray[it][4].push(new Array('<td align="right">'+option+'</td><td align="left"><input type="checkbox"  id="'+itemID+itemIndex+'" name="'+itemID+itemIndex+'" value="'+option+'" ></td>'));
		}
	}
	
}

function removeDropdownItem(itemID){
	/*
	alert(elementsArray[itemID][4].length);
	for(var x=0;x<elementsArray[itemID][4].length;x++){
		alert(elementsArray[itemID][4][x]);
	}
	*/
	
	selectbox = document.getElementById(itemID);
	var i;
	for(i=selectbox.options.length-1;i>=0;i--)
	{
		if (selectbox.options[i].selected) {
			for(var it=0;it<elementsArray.length;it++){
				if(elementsArray[it][0] == itemID){
					elementsArray[it][4].splice(i,1);
				}
			}
			selectbox.remove(i);
			/*
			alert(elementsArray[itemID][4].length);
			for(var x=0;x<elementsArray[itemID][4].length;x++){
				alert(elementsArray[itemID][4][x]);
			}
			*/
			break;
		}
	}
}
function removeRadioButtonItem(itemID){	
	selectbox = document.getElementById(itemID);
	var i;
	for(i=selectbox.options.length-1;i>=0;i--)
	{
		if (selectbox.options[i].selected) {
			for(var it=0;it<elementsArray.length;it++){
				if(elementsArray[it][0] == itemID){
					elementsArray[it][4].splice(i,1);
				}
			}
			selectbox.remove(i);
			break;
		}
	}
}
function removeField(diff, fieldName){
	/*alert(diff +" - "+ fieldName);*/
	removeElementFromMemory(fieldName);
	var child = document.getElementById(diff);
	var Parent = child.parentNode;
	var grandParent = Parent.parentNode;
   	Parent.removeChild(child);
   	grandParent.removeChild(Parent);	
   	isFormEmpty();
  
}

function editField(diff, fieldName){
	
	if ( document.getElementById("EDIT_ROW_"+ diff) ){
		return;
	}
	var child = document.getElementById(diff);
	var Parent = child.parentNode;
	
	var rowParent = document.createElement("TR");
	rowParent.id	= "EDIT_ROW_" + diff;
	var tdParent = document.createElement("TD");
	
  // creates a <table> element and a <tbody> element
    var tbl     = document.createElement("table");
    var tblBody = document.createElement("tbody");
    
    
	
	/*var row = document.createElement("TR")
	row.id	= "EDIT_ROW_" + diff;
    var td1 = document.createElement("TD")
    td1.appendChild(document.createTextNode("column 1"))
    var td2 = document.createElement("TD")
    td2.appendChild (document.createTextNode("column 2"))
    row.appendChild(td1);
    row.appendChild(td2);
    */
    var rowToEdit = '<tr >'					
					+'<td align="right">'
					+'	<font color="white">'
					+'	<b>Field Type: </b>' 
					+'	</font>'
					+'</td>'
					+'<td>'
					+'	<select id ="editFieldType'+ diff +'" name="types" id="fieldType" style="width:120px" onchange="changeFieldType('+diff+',\''+fieldName+'\')">  '+ getFieldTypes +' </select>'
					+'</td>'
					+'<td  align="right">'
					+'	<font color="white">'
					+'	<b>Required field:</b>'
					+'	</font>'
					+'</td>'
					+'<td>'
					+'	<input id ="editRequired'+ diff +'" id="isRequiredField" type="checkbox" />'					
					+'</td>'
					+'<td>'  
					+'	&nbsp;&nbsp;<input type="button"  name="doneEditButton" value="Done" onclick="doneEditField('+diff+',\''+fieldName+'\');">'
					+'</td>'
				+'</tr>';
    //tblBody.appendChild(row);
    tblBody.innerHTML 	= tblBody.innerHTML +  rowToEdit;
    tbl.appendChild(tblBody);
    tdParent.appendChild(tbl);
    rowParent.appendChild(tdParent);
    
    tdParent.colSpan	= 3;
    Parent.appendChild(rowParent);
    
    var elementData	= getArrayForElement(fieldName);
    var isRequiredEditing	= document.getElementById("editRequired"+ diff);	
    isRequiredEditing.checked	= validateRequiredForElement(fieldName);
    
    var elementTypeEditing	= document.getElementById("editFieldType"+ diff);
    elementTypeEditing.value	= elementData[5];
	//var grandParent = Parent.parentNode;
   	//Parent.removeChild(child);
   	//grandParent.removeChild(Parent);	
   	//isFormEmpty();
  
}

function changeFieldType(diff, fieldName){
	var fieldType = document.getElementById('editFieldType'+diff).options[document.getElementById('editFieldType'+diff).selectedIndex].text;
	var divEditDefault = document.getElementById('divEditDefault'+diff);
	var fieldSize	= 14;
	divEditDefault.innerHTML	= null;
	var newContent	= ""; 
	if(fieldType =='Text'){
		newContent += '<input id="editDefault'+diff+'" name="'+fieldName+'" id="'+fieldName+'"  type="text" size="'+fieldSize+'" />';
		
	}
	if(fieldType == 'Text Area'){
		newContent += '<textarea id="editDefault'+diff+'" name="'+fieldName+'" id="'+fieldName+'" cols="30" rows="5" />';		
	}			
	if(fieldType =='Number'){
		newContent += '<input id="editDefault'+diff+'" name="'+fieldName+'" id="'+fieldName+'"  type="text" size="'+fieldSize+'" />';
	}
	if(fieldType =='Date'){		
		newContent += '<input id="editDefault'+diff+'" name="'+fieldName+'" id="'+fieldName+'"  type="text" size="'+fieldSize+'" />';
	}
	if(fieldType =='Checkbox'){
		//newContent += '<input id="editDefault'+diff+'" name="'+fieldName+'" id="'+fieldName+'"  type="checkbox" checked="true"/>';
		newContent += '<select  name="'+fieldName+'" id="'+fieldName+'" /></select><input type="button" name="addItem" value="Add Item" onclick=addCheckBoxItem("'+fieldName+'")><input type="button" name="removeItem" value="Remove Item" onclick=removeDropdownItem("'+fieldName+'")>';
	}
	if(fieldType =='Dropdown'){		
		newContent += '<select  name="'+fieldName+'" id="'+fieldName+'" /></select><input type="button" name="addItem" value="Add Item" onclick=addDropdownItem("'+fieldName+'")><input type="button" name="removeItem" value="Remove Item" onclick=removeDropdownItem("'+fieldName+'")>';
	}
	
	if(fieldType =='Radio'){		
		newContent += '<select  name="'+fieldName+'" id="'+fieldName+'" /></select><input type="button" name="addItem" value="Add Item" onclick=addRadioButtonItem("'+fieldName+'")><input type="button" name="removeItem" value="Remove Item" onclick=removeRadioButtonItem("'+fieldName+'")>';
	}
	
	if(fieldType =='Email'){		
		newContent += '<input id="editDefault'+diff+'" name="'+fieldName+'" id="'+fieldName+'"  type="text" size="'+fieldSize+'" />';		
	}
	if(fieldType =='Zipcode'){		
		newContent += '<input id="editDefault'+diff+'" name="'+fieldName+'" id="'+fieldName+'"  type="text" size="'+fieldSize+'" />';		
	}
	if(fieldType =='Phone'){		
		newContent += '<input id="editDefault'+diff+'" name="'+fieldName+'" id="'+fieldName+'"  type="text" size="'+fieldSize+'" />';
	}
	divEditDefault.innerHTML	= newContent;
}

function getFieldTypes(){		
	types = '<option>Text</option>'
			+'<option>Text Area</option>'
			+'<option>Number</option>'
			+'<option>Date</option>'
			+'<option>Checkbox</option>'
			+'<option>Radio</option>'
			+'<option>Dropdown</option>'				
			+'<option>Email</option>'
			+'<option>Zipcode</option>'
			+'<option>Phone</option>';
	return  types;
}
function validateRequiredForElement(fieldName){	
	for(key in fieldToValidate){
		if( key == 'CLCPin_array'){
			continue;
		}		
		if ( key == fieldName ){
			for( i in  fieldToValidate[key] ){
				if ( i == 'CLCPin_array'){
					continue;
				}
				if ( fieldToValidate[key][i]	== VALIDATE_REQUIRED ){
					return true;			
				}
			}
		}
	}
	return false;
}
function doneEditField(diff, elementName){
	var elementPosition;
	for(j=0;j<formObject.length;j++){
		
		if (formObject[j]!= "")
			if(formObject[j][0].toLowerCase() == elementName.toLowerCase()) {				
				for(var it=0;it<elementsArray.length;it++){
					if(elementsArray[it][0].toLowerCase() == elementName.toLowerCase()){
						//return elementsArray[it];
						elementPosition	= it;
						break;
					}
				}				
		}
	}
	
	var fieldType = document.getElementById('editFieldType'+diff).options[document.getElementById('editFieldType'+diff).selectedIndex].text;
	var isRequiredField = document.getElementById('editRequired'+diff).checked;
	var fieldDefaultValue;
	if ( fieldType	== "Dropdown" || fieldType	== "Radio" || fieldType	== "Checkbox"){
		fieldDefaultValue	= "";
	} else{
	 	fieldDefaultValue = document.getElementById('editDefault'+diff).value;
	}
	
	
	var objCLCPin_array	= Array.prototype.CLCPin_array; 
		Array.prototype.CLCPin_array = null;		
		var validations	 = new Array();
	if ( isRequiredField  ){
				if( fieldType != 'Checkbox' ){
					validations.push(VALIDATE_REQUIRED);
				}
		}
	
		if(fieldType =='Text'){			
			elementsArray[elementPosition][2]	= fieldDefaultValue;
			elementsArray[elementPosition][3]	= "text";
			elementsArray[elementPosition][4]	= new Array();
			elementsArray[elementPosition][5]	= "Text";			
		}
		if(fieldType == 'Text Area'){
			elementsArray[elementPosition][2]	= fieldDefaultValue;
			elementsArray[elementPosition][3]	= "Text Area";
			elementsArray[elementPosition][4]	= new Array();
			elementsArray[elementPosition][5]	= "Text Area";
		}			
		if(fieldType =='Number'){
			elementsArray[elementPosition][2]	= fieldDefaultValue;
			elementsArray[elementPosition][3]	= "text";
			elementsArray[elementPosition][4]	= new Array();
			elementsArray[elementPosition][5]	= "Number";
			validations.push(VALIDATE_NUMBER);
		}
		if(fieldType =='Date'){
			elementsArray[elementPosition][2]	= fieldDefaultValue;
			elementsArray[elementPosition][3]	= "text";
			elementsArray[elementPosition][4]	= new Array();
			elementsArray[elementPosition][5]	= "Date";
			validations.push(VALIDATE_DATE);
		}
		if(fieldType =='Checkbox'){
			elementsArray[elementPosition][2]	= fieldDefaultValue;
			elementsArray[elementPosition][3]	= "checkbox";
			//elementsArray[elementPosition][4]	= new Array();
			elementsArray[elementPosition][5]	= "Checkbox";
		}
		if(fieldType =='Dropdown'){
			elementsArray[elementPosition][2]	= fieldDefaultValue;
			elementsArray[elementPosition][3]	= "Dropdown";			
			elementsArray[elementPosition][5]	= "Dropdown";			
		}
		
		if(fieldType =='Radio'){
			elementsArray[elementPosition][2]	= fieldDefaultValue;
			elementsArray[elementPosition][3]	= "Radio";			
			elementsArray[elementPosition][5]	= "Radio";
		}
		
		if(fieldType =='Email'){			
			elementsArray[elementPosition][3]	= "text";
			elementsArray[elementPosition][4]	= new Array();
			elementsArray[elementPosition][5]	= "Email";
			
			validations.push(VALIDATE_EMAIL);
		}
		if(fieldType =='Zipcode'){			
			elementsArray[elementPosition][3]	= "text";
			elementsArray[elementPosition][4]	= new Array();
			elementsArray[elementPosition][5]	= "Zipcode";
			validations.push(VALIDATE_ZIP_CODE);
		}
		if(fieldType =='Phone'){			
			elementsArray[elementPosition][3]	= "text";
			elementsArray[elementPosition][4]	= new Array();
			elementsArray[elementPosition][5]	= "Phone";
			validations.push(VALIDATE_PHONE);
		}
		if ( validations.length > 0 ){		
			fieldToValidate[elementName] = validations;
		}else{
			fieldToValidate[elementName] = new Array();
		}
		Array.prototype.CLCPin_array = objCLCPin_array;
		
		for(j=0;j<formObject.length;j++){
			if (formObject[j]!= "")
				if (formObject[j][0].toLowerCase() == elementName.toLowerCase()) {
					formObject[j][1]	= fieldType;
			}
		}
		
	var child = document.getElementById("EDIT_ROW_" + diff);	
	var Parent = child.parentNode;
	var grandParent = Parent.parentNode;
   	Parent.removeChild(child);
} 

function getArrayForElement(elementName){
	for(j=0;j<formObject.length;j++){
		
		if (formObject[j]!= "")
			if(formObject[j][0].toLowerCase() == elementName.toLowerCase()) {				
				for(var it=0;it<elementsArray.length;it++){
					if(elementsArray[it][0].toLowerCase() == elementName.toLowerCase()){
						return elementsArray[it];
					}
				}				
		}
	}
	return null;
}
function updateElementFromMemory(elementName){	
	var elementArray = getArrayForElement(elementName);
}

function addField(){
	if(empty){
		document.getElementById('formDiv').innerHTML = "";
		empty = false;
	}
	/*alert(elementsArray.length);*/
	var fieldName = getValidFieldName(document.getElementById('fieldText').value);
	var fieldText = document.getElementById('fieldText').value;	
	var isRequiredField = document.getElementById('isRequiredField').checked;
	var fieldType = document.getElementById('fieldType').options[document.getElementById('fieldType').selectedIndex].text;
	var fieldSize = '';
	var fieldDefaultValue = document.getElementById('fieldDefaultValue').value;
	var currentContent = document.getElementById('formDiv').innerHTML;
		
	if(elementExists(fieldName))
		return;

	if (fieldName.length == 0) {
		alert("The name of the field is not valid. It can't be blank, it can't start with a white space, and it can't start with a number.");
		isFormEmpty();
		return;
	}
	if(fieldName.charAt(0)==" " || isNumeric(fieldName.charAt(0))){
		alert("The name of the field is not valid. It can't be blank, it can't start with a white space, and it can't start with a number.");
		isFormEmpty();
		return;
	}
	var newContent = "";
	/*
	var newContent = currentContent;
	
	newContent = newContent.replace('<form>','');
	newContent = newContent.replace('</form>','');
	newContent = newContent.replace('<table id="theForm">','');
	newContent = newContent.replace('</table>','');
	*/
	var random_numer = 0;
	do{
		random_number = Math.floor(Math.random()*1111);
	}while(document.getElementById(random_number)!= null);
	
	/*alert('field name->'+fieldName);
	alert('field text->'+fieldText)
	alert('field type->'+fieldType);*/
		/******************ADDING VALIDATIONS*/
		var objCLCPin_array	= Array.prototype.CLCPin_array; 
		Array.prototype.CLCPin_array = null;		
		var validations	 = new Array();
		if ( isRequiredField  ){
				if( fieldType != 'Checkbox' ){
					validations.push(VALIDATE_REQUIRED);
				}
		}
	
		if(fieldType =='Text'){
			newContent += '<tr id="'+random_number+'"><td><font color="#000000">'+fieldText+':</td><td> <div id = "divEditDefault'+random_number+'"><input id="editDefault'+random_number+'" name="'+fieldName+'" id="'+fieldName+'"  type="text" size="'+fieldSize+'" value="'+fieldDefaultValue+'"/></div></td>';
			addArrayElement(fieldName,fieldText,fieldDefaultValue,"text",new Array(), "Text");
		}
		if(fieldType == 'Text Area'){
			newContent += '<tr id="'+random_number+'"><td><font color="#000000">'+fieldText+':</td><td> <div id = "divEditDefault'+random_number+'"><textarea id="editDefault'+random_number+'" name="'+fieldName+'" id="'+fieldName+'" cols="30" rows="5" >'+fieldDefaultValue+'</textarea></div></td>';
			addArrayElement(fieldName,fieldText,fieldDefaultValue,"Text Area",new Array(), "Text Area");
		}			
		if(fieldType =='Number'){			
			addArrayElement(fieldName,fieldText,fieldDefaultValue,"text",new Array(), "Number");
			newContent += '<tr id="'+random_number+'"><td>'+fieldText+':</td><td><div id = "divEditDefault'+random_number+'"> <input id="editDefault'+random_number+'" name="'+fieldName+'" id="'+fieldName+'"  type="text" size="'+fieldSize+'" value="'+fieldDefaultValue+'"/></div></td>';
			validations.push(VALIDATE_NUMBER);
		}
		if(fieldType =='Date'){
			addArrayElement(fieldName,fieldText,fieldDefaultValue,"text",new Array(),"Date");
			newContent += '<tr id="'+random_number+'"><td>'+fieldText+':</td><td> <div id = "divEditDefault'+random_number+'"><input id="editDefault'+random_number+'" name="'+fieldName+'" id="'+fieldName+'"  type="text" size="'+fieldSize+'" value="'+fieldDefaultValue+'"/></div></td>';
			validations.push(VALIDATE_DATE);
		}
		if(fieldType =='Checkbox'){
			addArrayElement(fieldName,fieldText,'1',"checkbox",new Array(),"Checkbox");
			//newContent += '<tr id="'+random_number+'"><td>'+fieldText+'</div></td><td><div id = "divEditDefault'+random_number+'"><input id="editDefault'+random_number+'"  name="'+fieldName+'" id="'+fieldName+'"  type="checkbox" checked="'+fieldDefaultValue+'" /></td>';
			newContent += '<tr id="'+random_number+'"><td>'+fieldText+': </td><td><div id = "divEditDefault'+random_number+'"><select  name="'+fieldName+'" id="'+fieldName+'" /></select><input type="button" name="addItem" value="Add Item" onclick=addCheckBoxItem("'+fieldName+'")><input type="button" name="removeItem" value="Remove Item" onclick=removeDropdownItem("'+fieldName+'")></div></td>';
		}
		if(fieldType =='Dropdown'){
			addArrayElement(fieldName,fieldText,fieldDefaultValue,"Dropdown",new Array(),"Dropdown");
			newContent += '<tr id="'+random_number+'"><td>'+fieldText+': </td><td><div id = "divEditDefault'+random_number+'"><select  name="'+fieldName+'" id="'+fieldName+'" /></select><input type="button" name="addItem" value="Add Item" onclick=addDropdownItem("'+fieldName+'")><input type="button" name="removeItem" value="Remove Item" onclick=removeDropdownItem("'+fieldName+'")></div></td>';
		}
		
		if(fieldType =='Radio'){
			addArrayElement(fieldName,fieldText,fieldDefaultValue,"Radio",new Array(),"Radio");
			newContent += '<tr id="'+random_number+'"><td>'+fieldText+': </td><td><div id = "divEditDefault'+random_number+'"><select name="'+fieldName+'" id="'+fieldName+'" /></select><input type="button" name="addItem" value="Add Item" onclick=addRadioButtonItem("'+fieldName+'")><input type="button" name="removeItem" value="Remove Item" onclick=removeRadioButtonItem("'+fieldName+'")></div></td>';
		}
		
		if(fieldType =='Email'){			
			newContent += '<tr id="'+random_number+'"><td><font color="#000000">'+fieldText+':</td><td> <div id = "divEditDefault'+random_number+'"><input id="editDefault'+random_number+'" name="'+fieldName+'" id="'+fieldName+'"  type="text" size="'+fieldSize+'" value="'+fieldDefaultValue+'"/></td></div>';
			addArrayElement(fieldName,fieldText,fieldDefaultValue,"text",new Array(), "Email");
			validations.push(VALIDATE_EMAIL);
		}
		if(fieldType =='Zipcode'){			
			newContent += '<tr id="'+random_number+'"><td><font color="#000000">'+fieldText+':</td><td> <div id = "divEditDefault'+random_number+'"><input id="editDefault'+random_number+'" name="'+fieldName+'" id="'+fieldName+'"  type="text" size="'+fieldSize+'" value="'+fieldDefaultValue+'"/></div></td>';
			addArrayElement(fieldName,fieldText,fieldDefaultValue,"text",new Array(), "Zipcode");
			validations.push(VALIDATE_ZIP_CODE);
		}
		if(fieldType =='Phone'){			
			newContent += '<tr id="'+random_number+'"><td><font color="#000000">'+fieldText+':</td><td> <div id = "divEditDefault'+random_number+'"><input id="editDefault'+random_number+'" name="'+fieldName+'" id="'+fieldName+'"  type="text" size="'+fieldSize+'" value="'+fieldDefaultValue+'"/></div></td>';
			addArrayElement(fieldName,fieldText,fieldDefaultValue,"text",new Array(), "Phone");
			validations.push(VALIDATE_PHONE);
		}
		if ( validations.length > 0 ){		
			fieldToValidate[fieldName] = validations;
		}
		Array.prototype.CLCPin_array = objCLCPin_array;
		formObject.push(new Array(fieldName, fieldType));
		
		var _formDiv = document.getElementById('formDiv');
		if(_formDiv){
			//html = "<form><table id=\"theForm\">"+newContent+"<td><input type=\"button\"  name=\"removeButton\" value=\"Remove\" onclick=removeField(\""+random_number+"\",\""+fieldName+"\");></td></tr></table></form>";
			html = "<table id=\"theForm\">"+newContent+"<td><input type=\"button\"  name=\"removeButton\" value=\"Remove\" onclick=\"removeField(\'"+random_number+"\',\'"+fieldName+"\');\">&nbsp;<input type=\"button\"  name=\"editButton\" value=\"Edit\" onclick=\"editField(\'"+random_number+"\',\'"+fieldName+"\');\"></td></tr></table>";
			
			_formDiv.innerHTML = _formDiv.innerHTML+html;
			/*alert(_formDiv.innerHTML);*/
		}
		
		//document.getElementById('formDiv').innerHTML = '<form><table id="theForm">'+newContent+'<td><input type="button"  name="removeButton" value="Remove" onclick=removeField("'+random_number+'","'+fieldName+'");></td></tr></table></form>';
		
		clearFormData(false);
	}
/**
 * Returns a valid field name to create in database
 */
function getValidFieldName(fieldName){	
	var ValidChars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890';
	var modify= '';
	for (var i=0;i < fieldName.length; i++ ){		
		if (ValidChars.indexOf(fieldName[i]) == -1){
			modify	+=  '_';
		}else{
			modify	+=  fieldName[i];
		}
	}	
	return  modify.toLowerCase().substring(0,63);
}

// clear the Data on the Form Generator
function clearFormData(clearAll){

	document.getElementById('fieldName').value = "";
	document.getElementById('fieldText').value = "";	
	document.getElementById('isRequiredField').checked = false;	
	document.getElementById('fieldType').options[0].selected = true;
	document.getElementById('fieldDefaultValue').value="";			
	
	if(clearAll){
		document.getElementById('formName').value = "";
		document.getElementById('email').value = "";
		//document.getElementById('hexValue_0').value = "0039B3";
	}
	
	document.getElementById('fieldText').focus();
}

function resetFormGenerator(){
	var theForm = document.getElementById('theForm');
	
	if(theForm != null){		
		theForm = null;
		var mainContainer = document.getElementById('formDiv');
		mainContainer.innerHTML = "Your form has no components. Use controls Below to add components.";
		// reset the color to div 'formDiv'
		//formDivColor();
		
		clearFormData(true)
		
		//document.getElementById('hexValue_0').value = '0039B3';
		//alert('Your form has been saved');
		
		formObject = new Array();
		elementsArray = new Array();
		contentSave="<table id='formContent'>";
			
	}
}

// init the color to formDiv
function formDivColor(){
	_whichField = "hexValue_0";
	CLCPHandler = function(_hex) {
	document.getElementById(_whichField).value = _hex;
	document.getElementById("formDiv").style.background = ("#" + _hex);
	}
	
	_CLCPdisplay = "none"; // Values: "none", "block". Default "none"
	_CLCPisDraggable = true; // Values: true, false. Default true
	_CLCPposition = "absolute"; // Values: "absolute", "relative". Default "absolute"
	_CLCPinitHex = "0039B3"; // Values: Any valid hex value. Default "ffffff"
	CLCPinitPicker();
}
		
function updateFontColor(){
	
	var rgx = new RegExp("^#?([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]|[0-9]){3})?$");
	var result1 = rgx.exec(document.getElementById('formDiv').innerHTML);
	alert(result1);
	
}
	

function isFormEmpty(){

	/*var container = document.getElementById('theForm');*/

	if( parseInt(elementsArray.length) == 0 ){
	//if(container == null){
			/*alert(elementsArray.length+" -1");*/
			var mainContainer = document.getElementById('formDiv');
			mainContainer.innerHTML = "Your form has no components. Use controls Below to add components.";
			empty = true;
			return true;
	}/*
	else if(container.hasChildNodes() == false){
			alert(elementsArray.length+" -2");
			var mainContainer = container.parentNode;
			mainContainer.removeChild(container);
	 		mainContainer.innerHTML = "<font color='gray'><i>Your form has no components. Use controls Below to add components.</i></font>";
			empty = true;
			return true;
    }*/
	return false;
}

function deleteExtraButtons(){
  
  var parentElement='';
  
  // delete "Remove" Buttons
  var removeElement = document.getElementsByName('removeButton');
  
	for(var i=0; i<removeElement.length; i++){  		
		parentElement = removeElement[0].parentNode;
		parentElement.removeChild(removeElement[0]);  
	}
	
	if(removeElement.length == 1){
		parentElement = removeElement[0].parentNode;
		parentElement.removeChild(removeElement[0]);	
	}
	
	// delete "Add Item" buttons	
	removeElement = document.getElementsByName('addItem');
  
	for(var i=0; i<removeElement.length; i++){  		
		parentElement = removeElement[0].parentNode;
		parentElement.removeChild(removeElement[0]);  
	}
	
	if(removeElement.length == 1){
		parentElement = removeElement[0].parentNode;
		parentElement.removeChild(removeElement[0]);	
	}

	// delete "Remove Item" buttons	
	removeElement = document.getElementsByName('removeItem');
  
	for(var i=0; i<removeElement.length; i++){  		
		parentElement = removeElement[0].parentNode;
		parentElement.removeChild(removeElement[0]);  
	}
	
	if(removeElement.length == 1){
		parentElement = removeElement[0].parentNode;
		parentElement.removeChild(removeElement[0]);	
	}
	
}


/***URL ENCODE AND DECODE WITH JS***/
var Url = {

	// public method for url encoding
	encode : function (string) {
		return escape(this._utf8_encode(string));
	},

	// public method for url decoding
	decode : function (string) {
		return this._utf8_decode(unescape(string));
	},

	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";

		for (var n = 0; n < string.length; n++) {

			var c = string.charCodeAt(n);

			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}

		}

		return utftext;
	},

	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;

		while ( i < utftext.length ) {

			c = utftext.charCodeAt(i);

			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}

		}

		return string;
	}

}

function addArrayElement(id,fieldName,value,typeInput,options, fieldType){
	//elementsArray[id]=new Array(id,fieldName,value,typeInput,options);
	/*alert(elementsArray.length);*/
	
	elementsArray.push(new Array(id,fieldName,value,typeInput,options, fieldType));
	/*
	if(elementsArray.length == 0){
		elementsArray = new Array(id,fieldName,value,typeInput,options);
	}else{
		elementsArray[elementsArray.length]= new Array(id,fieldName,value,typeInput,options);
	}
	*/	
}

function getArrayElement(){
	var optValue="";
	/*alert(elementsArray.length);*/
	for(var id=0;id<(elementsArray.length);id++){
		if ( elementsArray[id][3]  == "Radio"){
			contentSave+='<tr><td colspan="2"  align="left">'+elementsArray[id][1]+'</td></tr>';
			for(var op=0;op<elementsArray[id][4].length;op++){					
					contentSave+='<tr>'+elementsArray[id][4][op]+'</tr>';
			}
			continue;
		}
		if ( elementsArray[id][3]  == "checkbox"){
			contentSave+='<tr><td colspan="2"  align="left">'+elementsArray[id][1]+'</td></tr>';
			var op;
			for(op=0;op<elementsArray[id][4].length;op++){					
					contentSave+='<tr>'+elementsArray[id][4][op]+'</tr>';
			}
			contentSave+='<input id="TOTAL_CB_'+elementsArray[id][0]+'" name="TOTAL_CB_'+elementsArray[id][0]+'" type="hidden" value="'+op+'" />';
			continue;
		}
		contentSave+='<tr><td align="right">'+elementsArray[id][1]+'</td>';
		switch(elementsArray[id][3]){
			case "Dropdown":
				optValue	= "";
				for(var op=0;op<elementsArray[id][4].length;op++){
					optValue+=elementsArray[id][4][op];
				}
				contentSave+='<td align="left"><select name="'+elementsArray[id][0]+'" id="'+elementsArray[id][0]+'" />'+optValue+'</select></td></tr>'
			
			break;			
			case"Text Area":
				contentSave += '<td align="left"><textarea name="'+elementsArray[id][0]+'" id="'+elementsArray[id][0]+'" cols="30" rows="5" >'+elementsArray[id][2]+'</textarea></td></tr>';
			break;
			case"checkbox":
				contentSave+='<td align="left"><input type="'+elementsArray[id][3]+'" id="'+elementsArray[id][0]+'" name="'+elementsArray[id][0]+'" value="1" checked /></td></tr>'
			break;
			default:
				var defaultValue = "";
				if ( elementsArray[id][2].length == 0 ){
					defaultValue	= getMaskForFielType(elementsArray[id][5]); 
				}
				contentSave+='<td align="left"> <input type="'+elementsArray[id][3]+'" id="'+elementsArray[id][0]+'" name="'+elementsArray[id][0]+'" value="'+defaultValue+'" /></td></tr>'
			break;
		}
	}
}
function getMaskForFielType(fieldType){
	switch(fieldType){
		case "Date":
			return DATE_MASK;
		break;		
		case "Email":
			return EMAIL_MASK;
		break;
		case "Zipcode":
			return ZIP_CODE_MASK;
		break;
		case "Phone":
			return PHONE_MASK;
		break;
		default:
			return "";
		break
	}
}
function getArrayWithValidations(){
	var arrayJS="<script>"
				+ "var objCLCPin_array	= Array.prototype.CLCPin_array;" 
				+"Array.prototype.CLCPin_array	= null;"				
	var validations	= "";
	arrayJS+="var fieldToValidate = new Array();";	
	for(key in fieldToValidate){
		if( key == 'CLCPin_array'){
			continue;
		}		
		arrayJS+="fieldToValidate['"+key+"']= new Array();";
		for( i in  fieldToValidate[key] ){
			if ( i == 'CLCPin_array'){
				continue;
			}						
			arrayJS+="fieldToValidate['"+key+"'].push(" + fieldToValidate[key][i] +");";			
		}
		//arrayJS+="fieldToValidate['"+key+"'] = validations";		
	}
	arrayJS	+= "Array.prototype.CLCPin_array = objCLCPin_array";
	arrayJS	+= "</script>";
	return  arrayJS;
}


function nameTableValidate(tableName){
	var exp = new RegExp('^[a-zA-Z_][a-zA-Z0-9_]*$');
	/*alert(exp.test(tableName));*/
	return exp.test(tableName);

}
