Now that the White House plan for immigration reform has leaked, we have an idea of how the administration plans to deal with the 11 million undocumented immigrants now living in the United States: They would have to wait eight years with “lawful prospective immigrant status” before applying for a green card, and ultimately citizenship. Opponents are falling over themselves to portray it as amnesty, but the Obama plan shows the White House’s sensitivity to the “back of the line” question: How do you keep people who entered the country illegally or overstayed their visas from jumping in front of folks who have taken the legitimate route?
The thing is, the back-of-the-line concept doesn’t really apply here, because there is no single line—there are a lot of them, and most are frightfully slow. Depending on where you’re from, what you do, and whom you’re related to, your wait can range from a couple of years to interminable. Think you can find your way through America’s bureaucratic and political immigration labyrinth? Take this interactive for a spin:
‘
+ ( (row.sourcing && row.sourcelink)
? ‘
Source: ‘ + row.sourcing + ‘
‘
: ” )
+ ”;
},
clean_slug: function(slug) {
return slug.replace(/[^a-zA-Z0-9]/g, ”).toLowerCase();
},
make_connects_data_from_row: function(row) {
var connections = [];
var connects_to = row.connectsto.split(that.separator);
var connects_labels = row.connectstext.split(that.separator);
for (var i = 0; i ‘);
control_container.append(that.create_back_button_elem());
control_container.append(that.create_reset_button_elem());
return control_container;
},
create_back_button_elem : function() {
back_button_elem = $(‘
‘
);
back_button_elem.click(function(){that.back();});
back_button_elem.addClass(‘cyoa_top_controls’);
return back_button_elem;
},
create_reset_button_elem : function() {
reset_button_elem = $(‘
‘
);
reset_button_elem.click(function(){that.reset();});
reset_button_elem.addClass(‘cyoa_top_controls’);
return reset_button_elem;
},
create_page : function(page) {
that.story[page].element = that.create_page_element(page);
that.story[page].element.addClass(‘cyoa_hide’);
if ( that.control_location === ‘bottom’ ) {
that.story[page].element.append(that.create_controls());
}
container_elem.append(that.story[page].element);
},
create_page_element : function(page) {
var page_obj = that.story[page];
var content = page_obj.html ?
page_obj.html :
page_obj.img ?
‘‘ :
page_obj.text ?
‘
‘ + page_obj.text + ‘
‘ :
‘
No content provided. That’s unfortunate’;
var element = $(
‘
‘
content + ‘
‘
);
element.append(that.create_selection_buttons(page));
return element;
},
add_to_path : function(page) {
path.push(page);
if (path.length > 1) {
back_button_elem.removeClass(‘disabled’);
reset_button_elem.removeClass(‘disabled’);
}
},
create_selection_buttons : function(page) {
var controler_container = $(‘
‘);
var choices = that.story[page].connects;
if ( !choices ) { //must be the end of a line
return controler_container;
}
var bind_control = function(choice, control) {
control.click(function() {
that.add_to_path(choice);
that.display_page(choice);
});
};
for ( var connect in choices ) {
var decision = choices[connect];
if ( !that.story[decision.link] ) {
continue;
}
var control = $(‘
control.append($(‘‘ + decision.html + ‘‘));
bind_control(decision.link, control);
controler_container.append(control);
}
return controler_container;
},
display_page : function(page) {
//maybe fancy this up inna bit, have it slide or somethign
$(‘.cyoa_page’).addClass(‘cyoa_hide’).removeClass(‘cyoa_show’);
$(‘#’ + page + ‘_container’).removeClass(‘cyoa_hide’);
$(‘#’ + page + ‘_container’).addClass(‘cyoa_show’);
return that;
},
back : function() {
if ( path.length === 1 ) {
back_button_elem.addClass(‘disabled’);
reset_button_elem.addClass(‘disabled’);
return;
}
path.pop();
that.display_page( path[path.length – 1] );
if ( path.length === 1 ) {
back_button_elem.addClass(‘disabled’);
reset_button_elem.addClass(‘disabled’);
}
},
reset : function() {
while (path.length > 1) {
path.pop();
}
that.display_page(path[0]);
back_button_elem.addClass(‘disabled’);
reset_button_elem.addClass(‘disabled’);
}
};
return cyoa.init(story, options);
};
$.fn.Cyoa = function(story, options) {
options = options || {};
options.container = this.attr(‘id’);
this.cyoa = $.Cyoa(story, options);
return this;
};
}(jQuery));
Want to build your own Choose Your Own Adventure game? Check out our free, open-source tool here!