/**
* Userspace JavasScript function library
* Containes Userspace actions handlers
* Check function userspace.determine_handlers()
* to view, which functions are invoced automatically.
* @author Laurynas
*/

var userspace = {}

userspace.afterload_handlers = [];
userspace.auto_sms_check = 0;

userspace.register_handler = function(function_ob){
	userspace.afterload_handlers.push(function_ob);
}

userspace.load_handlers = function(){
	for (i = 0; i < userspace.afterload_handlers.length; i = i + 1) {
	    	userspace.afterload_handlers[i]();
	}
}

userspace.add_login_handlers = function(){
	userspace.register_handler(
	function (){
		$j('#login_type_sel1').click(userspace.show_registered_login);
		$j('#login_type_sel2').click(userspace.show_not_registered_login);
		$j('#login_type_sel4').click(userspace.show_new_register);
        
		userspace.show_registered_login();
        $j('.default_login input[@name=email]').focus();
        
		}
	);
}

userspace.show_registered_login = function(){

    var allow = $j('#login_type_sel1 input[@name=allow_select]').val();

if (allow == '1'){
        //$j('#not_registered_login_cont').hide();
		userspace.disable_unregistered_login();
		userspace.enable_registered_login();
		userspace.login_top_active();
        $j('#new_register_cont').hide();
        $j('#registered_login_cont').show();
        $j('#login_type_r_registered').attr('checked','checked');

        $j('#registered_login_cont input[@name=email]').focus();
    }
	
}

userspace.login_top_active = function(){
	if ( ! $j('#round_table_bottom').hasClass('rndg')) $j('#round_table_bottom').addClass('rndg');
	$j('#round_table_top').removeClass('rndg');
}

userspace.login_bottom_active = function(){
	if ( ! $j('#round_table_top').hasClass('rndg')) $j('#round_table_top').addClass('rndg');
	$j('#round_table_bottom').removeClass('rndg');
}

userspace.disable_unregistered_login = function(){
	$j('#not_registered_login_cont input').attr('disabled','disabled');
	//$j('#not_registered_login_cont button').attr('disabled','disabled');
	$j('#not_registered_login_cont button').click(function() { return false; });
}
userspace.enable_unregistered_login = function(){
	$j('#not_registered_login_cont input').attr('disabled','');
	//$j('#not_registered_login_cont button').attr('disabled','');
	$j('#not_registered_login_cont button').unbind();
}

userspace.disable_registered_login = function(){
	$j('#registered_login_cont input').attr('disabled','disabled');
	//$j('#registered_login_cont button').attr('disabled','disabled');
	$j('#registered_login_cont button').click(function() { return false; });
}
userspace.enable_registered_login = function(){
	$j('#registered_login_cont input').attr('disabled','');
	//$j('#registered_login_cont button').attr('disabled','');
	$j('#registered_login_cont button').unbind();
}

userspace.disable_new_register_login = function(){
	$j('#new_register_cont input').attr('disabled','disabled');
	//$j('#new_register_cont button').attr('disabled','disabled');
	$j('#new_register_cont button').click(function() { return false; });
}
userspace.enable_new_register_login = function(){
	$j('#new_register_cont input').attr('disabled','');
	//$j('#new_register_cont button').attr('disabled','');
	$j('#new_register_cont button').unbind();
}

userspace.show_not_registered_login = function(){

    var allow = $j('#login_type_sel2 input[@name=allow_select]').val();

    if (allow == '1'){
        //$j('#registered_login_cont').hide();
        //$j('#new_register_cont').hide();
        //$j('#not_registered_login_cont').show();
		userspace.enable_unregistered_login();
		userspace.disable_registered_login();
		userspace.disable_new_register_login();
		userspace.login_bottom_active();
        $j('#login_type_r_unregistered').attr('checked','checked');

        $j('#not_registered_login_cont input[@name=email]').focus();
    }
}

userspace.show_new_register = function(){

    var allow = $j('#login_type_sel3 input[@name=allow_select]').val();

    if (allow == '1'){
        $j('#registered_login_cont').hide();
        //$j('#not_registered_login_cont').hide();
		userspace.disable_unregistered_login();
		userspace.enable_new_register_login();
		userspace.login_top_active();
        $j('#new_register_cont').show();
        $j('#login_type_r_new').attr('checked','checked');

        $j('#new_register_cont input[@name=email]').focus();
      }
}

