var ITEM = null;
var XML = null;
var arrCAL = new Array();
var now = new Date();

var JS_ERR_BG = '#FFF3CF';
var JS_ERR_BRD = '#FFCC33';
var JS_ERR_LBL = '#FFCC33';
var JS_ERR_DETAIL = 1;
var JS_ERR_VERBOSE = 1;
var JS_ERR_SPLIT = ' : ';
var CURFORM;
var ITEM_ID;

var BTNS_EDIT = ['btn_new', 'btn_save', 'btn_save_new','btn_delete','btn_cancel'];
var BTNS_GRID = ['btn_new'];

/* KEYBOARD RESTRICTIONS */

var kbYN = 'yn';
var kbNumeric = '01234567890';
var kbAlpha = 'abcdefghijklmnopqurstuvwxyABCDEFGHIJKLMNOPQRSTUVWXYZ';
var kbAlphaNumeric = 'abcdefghijklmnopqurstuvwxy01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var kbDecimal = '01234567890.';
var kbDate = '01234567890/';

function keyRestrict(t,v){
	var w = "";
	for (i=0; i < t.value.length; i++) {
		x = t.value.charAt(i);
		if (v.indexOf(x,0) != -1)
		w += x;
	}
	t.value = w;
}

function DivSetVisible(state, elem){
   var DivRef = document.getElementById(elem);
   var IfrRef = document.getElementById('shim');
   if(state){
    DivRef.style.display = "block";
    IfrRef.style.width = DivRef.offsetWidth;
    IfrRef.style.height = DivRef.offsetHeight;
    IfrRef.style.top = DivRef.style.top;
    IfrRef.style.left = DivRef.style.left;
    IfrRef.style.zIndex = DivRef.style.zIndex - 1;
    IfrRef.style.display = "block";
   } else{
    DivRef.style.display = "none";
    IfrRef.style.display = "none";
   }
 }
 
var Form = {
	serialize:function(id){
		var ret = $(id).toQueryString();
		return ret;
	},
	
	getElements: function(id){
		return $(id).getElements('input');
	}
}



/* FILE BROWSING & UPLOADING */

function js_fileBrowse(itm){
	//alert($(itm).type);
	$(itm).click();
	return false;
}

function js_fillField(itm,ajax){
	$('ph_'+itm).value = $(itm).value;	
	if (ajax) js_fileUpload(itm);
}

function js_fileUpload(itm, frm){
	var obj = $(itm);
	if (!frm) var frm = obj.form;
	var frmID = frm.id;
	var par = window.parent.document;
	//check to see if file is already uploading
	if (obj.uploading == true) return;
	
	// create new iframe
	$(obj.name+'_upload').style.display = 'block';
	/*
	var new_iframe = par.createElement('iframe');
	new_iframe.src = frm.action;
	new_iframe.frameBorder = '0';
	new_iframe.width  = "100";
	new_iframe.height = "100";
	new_iframe.parent  = this;
	new_iframe.allowTransparency = true;
	new_iframe.scrolling = 'no';
	new_iframe.className = 'fileUpload';
	new_iframe.id = obj.name+'_upload';
	new_iframe.name = obj.name+'_upload';
	$(obj.name+'_bb').appendChild(new_iframe);
	*/
	
	// add image progress
	var new_div = par.createElement('div');
	var new_img = par.createElement('img');
	new_img.src = 'images/indicator.gif';
	new_img.className = 'load';
	new_div.appendChild(new_img);
	//new_iframe.innerHTML=new_div;
	
	//set variables
	frm.task.value = 'fileupload';
	frm.target = obj.name+'_upload';
	//check for upload target field
	var fu = Form.checkElement(frmID, 'upload_target');
	if (!fu){
		var fld = par.createElement('input');
		fld.type = 'hidden';
		fld.name = 'upload_target';
		fld.id = 'upload_target';
		fld.className = 'hidden';
		frm.appendChild(fld);
	}		
	$('upload_target').value = obj.name;
	// send
	js_toggle(false, ['js_error', 'js_message']);	
	frm.isUploading = true;
	if (frm.activeUploads) { frm.activeUploads++; }
	else { frm.activeUploads = 1; }
	obj.uploading = true;
	//if (_browser == 'ie') $(itm+'_submit').click();
	//else frm.submit();
	//tinyMCE.triggerSave(false, true);
	//document.forms[frmID].submit();
	//alert(frm.target);
	//alert($(obj.name+'_upload').parent);
	frm.submit();	
}

