// --------------------------------------------------
// code copyright Lightmaker 2008
// --------------------------------------------------
// inputbox.js
// version: 1.4.1
// created: 8 June 2006
// updated: 19 June 2008
// creator: Julian Wheaton
// lightmaker.com
// --------------------------------------------------


var day_array=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
var month_array=new Array('January','February','March','April','May','June','July','August','September','October','November','December');


// inputbox_change...
function inputbox_change(input_obj,fieldtype_str,option_str)
{
	if (typeof(input_obj)=="string")
	{
		input_obj=getfield(input_obj);
	}
	var name_str=input_obj.name;

	switch (fieldtype_str)
	{
		case "date":
		case "datetime":
		case "time":
			var mindate=(arguments.length>=3) ? new Date(arguments[2]) : null;
			var maxdate=(arguments.length>=4) ? new Date(arguments[3]) : null;
			
			var on_str=name_str.substr(name_str.length-1);
			name_str=name_str.substr(0,name_str.length-1);
			var val="";
			var v_obj=getfield(name_str);
			if (fieldtype_str.indexOf("date")!=-1)
			{
				var d_obj=getfield(name_str+"d");
				var m_obj=getfield(name_str+"m");
				var y_obj=getfield(name_str+"y");
				
				var d=getvalue(d_obj);
				var m=getvalue(m_obj);
				var y=getvalue(y_obj);
				
				if (m=="-")
				{
					m=0;
				}
				else if (m=="+")
				{
					m=13;
				}
				
				if (d=="-")
				{
					d=31;
					if (m.length>0)
					{
						m--;
					}
				}
				else if (d=="+")
				{
					d=1;
					if (m.length>0)
					{
						m++;
					}
				}
				
				var maxdays=(isNumber(m) && isNumber(y)) ? daysinmonth(m-1,y) : ((isNumber(m)) ? daysinmonth(m-1,2000) : 31);
	
				if (isNumber(d))
				{
					if (d>maxdays)
					{
						d=maxdays;
					}
				}
				if (isNumber(m))
				{
					if (m<1)
					{
						m=12;
						if (y.length>0)
						{
							y--;
						}
					}
					else if (m>12)
					{
						m=1;
						if (y.length>0)
						{
							y++;
						}
					}
				}
				if (isNumber(y))
				{
					var mmy=minmax(y_obj);
					if (y<mmy.min)
					{
						y=mmy.min;
					}
					else if (y>mmy.max)
					{
						y=mmy.max;
					}
				}
				
				
				if (isNumber(d) && isNumber(m) && isNumber(y))
				{
					var thedate=new Date(y,m-1,d);
					if (mindate!=null)
					{
						if (thedate<mindate)
						{
							d=mindate.getDate();
							m=mindate.getMonth()+1;
							y=mindate.getFullYear();
						}
					}
					if (maxdate!=null)
					{
						if (thedate>maxdate)
						{
							d=maxdate.getDate();
							m=maxdate.getMonth()+1;
							y=maxdate.getFullYear();
						}
					}
				
					var maxdays=(isNumber(m) && isNumber(y)) ? daysinmonth(m-1,y) : ((isNumber(m)) ? daysinmonth(m-1,2000) : 31);
				}
			
				if (!isNumber(m))
				{
					if (m_obj.options[1].value=="-")
					{
						m_obj.options[1]=null;
					}
					if (m_obj.options[m_obj.options.length-1].value=="+")
					{
						m_obj.options[m_obj.options.length-1]=null;
					}
				}
				else
				{
					if (m_obj.options[1].value!="-")
					{
						while (m_obj.options.length>1)
						{
							m_obj.options[m_obj.options.length-1]=null;
						}
						m_obj.options[m_obj.options.length]=new Option(" ","-");
						for (var i=0; i<month_array.length; i++)
						{
							m_obj.options[m_obj.options.length]=new Option(month_array[i],i+1);
						}
					}
					if (m_obj.options[m_obj.options.length-1].value!="+")
					{
						m_obj.options[m_obj.options.length]=new Option(" ","+");
					}
				}
				
				if (!isNumber(d))
				{
					if (d_obj.options[1].value=="-")
					{
						d_obj.options[1]=null;
					}
					if (d_obj.options[d_obj.options.length-1].value=="+")
					{
						d_obj.options[d_obj.options.length-1]=null;
					}
				}
				else
				{
					if (d_obj.options[1].value!="-")
					{
						while (d_obj.options.length>1)
						{
							d_obj.options[d_obj.options.length-1]=null;
						}
						d_obj.options[d_obj.options.length]=new Option(" ","-");
						for (var i=1; i<=28; i++)
						{
							d_obj.options[d_obj.options.length]=new Option(i,i);
						}
					}
				}
				
				if (minmax(d_obj).max!=maxdays)
				{
					if (d_obj.options[d_obj.options.length-1].value=="+")
					{
						d_obj.options[d_obj.options.length-1]=null;
					}
					for (var i=Math.floor(d_obj.options[d_obj.options.length-1].value)+1; i<=maxdays; i++)
					{
						d_obj.options[d_obj.options.length]=new Option(i,i);
					}
					while (maxdays<Math.floor(d_obj.options[d_obj.options.length-1].value))
					{
						d_obj.options[d_obj.options.length-1]=null;
					}
				}
				if (isNumber(d))
				{
					if (d_obj.options[d_obj.options.length-1].value!="+")
					{
						d_obj.options[d_obj.options.length]=new Option(" ","+");
					}
				}
				
				setvalue(d_obj,d);
				setvalue(m_obj,m);
				setvalue(y_obj,y);
				if (isNumber(d) && isNumber(m) && isNumber(y))
				{
					val=d+" "+month_array[m-1]+" "+y;
				}
				
			}
			
			if (fieldtype_str.indexOf("date")==-1 || val.length>0)
			{
				if (fieldtype_str.indexOf("time")!=-1)
				{
					var h_obj=getfield(name_str+"h");
					var n_obj=getfield(name_str+"n");
					
					var h=getvalue(h_obj);
					var n=getvalue(n_obj);
					
					if (n=="-")
					{
						n="55";
						if (h.length>0)
						{
							h--;
						}
					}
					else if (n=="+")
					{
						n="0";
						if (h.length>0)
						{
							h++;
						}
					}
					
					if (!isNumber(n))
					{
						if (n_obj.options[1].value=="-")
						{
							n_obj.options[1]=null;
						}
						if (n_obj.options[n_obj.options.length-1].value=="+")
						{
							n_obj.options[n_obj.options.length-1]=null;
						}
					}
					else
					{
						if (n_obj.options[1].value!="-")
						{
							while (n_obj.options.length>1)
							{
								n_obj.options[n_obj.options.length-1]=null;
							}
							n_obj.options[n_obj.options.length]=new Option(" ","-");
							for (var i=0; i<60; i+=5)
							{
								n_obj.options[n_obj.options.length]=new Option("00".substr(0,2-String(i).length)+i,i);
							}
						}
						if (n_obj.options[n_obj.options.length-1].value!="+")
						{
							n_obj.options[n_obj.options.length]=new Option(" ","+");
						}
					}
					
					setvalue(h_obj,h);
					setvalue(n_obj,n);
					if (isNumber(h) && isNumber(n))
					{
						val+=((val.length==0) ? "" : " ")+h+":"+n;
					}
				}
			}
			
			setvalue(v_obj,val);

			inputbox_calendar(name_str,true);
				
			break;
		
		
		case "create":
			var value_str=getvalue(input_obj);
			var text_obj=input_obj.form[name_str+"text"];
			if (value_str=="create")
			{
				text_obj.disabled=false;
				document.getElementById(name_str+"create").style.display="";
				text_obj.focus();
				text_obj.select();
			}
			else
			{
				text_obj.disabled=true;
				document.getElementById(name_str+"create").style.display="none";
			}
			break;
		
		case "url":
			var value_str=getvalue(input_obj);
			if (value_str!="")
			{
				if (value_str.indexOf(".")==-1 && value_str.indexOf("/")==-1)
				{
					value_str="www."+value_str+".com/";
				}
				if (value_str.indexOf("://")==-1)
				{
					value_str="http://"+value_str;
				}
			}
			setvalue(input_obj,value_str);
			break;
			
		case "number":
			var value_str=getvalue(input_obj);
			if (value_str.length>0)
			{
				if (option_str=="0.00")
				{
					value_str=Math.round(value_str*100);
					if (isNaN(value_str))
					{
						value_str="";
					}
					else
					{
						value_str=value_str/100;
					}
					setvalue(input_obj,value_str);
				}
				else
				{
					value_str=Math.round(value_str);
					if (isNaN(value_str))
					{
						value_str="";
					}
					setvalue(input_obj,value_str);
				}
			}
			break;
			
		case "colour":
			var value_str=getvalue(input_obj);
			try
			{
				document[name_str+"_img"].style.backgroundColor=value_str;
			}
			catch(e)
			{
				
			}
			
			break;
	}
}