userspace.show_more_codes = function(){
	$j('#more_discounts_cont').hide();
	$j('#discounts_table .extra_discounts').show();
	return false;
}

userspace.hide_more_codes = function(){
	$j('#discounts_table .extra_discounts').hide();
	$j('#more_discounts_cont').show();
	return false;
}

userspace.show_hide_split = function(){
	if ($j('#show_split').attr('checked'))
		var checked = true;
	else 
		var checked = false;
		
		
	var split_invoice_container = $j('#split_invoice');
	var one_invoice_container = $j('#one_invoice_for_hide');
	
	if (checked){
		split_invoice_container.show();
		one_invoice_container.hide();
	}else{
		split_invoice_container.hide();
		one_invoice_container.show();
	}
		
}

userspace.show_hide_traveler_split_company = function(pax_id){
	if ($j('#enter_company' + pax_id).attr('checked'))
		var checked = true;
	else 
		var checked = false;
		
	var split_invoice_container = $j('#traveler_split_company_cont' + pax_id);
	
	if (checked){
		split_invoice_container.show();
	}else{
		split_invoice_container.hide();
	}
}

userspace.add_discount_codes_handlers = function(){
	$j('#show_more_codes_link').click(userspace.show_more_codes);
	$j('#hide_more_codes_link').click(userspace.hide_more_codes);
	
}

userspace.add_show_error = function(){
	set_errors();
}
/**
* Sets order list links for all row area;
* Sets hover style for row area (IE compatibility fix)
*/
userspace.set_order_list_links = function(){
	var list = $j('table.reservations_list tr.order_row');
	var base_url = $j('input[@name=base_url]').val();
	
	var code;
	for(var ii=0; ii<list.length; ii++){
		code = $j('input[@name=code]',list[ii]).val();
		$j('td.order_link',list[ii]).click(Function("location.href = '" + base_url + "userspace/order/code/" + code + "';"));
		
		$j(list[ii]).mouseover(Function("userspace.hilight_row('" + code + "');"));
		$j(list[ii]).mouseout(Function("userspace.unhilight_row('" + code + "');"));
	}

}

userspace.hilight_row = function(code){
	$j('#row' + code).addClass('active_row');
}
userspace.unhilight_row = function(code){
	$j('#row' + code).removeClass('active_row');
}

userspace.add_edit_contacts_handlers = function(){
	// show split form
	check_show_split = $j('#show_split').click(userspace.show_hide_split);
	
	// show in split company data for individuals
	var pax_id = '';
	var function_txt = '';
	var split_inv_travellers = $j('.split_inv_traveller');
	if (split_inv_travellers.length > 1){ /*  invoice split is possible only when there are more than 1 traveler */
		for(var ii=0; ii<split_inv_travellers.length; ii++){
			pax_id = $j('input[@name=pax_id]',split_inv_travellers[ii]).val();
			function_txt = 'userspace.show_hide_traveler_split_company(' + pax_id + ')';
			$j('#enter_company' + pax_id,split_inv_travellers[ii]).click(Function(function_txt));
		}
	}
}

/**
* Cancellation page 1 JavaScript funtions,
* To validate selected checkboxes, enable submit button
*/
userspace.cancel_step1_handlers =  function(){
	$j('.visible_avia input.avia_pax_item').click(userspace.auto_check_avia); // travelers controls avia checkbox
	$j('.visible_avia input.avia_item').click(userspace.auto_check_pax); // avia checkbox cotrols travelers
	$j('input.hotel_box').click(userspace.autocheck_sms); // controls submit button
	
	$j('input.sms_box').click(userspace.autocheck_sms); // controls submit button
	$j('input.insurance_box').click(function(){ return false;}); // controls submit button
	
	$j('input.cancel_box').click(userspace.enable_step1_submit); // controls submit button
	$j('button[@type=submit]').click(userspace.save_checkboxes); // saves selected checkboxes
	userspace.load_checkboxes();
}
/**
* Cancellation page 1 JavaScript funtions,
* To validate selected return payment methods, enable submit button
*/
userspace.cancel_step2_handlers =  function(){
	$j('input[@name=pay_method]').click(userspace.select_refund_type);
}