function js_clearUpload(itm){
	var obj = $(itm);
	var frm = obj.form;
	obj.uploading = false;
	obj.value = '';
	$(obj.name+'_upload').style.display = 'none';
	//$(obj.name+'_bb').removeChild($(obj.name+'_upload'));
	frm.activeUploads--;
	if (frm.activeUploads == 0) frm.isUploading = false;
}

/* SELECT OPTION GENERATION */
function js_SetOption(itm, val){
	try {
		$(itm).value = val;
	} catch (err){
		alert(err);
	}
	/*
	var l = $(itm).options.length;
	for (m=ops.length-1;m>=0;m--) 
		if(ops.options[0].value == val){ = new Option(firstItem,null);
			ops.options[1] = new Option('', null);
			l = 2;
		}
	} 		
	if(arr){
		for(i=0; i<arr.length; i++){
			ops.options[l] = new Option(arr[i][1], arr[i][0]);
			l++;
		}
		$(itm).style.display = 'block';
	} else {
		$(itm).style.display = 'none';
	}
	//ops.selectedIndex = 0;
	*/
}

function js_selectChain(obj){
	var child_id = $(obj).getProperty('child');
	var child = $(child_id);
	var sel = $(obj).value;
	if (!sel) {
		if (child){
			for (m=child.options.length-1;m>=0;m--){ 
				child.options[m]=null;				
			}	
			child.setStyle('display', 'none');	
			js_selectChain(child_id);
		}
		return;	
	}	
	if (child){
		var opts_id = child.getProperty('opts');
		if (opts_id) var arr = eval(opts_id+'['+sel+']');
		if (arr){	
			for (m=child.options.length-1;m>=0;m--){ 
				child.options[m]=null;				
			}			
			for(i=0; i<arr.length; i++){				
				child.options[i] = new Option(arr[i][1], arr[i][0]);
			}	
			child.setStyle('display', 'block');	
			js_selectChain(child_id);					
		} else {
			child.setStyle('display', 'none');	
			js_selectChain(child_id);			
		}
	}
}	


function js_FillOptions(itm,arr,resetAll,firstItem){
	var ops = $(itm);
	var l = ops.options.length;
	if(resetAll){
		for (m=ops.length-1;m>=0;m--) ops.options[m]=null;	
		l = 0;
		if(firstItem){
			ops.options[0] = new Option(firstItem,null);
			ops.options[1] = new Option('', null);
			l = 2;
		}
	} 		
	if(arr){
		for(i=0; i<arr.length; i++){
			ops.options[l] = new Option(arr[i][1], arr[i][0]);
			l++;
		}
		$(itm).style.display = 'block';
	} else {
		$(itm).style.display = 'none';
	}
	//ops.selectedIndex = 0;
}


var opts = {  
	prefetchBuffer:	 true, 
	sortAscendImg:		'/images/sort_asc.gif',
	sortDescendImg:		'/images/sort_desc.gif'                   
};

function js_showCalendar(id){
	if (!arrCAL[id]){
		arrCAL[id] = new AGCalendar("js_calendar");
		var obj = arrCAL[id];
		obj.setOnChangeFunction('js_unliteField');
		//obj.setReturnFunction('js_dateCB');
	} else {
		var obj = arrCAL[id];
	}
	var fobj = $(id);	
	obj.select(fobj, id+'_a','MM/dd/yyyy');
}

function js_showError(str){
	$('js_error').innerHTML = str;
	$('js_error').style.display = 'block';
	$('js_message').style.display = 'none';
}

function js_showMessage(str){
	$('js_message').innerHTML = str;
	$('js_message').style.display = 'block';
	$('js_error').style.display = 'none';
}