function inputbox_calendar(name_str,redraw)
{
	var o=document.getElementById(name_str+"_calendar");
	if (!o)
	{
		return;
	}
	if (!redraw)
	{
		o.style.display=(o.style.display=="none") ? "" : "none";
	}
	if (o.style.display=="none")
	{
		return;
	}
	
	var td=new Date();

	var m=getvalue(name_str+"m");
	var y=getvalue(name_str+"y");
	
	var yearrange=minmax(getfield(name_str+"y"));
	
	m=(isNumber(m)) ? m-1 : td.getMonth();
	y=(isNumber(y)) ? y : td.getFullYear();
	
	currentd=getvalue(name_str+"d");
	currentm=m;
	currenty=y;

	var str='';
	var start=new Date(y,m,1).getDay();
	var class_str="present";
	
	m--;
	if (m==-1)
	{
		y--;
		m=11;
	}
	var days=daysinmonth(m,y);
	if (start>=3)
	{
		d=days+1-start;
	}
	else
	{
		d=days+1-start-7;
	}


	
	str+='<table cellspacing="0" cellpadding="0" border="0" class="inputbox_calendar" onDragstart="return false;" onSelectstart="return false;">';
	str+='<tr>';
	for (var x=0; x<7; x++)
	{
		str+='<th>'+day_array[x].substr(0,1)+'</th>';
	}
	str+='</tr>';
	for (var a=0; a<6; a++)
	{
		str+='<tr>';
		for (var b=0; b<7; b++)
		{
			if (d>days)
			{
				d=1;
				m++;
				if (m>11)
				{
					m=0;
					y++;
				}
				var days=daysinmonth(m,y);
			}
			if (d==currentd && m==currentm && y==currenty)
			{
				class_str="selected";
			}
			else if (d==td.getDate() && m==td.getMonth() && y==td.getFullYear())
			{
				class_str="today";
			}
			else if (m==currentm && y==currenty)
			{
				class_str="date";
			}
			else
			{
				class_str="other";
			}
			str+='<td class="'+class_str+'">';
			if (y>=yearrange.min && y<=yearrange.max)
			{
				str+='<a href="#" onDblClick="inputbox_calendar(\''+name_str+'\');" onclick="inputbox_calendar_select(\''+name_str+'\','+y+','+m+','+d+');return false;">';
			}
			str+=d;
			if (y>=yearrange.min && y<=yearrange.max)
			{
				str+='</a>';
			}
			str+='</td>';
			d++;
		}
		str+='</tr>';
	}
	str+='</table>';

	str+='<a href="#" onclick="inputbox_calendar_select(\''+name_str+'\','+td.getFullYear()+','+td.getMonth()+','+td.getDate()+');return false;">Today</a> | <a href="#" onclick="inputbox_calendar_select(\''+name_str+'\');return false;">No Date</a>';
	
	str='<table cellspacing="0" cellpadding="0" border="0" class="detail"><tr><td>'+str+'</td></tr></table>';
	o.innerHTML=str;
}


