/*
 * Copyright (c) 2006-2007 yovisto.com - Search Web Search App. All Rights Reserved.
 *
 * Autor: Uwe Krueger
 */

/* BEGIN show and hide functions for login/register user over Ajax  */
var setLogin = false;
var setQuickLogin = false;
var setRegister = false;
var setRemind = false;
var setPasswd = false; 
var setIndexPageContent = true;


function showRegister() {
    if (setRegister == false) {
        setRegister = true;
	    hideLogin();
        hideRemind();
        hidePasswd();
		hideIndexPageContent();
		$('CommonMessage').innerHTML = '';
	    $('liveSearchTable').style.display = "none";	
        $('TableCommonMessage').style.display = "none";
          
        $('TableErrorMessage').style.display = "none";		
        $('Register').style.display = "inline";
		$('reg_realname').value = '';  
        $('reg_realname').focus();
        $('reg_username').value = '';  
        $('reg_email').value = '';  
        $('reg_password').value = '';  
        $('reg_password_again').value = '';  
        //$('captcha').value = '';  
		$('reg_city').value = '';
        $('reg_zip').value = '';
        $('reg_country').value = '';		
        $('reg_street').value = '';
		$('reg_year').value = '';			
    } else {
        hideRegister();
    } 
}

function hideRegister() {
    if (document.getElementById) {
	    $('liveSearchTable').style.display = "inline";
        if (setRegister == true) {
	        $('Register').style.display = "none";	
            setRegister = false;
        }  
    }
}


function showPasswd(username) { 
    if (setPasswd == false) {
       
       		
        $('PasswdUsername').innerHTML = username;
        
        $('Passwd').style.display = "inline";
        $('Reminder').style.display = "none";
        
        $('PasswdPassword').focus();
        setPasswd = true;
    } 
}

function hidePasswd() {
	$('liveSearchTable').style.display = "inline";
    if (setPasswd == true) {
	    $('RemindData').style.display = "none";	
        setPasswd = false;
    } 
}

function showIndexPageContent() {
	$('liveSearchTable').style.display = "inline";   
	$('IndexPageContent').style.display = "none";	
    setIndexPageContent = true;
}
function hideIndexPageContent() {
	$('liveSearchTable').style.display = "inline";
    if (setIndexPageContent == true) {
	    $('IndexPageContent').style.display = "none";	
        setIndexPageContent = false;
    } 
}

/* END show and hide functions for login/register user over Ajax */

/* show common message text */
function showMessage(msg){
    $('liveSearchTable').style.display = "none";		
    var ok = '<img src="/img/ok.gif" hspace="5" style="vertical-align: middle">';
	if (document.getElementById) {
        $('CommonMessage').innerHTML = ok + 'Your registration is completed. You can now login.'; 
	    $('TableCommonMessage').style.display = "inline"; 
	}
}

/*******************************************************************************
 * BEGIN login and logout user
 */
var temp_user_username = "";	
var temp_user_password = "";



function loginUser(mode) {	
    var usernameOriginal = $('LoginUsername').value;
    var username = usernameOriginal.toLowerCase();
    if (usernameOriginal!='') {	 
        $('LoginUsername').style.background = '#ffffff';  
		
        var passwordMD5 = MD5($('LoginPassword').value + username);
        temp_user_username = username;
        temp_user_password = $('LoginPassword').value;            		
        var url = '/userLogin;jsessionid=' + jsid;
		var pars = "username=" + usernameOriginal + "&passwordMD5=" + passwordMD5;	
        if (mode==0) {		
		    
		    var myAjax = new Ajax.Request( url, {
		        method: 'get', 
			    parameters: pars, 
			    onComplete: loginUserCallback
		        });
				
		} else if (mode==1) {
		    var myAjax = new Ajax.Request( url, {
		        method: 'get', 
			    parameters: pars, 
			    onComplete: loginUserQuickCallback
		        });		
		} else if (mode==2) {
		   var myAjax = new Ajax.Request( url, {
		        method: 'get', 
			    parameters: pars, 
			    onComplete: loginUserQuickPlayCallback
		        });	
		}
    } else {
        $('LoginUsername').style.background = '#FFD5D5';  
		if (mode==1) {		
            $("LoginMsg").innerHTML = '<br>No username given!';
		} else {
		    $("LoginMsg").innerHTML = 'No username given!';
		}
    }
} 


