window.addEvent('domready', function()
{
    user_settings_cookie_check();
    script_url = '/bin/registration2/settings.php';
    final_msg = new Array();

	// open login pop-up from external links
    if( String( window.location ).contains( '#settings' ))
		display_settings();
});


/**
 * Function displays settings pop-up if cookie is present
 * 
 */
function user_settings_cookie_check()
{
    cookieVal = Cookie.get('user_settings_pending');

    if( cookieVal )
    {
	payableVal = Cookie.get('payable');

	if( payableVal )
	    payable = 1;

	new Ajax('/bin/registration2/settings.php', {
		    method: 'get',
		    encoding: 'utf-8',
		    onComplete: user_settings_display,
		    evalScripts: true,
		    addSlashes: true
	        }).request();
    }
}


/**
 * Function sets initial values for settings pop-up
 * 
 */
function user_settings_display( return_status )
{
        if(( 'undefined' !== typeof payable ) && ( payable ))
	    Cookie.set('payable', '1', {path: '/' });

        if( 'error' == return_status )
	    return;

	close_banner();
	pre_fullscreen();

	if( !$('MBOX_window') ||
	    ( 'none' == $('MBOX_window').style.display ) ||
	    ( '' == $('MBOX_window').style.display ))
        {
	    mbox_open(450, 500, false);
	}

	$('MBOX_window').innerHTML = return_status;

	// url of script for ajax purposes
	script_url = '/bin/registration2/settings.php';
	registration_script_url = '/bin/registration2/index.php';

	if($('smsnews'))
	{
		// hide gsm form if SMS option unchecked
		if( false == $('smsnews').checked )
		    $('gsmnum_verify').style.display = 'none';

		if( $('gsmnum_save') )
		    $('gsmnum_save').style.display = 'none';

		if( true == $('smsnews').checked )
		    $('gsmnum_save_button').style.display = 'block';
	}

	gsm_first_step = true;

	active_step = 'set';

	// help box visibility status
	help_displayed = false;

	// get HTML code of ajax loader
	ajax_loader = $('ajax_loader_div').innerHTML;
	ajax_loader_big = $('ajax_loader_big_div').innerHTML;

	if ( $('facebook_settings') )
		$('button_close_2').className = 'close_button';
	else
		$('button_close').className = 'close_button';

	if(( 'undefined' !== typeof payable ) && payable )
	    $('save_settings_link').addEvent('click', save_all_payable_close_settings);
	else
	    $('save_settings_link').addEvent('click', save_all_close_settings);
}


/**
 * Function checks if user is logged in and calls check_user_complete
 * to display either login pop-up or settings pop-up
 * 
 */
function display_settings( payaccess )
{
    if( 1 == payaccess )
	payable = 1;

    new Ajax('/bin/registration2/settings.php?action=check-user&return=' + location.href, {
	     method: 'get',
	     encoding: 'utf-8',
	     onComplete: check_user_complete,
	     evalScripts: true
	    }).request();
}


/**
 * Function displays settings pop-up if user is logged in
 * or login pop-up otherwise
 * 
 */
function check_user_complete( return_status )
{
    if( 'error' == return_status )
    {
	settings_link = true;

	if( 'undefined' !== typeof payable )
	    var pl = payable;

	login_show(pl);
	return false;
    }

    var pl = '';

    if( 'undefined' !== typeof payable )
	pl = 'payable';

    new Ajax('/bin/registration2/settings.php?action=display&what=pl', {
	        method: 'get',
		encoding: 'utf-8',
		update: $('MBOX_window'),
		onComplete: user_settings_display,
		evalScripts: true
		}).request();
}


/**
 * Function executes given function if enter pressed
 */
function enter( event, f_name )
{
    if( event.keyCode == 13 )
	eval( f_name );
}


/**
 * Check user name availability 
 * 
 */