// m -> [0..11]
function inputbox_calendar_select(name_str,y,m,d)
{
	setvalue(name_str+"y",y);
	inputbox_change(name_str+"y","date");
	setvalue(name_str+"m",m+1);
	inputbox_change(name_str+"m","date");
	setvalue(name_str+"d",d);
	inputbox_change(name_str+"d","date");
}



function inputbox_colour(name_str)
{
	var o=document.getElementById(name_str+"_picker");
	if (!o)
	{
		return;
	}
	o.style.display=(o.style.display=="none") ? "" : "none";
	if (o.innerHTML!="")
	{
		return;
	}
	
	var hx=new Array("00","33","66","99","CC","FF");
	var rgb1=new Array("000000","333333","666666","999999","CCCCCC","FFFFFF","FF0000","FFFF00","00FF00","00FFFF","0000FF","FF00FF");
	var str='<table cellspacing="0" cellpadding="0" border="0" class="inputbox_colour" onDragstart="return false;" onSelectstart="return false;">';
	
	var r=0;
	var g=0;
	var b=0;
	
	for (var i=0; i < 12; i++)
	{
		str+='<tr>';
		str+='<td bgcolor="'+rgb1[i]+'"><img onDblClick="inputbox_colour(\''+name_str+'\');" onMousedown="inputbox_colour_select(\''+name_str+'\',\''+rgb1[i]+'\');" alt="'+rgb1[i]+'" src="'+rootpath+'images/_.gif" width="7" height="7" border="0"></td>';
		
		for (var c=0; c < 18; c++)
		{
			str+='<td bgcolor="'+hx[r]+hx[g]+hx[b]+'"><img onDblClick="inputbox_colour(\''+name_str+'\');" onMousedown="inputbox_colour_select(\''+name_str+'\',\''+hx[r]+hx[g]+hx[b]+'\');" alt="'+hx[r]+hx[g]+hx[b]+'" src="'+rootpath+'images/_.gif" width="7" height="7" border="0"></td>';
			
			g++;
			if (g == 6)
			{
				g=0;
				r++;
				if (r == 6)
				{
					r=0;
				}
			}
		}
		r=0;
		if (i > 4)
		{
			r=3;
		}
		b++;
		if (b == 6)
		{
			b=0;
		}
		str+='</tr>';
	}
	str+='</table>';
	str='<table cellspacing="0" cellpadding="0" border="0" class="detail"><tr><td>'+str+'</td></tr></table>';
	o.innerHTML=str;
}