function loginUserCallback(transport) { 
	var msg = transport.responseText;
	
    // Servlet response code:
    // 0 = username do not exist
    // 1 = username exist but password incorrect
    // 2 = user name exists, but is up to now not verified

    if (msg == "0") { // username do not exist
        $("LoginUsername").style.background = '#FFD5D5';
        $("LoginUsername").value = temp_user_username;
        $("LoginPassword").value = temp_user_password;
        $("LoginMsg").innerHTML = 'Username does not exist!';
    } else if (msg == "1") { // username exist but password incorrect
        $("LoginMsg").innerHTML = '';
        $("LoginPassword").style.background = '#FFD5D5';
        $("LoginPassword").value = temp_user_password;
        $("LoginMsg").innerHTML = 'Password incorrect!';
    } else if (msg == "2") { // user name exists, but is up to now not verified or it is a deleted user account 
        $('LoginMsg').innerHTML = '<font style="color:red;">First, please check your email for complete the registration process!</font>';        
    } else {

		if (document.getElementsByName('LoginCheckbox')[0].checked) {
			
			_setCookie('UA', temp_user_username+'+'+MD5(temp_user_password+temp_user_username.toLowerCase()), null, new Date((new Date()).getTime()+1000*3600*24*14).toGMTString(), "/"  );
		}
		location.href=document.URL;

    }  
}


/* BEGIN logout process */
function logoutUser(mode) {
    _setCookie('UA', null, null, new Date((new Date()).getTime()-1000*3600*240).toGMTString(), "/");
    
    var url = "/userLogin;jsessionid=" + jsid + "?logout=true";   
    var pars = ''; 	
	if (mode==0){ // Index page
	    var myAjax = new Ajax.Request( url, {
		    method: 'get', 
		    parameters: pars, 
		    onComplete: logoutUserCallback
	    }); 
	} else if (mode==1) { // Result page
	    var myAjax = new Ajax.Request( url, {
		    method: 'get', 
		    parameters: pars, 
		    onComplete: logoutUserQuickCallback
	    }); 
	} else if (mode==2) { // Play page
        var myAjax = new Ajax.Request( url, {
		    method: 'get', 
		    parameters: pars, 
		    onComplete: logoutUserQuickPlayCallback
	    }); 
	}	
	
	
}
function logoutUserCallback(responseText) {
    var msg = responseText;
    if (msg == "false"){
        // nothing
    } else {
    
   		location.href="http://www.yovisto.com/";
        //$("LoginState").innerHTML = '<a href="javascript:showLogin()" class="user" >Login</a> | <a href="/index.jsp?do=regist" class="user"> Register </a>';
		//showIndexPageContent();
    }  
}

/* END logout process */



/*******************************************************************************
 * BEGIN remind username or password
 */
function remindLoginData() {
    var isRemindOK = true;
    var usernameOrEmail = $('ForgotLoginData').value;  
    if ( usernameOrEmail=='') { 
        $("ForgotLoginDataMsg").innerHTML = 'Please type username or email!';
        $("ForgotLoginData").style.background = '#FFD5D5';
        isRemindOK = false;
    } else {
        // if email address
        if (usernameOrEmail.search(/@/)!= -1) { 
            if (!usernameOrEmail.match(/^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i)) {   
                $("ForgotLoginDataMsg").innerHTML = 'Invalid email address!'; 
                $("ForgotLoginData").style.background = '#FFD5D5'; 
                isRemindOK = false;    
            }
        }
            
        // Verification OK? Send data to servlet process.
        if (isRemindOK) {   
           $("ForgotLoginDataMsg").innerHTML = '<img src="/img/wait_blue_of_gray_.gif" align="absmiddle"> Please wait...';
        			
            var url = "/remind;jsessionid=" + jsid;
	    var pars = "usernameOrEmail=" + usernameOrEmail;		
	    var myAjax = new Ajax.Request( url, {
			    method: 'get', 
			    parameters: pars, 
			    onComplete: remindForgotDataCallback
		       });			   
            $("RemindButton").disabled = true; 
            $("ForgotLoginData").style.background = '#cccccc'                 
        }
    }
}

