// JavaScript Document
if(!window.ge){window.ge=function(id){return (!document.getElementById(id))?id:document.getElementById(id);}}
function he(el){var elm=ge(el);if(elm){elm.style.display='none';}}
function se(el){var elm=ge(el);if(elm){elm.style.display='block';}}
function ihe(el){return el.style.display=='none';}

var $=window.$||ge;
window.CSS=window.CSS||{hasClass:function(b,a){return (' '+$(b,true).className+' ').indexOf(' '+a+' ')>-1;},addClass:function(b,a){b=$(b,true);if(a&&!CSS.hasClass(b,a))b.className=b.className?(b.className+' '+a):a;return b;},removeClass:function(b,a){b=$(b,true);b.className=b.className.replace(new RegExp('(^|\\s)'+a+'(?=\\s|$)','g'),' ');return b;},toggleClass:function(b,a){return (CSS.hasClass(b,a)?CSS.removeClass:CSS.addClass)(b,a);}};
window.CSS.setClass=function(b,a){$(b,true).className=a||'';return b;};
window.CSS.conditionClass=function(c,a,b){return (b?CSS.addClass:CSS.removeClass)(c,a);};
window.CSS.chooseClass=function(b,a,d,c){CSS.conditionClass(b,d,a);CSS.conditionClass(b,c,!a);};
window.CSS.setStyle=function(a,b,c){a.style[b]=c;return a;};

function swap_css_class_name(d,a,b){for(var e=0;e<d.length;e++){var c=ge(d[e]);if(c.className.indexOf(a)!=-1){CSS.setClass(c,c.className.replace(a,b));}else{CSS.setClass(c,c.className.replace(b,a));}}}

//setup_password_feedback("confirm_password","confirm_password_match_display","new_password","new_password_strength_display","save_password");
function setup_password_feedback(b,c,d,e,f)
{
	var h=function(k,o)
	{
		var j=$(k);
		var n=$(o);
		var m=j.value;
		var l=m.length;
		var q=0;
		number_re=new RegExp("[0-9]");
		if(number_re.test(m))q++;
		non_alpha_re=new RegExp("[^A-Za-z0-9]");
		if(non_alpha_re.test(m))q++;
		upper_alpha_re=new RegExp("[A-Z]");
		if(upper_alpha_re.test(m))q++;
		if(l>=8)q++;
		var i;
		var p;
		if(q<=1){
			i='weak_pass';
			p=_tx("Weak");
			}
		else if(q<=2){
			i='medium_pass';
			p=_tx("Medium");
			}
		else{
			i='strong_pass';
			p=_tx("Strong");
			}
			
		if(m.length<6){
			i='short_pass';
			p=_tx("Too short");
			n.setContent('');
			}
		else n.setContent(_tx("Password strength")+': ');
		n.appendChild($N('span',{className:i},p));
	};
		
	var g=function(j,m,o){
		var i=$(j);
		var l=$(m);
		var n=$(o);
		var p;
		var k='short_pass';
		if(i.value.length<l.value.length){
			p=_tx("Match password too short");
			}
		else if(i.value!=l.value){
			p=_tx("Passwords do not match");
			}
		else if(i.value.length==0){
			p='';
			}
		else{
			k='strong_pass';
			p=_tx("Passwords match");
			}
			
			n.setContent($N('span',{className:k},p));
	};
	
	var a=function(i,j){
		if($(i).value==$(j).value){
			$('save_password').disabled=true;
			hide($('pwst_error_div'));
			this.form.submit();
			return true;
			}
			
		show($('pwst_error_div'));
		DOMScroll.scrollTo($('fb_menubar'));
		return false;
	};
	
	Event.listen($(d),'keyup',bind(null,h,d,e));
	Event.listen($(b),'keyup',bind(null,g,b,d,c));
	Event.listen($(f),'click',bind(null,a,b,d));
}


ieoffset = 0;