function inputbox_colour_select(name_str,rgb)
{
	setvalue(name_str,rgb);
	inputbox_change(name_str,"colour");
}





// Setup Char Counter
function inputbox_counter(textname_str,limit_int)
{
	var obj=getfield(textname_str);
	obj.textname=textname_str;
	obj.countername=textname_str+"_counter";
	obj.limit=limit_int;

	obj.counter=document.getElementById(obj.countername);
	obj.showcounter=(obj.counter) ? true : false;

	obj.onkeyup=inputbox_charcounter;
	obj.onkeydown=inputbox_charcounter;
	obj.onkeypress=inputbox_charcounter;
	obj.onchange=inputbox_charcounter;
	obj.onpaste=inputbox_charcounter;

	obj.onchange();
}


// Char Counter
function inputbox_charcounter()
{
	var obj=getfield(this.textname);
	var size=Math.ceil(new String(obj.value).length);
	if (this.showcounter)
	{
		if (size>this.limit)
		{
			this.counter.style.color="red";
		}
		else
		{
			this.counter.style.color="";
		}
		this.counter.innerText=this.limit-size;
	}
}







function inputbox_supercheckbox(name_str,reset_bln)
{
	var input_obj=getfield(name_str);
	var bg_obj=document.getElementById(name_str+"_bg");
	var img_obj=document.getElementById(name_str+"_img");
	
	if (!input_obj)
	{
		return;
	}
	var state=input_obj.value;
	var imgstate="";
	var bgstate="";
	
	if (reset_bln)
	{
		if (img_obj)
		{
			if (inputbox_superchecked && typeof(inputbox_superchecked)=="function" && inputbox_superchecked(name_str))
			{
				imgstate="";
			}
			else
			{
				imgstate="0";
			}
		}
	}
	else
	{
		if (state=="1")
		{
			imgstate="0";
			bgstate="0";
		}
		else
		{
			imgstate="1";
			bgstate="1";
		}
	}
	if (img_obj)
	{
		img_obj.className="jjcheckbox"+imgstate;
	}
	if (bg_obj)
	{
		bg_obj.className="jjcheckbox"+bgstate;
	}
	input_obj.value=bgstate;
}


function inputbox_superchecked(name_str)
{
	return true;
}