/**
* Function automaticaly checks all travelers, if avia ticked is selected
*/
userspace.auto_check_pax = function(){
	//alert($j('.visible_avia input.avia_item').attr('checked'));
	// check if there are pax items
	// if for some reason there no, avia item can not be selected!
	if ( $j('input.avia_pax_item').length == 0){
		$j('.visible_avia input.avia_item').attr('checked','');
		return false;
	}
	
	if ($j('.visible_avia input.avia_item').attr('checked')){
		//alert('true ' + 
		$j('input.avia_pax_item').attr('checked','checked');
		$j('input.avia_item').attr('checked','checked');
		
		/*if ( ! $j('input.sms_box').attr('checked')){
			userspace.auto_sms_check = 1;
		}
		$j('input.sms_box').attr('checked','checked');*/
		userspace.all_selected();
		
		
	}else{
		$j('input.avia_pax_item').attr('checked','');
		$j('input.avia_item').attr('checked','');
		
		userspace.not_all_selected();
	}
}
/**
* Function automaticaly ckecks aviaticket, if any of travellers are selected
*/
userspace.auto_check_avia = function(item){
	
	var visible_pax = $j('.visible_avia input.avia_pax_item');
	var not_canceled = 0;
	//var _checked;
	//var _pax_id;
	// checking, if all pax are cancelled
	for(var ii=0; ii<visible_pax.length; ii++){
		if ( ! $j(visible_pax[ii]).attr('checked')) {
			not_canceled++
		}
	}
	// if all cancelled, wee can autocheck aviaticket
	if (not_canceled < visible_pax.length){
		$j('input.avia_item').attr('checked','checked');
		
	}else{
		$j('input.avia_item').attr('checked','');
	}
	
	// if all travelers are selected
	if (not_canceled == 0){
		userspace.all_selected();
	}else{
		userspace.not_all_selected();
	}
	//userspace.enable_step1_submit();
}
/**
* Resets sms check history, for auto selection / deselection purposes,
* when passengers are selecred or deselected
*/
userspace.sms_click = function(){
	userspace.auto_sms_check = 0;
	return true;
}
/**
* this method performes actions, when we know,
* that all passengers are selected in form
* - selects sms, if it was not selected, writes to history, that 
*    sms was automatically selected, rather by user choise
* - enables and selects insurance
*/
userspace.all_selected = function(){
	if ( ! $j('input.sms_box').attr('checked')){
			userspace.auto_sms_check = 1;
	}
	$j('input.sms_box').attr('checked','checked');
	$j('input.insurance_box').attr('disabled','').attr('checked','checked');
}

/**
* This method performes actions, when we know,
* that not all passengers are selected in form
* - deselects sms, if it was automatycally selected
* - deselects insurance, and dissables it
*/
userspace.not_all_selected = function(){
	if (userspace.auto_sms_check){
		userspace.auto_sms_check = 0;
		$j('input.sms_box').attr('checked','');
	}
	$j('input.insurance_box').attr('disabled','disabled').attr('checked','');
}

/**
*	Function checks, if sms service has to be checked to cancel
*/
userspace.autocheck_sms = function(){
	// check if avia selected all y - check and read only, no - remove read only
	// check if all hotels are selected, y - check and read only, n - remove read only
	var need_be_checked = false;
	
	var visible_pax = $j('.visible_avia input.avia_pax_item');
	var not_canceled = 0;
	
	for(var ii=0; ii<visible_pax.length; ii++){
		if ( ! $j(visible_pax[ii]).attr('checked')) {
			not_canceled++
		}
	}
	
	// if there are no available to selected any pax
	if ( $j('.visible_avia input.avia_pax_item').length == 0) not_canceled++;
	
	/*var visible_hotel = $j('input.hotel_box');
	var not_canceled_h = 0;
	
	for(var ii=0; ii<visible_pax.length; ii++){
		if ( ! $j(visible_hotel[ii]).attr('checked')) {
			not_canceled_h++
		}
	}*/
	
	if (not_canceled == 0) need_be_checked = true;
	
	if (need_be_checked){
		$j('input.sms_box').attr('checked','checked');
		return false;
	}else{// if value can be changed, autcheck also is reseted
		userspace.sms_click();
	}
	
}

