function pageInit(){
	if(!CheckRequirements()) return;
	initControls();
	Event.observe(window, 'resize', evResizeWindow, false);
	setTimeout(function(){
		evResizeWindow();
		if($('un').value == '') $('un').focus();
		else if($('ps').value == '') $('ps').focus();
		else $('btnSubmit').focus();
		preloadImages(preloadIndex, 'images/index/');
	}, 50);
}
function initControls(){
	utMakeButton($('btnSubmit'), SignIn);
	utMakeButton($('btnResetPass'), ResetPassword);
	utMakeButton($('btnCancelReset'),dsHideRemind);	
	utMakeButton($('btnStart'));
	Event.observe($('un'),'keydown',	keyLogin);
	Event.observe($('ps'),'keydown',	keyLogin);
	Event.observe($('re'),'keydown',	keyLogin);
	Event.observe($('em'),'keydown',	keyRemind);
	// active field highlighting
	var inputs = document.body.getElementsByTagName('input');
	for(var i in inputs) {
		if(inputs[i].type == 'text' || inputs[i].type == 'password'){
			Event.observe(inputs[i],'focus',evFocusTextField, false);
			Event.observe(inputs[i],'blur',evBlurTextField, false);
		}
	}
}
function SignIn(){
	// disable form
	dsShowSigninProgress();
	$('un').readOnly = $('ps').readOnly = $('re').readOnly = true;
	// sign in
	setTimeout(function(){ window.status = 'Signing in...'; $('signinform').submit();}, 100);
}
function Remind(){
	dsShowRemind();
}
function keyLogin(e){
	if(e.keyCode == 13) SignIn();
}
function keyRemind(e){
	if(e.keyCode == 13) ResetPassword();
	else if(e.keyCode == 27) dsHideRemind();
}
function evFocusTextField(ev){
	var input = Event.element(ev);
	if(input) input.className = 'focus';	
}
function evBlurTextField(ev){
	var input = Event.element(ev);
	if(input) input.className = '';	
}
function ResetPassword(){
	if(! (new RegExp("^(\\S+)@(\\S+)\\.(\\S+)$","g")).test($('em').value)){
		$('em').focus();
		$('em').select();
		return;
	}
	dsShowRemindProgress();
	ajResetPassword();
}
// =======================================================================	Display functions
function dsShowSigninProgress(){
	$('btnSubmitCont').className = 'hidden';
	$('signinprogress').className = '';
}
function dsShowRemindProgress(){
	$('resetButtons').className = 'hidden';
	$('remindprogress').className = '';
	$('em').readOnly = true;
}
function dsHideRemindProgress(){
	$('resetButtons').className = '';
	$('remindprogress').className = 'hidden';
	$('em').readOnly = false;
}
function dsShowRemind(){
	$('signinform').className = 'hidden';
	$('remindform').className = '';
	if($('loginMsg')) $('loginMsg').className = 'hidden';
	$('em').value = '';
	$('em').focus();
}
function dsHideRemind(){
	$('signinform').className = '';
	$('remindform').className = 'hidden';
	if($('un').value != '') $('ps').focus();
	else $('un').focus();
}
// =======================================================================	Ajax functions
function ajResetPassword(){
	new Ajax.Request(
	"sys/resetpass.php", 
	{
		method: 'post', 
		parameters: 'em='+escape($('em').value),
		onSuccess: ajResetSuccess,
		onFailure: ajResetFail
	});		
}
function ajResetSuccess(req){
	var res = req.responseText;
	dsHideRemindProgress();
	if(res == '1'){ // success
		alert("Your username and new password has been emailed to "+$('em').value+"\n\nCheck your email and try to sign in again.");
		dsHideRemind();
	} else {
		alert("The email you entered is not registered with bubbl.us\n\nPlease check your spelling and try again.");
		$('em').focus();
		$('em').select();
	}
}
function ajResetFail(){
}
//======================================================================== EVENT
function evResizeWindow(){
	var windowHeight, windowWidth;
	if(window.innerHeight) { 
		windowHeight = window.innerHeight;
		windowWidth = window.innerWidth;
	} else {
		windowHeight = document.documentElement.clientHeight;
		windowWidth = document.documentElement.clientWidth;
	}
	$('onebox').style.display = 'block';
	var boxHeight = Element.getHeight($('screencenter'));
	var marg = windowHeight / 2 - boxHeight / 2;
	marg -= marg * 0.3;
	$('onebox').style.marginTop = Math.floor(marg) + "px";
}
// =======================================================================	Util
function CheckRequirements() {
// Check for Flash (modified Dreamweaver version)
  var ok=false;
  var browserwarning = false;
  with (navigator) 
  if (appName.indexOf('Microsoft')==-1 || (plugins && plugins.length)) {
    ok = (plugins && plugins['Shockwave Flash']);
  } else if (appVersion.indexOf('3.1')==-1) {
    if (window.MM_flash!=null) ok = window.MM_flash;
	else { // unknown browser
		ok = true;
	}
  }
  if(!ok) {
	  window.location = 'noflash.htm';
	  return false;
  }
  var i;
  if((i=browserString.indexOf('MSIE')) >= 0){ // IE 6.0 +
	var ver = browserString.substr(i+5, browserString.indexOf(';',i+1)-i-5);
	if(!isNaN(Number(ver))){
		if(ver < 1.6) browserwarning = true;
	} else browserwarning = true;
  } else if((i=browserString.indexOf('Firefox/')) >= 0){ //FF 1.6+
  	var ver = browserString.substr(i+8, 3);
	if(!isNaN(Number(ver))){
		if(ver < 1.6) browserwarning = true;
	} else browserwarning = true;
  }
  if(browserwarning){
	  $('browserwarning').className = '';
	  $('screencenter').className = 'warning';	  
  }
  return true;
}
function utMakeButton(element, onClick){
	if(!onClick) onClick = function(){ return true; };
	Event.observe(element,'mousedown',function(ev){ Event.element(ev).className = 'down';},true);
	Event.observe(element,'mouseup',function(ev){ Event.element(ev).className = 'over'; onClick(); },true);
	Event.observe(element,'focus',function(ev){ if(Event.element(ev).className!='down') Event.element(ev).className = 'over';},true);
	Event.observe(element,'mouseover',function(ev){ if(Event.element) Event.element(ev).className = 'over';},true);
	Event.observe(element,'mouseout',function(ev){ if(Event.element) Event.element(ev).className = 'button';},true);
	Event.observe(element,'blur',function(ev){ Event.element(ev).className = 'button';},true);
	Event.observe(element,'keydown', function(ev){ if(ev.keyCode == 13 || ev.keyCode == 32) onClick(); }, false);
}