function inputbox_freestyle(name_str)
{
	if (!document.all)
	{
		return;
	}
	var input_obj=getfield(name_str);
	var height=input_obj.offsetHeight;
	
	var o=document.getElementById(name_str+"_nonie");
	o.style.display="none";
	var o=document.getElementById(name_str+"_ie");
	o.style.display="";
	var tool_obj=document.getElementById(name_str+"_tool");
	var f=document.getElementById(name_str+"_frame");
	var w=window[name_str+"_win"];
	
	w.document.body.style.fontFamily="verdana";
	w.document.body.style.fontSize="11px";
	
	if (f)
	{
		f.style.height=height+"px";
	}
	
	if (w && input_obj && tool_obj)
	{
		w.document.body.innerHTML=getvalue(input_obj);
		w.document.body.contentEditable=true;
		
		form_obj=input_obj;
		while (form_obj.parentElement)
		{
			if (form_obj.tagName=="FORM")
			{
				break;
			}
			form_obj=form_obj.parentElement;
		}
		if (form_obj.tagName!="FORM")
		{
			return;
		}
		
		addevent(form_obj,"submit",inputbox_freestyle_update,[name_str]);

		
		var toolbar_obj=new inputbox_freestyle_toolbar();
		toolbar_obj.add("mode","Swap Mode");
		toolbar_obj.add();
		toolbar_obj.add("foregroundcolour","Text Colour","colour");
		toolbar_obj.add("backgroundcolour","Highlight Colour","colour");
		toolbar_obj.add();
		toolbar_obj.add("bold","Bold");
		toolbar_obj.add("italic","Italic");
		toolbar_obj.add("underline","Underline");
		toolbar_obj.add();
		toolbar_obj.add("hyperlink","Hyperlink");
		toolbar_obj.add();
		toolbar_obj.add("bulletlist","Bullet list");
		toolbar_obj.add("numberlist","Number list");
		toolbar_obj.add("decreaseindent","Decrease Indent");
		toolbar_obj.add("increaseindent","Increase Indent");
		toolbar_obj.add();
		toolbar_obj.add("align","Alignment");
			toolbar_obj.addsub("alignleft","Left");
			toolbar_obj.addsub("aligncentre","Centre");
			toolbar_obj.addsub("alignright","Right");
			toolbar_obj.addsub("alignjustify","Justify");
		toolbar_obj.add();
		toolbar_obj.add("remove","Remove Formatting");
		
		var str='<table cellspacing="0" cellpadding="0" border="0" class="inputbox_freestyle"><tr>';
		
		for (var i=0; i<toolbar_obj.item_array.length; i++)
		{
			if (toolbar_obj.item_array[i].name.length==0)
			{
				str+='<td>&nbsp;</td>';
			}
			else
			{
				str+='<td><a href="#" onclick="inputbox_freestyle_tool(\''+name_str+'\',\''+toolbar_obj.item_array[i].name+'\');return false;"><img src="'+rootpath+'images/freestyle/'+toolbar_obj.item_array[i].name+'.gif" border="0" alt="'+toolbar_obj.item_array[i].label+'"></a>';
				
				if (toolbar_obj.item_array[i].sub_array.length>0)
				{
					str+='<div style="position:relative; display:none;"><div style="position:absolute;"><table>';
					for (var a=0; a<toolbar_obj.item_array[i].sub_array.length; a++)
					{
						str+='<tr><td><a href="#" onclick="inputbox_freestyle_tool(\''+name_str+'\',\''+toolbar_obj.item_array[i].sub_array[a].name+'\');return false;"><img src="'+rootpath+'images/freestyle/'+toolbar_obj.item_array[i].sub_array[a].name+'.gif" border="0" alt="'+toolbar_obj.item_array[i].sub_array[a].label+'" width="22" height="22" /></a></td></tr>';
					}
					str+='</table></div></div>';
				}
				
				str+='</td>';
			}
		}
		
		str+='</tr></table>';
		
		str='<table cellspacing="0" cellpadding="0" border="0" class="detail"><tr><td>'+str+'</td></tr></table>';
		
		tool_obj.innerHTML=str;
		tool_obj.style.display="";
	}
}


function inputbox_freestyle_toolbar()
{
	this.item_array=new Array();
	this.add=function(name_str,label_str,type_str)
	{
		var o=new Object();
		if (name_str==null)
		{
			o.name="";
		}
		else
		{
			o.name=name_str;
		}
		o.label=label_str;
		o.type=(type_str==null) ? "" : type_str;
		o.sub_array=new Array();
		this.item_array.push(o);
	}
	this.addsub=function(name_str,label_str)
	{
		var o=new Object();
		if (name_str==null)
		{
			o.name="";
		}
		else
		{
			o.name=name_str;
		}
		o.label=label_str;
		this.item_array[this.item_array.length-1].sub_array.push(o);
	}
}