function remindForgotDataCallback(transport) {

    var msg = transport.responseText; 
    var ok = '<img src="/img/ok.gif" hspace="5" align="absmiddle">';
    var bulb = '<img src="/img/bulb.gif" hspace="5" align="absmiddle">';
 
    // Servlet response code:
    // 0 = reminding complete
    // 1 = username don`t exists
    // 2 = invalid email adress
    // 3 = error
    // 4 = the set passwd process couldn't completed (SQL UPDATE function)

    if (msg == null) {
        // nothing
    } else if (msg == 0) {
        $('ForgotLoginDataMsg').innerHTML = ok + 'Password assistance sent you an email. Please check your mailbox.'; 
    } else if (msg == 1) {
        $("ForgotLoginDataMsg").innerHTML = '<font style="color:#FF0000">Sorry, there is no account on yovisto associated with that username and email respectively.</font>';
    } else if (msg == 4) {
        $('ForgotLoginDataMsg').innerHTML = '<font style="color:#FF0000">Sorry, the "new password" process couldn&prime;t completed.</font>';
    } 
}
/* END remind username or password */


/*******************************************************************************
 * BEGIN set new password
 */
function setNewPassword(username, vkey) {
    var isSetNewPasswordOK = true;
    var password = $('PasswdPassword').value;  
    var password_again = $('PasswdPasswordAgain').value;          
		
    //////////////////
    // password check       
    if ( password != password_again || password=='') { 
        $("PasswdPasswordMsg").innerHTML = 'Passwords not equal!';
        $("PasswdPassword").style.background = '#FFD5D5'; 
        $("PasswdPasswordAgain").style.background = '#FFD5D5';  
        isSetNewPasswordOK = false;
    } else {
        if (password.length > 16) {
            $("PasswdRegisterPasswordMsg").innerHTML = 'Your password is to long!'; 
            $("PasswdPassword").style.background = '#FFD5D5'; 
            $("PasswdPasswordAgain").style.background = '#FFD5D5';  
            isSetNewPasswordOK = false;
        } else if (password.length < 6) {
            $("PasswdPasswordMsg").innerHTML = 'Please choose more than 6 characters.'; 
            $("PasswdPassword").style.background = '#FFD5D5'; 
            $("PasswdPasswordAgain").style.background = '#FFD5D5';  
            isSetNewPasswordOK = false;
        } else {
            passwordMD5 = MD5(password + username.toLowerCase()); // make MD5 hash key
            $("PasswdPasswordMsg").innerHTML = '';
            $("PasswdPassword").style.background = '#ffffff';
        }
    }           
       
    // new password OK? Send data to servlet process.
    if (isSetNewPasswordOK) {            
        $("MessagePasswd").innerHTML = '<img src="/img/wait_blue_of_gray_.gif" align="absmiddle"> Please wait...'; 
	
  		var url = "/passwd;jsessionid=" + jsid;
	    var pars = "vkey=" + vkey + "&pw=" + passwordMD5;
	    var myAjax = new Ajax.Request( url, {
		    method: 'get', 
		    parameters: pars, 
		    onComplete: setNewPasswordCallback
		   });		
				   
        $("PasswdButton").disabled = true; 
        $("PasswdPassword").style.background = '#cccccc';
        $("PasswdPasswordAgain").style.background = '#cccccc';
        //$('Passwd').style.display = "none"; 
    }
}
function setNewPasswordCallback(transport) {
    //$("messageRegist").innerHTML = "";
    var msg = transport.responseText;  
    var ok = '<img src="/img/ok.gif" hspace="5" align="absmiddle">';
    var bulb = '<img src="/img/bulb.gif" hspace="5" align="absmiddle">';
    //$("registerButton").disabled = false;
 
    // Servlet response code:
    // 0 = password change complete
    // 1 = db query execution error
    // 2 = probably, the password change link is expired because the "passwd" value contains FALSE.
   
    if (msg == null) {
        alert("Error, no response text!");
    } else if (msg == 0) {	
      
        $('MessagePasswd').innerHTML = ok + 'Password assistance successful. You can now login with your new password.'; 
        
    } else if (msg == 1) {
        $("MessagePasswd").innerHTML = '<font style="color:#FF0000">Sorry, there is no account on yovisto associated with that username and email respectively.</font>';
        $("ForgotLoginData").style.background = '#FFD5D5';
        $("RemindButton").disabled = false;
    } else if (msg == 2) {
        $('MessagePasswd').innerHTML = bulb + '<font style="color:#FF0000">Sorry, the password change link is expired. Please retry the <a href="/login.jsp" >reminding process</a>.</font>';

    } 
}
/* END set new password */