function user_name_check(onkeypress)
{
    if( onkeypress && ($('user_name').value.length < 3 ))
    {
	    $('user_name_feedback').className = '';
	    $('user_name_feedback').innerHTML = '';
	    return false;
    }

    // don't react if own username
    if( $('user_name').value == own_user_name )
    {
	$('user_name_feedback').className = '';
	$('user_name_feedback').innerHTML = '';
	return false;
    }

    // there is no user name; don't react
    if (!$('user_name').value)
    {
	$('user_name_feedback').className = 'feedback_error';
	$('user_name_feedback').innerHTML = eval( 'error_step_1_user_name_too_short' );
	return false;
    }

    // reset all error indicators
    $('user_name_feedback').innerHTML = ajax_loader;
    $('user_name_feedback').className = '';

    url = '/bin/registration2/settings.php' + '?action=' + 'user_name';
    new Ajax(url, {
	    method: 'post',
            encoding: 'utf-8',
	    postBody: 'what=' + encodeURIComponent($('user_name').value),
	    onComplete: user_name_check_complete
	}).request();
}


/**
 * AJAX feedback for user name availability check
 * 
 */
function user_name_check_complete(return_status)
{
    if( return_status )
    {
	level = return_status.split('_');
	$('user_name_feedback').className = 'feedback_' + level[0];
	$('user_name_feedback').innerHTML = eval( return_status );
    }
    else
    {
	$('user_name_feedback').className = '';
	$('user_name_feedback').innerHTML = '';
    }
}


/**
 * Check if old password is valid and matches. 
 * 
 */
function old_password_check(check_empty)
{
    // check if field is empty
    if (check_empty  && !$('old_password').value.length)
    {
	$('old_password_feedback').innerHTML = error_old_password_empty;
	$('old_password_feedback').className = 'feedback_error';
	return false;
    }

    if($('old_password').value.length)
    {
	url = script_url + '?action=' + 'old_password_check';
	new Ajax(url, {
		method: 'post',
		encoding: 'utf-8',
		postBody: 'what=' + encodeURIComponent($('old_password').value),
		onComplete: old_password_check_complete
		}).request();
    }
}


function old_password_check_complete( return_status )
{
    if( return_status )
    {
	level = return_status.split('_');
	$('old_password_feedback').className = 'feedback_' + level[0];
	$('old_password_feedback').innerHTML = eval( return_status );
    }
    else
    {
	$('old_password_feedback').className = '';
	$('old_password_feedback').innerHTML = '';
    }
}


/**
 * Check e-mail availability & validity
 * 
 */
function email_check( check_empty )
{
	if (!$('email_r'))
		return false;

	// check if field is empty
	if (check_empty && !$('email_r').value.length)
	{
	        $('email_feedback').innerHTML = eval ( error_step_1_email_empty );
		$('email_feedback').className = 'feedback_error';
		return false;
	}

	// there is no email; don't react
	else if (!$('email_r').value)
	{
		$('email_feedback').innerHTML = '';
		$('email_feedback').className='';
		return false;
	}

	// reset all error indicators
	$('email_feedback').innerHTML = ajax_loader;
	$('email_feedback').className = '';
		 
	url = script_url + '?action=check-email' + '&return=' + location.href;
	new Ajax(url, {
		method: 'post',
		encoding: 'utf-8',
		postBody: 'what='+encodeURIComponent($('email_r').value),
		onComplete: email_check_complete
	}).request();
}


/**
 * AJAX feedback from e-mail avaliability check 
 * 
 */
function email_check_complete(return_status)
{
    $('email_feedback').className = '';
    $('email_feedback').innerHTML = '';

    if( return_status )
    {
	level = return_status.split('_');

	if( level[0] != "success" )
	    $('email_feedback').className = 'feedback_' + level[0];

	$('email_feedback').innerHTML = eval( return_status );

	if(( 'undefined' !== typeof email_sent ) && ( true == email_sent ))
	    $('email_feedback').innerHTML = eval( 'success_email_sent' );
    }
}


/**
 * Function reflects changes of the first gsm prefix in the second
 * 
 */
function change_gsmprefix()
{
    $('gsmprefix_repeat').value = $('gsmprefix').value;
}


/**
 * Function validates GSM number
 * 
 */
