/** 
* @file AdminBlocks.js
* Common Javascript functions
*
* @author PortaMx - Portal Management Extension
* @author Copyright 2008-2009 by PortaMx - http://portamx.com
* @Version: 0.971
* @Date: 09.11.2009
*/
 
/// show the language assigned title input
function setTitleLang(elm)
{
	var idx = elm.selectedIndex;
	var show = elm.options[idx].value;
	var hide = document.getElementById("curlang").value;
	document.getElementById(hide).style.display = "none";
	document.getElementById(show).style.display = "";
	document.getElementById("curlang").value = show;
}

/// set the title align
function setAlign(align)
{
	var old_active = "img" + document.getElementById("titlealign").value;
	var new_active = "img" + align;
	document.getElementById("titlealign").value = align;
	document.getElementById(old_active).style.backgroundColor = "";
	document.getElementById(new_active).style.backgroundColor = "#e02000";
}

/// show the title icon if not empty
function setTitleIcon(elm)
{
	var idx = elm.selectedIndex;
	var idx_val = elm.options[idx].value;
	var oldico = document.getElementById("pmxttlicon").src;
	var url = oldico.substring(0, oldico.lastIndexOf("/")+1) + (idx_val == "" ? "none.gif" : idx_val);
	document.getElementById("pmxttlicon").src = url;
}

/// check if the header can collapse
function checkCollapse(elm)
{
	var idx = elm.selectedIndex;
	var elm_name = elm.name;
	var idx_val = elm.options[idx].value;
	if(elm_name == "config[visuals][header]")
	{
		if(idx_val == "none")
			document.getElementById("collapse").disabled = true;
		else
			document.getElementById("collapse").disabled = false;
	}
}

/// check if the maxheigt field enabled
function checkMaxHeight(elm)
{
	var idx = elm.selectedIndex;
	var idx_val = elm.options[idx].value;
	if(idx_val == "")
	{
		document.getElementById("maxheight").style.backgroundColor = "#8898b0";
		document.getElementById("maxheight").disabled = true;
	}
	else
	{
		document.getElementById("maxheight").style.backgroundColor = "";
		document.getElementById("maxheight").disabled = false;
	}
}

// check can head, top, bottom, foot sizeinput enabled
function checkSizeInput(elm, side)
{
	var idx = elm.selectedIndex;
	document.getElementById("pmx_size_" + side).disabled = idx == 0;
	document.getElementById("pmx_size_" + side).style.backgroundColor = (idx == 0 ? "#8898b0" : "");
}

/// check if cache enabled
function checkCache(elm)
{
	if(elm.checked == false)
	{
		document.getElementById("cacheval").style.backgroundColor = "#8898b0";
		document.getElementById("cacheval").disabled = true;
	}
	else
	{
		document.getElementById("cacheval").style.backgroundColor = "";
		document.getElementById("cacheval").disabled = false;
	}
}

/// check if pmxcache enabled
function checkPmxCache(elm, val)
{
	if(elm.checked == false)
	{
		document.getElementById("cacheval").style.backgroundColor = "#8898b0";
		document.getElementById("cacheval").value = 0;
		document.getElementById("cache_value").value = 0;
		
	}
	else
	{
		document.getElementById("cacheval").style.backgroundColor = "";
		document.getElementById("cacheval").value = val;
		document.getElementById("cache_value").value = 1;
	}
}

/// Toggle the move display
function ToggleMove(id)
{
	var opts = document.getElementById("options"+id).style.display;
	var move = document.getElementById("move"+id).style.display;
	document.getElementById("options"+id).style.display = move;
	document.getElementById("move"+id).style.display = opts;
}

/// Toggle the clone display
function ToggleClone(id)
{
	var opts = document.getElementById("options"+id).style.display;
	var move = document.getElementById("clone"+id).style.display;
	document.getElementById("options"+id).style.display = move;
	document.getElementById("clone"+id).style.display = opts;
}

/// Toggle Detailed filelist
function ToggleFileList(elm)
{
	var show = document.getElementById(elm).style.display;
	document.getElementById(elm).style.display = (show == "" ? "none" : "");
}
 
/// side changed
function setBlockSide(elm, id)
{
	var idx = elm.selectedIndex;
	var elm_value = elm.value;
	FormFunc("move_block", id+","+elm_value);
}

/// title align change
function ChangeTileAlign(elm, id)
{
	if(elm.src.search(/left/) != -1)
		var newalign = "center";
	else
	if(elm.src.search(/center/) != -1)
		var newalign = "right";
	else
	if(elm.src.search(/right/) != -1)
		var newalign = "left";

	FormFunc("chg_titlealign", id+","+newalign);
}

/// clone block to side
function setBlockClone(elm, id)
{
	var idx = elm.selectedIndex;
	if(idx != 0)
	{
		var elm_value = elm.value;
		FormFunc("block_clone", id+","+elm_value);
	}
	else
		ToggleClone(id);
}