function js_delete(id){
	if (!id) id = ITEM_ID;
	if (confirm('Are you sure you want to delete this item')){
		var pars = 'task=delete&item='+sct+'&iid='+id;
		ITEM = new Ajax.Request(url, {method:'post', parameters:pars, onComplete:js_showDelete, asynchronous:true} );	
	}
}

function js_showDelete(src){
	//alert(src.responseText);
	XML = src.responseXML;		
	var err = $X('error');
	var msg = $X('message');	
	
	if (err) js_showError(err);
		
	if (msg){
		js_showMessage(msg);
		var pars = 'task=grid&item='+sct;
		ITEM = new Ajax.Updater('_grid', url, {method:'post', parameters:pars, onComplete:js_showGrid, asynchronous:true} );
	}
}


function js_move(id, dir){
	var pars = 'task=move&item='+sct+'&iid='+id+'&dir='+dir;
	ITEM = new Ajax.Request(url, {method:'post', parameters:pars, onComplete:js_showMove, asynchronous:true} );	
}

function js_showMove(src){
	//alert(src.responseText);
	XML = src.responseXML;	
	var err = $X('error');
	var msg = $X('message');	
	
	if (err){
		js_showError(err);
	}
	
	if (msg){
		js_showMessage(msg);
		var pars = 'task=grid&item='+sct;
		ITEM = new Ajax.Updater('_grid', url, {method:'post', parameters:pars, onComplete:js_showGrid, asynchronous:true} );
	}
}




function js_showEdit(src){
	if (DEBUG) alert(src.responseText);
	
	XML = src.responseXML;
	var err = $X('error');	
	var msg = $X('message');	
	if (err){
		js_showError(err);
	} else if(msg){
		var fade = ['_grid', '_item'];
		var app = ['js_message'];
		js_toggle(app, fade);
		js_hideButtons();
		js_toggleButtons(BTNS_EDIT);	
		$('js_message').innerHTML = msg;
	} else{
		var fade = ['_grid'];
		var app = ['_item'];
		js_toggle(app, fade);
		js_hideButtons();
		js_toggleButtons(BTNS_EDIT);		
		js_loadForm(XML);		
	}
}

function js_showNew(src){	
	XML = src.responseXML;	
	var fade = ['_grid'];
	var app = ['_item'];
	js_toggle(app, fade);
	js_hideButtons();
	js_toggleButtons(['btn_new', 'btn_save', 'btn_cancel']);
	js_loadForm(XML);
}

function js_hideButtons(){
	$('btn_cancel').style.display = 'none';
	$('btn_save').style.display = 'none';
	$('btn_save_new').style.display = 'none';
	$('btn_new').style.display = 'none';
	$('btn_delete').style.display = 'none';
}

function js_toggleButtons(arr, vis){
	if (!vis) vis = 'block';
	for(b=0;b<arr.length;b++){
		$(arr[b]).style.display = vis;
	}	
}

function js_update(){
	js_toggle(false, ['js_error', 'js_message']);	
	$(CURFORM).task.value = 'update';
	$('item').value = sct;
	if ($(CURFORM).isUploading){
		js_showMessage('Please wait until your file upload is complete');
		return;
	}
	tinyMCE.triggerSave(false, true);
	pars = Form.serialize(CURFORM);		
	ITEM = new Ajax.Request(url, {method:'post', parameters:pars, onComplete:js_showUpdate, asynchronous:true} );	
}

function js_showUpdate(src){
	//alert(src.responseText);
	XML = src.responseXML;	
	var err = $X('error');
	var msg = $X('message');	
	
	if (err){
		var errterms = $X('erroritems');
		if (errterms){
			var etstr = js_formErrors(errterms);
			if (etstr){
				err += '<hr class="topmessage">';
				err += etstr;
			}
		}			
		js_showError(err);
	}
		
	if (msg){
		js_showMessage(msg);
	}	
}