function verify_gsm_num()
{
    $('gsmnum_save_button').setStyle('display', 'none');

    gsm_first_step = false;

    sms = 0;

    if( true == $('smsnews').checked )
	sms = 1;

    url = '/bin/registration2/settings.php?action=verify-gsm';
    new Ajax(url, {
	    method: 'post',
	    encoding: 'utf-8',
	    postBody: 'gsm=' + encodeURIComponent($('gsmprefix').value) + encodeURIComponent($('gsmnum').value) + '&gsm_repeat=' + encodeURIComponent($('gsmprefix_repeat').value) + encodeURIComponent($('gsmnum_repeat').value) + '&sms=' + sms,
	    onComplete: verify_gsm_num_complete
	}).request();
}


function verify_gsm_num_complete( return_status )
{
    level = return_status.split('_');

    $('gsmnum_feedback').className = 'feedback_' + level[0];

    if( return_status.match( 'success_gsm_saved' ))
    {
	$('gsmnum_save').innerHTML = $('gsmnum_save').innerHTML.replace('%GSMNUM', level[3]);
	$('gsmnum_verify').style.display = 'none';
	$('gsmnum_save_button').style.display = 'none';
	$('gsmnum_save').style.display = 'block';
	$('gsmnum_feedback').className = '';
	$('gsmnum_feedback').innerHTML = '';
    }

    else
    {
	$('gsmnum_feedback').innerHTML = eval( return_status );
	$('gsmnum_save_button').setStyle('display', '');
    }
}


/**
 * Function submits GSM code
 * 
 */
function save_gsm_num()
{
    $('gsmnum_verify_button').setStyle('display', 'none');

    gsm_first_step = false;

    url = script_url+'?action=save-gsm';
    new Ajax(url, {
	    method: 'post',
	    encoding: 'utf-8',
	    postBody: 'what=' + encodeURIComponent($('gsm_code').value),
	    onComplete: save_gsm_num_complete
	}).request();
}


function save_gsm_num_complete( return_status )
{
	level = return_status.split('_');
	
	if( return_status )
	{
		level = return_status.split('_');
		$('gsm_code_feedback').className = 'feedback_' + level[0];
		$('gsm_code_feedback').innerHTML = eval( return_status );
	
		if( 'success' == level[0] )
		{
			$('gsmnum_save').style.display = 'none';
			gsmnum = $('gsmnum_repeat').value;
			$('span_gsmprefix').setHTML($('gsmprefix').value);
			$('span_gsmnum').setHTML($('gsmnum').value);

			if( true == $('smsnews').checked )
				$('gsmnum_old').setStyle('display', '');
		}
		else
		$('gsmnum_verify_button').setStyle('display', '');
	}
}


/**
 * Function validates name
 * 
 */
function name_check()
{
    // there is no name; don't react
    if (!$('name').value || $('name').value == own_name)
    {
	$('name_feedback').className = '';
	$('name_feedback').innerHTML = '';
	return false;
    }

    // reset all error indicators
    $('name_feedback').innerHTML = '';
    $('name_feedback').className = '';

    url = script_url + '?action=' + 'check-name';
    new Ajax(url, {
	    method: 'post',
            encoding: 'utf-8',
	    postBody: 'what=' + encodeURIComponent($('name').value),
	    onComplete: name_check_complete
	}).request();
}


function name_check_complete(return_status)
{
    $('name_feedback').className = '';
    $('name_feedback').innerHTML = '';

    if( return_status )
    {
	level = return_status.split('_');

	$('name_feedback').className = 'feedback_' + level[0];
	$('name_feedback').innerHTML = eval( return_status );
    }
}

/**
 * Function validates city
 * 
 */
function city_check()
{
    // there is no name, don't react
    if(!$('city').value || $('city').value == own_city)
    {
	$('city_feedback').className = '';
	$('city_feedback').innerHTML = '';
	return false;
    }

    // reset error indicators
    $('city_feedback').innerHTML = '';
    $('city_feedback').className = '';

    url = script_url + '?action=' + 'check-city';
    new Ajax(url, {
	    method: 'post',
            encoding: 'utf-8',
	    postBody: 'what=' + encodeURIComponent($('city').value),
	    onComplete: city_check_complete
	}).request();
}