/// numeric field check
function check_numeric(elm, multchr)
{
	var elm_value = elm.value;
	if(elm_value.length == 0)
		return;

	if(multchr)
		var Check = /([\*0-9])+/;
	else
		var Check = /([0-9])+/;
	if(!elm_value.match(Check) || elm_value.match(Check)[0] != elm_value)
		elm.value = (elm_value.match(Check) ? elm_value.match(Check)[0] : ""); 
}

/// Toggle all checkboxes
function ToggleCheckbox(elm, what, init)
{
	if(what == "xsel")
		var sides = new Array("head", "left", "right", "top", "bottom", "foot");										// xbars
	else
		var sides = new Array("head", "left", "right", "top", "bottom", "foot", "front", "pages");	// Panel moderate
	var ischeck = false;
	var ico = elm.src;
	var url = ico.substring(0, ico.lastIndexOf("/")+1);
	for(var i = 0; i < sides.length; i++)
		ischeck = (document.getElementById(what +  sides[i]).checked == true ? true : ischeck);
	if(init == 0)
	{
		ischeck = !ischeck;
		for(var i = 0; i < sides.length; i++)
			document.getElementById(what + sides[i]).checked = ischeck;
	}
	elm.src = url + (ischeck ? "bullet_minus.gif" : "bullet_plus.gif");
}

/// Toggle Help messages
function Toggle_help(elm)
{
	var stat = document.getElementById(elm).style.display;
	document.getElementById(elm).style.display = (stat == "none" ? "" : "none");
}

/// Showe Help messages
function Show_help(elm)
{
  var match = /(\w.+)/;
  match.exec(document.getElementById(elm).className);
	document.getElementById(elm).className = (RegExp.$1 == "info_frame" ? "info_text plainbox" : "info_frame");
}

/// common function on forms
function FormFunc(Func, Val, Msg)
{
	if(Msg)
	{
		if(!confirm(Msg) == true)
		return;
	}
	StartProgress();
	PmX_RichEdit_Submit();
	document.getElementById("common_field").name = Func;
	document.getElementById("common_field").value = Val;
	if(Func == "edblock_ccsfilechg")
	{
		document.getElementById("hidden_curve").value = 0;
		document.getElementById("check_curve").value = 0;
	}
	document.getElementById("pmx_form").submit();
}

/// dummy function for progressbar
function StartProgress(){};

/// dummy function for bbc_script block
function PmX_RichEdit_Submit(){};

/// the multiple selection show/hide toggle object
function MultiSelect(action_name)
{
	// check Browser type
	this.isMSIE = navigator.appVersion.indexOf("MSIE") > 0;

	// setup Timer vars
	this.timerClicks = this.isMSIE ? 600 : 400;
	
	// the action array
	this.actioOpts = new Array();
	this.action = action_name;
	this.elm = document.getElementById(action_name);

	// self init
	this.init();
}

/// called by element change
MultiSelect.prototype.changed = function()
{
	var firstidx = 0;
	var isChg = -1;

	for(var idx = firstidx; idx < this.elm.length; idx++)
	{
		if(this.actioOpts[0]["stat"][idx] != this.elm.options[idx].selected)
		{
			this.actioOpts[0]["stat"][idx] = this.elm.options[idx].selected;
			if(this.actioOpts[0]["chng"][idx] > 0)
				isChg = idx;
			this.actioOpts[0]["chng"][idx]++;
		}
	}

	if(isChg != -1)
	{
		this.elm.options[isChg].selected = false;
		var dat = this.elm.options[isChg].value;
		var txt = this.elm.options[isChg].text;
		var dpos = dat.indexOf("=") +1;
		this.elm.options[isChg].value = dat.substr(0, dpos) + (dat.substr(dpos, 1) == "1" ? "0" : "1");
		this.elm.options[isChg].text = (dat.substr(dpos,1)) == "1" ? "^"+txt : txt.substr(1);
		// only for FF 2
		var selheight = document.getElementById(this.action).offsetHeight;
		document.getElementById(this.action).style.top = ((selheight / (this.elm.length -1)) * isChg) + "px";
		this.elm.options[isChg].selected = true;
		document.getElementById(this.action).style.top = "0px";
	}
	else
		setTimeout("stopTimer(" +this.action+ ")", this.timerClicks);
}

/// the init func
MultiSelect.prototype.init = function()
{
	this.actioOpts[0] = new Object();
	this.actioOpts[0]["stat"] = new Array();
	this.actioOpts[0]["chng"] = new Array();
	this.setupArray();
}

/// setup the array
MultiSelect.prototype.setupArray = function()
{
	for(var idx = 0; idx < this.elm.length; idx++)
	{
		this.actioOpts[0]["stat"][idx] = this.elm.options[idx].selected;
		this.actioOpts[0]["chng"][idx] = 0;
	}
}

function stopTimer(action) {eval(action).setupArray();}
function changed(action) {eval(action).changed();}