function inputbox_freestyle_update(name_str)
{
	if (!document.all)
	{
		return;
	}
	var input_obj=getfield(name_str);
	var w=window[name_str+"_win"];
	
	setvalue(input_obj,w.document.body.innerHTML);
}


function inputbox_freestyle_tool(name_str,tool_str)
{
	if (!document.all)
	{
		return;
	}
	var input_obj=getfield(name_str);
	var w=window[name_str+"_win"];
	
	w.focus();
	var doc=w.document;
	var sel=doc.selection.createRange();
	switch (tool_str)
	{
		case 'fgcolour':
			if (sel.text==""){break;}
			sel.execCommand('ForeColor',false,val);
			dropshowhide('fgc');
			break;

		case 'bgcolour':
			if (sel.text==""){break;}
			sel.execCommand('BackColor',false,val);
			dropshowhide('bgc');
			break;

		case 'selectall':
			sel.execCommand('SelectAll');
			break;

		case 'bold':
			sel.execCommand('Bold',true,'');
			break;

		case 'italic':
			sel.execCommand('Italic',true,'');
			break;

		case 'underline':
			sel.execCommand('Underline',true,'');
			break;

		case 'br':
			sel.pasteHTML("<br />");
			break;

		case 'hr':
			sel.pasteHTML("<hr />");
			break;

		case 'undo':
			sel.execCommand('Undo');
			break;

		case 'redo':
			sel.execCommand('Redo');
			break;

		case 'cut':
			sel.execCommand('Cut',true,'');
			break;

		case 'copy':
			sel.execCommand('Copy',true,'');
			break;

		case 'paste':
			sel.execCommand('Paste');
			break;

		case 'hyperlink':
			sel.execCommand('CreateLink',true);
			break;

		case 'nohyperlink':
			sel.execCommand('Unlink');
			break;

		case 'remove':
			sel.execCommand('RemoveFormat');
			break;

		case 'alignleft':
			sel.execCommand('JustifyLeft');
			break;

		case 'alignright':
			sel.execCommand('JustifyRight');
			break;

		case 'aligncentre':
			sel.execCommand('JustifyCenter');
			break;

		case 'alignjustify':
			sel.execCommand('JustifyFull');
			break;

		case 'numberlist':
			sel.execCommand('InsertOrderedList');
			break;
			
		case 'bulletlist':
			sel.execCommand('InsertUnOrderedList');
			break;
				
		case 'increaseindent':
			sel.execCommand('Indent');
			break;
			
		case 'decreaseindent':
			sel.execCommand('Outdent');
			break;
	}
	w.focus();
	sel.select();
}

inputbox_resource_name="";
inputbox_image_name="";
inputbox_album_name="";


function imagebank_enlarge(fn,w,h)
{
	popup(rootpath+"asset/imagebank/enlarge.cfm?fn="+fn,"win"+fn.substr(0,fn.indexOf(".")-1),w,h,"");
}


function inputbox_image_enlarge(name_str)
{
	var fn=document.getElementById(name_str+"_filename").value;
	var w=document.getElementById(name_str+"_width").value;
	var h=document.getElementById(name_str+"_height").value;
	imagebank_enlarge(fn,w,h);
}

function inputbox_image_browse(name_str)
{
	inputbox_image_name=name_str;
	popup(rootpath+"asset/imagebank/browse.cfm?name="+escape(name_str),"win"+name_str,600,750,"scrollbars,resizable");
}

function inputbox_image_select(name_str,tokenguid,fn,w,h)
{
	name_str=(name_str.length==0) ? inputbox_image_name : name_str;
	if (name_str.length==0)
	{
		return;
	}
	if (tokenguid==null)
	{
		setvalue(name_str,"");
		document.getElementById(name_str+"_image").style.display="none";
		document.getElementById(name_str+"_noimage").style.display="none";
	}
	else
	{
		setvalue(name_str,tokenguid);
		document.getElementById(name_str+"_img").src=rootpath+'imagebank/50x50/'+fn;
		document.getElementById(name_str+"_filename").value=fn;
		document.getElementById(name_str+"_width").value=w;
		document.getElementById(name_str+"_height").value=h;
		document.getElementById(name_str+"_image").style.display="";
		document.getElementById(name_str+"_noimage").style.display="";
	}
}