function doLogin(tF)
{
	var as = AjaxRequest.submit(
		tF
		,{
			'parameters':{ 'ajax':'true', 'validate':'true' }
			,'onSuccess':function(req){ if(req.responseText == 'success'){window.location.reload();}else{se('error_login'); ge('error_login').innerHTML = req.responseText;}}
		}
		);
	return as;
}

function doLogoff(url)
{
	/*var as = AjaxRequest.post(
		{
		'url':url
		,'parameters':{ 'ajax':'true' }
			,'onSuccess':function(req){ ge('member_panel').innerHTML = req.responseText;}
		}
		);
	return as;*/
}

function dAC(url,cat,elt,qElt)
{
	if(ACS.xmlHttpRequest.readyState==4 || ACS.xmlHttpRequest.readyState==0)
	{
		var s = escape(ge(qElt.id).value);		
		var args = (
			{
				'url':url
				,'parameters':{'ajax':'true','c':cat, 'q':s}
				,'onSuccess':function(req){ var resp=eval("(" + req.responseText + ")");acs_e(elt);for(i=0;i<resp.qr.r.length;i++){acs_ar(elt, qElt, resp.qr.r[i].t, 0, false);if(resp.qr.r.length>0){se(elt.id);}}
				 }
			}
			);
		ACS.method = 'GET';
		ACS.handleArguments(args);
		ACS.process();
		ACS = new AjaxRequest();
	}
}

function dCRi(c)
{
	he(ge('conf_details_' + c));
	se(ge('conf_regstart_' + c));
}

function dCR(tF,s)
{
	var as = AjaxRequest.submit(
		tF
		,{
		'parameters':{ 'ajax':'true', 's':s }
			,'onSuccess':function(req){ ge('member_panel').innerHTML = req.responseText;}
		}
		);
	return as;
}

function doConfReg(tF)
{
	var as = AjaxRequest.submit(
		tF
		,{
			'parameters':{ 'ajax':'true', 'validate':'true' }
			,'onSuccess':function(req){ if(req.responseText == 'success'){window.location.reload();}else{se('error_login'); ge('error_login').innerHTML = req.responseText;}}
		}
		);
	return as;
}






