CustomPage.prototype.generic_name;


function CustomPage (_generic_name)
{
	this.generic_name = _generic_name;
};
CustomPage.prototype.hideAllEmpty = function ()
{
	var divCollection = document.getElementsByTagName("div");
	var index  = 1;
	for(var i=0;i<divCollection.length;i++)
	{
		if ( divCollection[i].id== this.generic_name+'_'+index ) 
		{
			if ( document.getElementById(this.generic_name+"_info_"+index).innerHTML=='')
			{
				divCollection[i].style.visibility = 'hidden';
			}
			index ++;
		}
	}
};
CustomPage.prototype.inference = function ()
{
	this.hideAllEmpty();
	var divCollection = document.getElementsByTagName("div");
	var index  = 1;
	for(var i=0;i<divCollection.length;i++)
	{
		if ( divCollection[i].id== this.generic_name+'_'+index ) 
		{
			if ( document.getElementById(this.generic_name+"_info_"+index).innerHTML=='')
			{
				divCollection[i].style.visibility = 'visible';
				return;
			}
			else divCollection[i].style.visibility = 'visible';
			index ++;
		}
	}

};
CustomPage.prototype.clearComponent = function (index)
{
	var divCollection = document.getElementsByTagName("div");
	for(var i=0;i<divCollection.length;i++)
	{
		if ( divCollection[i].id== this.generic_name+'_'+index ) 
		{
			document.getElementById(this.generic_name+"_preview_"+index).innerHTML = "" ;
			document.getElementById(this.generic_name+"_info_"+index).innerHTML = "" ;
			document.getElementById(this.generic_name+"_component_type_"+index).innerHTML = "";
			document.getElementById(this.generic_name+"_component_name_"+index).innerHTML = "";
			document.getElementById(this.generic_name+"_component_id_"+index).innerHTML = "";
			return;
		}
	}
};
CustomPage.prototype.componentExists = function (component_name)
{
	var divCollection = document.getElementsByTagName("div");
	for(var i=0;i<divCollection.length;i++)
	{
		if ( divCollection[i].id == component_name )  return true;
	}
	return false;
};
CustomPage.prototype.deattachComponent = function (index)
{
	this.clearComponent(index);
	for (var i = index; ; i++)
	{
		var component_name = this.generic_name+'_'+i;
		if (this.componentExists(component_name))
		{
			var next_i = i+1;
			var next_component_name = this.generic_name+'_'+next_i;
			if (this.componentExists(next_component_name))
			{
				document.getElementById(this.generic_name+"_preview_"+i).innerHTML = document.getElementById(this.generic_name+"_preview_"+next_i).innerHTML ;
				document.getElementById(this.generic_name+"_info_"+i).innerHTML = document.getElementById(this.generic_name+"_info_"+next_i).innerHTML;
				document.getElementById(this.generic_name+"_component_type_"+i).innerHTML = document.getElementById(this.generic_name+"_component_type_"+next_i).innerHTML;
				document.getElementById(this.generic_name+"_component_name_"+i).innerHTML = document.getElementById(this.generic_name+"_component_name_"+next_i).innerHTML;
				document.getElementById(this.generic_name+"_component_id_"+i).innerHTML = document.getElementById(this.generic_name+"_component_id_"+next_i).innerHTML;
				this.clearComponent(next_i);
			}
			else
			{
				this.clearComponent(i);
				this.inference();
				return;
			}
		}
		else
		{
			this.inference();
			return;
		}
	}
};
CustomPage.prototype.attachComponent = function (index,component_type,component_id,box_type,free_text,js_plugin,free_text_flag,js_plugin_flag,render)
{
	if (render == 0 )
	{
		var preview_div = this.generic_name+"_preview_"+index;
		if ( free_text_flag )
		{
			document.getElementById(preview_div).innerHTML = free_text;
			document.getElementById(this.generic_name+"_info_"+index).innerHTML = "FREE_HTML" ;
			document.getElementById(this.generic_name+"_component_type_"+index).innerHTML = "FREE_HTML";
		//	document.getElementById(this.generic_name+"_component_name_"+index).innerHTML = component_name;
			document.getElementById(this.generic_name+"_component_id_"+index).innerHTML = 0;
		} 
		else if ( js_plugin_flag )
		{
		}
		else
		{
			document.getElementById(this.generic_name+"_info_"+index).innerHTML = component_type ;
			document.getElementById(this.generic_name+"_component_type_"+index).innerHTML = component_type;
		//	document.getElementById(this.generic_name+"_component_name_"+index).innerHTML = component_name;
			document.getElementById(this.generic_name+"_component_id_"+index).innerHTML = component_id;
			syncServePostStreamRequestWithJSParser("/component_gen.php","resource_id=CUSTOM_PAGE_COMPONENT_RENDER_DISPATCHER&tag_type=PHP_FILE&component_id="+component_id+"&component_type="+component_type+"&box_type="+box_type+"&convert_js_tags_to_cwe_tags=true&enclose_with_div=1&generate_sql_handlers=1",preview_div);
		}
		this.inference();
	}
	else
	{
		var preview_div = this.generic_name+"_preview_"+index;
		if ( free_text_flag ) document.getElementById(preview_div).innerHTML = free_text;
		else
		{
			syncServePostStreamRequestWithJSParser("/component_gen.php","resource_id=CUSTOM_PAGE_COMPONENT_RENDER_DISPATCHER&tag_type=PHP_FILE&component_id="+component_id+"&component_type="+component_type+"&box_type="+box_type+"&convert_js_tags_to_cwe_tags=true&enclose_with_div=1&generate_sql_handlers=1",preview_div);
		}
	}
};

CustomPage.prototype.pack = function (custom_page_id)
{
	var post_string = "";
	var divCollection = document.getElementsByTagName("div");
	var index  = 1;
	for(var i=0;i<divCollection.length;i++)
	{
		if ( divCollection[i].id== this.generic_name+'_'+index ) 
		{
			if ( document.getElementById(this.generic_name+"_info_"+index).innerHTML!='')
			{
				if (post_string != '') post_string += '&';
				post_string+= this.generic_name+"_component_type_"+index+"="+	document.getElementById(this.generic_name+"_component_type_"+index).innerHTML;
				post_string+= "&"+this.generic_name+"_component_id_"+index+"="+	document.getElementById(this.generic_name+"_component_id_"+index).innerHTML;
				if ( document.getElementById(this.generic_name+"_component_type_"+index).innerHTML == 'FREE_HTML' )
				{
					post_string+= "&"+this.generic_name+"_preview_"+index+"="+
					encodeURIComponent(document.getElementById(this.generic_name+"_preview_"+index).innerHTML);
				}
				index++;
			}
		}
	}
	if ( post_string != '' )
		post_string= "custom_page_component_name[]="+this.generic_name+"&"+post_string;
	return post_string;
};