function city_check_complete( return_status )
{
    $('city_feedback').className = '';
    $('city_feedback').innerHTML = '';

    if( return_status )
    {
	level = return_status.split('_');

	$('city_feedback').className = 'feedback_' + level[0];
	$('city_feedback').innerHTML = eval( return_status );
    }
}


/**
 * Function displays which if what is checked
 * and hides it otherwise
 * 
 */
function toggle_sms( el, new_gsm )
{
	$('gsm_code_feedback').setHTML('<br />');
	$('gsm_code_feedback').className = '';

    	if(( 'undefined' !== typeof new_gsm ) && true == new_gsm)
    	{
		$('gsmnum_old').setStyle('display', 'none');
		$('gsmnum_verify').style.display = 'block';
		$('gsmnum_save_button').setStyle('display', '');
		return;
	}

	if(( true == $(el).checked ))
	{
	 	if('' ==  gsmnum)
		{
			$('gsmnum_verify').style.display = 'block';
			$('gsmnum_save_button').setStyle('display', '');
		}

		if('' !=  gsmnum)
			$('gsmnum_old').setStyle('display', '');
		return;
	}

	$('gsmnum_verify').setStyle('display', 'none');
	$('gsmnum_save').setStyle('display', 'none');
	$('gsmnum_old').setStyle('display', 'none');
}


/**
 * Function saves each section of
 * personal settings
 */
function save_all_close_settings( avatar_ok )
{
    if( $('avatar') && ( '' != $('avatar').value ) && ( 'proceed' != avatar_ok ))
    {
	avatar_upload();
	return;
    }

    email_check( false );

    $('ps_form').action = script_url + '?action=save' + '&return=' + location.href;
    $('ps_form').send( {
	    onComplete: function( return_status )
	    {
		settings_clear_feedbacks();		

		level = return_status.split('_');

		if( 'error' == level[0] )
		{
		    user_name_check();
		    old_password_check();
		    new_password_check();
		    password_change_check();

		    if( 'ln' == level[1] )
		    {
			$('ln_feedback').className = 'feedback_' + level[0];
			$('ln_feedback').innerHTML = eval( return_status );
		    }

		    name_check();
		    city_check();

		    if( 'error_old_password_no_match' == return_status )
		    {
			$('old_password_feedback').className = 'feedback_error';
			$('old_password_feedback').innerHTML = eval( return_status );
		    }

		    if( 'error_demographic_birthday_error' == return_status )
		    {
			$('birthday_feedback').className = 'feedback_error';
			$('birthday_feedback').innerHTML = eval( return_status );
		    }
		}
		else
		{
		    if( 'undefined' !== typeof reload_user_info )
			reload_user_info();

		    // remove settings cookie
		    Cookie.remove('user_settings_pending', { duration: -2, path: '/' });

		    // notify user about email confirmation link
		    if( 'success_settings_saved_w_email' == return_status )
			final_msg.include( return_status );

		    // display final confirmation messages if any
		    if(build_final_msg())
			return;

		    // close settings pop-up
		    mbox_close();

		    // re-open banner
		    open_banner();
		}
	    }
	});
}


/**
 * Function saves each section of
 * payable personal settings
 */
function save_all_payable_close_settings()
{
    email_check( false );

    $('ps_form').action = script_url + '?action=save' + '&section_id=' + section_id + '&payable=1&return=' + location.href;
    $('ps_form').send({
	    onComplete: function( return_status )
	    {
		level = return_status.split('_');

		if( 'error' == level[0] )
		{
		    user_name_check();
		    old_password_check();
		    new_password_check();
		    password_change_check();

		    if( 'error_old_password_no_match' == return_status )
		    {
			$('old_password_feedback').className = 'feedback_error';
			$('old_password_feedback').innerHTML = eval( return_status );
		    }
		}
		else
		{
		    if( 'undefined' !== typeof reload_user_info )
			reload_user_info();

		    // remove settings cookie
		    Cookie.remove('user_settings_pending', { duration: -2, path: '/' });
		    Cookie.remove('payable', { duration: -2, path: '/' });

		    // notify user about email confirmation link
		    if( 'success_settings_saved_w_email' == return_status )
			final_msg.include( return_status );

		    // display final confirmation messages if any
		    if(build_final_msg())
			return;

		    // close settings pop-up
		    mbox_close();

		    // re-open banner
		    open_banner();
		}
	    }
	});
}