function ConfUtility(){
	this.validate_data = function(tF, args, v, sav, s)
	{
		var status = AjaxRequest.submit(
			tF
			,{
				'parameters':{ 'ajax':'true', 'validate':v, 'stage':args['stage'], 's':s}
				,'onLoading':function(req){ ConfUtil.hide_error(); ConfUtil.start_loading(''); }
				/*,'onSuccess':function(req){ ConfUtil.show_error(req.responseText)  }*/
				,'onSuccess':function(req){var check = '{"response"'; if(req.responseText.match("^"+ check)==check){var jresp = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(req.responseText.replace(/"(\\.|[^"\\])*"/g, ''))) && eval('(' + req.responseText + ')'); if(jresp.response[0].type == "error"){ConfUtil.show_error(jresp.response[0].detail);ConfUtil.stop_loading('');}else if(jresp.response[0].type == "validate_success"){ConfUtil.gotoNS(jresp.response[0].new_stage, jresp.response[0].max_stage);}}else{ge('conference_registration_panel').innerHTML = req.responseText;ConfUtil.stop_loading('');}}
			}
			);
		return status;
	}
	
	this.view_data = function(tF,f,c,r,g)
	{
		var status = AjaxRequest.post(
			{
				'url':tF,
				'parameters':{ 'ajax':'true', 'f':f, 'c':c, 'r':r, 'g':g}
				,'onLoading':function(req){ ConfUtil.hide_error(); ConfUtil.start_loading('loading'); }
				/*,'onSuccess':function(req){ ConfUtil.show_error(req.responseText)  }*/		
				,'onSuccess':function(req){var check = '{"response"'; if(req.responseText.match("^"+ check)==check){var jresp = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(req.responseText.replace(/"(\\.|[^"\\])*"/g, ''))) && eval('(' + req.responseText + ')'); if(jresp.response[0].type == "error"){ConfUtil.show_error(jresp.response[0].detail);ConfUtil.stop_loading('loading');}}else{ge('conference_registration_panel').innerHTML = req.responseText;ConfUtil.stop_loading('loading');}}
			}
			);
		return status;
	}
	
	this.update_status = function(tF,f,c,r,g,h,a)
	{
		var status = AjaxRequest.post(
			{
				'url':tF,
				'parameters':{ 'ajax':'true', 'f':f, 'c':c, 'r':r, 'g':g}
				,'onLoading':function(req){ ConfUtil.hide_error();ConfUtil.start_loading_status(h,r,a);}
				/*,'onSuccess':function(req){ ConfUtil.show_error(req.responseText)  }*/
				,'onSuccess':function(req){var check = '{"response"'; if(req.responseText.match("^"+ check)==check){var jresp = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(req.responseText.replace(/"(\\.|[^"\\])*"/g, ''))) && eval('(' + req.responseText + ')'); if(jresp.response[0].type == "error"){ConfUtil.show_error(jresp.response[0].detail);ConfUtil.stop_loading_status(h,r,0,a);}}else{ge(h+'_status_'+r).innerHTML = req.responseText;ConfUtil.stop_loading_status(h,r,1,0);}}
			}
			);
		return status;
	}
	
	this.add_data = function(tF,f,a,c,crt,alt,or,org)
	{
		var status = AjaxRequest.post(
			{
				'url':tF,
				'parameters':{ 'ajax':'true', 'f':f, 'a':a, 'c':c, 'crt':crt, 'alt':alt, 'or':or, 'org':org}
				,'onLoading':function(req){ ConfUtil.hide_error(); ConfUtil.start_loading('loading'); }
				/*,'onSuccess':function(req){ ConfUtil.show_error(req.responseText)  }*/
				,'onSuccess':function(req){var check = '{"response"'; if(req.responseText.match("^"+ check)==check){var jresp = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(req.responseText.replace(/"(\\.|[^"\\])*"/g, ''))) && eval('(' + req.responseText + ')'); if(jresp.response[0].type == "error"){ConfUtil.show_error(jresp.response[0].detail);ConfUtil.stop_loading('loading');}}else{ge('conference_registration_panel').innerHTML = req.responseText;ConfUtil.stop_loading('loading');}}
			}
			);
		return status;
	}
	
	this.gotoNS = function(newstage, maxstage)
	{
		for(var i=1;i<=maxstage;i++)
		{
			he('conference_registration_stage_' + i);
			var c = ge('conference_registration_header_stage_' + i);
			CSS.setClass(c,c.className.replace('current','general'));
		}
		
		se('conference_registration_stage_' + newstage);		
		var c = ge('conference_registration_header_stage_' + newstage);
		CSS.setClass(c,c.className.replace('general','current'));
		
		ConfUtil.stop_loading('');
		return true;
	}
	
	
	
	
	
	this.show_error = function(err)
	{
		ge('reg_error_inner').innerHTML = err;
		se('reg_error');
		return true;
	}
	this.hide_error = function()
	{
		he('reg_error');
		return true;
	}
	
	this.start_loading = function(specific)
	{
		if(specific)
		{
			specific = '_' + specific;	
		}
		he('conference_registration_panel');
		se('conf_pw' + specific);
		return true;
	}
	this.stop_loading = function(specific)
	{
		if(specific)
		{
			specific = '_' + specific;
		}
		he('conf_pw' + specific);
		se('conference_registration_panel');
		return true;
	}

	this.start_loading_status = function(h,r,a)
	{
		var ee= ge(h+'_edit_'+r);
		var sube=ge(h+'_submit_'+r);
		var mov=ge(h+'_move_'+r);
		if(ee && a==0){he(ee);}
		if(sube && a==0){he(sube);}
		if(mov && a==2){he(mov);}
		se(h + '_pw_' + r);
		return true;
	}
	this.stop_loading_status = function(h,r,s,a)
	{
		var ee= ge(h+'_edit_'+r);
		var sube=ge(h+'_submit_'+r);
		var mov=ge(h+'_move_'+r);
		if(ee && s==0 && a==0){se(ee);}
		if(sube && s==0 && a==0){se(sube);}
		if(mov && s==0 && a==2){se(mov);}
		he(h + '_pw_' + r);
		return true;
	}

}





function RegUtility() {
	this.validate_data = function(theform, args, s)
	{
		if (typeof(args)!="undefined")
		{
			if(args['ignore']=='captcha')
			{
				var status = AjaxRequest.submit(
					theform
					,{
						'parameters':{ 'ajax':'true', 'validate':'true', 'ignore':'captcha' }
						,'onLoading':function(req){ RegUtil.hide_error(); RegUtil.start_loading(''); }
						,'onSuccess':function(req){ if((req.responseText).toLowerCase()=='success'){RegUtil.hide_reg_form();RegUtil.stop_loading('');RegUtil.show_captcha();}else{RegUtil.show_error(req.responseText);RegUtil.stop_loading('');} }
					}
					);
				return status;
			}
			else
			{
				var status = AjaxRequest.submit(
					theform
					,{
						'parameters':{ 'ajax':'true', 'validate':'true' }
						,'onLoading':function(req){ RegUtil.hide_error(); RegUtil.start_loading('captcha'); }
						,'onSuccess':function(req){ if((req.responseText).toLowerCase()=='success'){RegUtil.stop_loading('captcha');RegUtil.doRegister(theform);}else{RegUtil.show_error(req.responseText);Recaptcha.reload();RegUtil.stop_loading('captcha');} }
					}
					);
				return status;		
			}

		}
	}
	
	this.doRegister = function(theform)
	{
		var status = AjaxRequest.submit(
			theform
			,{
				'parameters':{ 'ajax':'true', 'submit':'true' }
				,'onLoading':function(req){ RegUtil.hide_error(); RegUtil.start_reg_progress(); }
				,'onSuccess':function(req){ if((req.responseText).toLowerCase()=='success'){RegUtil.hide_captcha(); he('tos_container'); he('SignupPage_SignUpInstructions'); RegUtil.update_reg_progress();}else{RegUtil.show_error(req.responseText);RegUtil.stop_reg_progress();} }
			}
			);
		return status;
	}
	
	this.update_reg_progress = function()
	{
		var status = AjaxRequest.get({
				'url':'/NEACURH/r.php'
				,'parameters':{ 'ajax':'true', 'success':'true' }
				,'onSuccess':function(req){ ge('reg_progress').innerHTML = req.responseText;}
			});
		return status;
	}
	
	this.show_error = function(err)
	{
		ge('reg_error_inner').innerHTML = err;
		se('reg_error');
		return true;
	}
	this.hide_error = function()
	{
		he('reg_error');
		return true;
	}
	
	this.start_loading = function(specific)
	{
		if(specific)
		{
			specific = specific + '_';	
		}
		se(specific + 'async_status');
		return true;
	}
	this.stop_loading = function(specific)
	{
		if(specific)
		{
			specific = specific + '_';	
		}
		he(specific + 'async_status');
		return true;
	}
	
	this.hide_reg_form = function()
	{
		he('reg_form_box');
		return true;
	};
	
	this.show_captcha = function()
	{
		se('reg_captcha');
		se('captcha_buttons');
		return true;
	};

	
	this.show_reg_form = function()
	{
		se('reg_form_box');
		return true;
	};
	
	this.hide_captcha = function()
	{
		he('reg_captcha');
		he('captcha_buttons');
		return true;
	};
	
	this.start_reg_progress = function()
	{
		se('reg_progress');
		return true;
	}
}

function doValidateSignup(theform){
	he('reg_form_box');
	se('reg_captcha');
	se('captcha_buttons');	
	return true;
}

function editor_date_month_change(month_el,day_el,year_el)
{
	var month_el=ge(month_el);
	var day_el=ge(day_el);
	var year_el=year_el?ge(year_el):false;
	var day_value=parseInt(day_el.value);
	var year_value=false;
	if(year_el&&year_el.value&&year_el.value!=-1)
	{
		year_value=year_el.value;
	}
	
	var new_num_days=month_get_num_days(month_el.value,year_value);
	var b=day_el.options[0].value==-1?1:0;
	
	for(var i=day_el.options.length;i>new_num_days+b;i--)
	{
		day_el.options[i-1] = null;
	}
	
	for(var i=day_el.options.length;i<new_num_days+b;i++)
	{
		day_el.options[i]=new Option(i+(b?0:1),i+(b?0:1));
	}
	
	if(new_num_days<day_value)
	{
		day_el.value=day_el.options.length - 1;
		if(typeof day_el.onchange==='function')
		{day_el.onchange();}
	}
}

function month_get_num_days(month,year)
{
	var temp_date;
	if(month==-1){return 31;}
	
	temp_date=new Date(year?year:1912,month,0);
	return temp_date.getDate();
}

function acs_e(elt)
{
    if (!elt) return;
 
    elt.innerHTML = '';
    elt.numResults = 0;
    elt.selectedIndex = 0;
    elt.results = [];
    he(elt.id);
}

function acs_ar(elt, qElt, q, c, sel)
{
	if (!elt) return;
 
    if (sel) elt.selectedIndex = elt.numResults;
 
    idx = elt.numResults;
    elt.results[elt.numResults++] = q;
    var _res = '';
    _res += '<div class="' + (sel ? 'srs' : 'sr') + '"'
         +  ' onmouseover="acs_mo(\'' + elt.id + '\', \'' + qElt.id + '\', ' + idx + ');"'
         +  ' onmouseout="acs_mt(\'' + elt.id + '\', ' + idx + ');"'
         +  ' onclick="acs_c(\'' + elt.id + '\', \'' + qElt.id + '\', ' + idx + ');">';
    _res += '<span class="srt">' + q + '</span>';
   // if (c.length > 0)
   //     _res += '<span class="src">' + c + '</span>';
    _res += '</div>';
 
    elt.innerHTML += _res;
}

function acs_mo(id, qId, idx)
{
    elt = document.getElementById(id);
    elt.selectedIndex = idx;
    qElt = document.getElementById(qId);
    qElt.focus();
 
    acs_hls(elt);
}
 
function acs_mt(id, idx)
{
    elt = document.getElementById(id);
    elt.selectedIndex = -1;
 
    acs_hls(elt);
}
 
function acs_c(id, qId, idx)
{
    elt = ge(id);
    qElt = ge(qId);
    qElt.value = elt.results[idx];
    he(elt.id);
	qElt.focus();
}

function acs_hu(elt, qElt)
{
    if (elt.numResults > 0 && ihe(elt)) {
        se(elt.id);
        return;
    }
 
    if (elt.selectedIndex == 0)
        return;
    else if (elt.selectedIndex < 0)
        elt.selectedIndex = elt.numResults - 1;
    else
        elt.selectedIndex--;
    acs_hls(elt, qElt);
}
 
function acs_hd(elt, qElt)
{
    if (elt.numResults > 0 && ihe(elt)) {
        se(elt.id);
        return;
    }
 
    if (elt.selectedIndex == elt.numResults - 1)
        return;
    else if (elt.selectedIndex < 0)
        elt.selectedIndex = 0;
    else
        elt.selectedIndex++;
    acs_hls(elt, qElt);
}

function acs_hls(elt, qElt)
{
    divs = elt.getElementsByTagName('div');

    for (i = 0; i < divs.length; i++) {
        if (i == elt.selectedIndex) {
            divs[i].className = 'srs';
            elt.tempQuery = elt.results[i];
 
            if (qElt) {
                qElt.value = elt.results[i];
                if (qElt.createTextRange) {
                    r = qElt.createTextRange();
                    r.moveStart('character', elt.currentQuery.length);
                    r.moveEnd('character', qElt.value.length);
                    r.select();
                }
            }
        }
        else
            divs[i].className = 'sr';
    }
}



// Initialize classes and variables
RegUtil = new RegUtility();
ConfUtil = new ConfUtility();
ACS = new AjaxRequest();