function inputbox_image_over(name_str)
{
	var o=document.getElementById(name_str+"_preview");
	var fn=document.getElementById(name_str+"_filename").value;
	o.style.position="absolute";
	o.style.backgroundColor="#000000";
	o.style.padding="2px";
	o.innerHTML='<img src="'+rootpath+'imagebank/large/'+fn+'" border="0" />';
	inputbox_image_move(name_str);
	o.style.display="";
}

function inputbox_image_out(name_str)
{
	var o=document.getElementById(name_str+"_preview");
	o.style.display="none";
}

function inputbox_image_move(name_str)
{
	var o=document.getElementById(name_str+"_preview");
	o.style.pixelLeft=event.clientX+10;
	o.style.pixelTop=event.clientY-10;
}


function inputbox_asset_browse(name_str)
{
	popup(rootpath+"asset/assetbank/?name="+escape(name_str),"win"+name_str,600,750,"scrollbars,resizable");
}

function inputbox_asset_view(fn,w,h)
{
	w=(w==null || w=="") ? 800 : Math.round(w)+40;
	h=(h==null || h=="") ? 600 : Math.round(h)+30;
	popup(rootpath+"../"+fn,"",w,h,"scrollbars,resizable");
}

function inputbox_asset_select(name_str,fn)
{
	if (name_str.length==0)
	{
		return;
	}
	if (fn==null)
	{
		setvalue(name_str,"");
	}
	else
	{
		setvalue(name_str,fn);
	}
}


function inputbox_album_browse(name_str)
{
	inputbox_album_name=name_str;
	popup(rootpath+"asset/album/browse.cfm?name="+escape(name_str),"win"+name_str,600,750,"scrollbars,resizable");
}


function inputbox_album_select(name_str,tokenguid,fn)
{
	name_str=(name_str.length==0) ? inputbox_album_name : name_str;
	if (name_str.length==0)
	{
		return;
	}
	if (tokenguid==null)
	{
		setvalue(name_str,"");
		document.getElementById(name_str+"_text").style.display="none";
		document.getElementById(name_str+"_noalbum").style.display="none";
	}
	else
	{
		setvalue(name_str,tokenguid);
		document.getElementById(name_str+"_text").innerHTML=fn;
		document.getElementById(name_str+"_text").style.display="";
		document.getElementById(name_str+"_noalbum").style.display="";
	}
}




function inputbox_resource_browse(name_str,filter,width,height)
{
	inputbox_resource_name=name_str;
	var more_str="name="+escape(name_str);
	more_str+=(filter==null) ? "" : "&filter="+escape(filter);
	more_str+=(width==null) ? "" : "&width="+escape(width);
	more_str+=(height==null) ? "" : "&height="+escape(height);
	popup(rootpath+"resource/browse/?"+more_str,"win"+name_str,800,750,"scrollbars,resizable");
}

function inputbox_resource_select(name_str,tokenguid,filepath,icon,resourcename,info)
{
	name_str=(name_str.length==0) ? inputbox_resource_name : name_str;
	if (name_str.length==0)
	{
		return;
	}
	if (tokenguid==null)
	{
		setvalue(name_str,"");
		document.getElementById(name_str+"_preview").style.display="none";
		document.getElementById(name_str+"_noresource").style.display="none";
	}
	else
	{
		setvalue(name_str,tokenguid);
		document.getElementById(name_str+"_preview").innerHTML='<a href="' + rootpath + filepath + '" target="_blank"><img src="' + rootpath + icon + '" border="0" alt="" /><br />' + resourcename + '</a>'+((info!=null) ? "<br />"+info : "");
//		document.getElementById(name_str+"_filename").value=fn;
//		document.getElementById(name_str+"_width").value=w;
//		document.getElementById(name_str+"_height").value=h;
		document.getElementById(name_str+"_preview").style.display="";
		document.getElementById(name_str+"_noresource").style.display="";
	}
}


function inputbox_filter(f)
{
	var date_array=new Array();
	for (var i=0; i<f.length; i++)
	{
		if (f[i].type=="hidden")
		{
			date_array.push(f[i].name);
		}
	}
	for (var i=0; i<f.length; i++)
	{
		for (var a=0; a<date_array.length; a++)
		{
			if (f[i].name.substr(0,f[i].name.length-1)==date_array[a])
			{
				f[i].disabled=true;
			}
		}
	}
}