function js_save(){
	js_toggle(false, ['js_error', 'js_message']);
	//Form.disable('storefront_form');
	$('task').value = 'save';
	$('item').value = sct;
	if (tinyMCE) tinyMCE.triggerSave(false, true);
	pars = Form.serialize(CURFORM);		
	ITEM = new Ajax.Request($(CURFORM).action, {method:'post', parameters:pars, onComplete:js_showSave, asynchronous:true} );	
}

function js_saveNew(){
	$('id').value = '';
	js_save();
}

function js_showSave(src){
	//alert(src.responseText);
	XML = src.responseXML;	
	var err = $X('error');
	var msg = $X('message');	
	
	if (err){
		var errterms = $X('erroritems');
		if (errterms){
			var etstr = js_formErrors(errterms);
			if (etstr){
				err += '<hr class="topmessage">';
				err += etstr;
			}
		}	
			
		js_showError(err);
	}
		
	if (msg){
		msg += '<hr class="topmessage">';
		msg += '<a class="txt9" href="javascript:js_showGrid()">RETURN TO ITEM GRID</a>';
		var pars = 'task=grid&item='+sct;
		//onComplete:js_toggleGrid,
		ITEM = new Ajax.Updater('_grid', url, {method:'post', parameters:pars, asynchronous:true} );	
		js_showMessage(msg);
	}
	//Form.enable('storefront_form');
}

function js_toggle(appear, fade){
	if(appear){
		for(a=0; a<appear.length;a++){
			if (el = $(appear[a])) el.style.display = 'block';
			//Effect.Appear(appear[a]);
			//Effect.PhaseIn(appear[a]);
		}
	} if (fade){
		for(f=0; f<fade.length;f++){
			if (el = $(fade[f])) el.style.display = 'none';
			//Effect.Fade(fade[f]);
			//Effect.PhaseOut(fade[f]);
		}
	} 
}

function js_toggleGrid(){
	var app = ['_grid'];
	var fade = ['_item'];
	js_toggle(app, fade);
	js_hideButtons();
	js_toggleButtons(['btn_new']);
}

function js_showGrid(){
	var app = ['_grid'];
	var fade = ['_item', 'js_error', 'js_message'];
	js_toggle(app, fade);
	js_hideButtons();
	js_toggleButtons(BTNS_GRID);
	//$('btn_new').style.display = 'block';	
}


function js_formatArray(tmp, type){
	var str = "";
	switch(type){
		default:
			//str += tmp[b]+'<br/>';
			str = tmp.join('<br/>');
		break;
			
	}	
	return str;	
}



function js_formErrors(arr){
	var html = [];
	//html.push('');
	
	for (a=0; a<arr.length; a++){
		var nm = arr[a].name;
		//js_hiliteField(nm);
		
		if (JS_ERR_DETAIL){
			var txt = arr[a].value;
			if (txt){
				tmp = txt.split(':');
				var fld= tmp[0];
				var msg = tmp[1];
				if (JS_ERR_VERBOSE)	html.push(fld+JS_ERR_SPLIT+msg);
			}
		}	
			
	}
	
	return js_formatArray(html);
}

function js_dateCB(y){
	//alert(y);
}

function js_unliteField(nm){
	//alert(nm);
	var itm = $(nm);
	var typ = itm.type;
	js_unliteLabel(nm);
	switch(typ){
		case 'checkbox':
			itm.checked = false;			
		break;	
		case 'text':
		case 'textarea':
			if (itm.style){
				itm.style.backgroundColor = '';
				itm.style.borderColor = '';
				itm.className = $(nm)._css;
			}
			break;
		default:
			break;			
	}	
}

function js_unliteLabel(id){
	var labels = document.getElementsByTagName("label");
	if (labels){
		for (var l = 0; l < labels.length; l++){
			if (labels[l].getAttribute("for") == id){
				labels[l].style.color = '';
				return;
			}
		}
	}
}

function js_hiliteLabel(id){
	var labels = document.getElementsByTagName("label");
	if (labels){
		for (var l = 0; l < labels.length; l++){
			if (labels[l].getAttribute("for") == id){
				labels[l].style.color = JS_ERR_LBL;
				return;
			}
		}
	}
}