/**
* Function checks, if there are any checked elements (avia, hotel, service)
* If there checked, submit button is enabled, elsewise disabled
*/ 
userspace.enable_step1_submit = function(){
	var checkboxes = $j('input.cancel_box');
	var count_cancel = 0;
	for(var ii=0; ii<checkboxes.length; ii++){
		if ($j(checkboxes[ii]).attr('checked')){
			count_cancel++;
			break;
		}
	}
	if (count_cancel){
		$j('button[@type=submit]').attr('disabled','');//.addClass('red').removeClass('font_grey');
		$j('#cancel_go').removeClass('dissbl');
	}else{
		$j('button[@type=submit]').attr('disabled','disabled');//.addClass('font_grey').removeClass('red');;
		$j('#cancel_go').addClass('dissbl');
	}
}
/**
* Saves selected checkboxes 
*/
userspace.save_checkboxes = function(){
	//alert($j('input[@type=checkbox]').length);
	var name = '';
	var boxes = $j('input[@type=checkbox]');
	for(var ii=0; ii < boxes.length; ii++){
		if ($j(boxes[ii]).attr('checked') ){
			name = name + $j(boxes[ii]).attr('id') + ',' ;
		}
	}
	$j('#check_save').val(name);
	//alert($j('#check_save').val());
	return !! name;
	
}
/**
* Load saved checkboxes
*/
userspace.load_checkboxes = function(){
	var names = $j('#check_save').val();
	var names_arr = names.split(',');
	var count = 0;
	for(var ii=0; ii<names_arr.length; ii++){
		if ( names_arr[ii] ){
			$j('#' + names_arr[ii]).attr('disabled','')
			$j('#' + names_arr[ii]).attr('checked','checked')
			count++;
		}
	}
	if (count)	userspace.enable_step1_submit();
	
}
/**
* Gets selected refund type, for ajax requeset parameter
*/
userspace.get_selected_pay_method = function(){
	var checkboxes = $j('input[@name=pay_method]');
	var method = null;
	for(var ii=0; ii<checkboxes.length; ii++){
		if ($j(checkboxes[ii]).attr('checked')) {
			method = $j(checkboxes[ii]).val();
			break;
		}
	}
	return method;
}

userspace.ajax_error = function(data){
	$j('#wait_ajax').hide();
	alert('error: ' + data);
}
/**
* Is performed, when user celects one of possible refund types
* Retrieves refund info and enables submit button ( by ajax afer load
* function userspace.after_refund_type_select()
*/
userspace.select_refund_type = function(){
	var params = {};
	params.method = userspace.get_selected_pay_method();
	var site = $j('input[@name=post_link]').val();
	
	$j('button[@type=submit]').attr('disabled',1);
	$j('#wait_ajax').show();
	
	var post = {};
	post.type = 'POST';
	post.url = site + 'userspace/order_cancel/step/2_ajax';
	post.data = params;
	post.success = userspace.after_refund_type_select;
	post.error = userspace.ajax_error;
	
	
	//alert(post.url);
	
	$j.ajax(post);
	//$j('#refund_type_select').post(post.url,params,userspace.after_refund_type_select);
}
/**
* is invoced after refund method is selected, to enable submit
* exception: when order is not paid, this method is not needed
*/
userspace.after_refund_type_select = function(ret){
	
	//alert(ret);
	$j('#refund_type_select').html(ret);
	
	if ($j('input[@name=ajax_return]').val() == 'y'){
		$j('button[@type=submit]').attr('disabled','');
		$j('#cancel_go').removeClass('dissbl');
	}
	
}

/**
* Loads action handlers by type of page
*/
userspace.determine_handlers = function(){
	var page_type = $j('input[name=page_type]').val();
	switch(page_type){
		case 'login':
			userspace.add_login_handlers();
		break;
		case 'main_list':
			userspace.set_order_list_links();
		break;
		case 'edit_contancts':
		
			userspace.add_edit_contacts_handlers();
		
		break;
		case 'cancel_step_1':
			userspace.cancel_step1_handlers();
		break;
		case 'cancel_step_2':
			
			userspace.cancel_step2_handlers();
		break;
	}
	userspace.add_discount_codes_handlers();
	userspace.add_show_error();
	userspace.load_handlers();
}


$j(document).ready(userspace.determine_handlers);

