var USSignupInitialized = false
var USFbInitialized = false
var USTwitterInitialized = false

function USSignupInit() {
	var body = document.body
	var html = document.documentElement
	var height = Math.max( body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight );
	$('USShadow').show().setStyle({height:height+'px'})
	$('USMainContainer').show()
	USSignupInitSignup(1);
	USSignupCompleter()
	USSignupFbCompleter()
}

function USSignupInitSignup(popup) {
	$$('#USMainContainer .USFormDiv').each(function(e){e.hide()})
	$$('USMainContainer>div').each(function(e){e.show()})
	$('USSignupForm').show()
	if (popup) {
		USSignupPosition();
	}
}

function USSignupInitSignin(popup) {
	$$('#USMainContainer .USFormDiv').each(function(e){e.hide()})
	$$('USMainContainer>div').each(function(e){e.show()})
	$('USSigninForm').show()
	if (popup) {
		USSignupPosition();
	}
}

function USSignupInitFb(popup) {
	$$('#USMainContainer .USFormDiv').each(function(e){e.hide()})
	$$('USMainContainer>div').each(function(e){e.show()})
	$('USFbForm').show()
	if (popup) {
		USSignupPosition();
	}
}

function USGetScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}

function USSignupCompleter() {
	if (USSignupInitialized) {
		return true
	} else {
		USSignupInitialized = true
	}
	new Ajax.Autocompleter('USSignupTeam', 'USSignupAutocomplete', '/clubs/autocomplete/type/pro', { //type 'pro' to show all teams except amateurs
		//indicator: $('autoCompleterLoading'),
		minChars: 1,
		afterUpdateElement: function(textField, el) {
			if (el.hasAttribute('id')) {
				//textField.value = textField.value.strip();
				$('USSignupTeam').hide();
				with ($('USSignupClubtitle')) {
					update(el.innerHTML + '<a href="javascript:void(0)"><img alt="" class="va" src="/i/actions/delete.png" onclick="USSignupUnselectClub();return false;" /></a>');
					show();
				}
				$('USSignupEmail').focus()
				$('USProId').setValue(el.id);
			} else {
				textField.setValue('');
			}	
		}
	});

	$('USSignupTeam').observe('focus', function(e) {
		var e = Event.element(e);
		if (e.getValue().strip().length <= 0) {
			$('USSignupAutocompleteHelp').update(USSignupAutocompleteHelpMessage).show();
		}
	});
	$('USSignupTeam').observe('blur', function(e) {
		var e = Event.element(e);
		$('USSignupAutocompleteHelp').hide();
		// if the team has not been chosen
		if ($('USSignupClubtitle').innerHTML.length <= 1) {
			$('USSignupTeam').up().addClassName('error');
		} else {
			$('USSignupTeam').up().removeClassName('error');
		}
	});
	$('USSignupTeam').observe('keypress', function(e) {
		var e = Event.element(e);
		if (e.getValue().strip().length <= 1) {
			$('USSignupAutocompleteHelp').update(USSignupAutocompleteHelpMessage).show();
		}
		else {
			$('USSignupAutocompleteHelp').hide();
		}
	});
	
	$('USSignupName').observe('blur', function(e){
		if ($('USSignupName').value.strip() == '') {
			$('USSignupName').up().addClassName('error');
		} else {
			$('USSignupName').up().removeClassName('error');
		}
	})
	$('USSignupEmail').observe('blur', function(e){
		if ($('USSignupEmail').value.strip() == '') {
			$('USSignupEmail').up().addClassName('error');
		} else {
			$('USSignupEmail').up().removeClassName('error');
		}
	})
	$('USSignupPassword').observe('blur', function(e){
		if ($('USSignupPassword').value.length < 6) {
			$('USSignupPassword').up().addClassName('error');
		} else {
			$('USSignupPassword').up().removeClassName('error');
		}
	})
	
	$('USSigninLogin').observe('blur', function() {
		if ($('USSigninLogin').value.strip() == '') {
			$('USSigninLogin').up().addClassName('error')
		} else {
			$('USSigninLogin').up().removeClassName('error')
		}
	})
	$('USSigninPassword').observe('blur', function() {
		if ($('USSigninPassword').value.length < 6) {
			$('USSigninPassword').up().addClassName('error')
		} else {
			$('USSigninPassword').up().removeClassName('error')
		}
	})
	
	
}