/* BEGIN register new user */
function registerNewUser() {
    var temp_username = "";	
    var temp_password = "";
    var flag = true;
    var bulb = '<img src="/img/bulb.gif" hspace="20" align="absmiddle">';

    var realname = ''+$('reg_realname').value;
    var username = $('reg_username').value;  
    var email = $('reg_email').value;
    var password = $('reg_password').value;
    var password_again = $('reg_password_again').value;
	var gender = $('reg_gender').value;  
	var city = $('reg_city').value;
    var zip = $('reg_zip').value;
    var country = $('reg_country').value;		
    var street = $('reg_street').value;
	var year = $('reg_year').value;
		
    //var captcha = $('captcha').value; 
		
    //////////////////
    // username check  
    if (username=='') { 
        $("RegisterUsernameMsg").innerHTML = 'No username given!';
        $("reg_username").style.background = '#FFD5D5';
        flag = false;
    } else if (username.lastIndexOf(" ")!=-1) {
        $("RegisterUsernameMsg").innerHTML = 'No blank in username!';
        $("reg_username").style.background = '#FFD5D5';
        flag = false;     
    } else {
	   $("RegisterUsernameMsg").innerHTML = '';
       $("reg_username").style.background = '#ffffff';
	}

    //////////////////
    // password check
    if (flag) {
        if ( password != password_again || password=='') { 
            $("RegisterPasswordMsg").innerHTML = 'Passwords not equal!';
            $("reg_password").style.background = '#FFD5D5'; 
            $("reg_password_again").style.background = '#FFD5D5';  
            flag = false;
        } else {
            if (password.length > 16) {
                $("RegisterPasswordMsg").innerHTML = 'Your password is to long!'; 
                $("reg_password").style.background = '#FFD5D5'; 
                $("reg_password_again").style.background = '#FFD5D5';  
                flag = false;
            } else if (password.length < 6) {
                $("RegisterPasswordMsg").innerHTML = 'Your password is to short! Please choose more than 6 characters.'; 
                $("reg_password").style.background = '#FFD5D5'; 
                $("reg_password_again").style.background = '#FFD5D5';  
                flag = false;
            } else {
                passwordMD5 = MD5(password + username.toLowerCase()); // make MD5 hash key
                $("RegisterPasswordMsg").innerHTML = '';
                $("reg_password").style.background = '#ffffff';
            }
        }           
    }

    /////////
    // email 
    if (flag) {
        if (!email=='') { 
            // email.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/); // a other pattern
            if (!email.match(/^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i)) {   
                $("RegisterEmailMsg").innerHTML = 'Invalid email address!'; 
                $("reg_email").style.background = '#FFD5D5'; 
                flag = false;                   
            } else {
                $("RegisterEmailMsg").innerHTML = ''; 
                $("reg_email").style.background = '#ffffff';
            }                     
        } else {  
            $("RegisterEmailMsg").innerHTML = 'No email address given!'; 
            $("reg_email").style.background = '#FFD5D5';
            flag = false;
        }  
    }

    //////////
    // captcha 
	/*
        if (flag) {
            if (captcha=='') { 
                $("RegisterCaptchaMsg").innerHTML = 'Please type the text from the verification image!'; 
                $("captcha").style.background = '#FFD5D5';
                flag = false;                
            } else {
                $("RegisterCaptchaMsg").innerHTML = '';
                $("captcha").style.background = '#ffffff';
            }
        }
	*/

    //////////////////
    // check agreement
    if (flag) {
        if (!document.getElementsByName('cb1')[0].checked) {
            $("RegisterAgreementMsg").innerHTML = 'You must accept the Terms of Service!'; 
            flag = false;
        } else {
            $("RegisterAgreementMsg").innerHTML =  '';
        }
    }
         
    // Verification OK? Send data to servlet.
    if (flag) { 
        $("messageRegist").innerHTML = '<img src="/img/wait_blue_of_gray_.gif" align="absmiddle"> Please wait...';     
        var url = "/register;jsessionid="+jsid; 
        var pars = "do=register&username="+username+"&realname="+realname+"&password="+passwordMD5+"&email="+email+"&street="+street+"&city="+city+"&zip="+zip+"&gender="+gender+"&country="+country+"&year="+year;
	    var myAjax = new Ajax.Request( url, {
		    method: 'get', 
		    parameters: pars, 
		    onComplete: registerNewUserCallback
		});	
			   
        $("registerButton").disabled = true;
    }    
}
function registerNewUserCallback(transport) {
    $("messageRegist").innerHTML = "";
	//$('liveSearchTable').style.display = "none";	
    var msg = transport.responseText;
    var ok = '<img src="/img/ok.gif" hspace="5" align="absmiddle">';
    var bulb = '<img src="/img/bulb.gif" hspace="5" align="absmiddle">';
    $("registerButton").disabled = false;

    if (msg == null) {
        // nothing
    } else if (msg == 0){
        $('messageRegist').innerHTML = ok + 'Thank you, please check your email account to complete the registration process.'; 
       // $('TableCommonMessage').style.display = "inline";  
        $('Register').style.display = "none";		
       // hideRegister();
    } else if (msg == 1){
        $('messageRegist').innerHTML = bulb + 'Sorry, please retry the registration process!'; 
        //$('tableRegistration').style.display = "none";
    } else if (msg == 2){
        $("messageRegist").innerHTML = 'Please check the image verification code!';
        $("captcha").style.background = '#FFD5D5';
    } else if (msg == 3){
        $("RegisterUsernameMsg").innerHTML = 'Sorry, username already exists!';
        $("reg_username").style.background = '#FFD5D5';
    } else if (msg == 4){
        $("RegisterEmailMsg").innerHTML = 'Sorry, invalid email adress!';
        $("reg_email").style.background = '#FFD5D5';
    } 
}
function reloadCaptcha() { 
    $('CaptchaImage').src = $('CaptchaImage').src + Math.random();
}
/* END register new user */