function js_hiliteField(id){
	var itm = $(id);
	if (!itm) return;
	var nm = itm.name;
	var typ = itm.type;	
	js_hiliteLabel(id);	
		
	$(id)._css = $(id).className;
	switch(typ){
		case 'checkbox':
			itm.checked = false;			
		break;	
		case 'text':
		case 'textarea':
			$(nm).onchange = function(){ js_unliteField(id) };
			$(nm).style.backgroundColor = JS_ERR_BG;
			$(nm).style.borderColor = JS_ERR_BRD;			
			break;
		case 'select':
		case 'select-one':
			$(nm).onchange = function(){ js_unliteField(id) };
			$(nm).style.backgroundColor = JS_ERR_BG;
			$(nm).style.borderColor = JS_ERR_BRD;			
			break;
		default:
		case 'undefined':			
			itm.style.backgroundColor = JS_ERR_BG;
			itm.style.borderWidth = "1px";
			itm.style.borderColor = JS_ERR_BRD;				
			break;			
	}	
}


function js_editItem(id){
	//new Effect.FadeTo( '_grid', .1, 500, 10);
	ClearForm(CURFORM);
	ITEM_ID = id;
	var pars = 'task=ajax&item='+sct+'&iid='+id;
	ITEM = AjaxCall(url, {method:'post', parameters:pars, onComplete:js_showEdit, asynchronous:true} );
	//ITEM = new Ajax.Request(url, {method:'get', parameters:pars, onComplete:js_showEdit, asynchronous:true} );
}

function js_newItem(){
	ClearForm('storefront_form');
	var pars = 'task=createnew&item='+sct;
	ITEM = AjaxCall(url, {method:'post', parameters:pars, onComplete:js_showNew, asynchronous:true} );
	//ITEM = new Ajax.Request(url, {method:'get', parameters:pars, onComplete:js_showNew, asynchronous:true} );
}

function $X(id, xml){
	if (!xml) xml = XML;
	if (!xml) return;
	var xn = xml.getElementsByTagName(id);
	if (!xn) return '';
	//check to see if there are subnodes
	try{
		if (xn[0].childNodes.length > 1){
			var arr = new Array();
			var i = 0;
			for (j=0;j<xn[0].childNodes.length;j++){
				if (xn[0].childNodes[j].nodeType == 1 ){
					arr[i] = {name:xn[0].childNodes[j].nodeName, value:xn[0].childNodes[j].firstChild.data};
					//alert(xn[0].childNodes[j].nodeType+'---'+xn[0].childNodes[j].nodeName);
					//alert(xn[0].childNodes[j].firstChild.data);
					i++;
				}			
			}
			return arr;		
		}
		//return cdata node data	
		if(xn[0].firstChild != null){
			return xn[0].firstChild.data;
		}
		//return nothing
		return '';
	} catch(err) {
		return '';
	}
}

function js_loadForm(xml){
	input = (Form.getElements(CURFORM));
	for(i=0; i<input.length; i++){
		BindInput(input[i]);
	}	
}

function ClearForm(frm){
	$('js_error').style.display = 'none';
	$('js_message').style.display = 'none';
	js_hideButtons();
	input = (Form.getElements(frm));
	for(i=0; i<input.length; i++){
		ClearInput(input[i]);
	}
}

function ClearInput(itm){
	var nm = itm.name;
	var typ = itm.type;
	switch(typ){
		case 'checkbox':
			itm.checked = false;			
		break;	
		case 'text':
			$(nm).value = "";
			break;
		case 'textarea':
			$(nm).value = "";
			if (tinyMCE) { tinyMCE.updateContent(nm); }
			break;
		default:			
	}
}