function USSignupFbCompleter() {
	if (USFbInitialized) {
		return true
	} else {
		USFbInitialized = true
	}
	new Ajax.Autocompleter('USFbTeam', 'USFbAutocomplete', '/clubs/autocomplete/type/pro', { //type 'pro' to show all teams except amateurs
		//indicator: $('autoCompleterLoading'),
		minChars: 1,
		afterUpdateElement: function(textField, el) {
			if (el.hasAttribute('id')) {
				//textField.value = textField.value.strip();
				$('USFbTeam').hide();
				with ($('USFbClubtitle')) {
					update(el.innerHTML + '<a href="javascript:void(0)"><img alt="" class="va" src="/i/actions/delete.png" onclick="USFbUnselectClub();return false;" /></a>');
					show();
				}
				$('USFbEmail').focus()
				$('USFbPro').setValue(el.id);
			} else {
				textField.setValue('');
			}	
		}
	});

	$('USFbTeam').observe('focus', function(e) {
		var e = Event.element(e);
		if (e.getValue().strip().length <= 0) {
			$('USFbAutocompleteHelp').update(USSignupAutocompleteHelpMessage).show();
		}
	});
	$('USFbTeam').observe('blur', function(e) {
		var e = Event.element(e);
		$('USFbAutocompleteHelp').hide();
		// if the team has not been chosen
		if ($('USFbClubtitle').innerHTML.length <= 1) {
			$('USFbTeam').up().addClassName('error');
		} else {
			$('USFbTeam').up().removeClassName('error');
		}
	});
	$('USFbTeam').observe('keypress', function(e) {
		var e = Event.element(e);
		if (e.getValue().strip().length <= 1) {
			$('USFbAutocompleteHelp').update(USSignupAutocompleteHelpMessage).show();
		}
		else {
			$('USFbAutocompleteHelp').hide();
		}
	});
	$('USFbEmail').observe('blur', function(e){
		if ($('USFbEmail').value.strip() == '') {
			$('USFbEmail').up().addClassName('error');
		} else {
			$('USFbEmail').up().removeClassName('error');
		}
	})
	$('USFbPassword').observe('blur', function(e){
		if ($('USFbPassword').value.length < 6) {
			$('USFbPassword').up().addClassName('error');
		} else {
			$('USFbPassword').up().removeClassName('error');
		}
	})
}

function USSignupUnselectClub() {
	$('USSignupClubtitle').hide()
	$('USSignupTeam').setValue($F('USSignupTeam').strip()).show()
}

function USFbUnselectClub() {
	$('USFbClubtitle').hide()
	$('USFbTeam').setValue($F('USFbTeam').strip()).show()
}

function USSignupPosition() {
	var scroll = USGetScrollXY();
	var viewportWidth=0
	var viewportHeight=0
	if (typeof window.innerWidth != 'undefined') {
		viewportWidth = window.innerWidth
		viewportHeight = window.innerHeight
	} else if (typeof document.documentElement != 'undefined'
		&& typeof document.documentElement.clientWidth !=
		'undefined' && document.documentElement.clientWidth != 0) {
			viewportWidth = document.documentElement.clientWidth
			viewportHeight = document.documentElement.clientHeight
	}
	$('USMainContainer').setStyle({left:viewportWidth/2-$('USMainContainer').getWidth()/2+'px', top:viewportHeight/2-$('USMainContainer').getHeight()/2+scroll[1]+'px'});
}

function USSignupClose() {
	$('USShadow').hide()
	$('USMainContainer').hide()
}

function USSigninRequest(form) {
	new Ajax.Request(USSigninUrl, {
		parameters: $(form).serialize(),
		onComplete: function(t) {
			if (!t.responseJSON) { //successfull login
				window.location.reload()
			} else {
				if (t.responseJSON.cookies_off) {
					$('USNoCookies').appear();
				} else {
					$('USSigninLogin').up().addClassName('error')
					$('USSigninPassword').up().addClassName('error')
				}
			}
		}
	})
}