/* BEGIN feedback form  */
function showFeedback(){
    $("feedback").style.display = "inline";
}


function closeFeedback(){
    $("feedback").style.display = "none";
}



function feedback(){
    var text = $("feedback_text").value; 			
	if (text.length < 1024) {
	    if ($("feedback_text").value != "" ) {           	
			var url = "/feedback;jsessionid=" + jsid;
		    var pars = 'feedback=' + text; 
		    var myAjax = new Ajax.Request( url, {
			    method: 'get', 
			    parameters: pars, 
			    onComplete: feedbackCallback
			   });	
            $("feedback_button").disabled = true;			
	    }
	} else {
	    $('feedback_msg').innerHTML = "Too much text!"; 
    }
}


function updateFeedbackText(){
    var text = $("feedback_text").value; 
    if (text.length < 1024) {
        $('feedback_msg').innerHTML= 1024 - text.length;
    } else {
	    $('feedback_msg').innerHTML = "Too much text!"; 
    }
}

function feedbackCallback(transport) {
    var msg = transport.responseText;
	$('feedback_msg').innerHTML = "Thank You!"; 
	$("feedback_button").disabled = true;
	$("feedback_text").disabled = true;
    window.setTimeout('clearFeedbackForm()',2300); 	
}

function clearFeedbackForm(){
	$
	$("feedback_text").value = '';
	$('feedback_msg').innerHTML = '';
	$("feedback_button").disabled = false;	
	$("feedback_text").disabled = false;
}
/* END feedback form */