// --------------------------------------------------
function addevent(obj,evt,func,arg_array)
{
	var oldfunc=obj["on"+evt];
	if (typeof(oldfunction)=="function")
	{
		obj["on"+evt]=func;
	}
	else
	{
		obj["on"+evt]=function()
		{
			func.apply(this,arg_array);
			return oldfunc();
		}
	}
}


function getfield(name_str)
{
	for (var a=0; a<document.forms.length; a++)
	{
		for (var b=0; b<document.forms[a].length; b++)
		{
			if (document.forms[a][b].name==name_str)
			{
				return document.forms[a][b];
			}
		}
	}
	return false;
}


function getvalue(o)
{
	if (typeof(o)=="string")
	{
		o=getfield(o);
	}
	if (!o)
	{
		return;
	}
	return o.value;
}


function gettext(o)
{
	if (typeof(o)=="string")
	{
		o=getfield(o);
	}
	if (!o)
	{
		return;
	}
	if (o.options)
	{
		for (var i=0; i<o.options.length; i++)
		{
			if (o.options[i].selected)
			{
				return o.options[i].text;
			}
		}
	}
	return o.value;
}


function setvalue(o,value_str)
{
	if (typeof(o)=="string")
	{
		o=getfield(o);
	}
	if (!o)
	{
		return;
	}
	switch (o.type)
	{
		case "select-one":
			var idx=0;
			for (var i=0; i<o.options.length; i++)
			{
				if (o.options[i].value==value_str)
				{
					idx=i;
					break;
				}
			}
			o.selectedIndex=idx;
			break;
		default:
			o.value=value_str;
	}
}

function isNumber(n)
{
	var s=String(n);
	
	return ((s.length>0) && !isNaN(Math.floor(s)));
}


function minmax(obj)
{
	var o=new Object();
	o.min=null;
	o.max=null;
	for (var i=0; i<obj.options.length; i++)
	{
		if (isNumber(obj.options[i].value))
		{
			o.min=(o.min==null) ? obj.options[i].value : Math.min(o.min,obj.options[i].value);
			o.max=(o.max==null) ? obj.options[i].value : Math.max(o.max,obj.options[i].value);
		}
	}
	return o;
}

// m_int -> [0..11]
function daysinmonth(m_int,y_int)
{
	return Math.round((new Date(new Date(y_int,m_int+1,1).valueOf()-new Date(y_int,m_int,1).valueOf()).valueOf())/1000/60/60/24);
}
// --------------------------------------------------



// --------------------------------------------------
// Checkbox has been ticked:
// Select All = <input type="checkbox" name="id" value="" onclick="tick(this,true);" />
// Normal = <input type="checkbox" name="id" value="" onclick="tick(this);" />
// --------------------------------------------------
function tick(tick_obj,select_bln)
{
	var f_array=document.forms[tick_obj.form.name];
	var n_str=tick_obj.name;
	if (select_bln==true)
	{
		for (var i_int=0; i_int<f_array.length; i_int++)
		{
			if (f_array[i_int].name==n_str)
			{
				f_array[i_int].checked=tick_obj.checked;
			}
		}
	}
	else
	{
		var all_bln=true;
		for (var i_int=0; i_int<f_array.length; i_int++)
		{
			if (f_array[i_int].name==n_str && f_array[i_int].value!="" && f_array[i_int].checked==false)
			{
				all_bln=false;
			}
		}
		for (var i_int=0; i_int<f_array.length; i_int++)
		{
			if (f_array[i_int].name==n_str && f_array[i_int].value=="")
			{
				f_array[i_int].checked=all_bln;
			}
		}
	}
	
	var o=document.getElementById("tickcounter");
	if (o)
	{
		o.innerHTML=tickcount(tick_obj.form.name,tick_obj.name);
	}
}


// --------------------------------------------------
// Count number of checkbox that have been ticked
// --------------------------------------------------
function tickcount(form_str,name_str)
{
	var f_array=document.forms[form_str];
	var c_int=0;
	if (f_array)
	{
		for (var i_int=0; i_int<f_array.length; i_int++)
		{
			if (f_array[i_int].name==name_str && f_array[i_int].value!="")
			{
				c_int+=(f_array[i_int].checked) ? 1 : 0;
			}
		}
	}
	return c_int;
}
// --------------------------------------------------




/*
function on_error(msg, url, line)
{
	alert (msg+"\n"+url+"\n"+line);
}
window.onerror = on_error;
*/
