
//--------------------------------
//Config
//--------------------------------
CURRENT_CONTENT="formlogin"; 
iconfig.VERSION = version;
iconfig.isDebug = false;
iconfig.noCache = false;
lg = lg ? lg : '';
var SECURESITE = 'https://www.'+OODESK_HTTP_DOMAIN;
var UNSECURESITE = 'http://www.'+OODESK_HTTP_DOMAIN;
var valid={}; 
var mainsite = '/desktop/desktop.php';
var url = '/desktop/usersServices.php';
invidesk.includeFile('/toolkit/global/core/prototype/effects.js',{once: true, mode: 'ajax', type:'script',asynchronous:false});
//--------------------------------
//Fonctions
//-------------------------------- 
function userLogin(){
 var params = {
     'action':'login', 
     'login': $F('username'), 
     'password': $F('password'), 
     'memorize':$F('memorize'),
     'cle_app':$F('cle_app'),
     'output':$F('output'),
     'url':$F('url'),
     'secure':$F('secure'),
     'lg':lg
     };
 var ajax = new Ajax.Request(url,{
  onSuccess: userLogin_handler,
  method: 'post', 
  parameters: params
 });
}

function userLogin_handler(response,json){
 var json_data = response.responseText;
 eval("var jsonObject = ("+json_data+")");
 var status = jsonObject.bindings[0];
 if(status.login == 'true'){
 	$('warning').hide();
 	//if(status.redirect){document.location = status.redirect;}
 	if(status.nossl){
 	    mainsite = UNSECURESITE+mainsite; 
 	}else{
        mainsite = SECURESITE+mainsite;
    }
    Effect.Fade('formlogin',{afterFinish: redirect, duration: 1, redirect_uri :status.redirect});
    //set the conversion demo tag
	//$('conv_demo').src='/conv_demo.html'; // MM:20080513 trmporaire
 }else if($('password').value != '') {
 	$('warning').update(_('Login or password incorect'));
  $('warning').show();
  Effect.Shake('warning');
  $('password').value='';
 }
}

function userCreateAccount(){
	if(!valid['formregister'].validate()) return;
	//var params = $H({action:'register', login: $('login').value, name: $('name').value, firstname: $('firstname').value , email: $('email').value , password: $('reg_password').value });
	var params = {'action':'register', 
	              'login': $('login').value, 
	              'name': $('name').value, 
	              'firstname': $('firstname').value , 
	              'email': $('email').value , 
	              'password': $('reg_password').value,
                  'lg':lg 
	              //'keycode': $('keycode').value //MM 20072611
	              };
	var ajax = new Ajax.Request(url,{
		onSuccess: userCreateAccount_handler,
		method: 'post', 
	    	parameters: params
	});
}

function userCreateAccount_handler(response,json){  
 var json_data = response.responseText;
 eval("var jsonObject = ("+json_data+")");
 var status = jsonObject.bindings[0];
 if(status.success){
     var login = status.success;
 	 $('warning').hide();
	 $('formregister').reset();
	 valid['formregister'].reset();
	 //switchContent('formlogin');
	 $('formregister').reset();
	 $('table-inscription').hide();
	 $('table-msg-ok').show();
	 $('username').value = login;
	 $('loginok').update(login);
	 $('emailok').update(login+'@oodesk.com');
	 //set the  signup tag
	 $('conv_signup').src='/conv_signup_in_use.html';
 }else if(status.error) {
 	$('warning').update(_(status.error));
  //$('warning').style.display="block";
  $('warning').show();
  Effect.Shake('warning');
 }
} 

function userGetPassword(){
	if(!valid['formpassword'].validate()) return;
	var params = {action:'getpassword', email: $('emailpassword').value};
	var ajax = new Ajax.Request(url,{
		onSuccess: userGetPassword_handler,
		method: 'post', 
	    parameters: params
	});
}

function userGetPassword_handler(response,json){  
 var json_data = response.responseText;
 eval("var jsonObject = ("+json_data+")");
 var status = jsonObject.bindings[0];
 if(status.success){
 	 $('warning').hide();
	 $('formpassword').reset();
	 valid['formpassword'].reset();
	 $('formpasswordmsg').hide();
	 $('formpasswordmsgko').hide();
	 $('formpasswordmsgok').show();
 }else {
    $('formpasswordmsg').hide();
    $('formpasswordmsgok').hide();
    $('formpasswordmsgko').show();
 	$('warning').update(_(status.error));
    $('warning').show();
    Effect.Shake('warning');
 }
} 

function userGetKey(){
	if(!valid['formkey'].validate()) return;
	var params = {action:'getkey', email: $('emailkey').value};
	var ajax = new Ajax.Request(url,{
		onSuccess: userGetKey_handler,
		method: 'post', 
	    parameters: params
	});
}

