Помогите проанализировать скрипт

Discussion in 'Песочница' started by ronald, 1 Jan 2010.

  1. ronald

    ronald Elder - Старейшина

    Joined:
    27 Mar 2008
    Messages:
    252
    Likes Received:
    41
    Reputations:
    6
    Здравствуйте, уважаемые форумчане!
    Пришла ко мне одна хулиганская идея:
    Вы наверняка знакомы с системой интернет-бронирования билетов в кинотеатрах, но не всегда есть хорошие места, и к тому же пустые. Подскажите пожалуйста, можно ли каким-либо образом подготовить запрос, не обладая значением одной переменной (а именно codeword)в функциях cancel_booking и edit_booking, который приведёт к "хорошему" результату ? Вот собственно скрипты:
    Code:
    $(document).ready(init);
    
    function init() {
    
    	$("#hall_seats_div img").click( function(event) {
    		$("#dont_click").show();
    		event.stopPropagation();
    	});
    
    	var current_timestamp_tz = $("#current_timestamp_tz").text();
    	var repertoir_timestamp_tz = $("#repertoir_timestamp_tz").text();
    	var repertoir_status = $("#repertoir_status").text();
    
    	if( repertoir_timestamp_tz > current_timestamp_tz ) {
    		var multiplex_timezone = $("#multiplex_timezone").text();
    		if ( ( multiplex_timezone.length > 0 ) && ( is_compatible ) && ( repertoir_status == '1' ) ) {
    			var repertoir_timestamp = ( repertoir_timestamp_tz - multiplex_timezone *60*60 );
    			var repertoir_time = new Date();
    			repertoir_time.setTime( repertoir_timestamp * 1000 );
    			$("#countdown").countdown({until: repertoir_time, compact: true, onExpiry: countdown_expired });
    			$("#countdown_holder").show();
    		};
    		var order_state = $("#order_state").text();
    		if ( order_state == "1" ) {
    			$("#button_edit").attr("disabled",false);
    			$("#button_cancel").attr("disabled",false);
    			$("#info_actions").show();
    		};
    	};
    
    	if ( repertoir_timestamp_tz < current_timestamp_tz ) {
    		$("#seat_summary").addClass("seat_summary_error");
    		$("#seat_summary").html("Всё, сеанс прошёл - соответственно, брони уже нет. Можете посмотреть, как сидели люди в зале :)");
    	};
    
    };
    
    function countdown_expired() {
    	$("#countdown").addClass("countdown_expired");
    	$("#field_name,#button_cancel").attr("disabled","disabled");
    };
    
    function cancel_booking() {
    	var field_name = $("#field_name");
    	var name_value = field_name.attr("value");
    	if ( name_value.length == 0 ) {
    		field_name.focus();
    	} else
    	{
    		var filmname = $("#filmname").text();
    		if ( pageTracker ) { pageTracker._trackEvent("Сессия бронирования","Снятие",filmname); };
    		prepare_for_the_end();
    		var multiplex_id = $("#field_multiplex_id").text();
    		var order_id = $("#field_order_id").text();
    		$.ajax({
    			type:		"GET",
    			url:		"/booking/api/cancel_booking/",
    			data:	{
    					multiplex_id:	multiplex_id,
    					order_id:	order_id,
    					codeword:	name_value
    				},
    			success:	cancel_booking_response,
    			error:		cancel_booking_failure
    		});
    
    
    	};
    };
    
    function prepare_for_the_end() {
    	$("#button_cancel").attr("disabled","disabled");
    	$("#button_edit").attr("disabled","disabled");
    	$("#booking_action_loader").show();
    };
    
    function cancel_booking_response(data, textStatus) {
    	var data_status = $("status",data).text();
    	if ( data_status == 1 ) {
    		show_cancel_results("cancel_success");
    	}
    	else {
    		var statustext = $("result statustext",data).text();
    		if ( statustext == "" ) {
    			statustext = "неизвестно, что именно произошло";
    		};
    		$("#cancel_failure_textstatus").append(statustext);
    		show_cancel_results("cancel_failure");
    	};
    };
    
    function cancel_booking_failure() {
    	$("#cancel_failure_textstatus").append("произошла ошибка связи");
    	show_cancel_results("cancel_failure");
    };
    
    
    function show_cancel_results( section ) {
    	$("#booking_action_loader").hide();
    	$("#cancel_results,#"+section).show();
    	window.scrollBy(0,200);
    };
    
    function edit_booking() {
    	var field_name = $("#field_name");
    	var name_value = field_name.attr("value");
    	if ( name_value.length == 0 ) {
    		field_name.focus();
    	} else
    	{
    		var filmname = $("#filmname").text();
    		if ( pageTracker ) { pageTracker._trackEvent("Сессия бронирования","Изменение",filmname); };
    		prepare_for_the_end();
    		var multiplex_id = $("#field_multiplex_id").text();
    		var order_id = $("#field_order_id").text();
    		$.ajax({
    			type:		"GET",
    			url:		"/booking/api/edit_booking/",
    			data:	{
    					multiplex_id:	multiplex_id,
    					order_id:	order_id,
    					codeword:	name_value
    				},
    			success:	edit_booking_response,
    			error:		edit_booking_failure
    		});
    
    
    	};
    };
    
    function edit_booking_response(data, textStatus) {
    	var data_status = $("status",data).text();
    	if ( data_status == 1 ) {
    		var multiplex_id = $("#field_multiplex_id").text();
    		var repertoir_id = $("#field_repertoir_id").text();
    		var b_session_id = $("b_session_id",data).text();
    		location.href = "/booking/selection/" + multiplex_id + "/" + repertoir_id + "/" + b_session_id + "/";
    	}
    	else {
    		var statustext = $("result statustext",data).text();
    		if ( statustext == "" ) {
    			statustext = "неизвестно, что именно произошло";
    		};
    		$("#edit_failure_textstatus").append(statustext);
    		show_edit_results("edit_failure");
    	};
    };
    
    function edit_booking_failure() {
    	$("#edit_failure_textstatus").append("произошла ошибка связи");
    	show_edit_results("edit_failure");
    };
    
    function show_edit_results( section ) {
    	$("#booking_action_loader").hide();
    	$("#edit_results,#"+section).show();
    	window.scrollBy(0,200);
    };
    
     
    #1 ronald, 1 Jan 2010
    Last edited: 1 Jan 2010