function USSignupRequest(form) {
	new Ajax.Request(USSugnupUrl, {
		parameters: $(form).serialize(),
		onComplete: function(t) {
			resp = t.responseJSON;
			if (resp.status == 'success') {
				window.location.href = USSignupSecondStep
			} else {
				if (typeof resp.errors.name != 'undefined' || typeof resp.errors.login != 'undefined') {
					$('USSignupName').addClassName('error');
				} else {
					$('USSignupName').removeClassName('error');
				}
				if (typeof resp.errors.email != 'undefined') {
					$('USSignupEmail').addClassName('error');
				} else {
					$('USSignupEmail').removeClassName('error');
				}
				if (typeof resp.errors.password != 'undefined') {
					$('USSignupPassword').addClassName('error');
				} else {
					$('USSignupPassword').removeClassName('error');
				}
				if (typeof resp.errors.club_id != 'undefined') {
					$('USSignupTeam').addClassName('error');
				} else {
					$('USSignupTeam').removeClassName('error');
				}
			}
		}
	})
}

function USFbSignup() {
	window.universalFbInit();
	FB.getLoginStatus(function(response){
		if(response.session) {
			USFbProcessLogin(response.session)
		} else {
			FB.login(function(response){
				USFbProcessLogin(response.session)
			}, {perms:'read_stream,publish_stream,offline_access'})
		}
	})
	return true;
}

function USFbProcessLogin(session) {
	new Ajax.Request(USSignupFbLoginUrl, {
		onComplete: function(t) {
			if (t.responseJSON.status == 'success') {
				window.location.reload()
			} else {
				if (t.responseJSON.reason == 2) { //FacebookLib::R_NOT_FOUND
					//init signup process
					FB.api('/me', function(response){
						USFbFillForm(response.name, 'http://graph.facebook.com/'+session.uid+'/picture') //name, pic
						USSignupInitFb()
					})
				} else {
					//show invalid session message
				}
				
			}
		}
	})
}

function USFbFillForm(name, pic) {
	//$('USFbUid').value = uid
	$('USFbName').update(name)
	if (pic) {
		$('USFbPhoto').src = pic
		$('USFbPhoto').show()
	}
	$('USFbPhotoName').show()
}

function USFbSubmit(form) {
	canSubmit = true;
    //$$('#USFbForm INPUT').each(function(e){if(e.up().hasClassName('error') || e.hasClassName('error')){canSubmit=false;}});
    if (canSubmit) {
	//alert('req')
        new Ajax.Request(USFbSignupUrl, {
            method: 'post',
            parameters: $(form).serialize(),
            onSuccess: function(t) {
                //console.log('xmlh done: '+t.responseJSON);
                //alert('resp'+t.responseText)
				if(t.responseJSON.status == 'success') {
					window.location.href = USSignupSecondStep
                } else {
					errors = t.responseJSON.errors
                    for (i in errors) {
                        //console.log(i+':'+errors[i]);
                    	if (i == 'email') {
							$('USFbEmail').addClassName('error')
						} else if (i == 'password') {
							$('USFbPassword').addClassName('error')
						} else if (i == 'club') {
							$('USFbTeam').addClassName('error')
						}
					}
                }
            }
        });
    }
}

function USTwSignup() {
	window.USTwitterInitialized = true
	window.open(USTwitterUrl, 'Twitter', 'width=800,height=450')
}

function USProcessTwitter() {
	if (window.easySignupData) {
		$('USSignupName').setValue(window.easySignupData.name)
		$('USProfilePic').setValue(window.easySignupData.profile_image_url)
		if (window.easySignupData.profile_image_url) {
			$('USTwPhoto').src = window.easySignupData.profile_image_url;
			$('USTwPhoto').show()
		}
		$('USTwName').update(window.easySignupData.name)
		$('USTwPhotoName').show()
	}
}

Event.observe(document, 'dom:loaded', function() { 
	if (typeof USAbort != 'undefined' && USAbort == 1) {
		return false;
	}
	$$('.USNeedLogin').each(function(e) {
		Event.stopObserving(e)
		e.removeAttribute('onclick')
		Event.observe(e, 'click', function(ee) {
			ee.stop();
			USSignupInit();
			return false;
		})	
	})
	window.setInterval(function() { 
		$$('.USNeedLogin').each(function(e) {
			Event.stopObserving(e)
			e.removeAttribute('onclick')
			Event.observe(e, 'click', function(ee) {
				ee.stop();
				USSignupInit();
				return false;
			})	
		})
	}, 10000)//setInterval
});