function userGetKey_handler(response,json){  
 var json_data = response.responseText;
 eval("var jsonObject = ("+json_data+")");
 var status = jsonObject.bindings[0];
 if(status.success){
 	 $('warning').hide();
	 $('formkey').reset();
	 valid['formkey'].reset();
	 $('formkeymsg').hide();
	 $('formkeymsgko').hide();
	 $('formkeymsgok').show();
 }else {
    $('formkeymsg').hide();
    $('formkeymsgok').hide();
    $('formkeymsgko').show();
 	$('warning').update(_(status.error));
    $('warning').show();
    Effect.Shake('warning');
 }
} 

function fullscreen(){
	var winwidth = window.screen.availWidth;
	var winheight = window.screen.availHeight;
	var desktop_target_win = window.open(mainsite,"desktop_fullscreen","width="+winwidth+",height="+winheight+",resizable=no,menubar=no,left=0,top=0,scrollbar=no");
	try{
		desktop_target_win.focus();
		
		document.location = '/home.php'
	}catch(er){
		$('loading').hide();
		$('formlogin').show();
		$('warning').update('Une erreur est survenu : vous devez autorisé les popups pour ce site');
  	$('warning').show();
  	Effect.Shake('warning');
	}
	//alert(er);
}

function newWin(){
	var desktop_target_win = window.open(mainsite,'desktop_newwin');	
	try{
		desktop_target_win.focus();
		//FIXME: Indiquer que la connexion est dans une autre fenêtre + faire en sorte que le message disparaisse si on se deconnecte
		document.location = 'index.php'
		//$('loading').update('Votre bureau est connecté dans une autre fenêtre');
	}catch(er){
		$('loading').hide();
		$('formlogin').show();
		$('warning').update('Une erreur est survenu : vous devez autorisé les popups pour ce site');
  	    $('warning').show();
  	    Effect.Shake('warning');
	}
}

function redirect(obj){
	$('loading').show();
	var targtest = (/opentarget=(\d+)/).exec(Form.serialize('formlogin'));	
    var target = (targtest && targtest[1]) ?  targtest[1] : null;
    if(!target || target == 1) {
	    if(obj.options.redirect_uri){
	        document.location = obj.options.redirect_uri;
	    }else{
	        document.location = mainsite; 
            window.name = 'desktop';
	    }
	}
	if(target == 2) {fullscreen()}
	if(target == 3) {newWin();}
}


function submitenter(myfield,e) {
    var keycode;
    if (window.event) keycode = window.event.keyCode;
    else if (e) keycode = e.which;
    else return true;
    
    if (keycode == 13) {
        userLogin();
        return false;
    }
        else return true;
}

function switchContent(cid){
	if (cid == CURRENT_CONTENT) {return;}
	$('warning').hide();
	Effect.Fade(CURRENT_CONTENT,{afterFinish: setContent, duration: 0.5, cid: cid});
	if(cid == 'formregister') {
	    formValidation(cid);
	    $('table-msg-ok').hide();
	    $('table-inscription').show();
	    //set the  signup tag
	    //$('conv_register').src='/conv_register.html';
	}
	if(cid == 'formpassword') {
	    formValidation(cid);
	    $('formpasswordmsgok').hide();
	    $('formpasswordmsgko').hide();
	    $('formpasswordmsg').show();
	}
	if(cid == 'formkey') {
	    formValidation(cid);
	    $('formkeymsgok').hide();
	    $('formkeymsgko').hide();
	    $('formkeymsg').show();
	}
}

function setContent(obj){
	//Dumper.alert(obj);
	var contentid = obj.options.cid;
	if(!$(contentid)) return;
	Effect.Appear(obj.options.cid,{duration: 1});
	CURRENT_CONTENT=contentid;
}

function formValidation(formid){
	valid[formid] = new Validation(formid, {immediate : true, onSubmit:false});
	Validation.addAllThese([
	['required', _('This field is required'), function(v) {
	   return !Validation.get('IsEmpty').test(v);
	}],
	['validate-alphanum', _('Only use letters (a-z) or numbers (0-9)'), function(v) {
				return Validation.get('IsEmpty').test(v) ||  !/\W/.test(v)
	}],
	['validate-password', _('Your password must have 4 characters at least and not to be identical to your name'), {
		minLength : 4,
		//notOneOf : ['password','PASSWORD','1234567','0123456'],
		notEqualToField : 'name'
	}],
	['validate-password-confirm', _('Your password confirmation is not correct, try again'), {
		equalToField : 'reg_password'
	}],
	['validate-email', _('Enter a valid email. For example fred@domain.com'), function (v) {
			return Validation.get('IsEmpty').test(v) || /\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(v)
		}]
	]);
	return valid;
}

function registration2Connexion(){
    switchContent('formlogin');
}

function _openDemo(){
    switchContent('formlogin');
    $('username').value = 'demo';
    $('password').value = 'demo';
    userLogin();
}

function v2_openDemo(form){
    $('username').value = 'demo';
    $('password').value = 'demo';
    //console.log(form);
    form.submit();
}

function toggleFormAction(form, action1, action2){
	if(form.action == action1){
		form.action = action2;
	}
	else{
		form.action = action1;
	}
}