/**
 * Function clears feedback messages
 *
 */
function settings_clear_feedbacks()
{
	if ($('ps_feedback'))
		$('ps_feedback').innerHTML = '';

	if ($('logged_username') && $('user_name'))
	    $('logged_username').innerHTML = $('user_name').value;

	if ($('user_name_feedback'))
	{
		$('user_name_feedback').innerHTML = '';
		$('user_name_feedback').className = '';
	}


	if ($('old_password_feedback'))
	{
		$('old_password_feedback').innerHTML = '';
    	$('old_password_feedback').className = '';
	}

	if ($('ln_feedback'))
	{
		$('ln_feedback').className = '';
    	$('ln_feedback').innerHTML = '';
	}

	if ($('demographic_feedback'))
	{
	    $('demographic_feedback').className = '';
    	$('demographic_feedback').innerHTML = '';
	}
}


/**
 * Function displays message if new passwords are supplied, but not old password
 *
 */
function password_change_check()
{
    if( $('password').value && (!$('old_password').value && ( $('password').value == $('password_repeat').value )))
    {
	$('old_password_feedback').innerHTML = error_old_password_no_match;
	$('old_password_feedback').className = 'feedback_error';
    }
}


/**
 * Function closes settings pop-up
 *
 */
function settings_close()
{
    open_banner();
    Cookie.remove('user_settings_pending', { duration: -2, path: '/' });
    mbox_close();
}


/**
 * Function assembles status messages and displays them
 *
 */
function build_final_msg()
{
    if( 0 == final_msg.length )
	return false;

    $('main_help').setStyle('display', 'none');
    var main_help_html = $('main_help');

    $('step_1').innerHTML = '';
    $('avatar_help').setStyle('display', 'none');
    $('step_1').setStyle( 'margin-bottom', '10px' );
    main_help_html.injectInside($('step_1'));
    $('step_1').innerHTML = $('step_1').innerHTML + '<div class="clear"></div>';

    step_set_help = new Array("main_help");

    var i = 0;
    final_msg.each( function( item, index )
		    {
			var level = item.split('_');
			var msg = new Element('div', {
				'class': 'final_msg',
				'id': i
			    });

			// apply content
			$(msg).innerHTML = eval( item );

			// add msg div to main container
			$('step_1').adopt(msg);

			// if another msg is following, separate it with horizontal line
			if( i < final_msg.length - 1 )
			{
				var hline = new Element('div', {
					'class': 'hline'
				    });
				$(hline).injectAfter(msg);
			}
			i++;
		    });

    // replace button
    $('button_close').innerHTML = $('button_close_2').innerHTML;
    final_msg = new Array();

    return true;
}


/**
 * Function uploads avatar image and creates iframe dynamically
 *
 */
function avatar_upload()
{
    // generate new iframe
    var n = 'f' + Math.floor(Math.random() * 99999);

    var ifr = new Element('iframe', {
	'styles': {
	    'display': 'none'},
	'src': 'about:blank',
        'id': n,
        'name': n,
	'height': 1,
	'width': 1
    });

    ifr.injectInside('avatar_form');
    curr_ifr = n;
    $(n).addEvent('load', function(){avatarOnComplete.delay(100);});
    $('avatar_form').setProperty('target', n);

    avatar_server = 'http://upload.24ur.com';
    if (window.app_lang == 'hr')
    	avatar_server = 'http://upload.dnevnik.hr';
    
    avatar_url = avatar_server + '/bin/registration2/settings.php';
    $('avatar_form').action = avatar_url + '?action=avatar';
    $('avatar_form').submit();
}



/**
 * Function removes user's avatar
 *
 */
function avatar_remove()
{
    $('avatar_remove').value = 1;

    $('avatar_img').setStyle('display', 'none');
    $('avatar_content').setStyle('display', 'none');
}