function BindInput(itm, xml){
	var nm = itm.name;
	var typ = itm.type;
	var val = $X(nm);
	if (nm.substr(0,3) == 'dt_') typ = 'date';	
	switch(typ){
		case 'checkbox':			
			if (val == $(nm).value) itm.checked = true;			
			break;		
		case 'date':
			var dt = getDateFromFormat(val, "y-M-d H:mm:ss");
			if (dt != 0) $(nm).value = formatDate(dt, "M/d/y");
			break;	
		case 'select':
		case 'select-one':
			$(nm).value = val;				
			break;
		case 'hidden':
			$(nm).value = val;
			break;		
		case 'textarea':	
			$(nm).value = val;
			if (tinyMCE) tinyMCE.updateContent(nm);
			break;		
		case 'radio':
			break;
		case 'text':
		default:	
			$(nm).value = val;
			break;			
	}	
}

/*---------------------------------- */

function AjaxCall(url,opts,id){
	opts.data = opts.parameters;
	if (id) opts.update = id;
	return new Ajax(url, opts).request();	
}



var CURFORMPAGE = null;


function js_clone(node, nm){
	var par = window.parent.document;
	var html = $(node).innerHTML;
	var addNode = $('add__'+node);
	//alert(addNode.all);
	ct = addNode.childNodes.length;
	//alert(ct);
	num = ct;
	if (num == 0) num = 1;
	/*
	var br = document.createElement('br');	br.className = "clear";
	var div = document.createElement('div'); div.className = "divider";
	*/
	html = html.replace(/itm0/ig, 'itm'+num);
	//alert(html);
	var e = par.createElement('div');
	e.id = 'itm'+num;
	e.innerHTML = html;
	//addNode.appendChild(div);
	addNode.appendChild(e);
	$('itm'+num+'__category_id').value = '';
	js_selectChain('itm'+num+'__category_id');
	//addNode.appendChild(br);	
	//alert(html);
}

function js_toggle(action, itms){
	var todo = action ? 'block' : 'none';
	for(a=0; a<itms.length;a++){
		if (el = $(itms[a])){
			el.style.display = todo;			
		}		
	}
}

function js_showError(str){
	$('js_error').innerHTML = str;
	$('js_error').style.display = 'block';
	$('js_message').style.display = 'none';
}

function js_showMessage(str){
	$('js_message').innerHTML = str;
	$('js_message').style.display = 'block';
	$('js_error').style.display = 'none';
}

function js_edit(){
	js_toggle(false, ['_preview', '_regform']);
	js_toggle(true, ['_edit']);	
}

function js_submit(){
	js_toggle(false, ['js_error', 'js_message', '_regform', '_preview']);
	js_toggle(true, ['js_loader']);
	$('task').value = 'dosubmit';
	var pars = Form.serialize(FORM);
	CURFORMPAGE = '';
	pars +='&task=dosubmit';
	var url = $(FORM).action;
	ITEM = AjaxCall(url, {method:'post', parameters:pars, onComplete:js_showEdit, asynchronous:true} );
	//ITEM = new Ajax.Request(url, {method:'post', parameters:pars, onComplete:js_showEdit, asynchronous:true} );	
}

function js_preview(){
	js_toggle(false, ['js_error', 'js_message']);		
	$('task').value = 'preview';
	var pars = Form.serialize(FORM);
	CURFORMPAGE = '_preview';
	//var url = $(FORM).action;
	$(FORM).send({ onComplete:js_showPreview });
	//ITEM = AjaxCall(url, {method:'post', parameters:pars, onComplete:js_showPreview, asynchronous:true} );
	//ITEM = new Ajax.Request(url, {method:'post', parameters:pars, onComplete:js_showPreview, asynchronous:true} );	
}

function js_userLogin(){
	var pars = 'un='+$('login_uname').value;
	pars += '&pw='+$('login_pw').value;
	pars += '&task=login';
	CURFORMPAGE = '_regform';
	js_toggle(false, ['js_error', 'js_message', '_regform', '_preview']);
	js_toggle(true, ['js_loader']);
	var url = $(FORM).action;
	ITEM = AjaxCall(url, {method:'post', parameters:pars, onComplete:js_showErrors, asynchronous:true} );
	//ITEM = new Ajax.Request(url, {method:'post', parameters:pars, onComplete:js_showErrors, asynchronous:true} );	
}

function js_userReg(){
	$('task').value = 'newreg';
	var pars = Form.serialize(FORM);
	pars += '&task=newreg';
	CURFORMPAGE = '_regform';
	js_toggle(false, ['js_error', 'js_message', '_regform', '_preview']);
	js_toggle(true, ['js_loader']);
	
	var url = $(FORM).action;	
	ITEM = AjaxCall(url, {method:'post', parameters:pars, onComplete:js_showErrors, asynchronous:true} );
	//ITEM = new Ajax.Request(url, {method:'post', parameters:pars, onComplete:js_showErrors, asynchronous:true} );	
}

function js_showRegForm(src){
	
	$('_edit').style.display = 'none';
	$('_preview').style.display = 'none';
	$('_regform').style.display = 'block';
}

function js_runScript(src){
	var tmp = src.split('>>');
	switch(tmp[0]){
		case 'RD':
			window.location.replace(tmp[1]);
		break;
	}
}

function js_showErrors(src, srcXML){	
	XML = srcXML;	
	var err = $X('error');
	var msg = $X('message');
	js_toggle(false, ['js_loader']);
	
	if (err){
		var errterms = $X('erroritems');
		var errcode = $X('errorcode');		
		js_handleError(err,errterms,errcode);
	}
		
	if (msg){
		$('_edit').innerHTML = msg;		
	}
	
	var scr = $X('script');	
	if (scr) js_runScript(scr);
}

function js_handleError(err,errterms,errcode){
	if (errterms){
		var etstr = js_formErrors(errterms);
		if (etstr){
			err += '<hr class="topmessage">';
			err += etstr;
			}
	}
	switch(errcode){
		case 'NOREG':
			var url = $(FORM).action;
			var pars = 'task=getreg'
			//ITEM = new Ajax.Updater('_regform', url, {method:'post', parameters:pars, onComplete:js_showRegForm, asynchronous:true} );
			ITEM = AjaxCall(url, {method:'post', parameters:pars, onComplete:js_showRegForm, asynchronous:true}, '_regform' );
			break;
		default:
			if(CURFORMPAGE) $(CURFORMPAGE).style.display = 'block';
		break;
	}		
	js_showError(err);	
}

function js_showEdit(src,srcXML){
	XML = srcXML;	
	js_toggle(true, ['_preview']);
	var err = $X('error');
	var msg = $X('message');
	js_toggle(false, ['js_loader']);
	
	try{
		if (err){
			var errterms = $X('erroritems');
			var errcode = $X('errorcode');		
			js_handleError(err,errterms,errcode);
		}
			
		if (msg){
			$('_edit').innerHTML = msg;
			js_toggle(false, ['_preview', '_regform']);
			js_toggle(true, ['_edit']);		
			js_showMessage(msg);
		}	
	} catch(ex) {
		//alert(src.responseText);
	}
	
	var scr = $X('script');	
	if (scr) js_runScript(scr);
}

function js_showPreview(src, srcXML){
	XML = srcXML;	
	
	var err = $X('error');
	var msg = $X('message');
	//alert(msg);
	
	if (err){
		var errterms = $X('erroritems');
		var errcode = $X('errorcode');
		js_handleError(err,errterms,errcode);
	}
		
	if (msg){
		$('_preview').innerHTML = msg;
		js_toggle(false, ['_edit', '_regform', 'js_error']);
		js_toggle(true, ['_preview']);
		//js_showMessage(msg);
	}	
}

function $NAME(name){
	if (document.getElementsByName) {
		var arr = document.getElementsByName(name);
		if (arr.length > 0) return arr;
	} 
	// Attempt to fail gracefully in lesser browsers
	if (!document.getElementsByTagName) {
		return new Array();
	}
	//Do it Baby
	elem = getAllChildren(document);
	var arr = new Array();
	var iarr = 0;	
	for(e=0;e<elem.length;e++){
		att = elem[e].getAttribute("name");
		if(att == name) {
			arr[iarr] = elem[e];
			iarr++;
		}
	}
	return arr;	
}

function getAllChildren(e) {
  // Returns all children of element. Workaround required for IE5/Windows. Ugh.
  return e.all ? e.all : e.getElementsByTagName('*');
}