//dependency check
if(typeof jQuery==='undefined'){
	throw new Error('The base jQuery library needs to be included before the ajax_datatable component can be used.');
}
if(typeof JSON==='undefined'){
	throw new Error('The JSON.org library needs to be included before the ajax_datatable component can be used.');
}

if(typeof console==='undefined'){
	console={
		log:function(){},
		count:function(){},
		trace:function(){}
	}
}

(function(o_input){
	o_input.fn.ajax_datatable = function(o_custom_settings){

		var
		_o_settings = o_input.extend({},o_input.fn.ajax_datatable.defaults,o_custom_settings),
		_s_extra='',
		_s_extra_dq="";
		_o_settings.div_container=this.selector.replace(/^#/,'');
		if(typeof _o_settings.class_name!=='undefined' && typeof _o_settings.function_name!=='undefined'){
			_s_extra = "\""+_o_settings.class_name+"\",\""+_o_settings.function_name+"\",\""+_o_settings.div_container+"\",";
			_s_extra_dq = _s_extra.replace(/"/g, "'");
		}
		var _s_html = '';
		jQuery(document).ready(function(){
			//HIDDEN FORM FOR PERSISTENT DATA
			jQuery('#dt_d_h_form_'+_o_settings.div_container).remove();
			jQuery('#dt_u_h_form_'+_o_settings.div_container).remove();
			_s_html = '<form name="'+_o_settings.div_container+'" id="dt_d_h_form_'+_o_settings.div_container+'" style="display:none">';
			_s_html += '<input type="hidden" id="dt_d_'+_o_settings.div_container+'" value="'+_o_settings.payload.d+'" />';
			_s_html += '<input type="hidden" id="dt_o_'+_o_settings.div_container+'" value="'+_o_settings.payload.o+'" />';
			_s_html += '<input type="hidden" id="dt_p_'+_o_settings.div_container+'" value="'+_o_settings.payload.p+'" />';
			if(typeof _o_settings.payload.r==='undefined'){
				_o_settings.payload.r=_o_settings.default_rpp;
			}
			_s_html += '<input type="hidden" id="dt_r_'+_o_settings.div_container+'" value="'+_o_settings.payload.r+'" />';
			_s_html += '<input type="hidden" id="dt_si_'+_o_settings.div_container+'" value="'+_o_settings.payload.si+'" />';
			_s_html += '<input type="hidden" id="dt_sf_'+_o_settings.div_container+'" value="'+_o_settings.payload.sf+'" />';
			if(typeof _o_settings.rpp_dropdown==='undefined'){
				_o_settings.rpp_dropdown = [];
			}
			_s_html += '</form>';
			_s_html += '<form name="'+_o_settings.div_container+'" id="dt_u_h_form_'+_o_settings.div_container+'" style="display:none">';
			_s_html += '<input type="hidden" id="dt_show_pagination_'+_o_settings.div_container+'" value="'+_o_settings.show_pagination+'" />';
			_s_html += '<input type="hidden" id="dt_show_pagination_goto_'+_o_settings.div_container+'" value="'+_o_settings.show_pagination_goto+'" />';
			_s_html += '<input type="hidden" id="dt_show_search_'+_o_settings.div_container+'" value="'+_o_settings.show_search+'" />';
			_s_html += '<input type="hidden" id="dt_show_rpp_';
			if(typeof _o_settings.payload.r!=='undefined' || _o_settings.payload.r!==0 || _o_settings.payload.r!=='0'){//if _o_settings.payload.r has some value
				_s_html += _o_settings.div_container+'" value="'+_o_settings.payload.r+'" />';
				var _b_match = false;
				for(var _a = 0;_a<_o_settings.rpp_dropdown.length;_a++){
					if(_o_settings.rpp_dropdown[_a]==_o_settings.payload.r){
						var _i_temp_dropdown = _o_settings.payload.r;
						_b_match = true;
						break;
					}
				}
			} else {
				if(_o_settings.rpp_dropdown.length>0){
					_s_html += _o_settings.div_container+'" value="'+_o_settings.rpp_dropdown[0]+'" />';
				} else{
					_s_html += _o_settings.div_container+'" value="'+_o_settings.default_rpp+'" />';
				}
			}
			if(!_b_match){
				_o_settings.rpp_dropdown = [];
			}
			_s_html += '<input type="hidden" id="dt_order_by_'+_o_settings.div_container+'" value="'+_o_settings.lock_order_by+'" />';
			_s_html += '<input type="hidden" id="dt_si_temp_'+_o_settings.div_container+'" value="" />';
			_s_html += '<input type="hidden" id="dt_sf_temp_'+_o_settings.div_container+'" value="" />';
			if(typeof _i_temp_dropdown!=='undefined'){
				_s_html += '<input type="hidden" id="dt_rpp_temp_'+_o_settings.div_container+'" value="'+_i_temp_dropdown+'" />';
			} else {
				_s_html += '<input type="hidden" id="dt_rpp_temp_'+_o_settings.div_container+'" value="'+_o_settings.payload.r+'" />';
			}
			_s_html += '<input type="hidden" id="dt_o_temp_'+_o_settings.div_container+'" value="1" />';//for keeping track of headings' clicks
			_s_html += '</form>';
			jQuery('body :last').after(_s_html);
			_s_html = '<table class="dt_parent_table">';
			_s_html += '<thead class="dt_parent_th">';


			//SEARCH
			if(_o_settings.show_search){
				_s_html += '<tr class="dt_search_tr"><td class="dt_search_td" ';
				_s_html += 'colspan='+_o_settings.headings.length+'>';
				_s_html += '<div class="dt_search_div">';
				_s_html += '<label class="dt_si_label" for="dt_si_input_name_">Search in:</label>';
				_s_html += '<select class="dt_si_select" ';
				_s_html += 'name="dt_si_input_name" ';
				_s_html += 'onclick="jQuery(\'#dt_si_temp_'+_o_settings.div_container+'\').attr(\'value\',this.value);">';
				for(var h=0;h<_o_settings.headings.length;h++){
					_s_html += '<option class="dt_si_input_option dt_si_input_option_'+h+'"';
					_s_html += ' value="'+h+'">'+_o_settings.headings[h]+'</option>';
				}
				_s_html += '</select><label class="dt_sf_label" ';
				_s_html += 'for="dt_sf_input_name_'+_o_settings.div_container;
				_s_html += '">Search for:</label><input name="dt_sf_input_name_'+_o_settings.div_container;
				_s_html += '" class="dt_sf_input" ';
				_s_html += 'type="text" ';
				_s_html += ' onkeyup="jQuery(\'#dt_sf_temp_'+_o_settings.div_container+'\').attr(\'value\',this.value);" />';
				_s_html += " <a href=\"#fumzup_top_page;\" class=\"dt_sf_btn\" onclick='jQuery(\"#dt_si_"+_o_settings.div_container+"\").attr(\"value\",jQuery(\"#dt_si_temp_"+_o_settings.div_container+"\").val());jQuery(\"#dt_sf_"+_o_settings.div_container+"\").attr(\"value\",jQuery(\"#dt_sf_temp_"+_o_settings.div_container+"\").val());"+_o_settings.parent_function_name+"("+_s_extra+"{d:\""+_o_settings.payload.d+"\",o:\""+_o_settings.payload.o+"\",p:\""+_o_settings.payload.p+"\",r:\""+_o_settings.payload.r+"\",si:jQuery(\"#dt_si_"+_o_settings.div_container+"\").attr(\"value\"),sf:jQuery(\"#dt_sf_"+_o_settings.div_container+"\").attr(\"value\")});'>";
				if(typeof _o_settings.button_sf!=='undefined'){
					_s_html += _o_settings.button_sf;
				}
				_s_html += "</a>";
			}

			//PAGINATION
			var _s_start_pagination_html = '<a name="fumzup_top_page"></a><table class="dt_pagination_table" align="center"><tr class="dt_pagination_tr"><td><span class="dt_pagination_title">Pages:</span></td>',
			_s_pagination_html ='';
			if(_o_settings.show_pagination){
				var
				i_total = parseInt(_o_settings.no_of_rows)/_o_settings.payload.r,
				i_ideal_mid_page = _o_settings.pagination_max / 2,//ideal mid page
				i_min_delta,
				i_max_delta,
				_b_is_pg_2 = (_o_settings.payload.p==2)?true:false,
				_s_post_html;
				_o_settings.pagination_max = parseInt(_o_settings.pagination_max);
				_o_settings.payload.p = parseInt(_o_settings.payload.p.valueOf());//prevent it from turning into a string
				i_ideal_mid_page = Math.round(i_ideal_mid_page);
				i_total = (i_total > Math.floor(i_total))?(Math.floor(i_total)+1):(Math.floor(i_total));
				i_min_delta = _o_settings.pagination_max - i_ideal_mid_page;
				i_max_delta = i_min_delta;
				if(parseInt(_o_settings.no_of_rows) > _o_settings.payload.r){
					if((_o_settings.payload.p-i_min_delta) >= 0){
						_s_pagination_html +="<td><a href='#fumzup_top_page;' onclick='jQuery(\"#dt_p_"+_o_settings.div_container+"\").attr(\"value\","+_o_settings.payload.p+"); "+_o_settings.parent_function_name+"("+_s_extra+"{d:\""+_o_settings.payload.d+"\",o:\""+_o_settings.payload.o+"\",p:\"1\",r:\""+_o_settings.payload.r+"\",si:\""+_o_settings.payload.si+"\",sf:\""+_o_settings.payload.sf+"\"});'>";
						if(typeof _o_settings.pagination_text_previous!=='undefined'){
							_s_pagination_html += _o_settings.pagination_text_first;
						}
						_s_pagination_html +="<div class='dt_pagination_first'></div>";
						_s_pagination_html +="</a></td>";
						_s_pagination_html +="<td><a href='#fumzup_top_page;' onclick='jQuery(\"#dt_p_"+_o_settings.div_container+"\").attr(\"value\",1); "+_o_settings.parent_function_name+"("+_s_extra+"{d:\""+_o_settings.payload.d+"\",o:\""+_o_settings.payload.o+"\",p:\""+(_o_settings.payload.p-1)+"\",r:\""+_o_settings.payload.r+"\",si:\""+_o_settings.payload.si+"\",sf:\""+_o_settings.payload.sf+"\"});'>";
						if(typeof _o_settings.pagination_text_previous!=='undefined'){
							_s_pagination_html += _o_settings.pagination_text_previous;
						}
						_s_pagination_html +="<div class='dt_pagination_prev'></div>";
						_s_pagination_html +="</a></td>";
						if(_o_settings.payload.p===i_total){//arrived at the end
							if((i_total-i_max_delta-2)>0){
								_s_pagination_html += "<td><a href='#fumzup_top_page;' onclick='jQuery(\"#dt_p_"+_o_settings.div_container+"\").attr(\"value\","+(i_total-i_max_delta-2)+"); "+_o_settings.parent_function_name+"("+_s_extra+"{d:\""+_o_settings.payload.d+"\",o:\""+_o_settings.payload.o+"\",p:\""+(i_total-i_max_delta-2)+"\",r:\""+_o_settings.payload.r+"\",si:\""+_o_settings.payload.si+"\",sf:\""+_o_settings.payload.sf+"\"});' ";
								_s_pagination_html += 'class="dt_pagination_notselected">' + (i_total-i_max_delta-2) + '</a></td><td><span class="dt_pagination_comma">, </span></td>';
							}
							if((i_total-i_max_delta-1)>0){
								_s_pagination_html += "<td><a href='#fumzup_top_page;' onclick='jQuery(\"#dt_p_"+_o_settings.div_container+"\").attr(\"value\","+(i_total-i_max_delta-1)+"); "+_o_settings.parent_function_name+"("+_s_extra+"{d:\""+_o_settings.payload.d+"\",o:\""+_o_settings.payload.o+"\",p:\""+(i_total-i_max_delta-1)+"\",r:\""+_o_settings.payload.r+"\",si:\""+_o_settings.payload.si+"\",sf:\""+_o_settings.payload.sf+"\"});' ";
								_s_pagination_html += 'class="dt_pagination_notselected">' + (i_total-i_max_delta-1) + '</a></td><td><span class="dt_pagination_comma">, </span></td>';
							}
							
						} else if(_o_settings.payload.p===(i_total-1)){
							if((i_total-i_max_delta-2)>0){
								_s_pagination_html += "<td><a href='#fumzup_top_page;' onclick='jQuery(\"#dt_p_"+_o_settings.div_container+"\").attr(\"value\","+(i_total-i_max_delta-2)+"); "+_o_settings.parent_function_name+"("+_s_extra+"{d:\""+_o_settings.payload.d+"\",o:\""+_o_settings.payload.o+"\",p:\""+(i_total-i_max_delta-2)+"\",r:\""+_o_settings.payload.r+"\",si:\""+_o_settings.payload.si+"\",sf:\""+_o_settings.payload.sf+"\"});' ";
								_s_pagination_html += 'class="dt_pagination_notselected">' + (i_total-i_max_delta-2) + '</a></td><td><span class="dt_pagination_comma">, </span></td>';
							}
						}
					}
					for(var g=1;
						g < (i_total+1);
						g++){
						var _b_either_last_or_seclast_page = (_o_settings.payload.p===i_total || _o_settings.payload.p===i_total-1)?true:false;
						if(g < (_o_settings.payload.p - i_min_delta)){
							continue;
						}
						if(g===_o_settings.payload.p){
							_s_pagination_html += '<td><span class="dt_pagination_selected">[' + g + ']</span></td><td><span class="dt_pagination_comma">, </span></td>';
						}else {
							_s_pagination_html += "<td><a href='#fumzup_top_page;' onclick='jQuery(\"#dt_p_"+_o_settings.div_container+"\").attr(\"value\","+g+"); "+_o_settings.parent_function_name+"("+_s_extra+"{d:\""+_o_settings.payload.d+"\",o:\""+_o_settings.payload.o+"\",p:\""+g+"\",r:\""+_o_settings.payload.r+"\",si:\""+_o_settings.payload.si+"\",sf:\""+_o_settings.payload.sf+"\"});' ";
							_s_pagination_html += 'class="dt_pagination_notselected">' + g + '</a></td><td><span class="dt_pagination_comma">, </span></td>';
						}
						if(_o_settings.payload.p===1 && (g===_o_settings.pagination_max)){//page 1
							break;
						}else if(_o_settings.payload.p!==1 && (g === (i_max_delta+_o_settings.payload.p))){//pages with deltas on each side
							if(_b_is_pg_2){
								_s_pagination_html += "<td><a href='#fumzup_top_page;' onclick='jQuery(\"#dt_p_"+_o_settings.div_container+"\").attr(\"value\","+(g+1)+"); "+_o_settings.parent_function_name+"("+_s_extra+"{d:\""+_o_settings.payload.d+"\",o:\""+_o_settings.payload.o+"\",p:\""+(g+1)+"\",r:\""+_o_settings.payload.r+"\",si:\""+_o_settings.payload.si+"\",sf:\""+_o_settings.payload.sf+"\"});' ";
								_s_pagination_html += 'class="dt_pagination_notselected">' + (g+1) + '</a></td><td><span class="dt_pagination_comma">, </span></td>';
							}
							break;
						}
					}
					_s_pagination_html = _s_pagination_html.replace(/, <\/span><\/td>$/, ' </span></td>', 'gi');
					if(_o_settings.payload.p < i_total){
						_s_pagination_html +="<td><a href='#fumzup_top_page;' onclick='jQuery(\"#dt_p_"+_o_settings.div_container+"\").attr(\"value\","+_o_settings.payload.p+"); "+_o_settings.parent_function_name+"("+_s_extra+"{d:\""+_o_settings.payload.d+"\",o:\""+_o_settings.payload.o+"\",p:\""+(_o_settings.payload.p+1)+"\",r:\""+_o_settings.payload.r+"\",si:\""+_o_settings.payload.si+"\",sf:\""+_o_settings.payload.sf+"\"});'>";
						if(typeof _o_settings.pagination_text_next!=='undefined'){
							_s_pagination_html += _o_settings.pagination_text_next;
						}
						_s_pagination_html +="<div class='dt_pagination_next'></div>";
						_s_pagination_html +="</a></td>";
						_s_pagination_html +="<td><a href='#fumzup_top_page;' onclick='jQuery(\"#dt_p_"+_o_settings.div_container+"\").attr(\"value\","+_o_settings.payload.p+"); "+_o_settings.parent_function_name+"("+_s_extra+"{d:\""+_o_settings.payload.d+"\",o:\""+_o_settings.payload.o+"\",p:\""+i_total+"\",r:\""+_o_settings.payload.r+"\",si:\""+_o_settings.payload.si+"\",sf:\""+_o_settings.payload.sf+"\"});'>";
						if(typeof _o_settings.pagination_text_last!=='undefined'){
							_s_pagination_html += _o_settings.pagination_text_last;
						}
						_s_pagination_html +="<div class='dt_pagination_last'></div>";
						_s_pagination_html +="</a></td>";
					}
				} else {
					_s_pagination_html = '<td><span class="dt_pagination_selected">[1]</span></td>';
				}
			} else {
				jQuery('#dt_show_pagination_'+_o_settings.div_container).attr('value','false');
			}
			_s_post_html = '</tr></table>';
			_s_pagination_html = _s_start_pagination_html+_s_pagination_html+_s_post_html;
			_s_html += '</td></tr><tr id="dt_pagination_tr"><td align="center" id="dt_pagination_td" colspan='+_o_settings.headings.length+'>'+_s_pagination_html+'</td></tr></thead>';



			//ROWS
			//headings
			var
			b_col_ignore = false;
			_s_html += '<tbody id="dt_tbody">';
			_s_html += '<tr class="dt_headings_row">';
			for(var j=0;j <_o_settings.headings.length;j++){
				var jj = j+1;
				if(!jQuery.isArray(_o_settings.disable_search_cols) || (typeof _o_settings.disable_search_cols==='undefined')){
					_o_settings.rpp_dropdown = [];
				}
				for(var j_=0;j_ < _o_settings.disable_search_cols.length; j_++){
					if(_o_settings.disable_search_cols[j_]==jj){
						b_col_ignore = true;
						break;
					}
				}
				if(!b_col_ignore){
					if(_o_settings.lock_order_by){
						_s_html += '<td class="dt_heading dt_col_'+jj+' dt_h_cell_'+jj+'">'+_o_settings.headings[j]+'</td>';
					} else {
						var _s_dt_heading = '<td class="dt_heading dt_col_'+jj+' dt_h_cell_'+jj+'">';
						if(j==_o_settings.payload.o){
							_s_dt_heading += '<table class="dt_heading_table"><tr class="dt_heading_tr"><td class="dt_heading_td_link"><a href="#fumzup_top_page;" '
							_s_dt_heading += 'onclick="';
							_s_dt_heading += 'jQuery(\'#dt_o_'+_o_settings.div_container+'\').attr(\'value\','+j+'); ';
							_s_dt_heading += 'if (jQuery(\'#dt_d_'+_o_settings.div_container+'\').val()==\'down\'){';
							_s_dt_heading += 'jQuery(\'#dt_d_'+_o_settings.div_container+'\').attr(\'value\',\'up\');}';
							_s_dt_heading += 'else ';
							_s_dt_heading += 'if (jQuery(\'#dt_d_'+_o_settings.div_container+'\').val()==\'up\'){'
							_s_dt_heading += 'jQuery(\'#dt_d_'+_o_settings.div_container+'\').attr(\'value\',\'down\');} ';
							_s_dt_heading += _o_settings.parent_function_name+'(';
							_s_dt_heading += _s_extra_dq;
							_s_dt_heading += '{d:jQuery(\'#dt_d_'+_o_settings.div_container+'\').val(),o:jQuery(\'#dt_o_'+_o_settings.div_container+'\').val(),p:1,r:jQuery(\'#dt_r_'+_o_settings.div_container+'\').val(),si:jQuery(\'#dt_si_'+_o_settings.div_container+'\').val(),sf:jQuery(\'#dt_sf_'+_o_settings.div_container+'\').val()});">'+_o_settings.headings[j]+'</a></td>';
							_s_dt_heading += '<td class="dt_heading_td_img"><div class="dt_heading_imgdiv dt_orderby_'+_o_settings.payload.d+'" id="dt_orderby_icondiv_'+j+'_'+_o_settings.div_container+'"></div></td></tr></table></td>';
						} else {
							_s_dt_heading += '<a href="#fumzup_top_page;" '
							_s_dt_heading += 'onclick="';
							_s_dt_heading += 'jQuery(\'#dt_o_'+_o_settings.div_container+'\').attr(\'value\','+j+'); ';
							_s_dt_heading += 'jQuery(\'#dt_d_'+_o_settings.div_container+'\').attr(\'value\',\'down\'); ';

							_s_dt_heading += _o_settings.parent_function_name+'(';
							if(typeof _o_settings.class_name!=='undefined' && typeof _o_settings.function_name!=='undefined'){
								_s_dt_heading += '\''+_o_settings.class_name+'\',\''+_o_settings.function_name+'\',\''+_o_settings.div_container+'\',';
							}
							_s_dt_heading += '{d:jQuery(\'#dt_d_'+_o_settings.div_container+'\').val(),o:jQuery(\'#dt_o_'+_o_settings.div_container+'\').val(),p:1,r:jQuery(\'#dt_r_'+_o_settings.div_container+'\').val(),si:jQuery(\'#dt_si_'+_o_settings.div_container+'\').val(),sf:jQuery(\'#dt_sf_'+_o_settings.div_container+'\').val()});">'+_o_settings.headings[j]+'</a>';
							_s_dt_heading += '</td>';
						}
						_s_html = _s_html + _s_dt_heading;
					}
				} else {
					b_col_ignore = false;
				}
			}
			_s_html += '</tr>';
			var
			_s_row_clicked_source = '',
			_s_function_input_name = '',
			_a_parsed_cell;
			for(var i=0;i<_o_settings.data.length;i++){//ii is the data row,ll is the column
				b_col_ignore = false;
				//data
				if(i%2===1){
					_s_html += '<tr class="dt_odd" onmouseout="jQuery(this).toggleClass(\'dt_row_highlight\',false);" onmouseover="jQuery(this).toggleClass(\'dt_row_highlight\',true);">';
				} else {
					_s_html += '<tr class="dt_even" onmouseout="jQuery(this).toggleClass(\'dt_row_highlight\',false);" onmouseover="jQuery(this).toggleClass(\'dt_row_highlight\',true);">';
				}
				for(var l=0;l<_o_settings.headings.length;l++){
					var ii = i+1;
					var ll = l+1;
					if(typeof _o_settings.disable_search_cols === 'undefined' || (!jQuery.isArray(_o_settings.disable_search_cols))) {
						throw new Error('Invalid argument.');
					}
					for(var l_=0;l_ < _o_settings.disable_search_cols.length; l_++){
						if(_o_settings.disable_search_cols[l_]==ll){
							b_col_ignore = true;
							break;
						}
					}
					if(!b_col_ignore){
						//stringify and store callback function in onclick for each td
						_s_row_clicked_source = _o_settings.row_clicked.toString().replace(/\n*\s{2,}/g,'');
						_s_row_clicked_source = _s_row_clicked_source.replace('function','');
						var _fn_input_data_replacer = function(s_inner_input){
							_s_function_input_name = s_inner_input.replace(/^\(/,'');
							_s_function_input_name = _s_function_input_name.replace(/\)$/,'');
							return s_inner_input;
						}
						var _fn_function_parser = function(s_input){
							return _fn_input_data_replacer(s_input);
						}
						var _fn_curly_brace_replacer = function(s_curly_brace){
							_a_parsed_cell = {};
							_a_parsed_cell.r = ii;
							_a_parsed_cell.c = ll;
							_a_parsed_cell.row_data = _o_settings.row_data[i];
							return '{' + _s_function_input_name + '=' + JSON.stringify(_a_parsed_cell) + ';';
						}
						_s_row_clicked_source = _s_row_clicked_source.replace(/\(([^\)]*)\)/,_fn_function_parser);
						_s_row_clicked_source = _s_row_clicked_source.replace(/[\{]/,_fn_curly_brace_replacer);
						_s_row_clicked_source = '(function' + _s_row_clicked_source + ')();';
						_s_row_clicked_source = _s_row_clicked_source.replace(/"/g,"'");
						_s_html +='<td onclick="'+_s_row_clicked_source+'" class="dt_cell dt_col_'+ll+'">'+_o_settings.data[i][l]+'</td>';
					} else {
						b_col_ignore = false;
					}
				}
				_s_html += '</tr>';
			}

			_s_html += '<tr class="dt_pagination_tr"><td class="dt_pagination_td" align="center" colspan='+_o_settings.headings.length+'>';
			_s_html += _s_pagination_html.replace(/fumzup_top_page/g,'fumzup_bottom_page');
			_s_html += '<a name="fumzup_bottom_page"></a></td></tr>';

			
			//RECORDS PER PAGE
			if(_o_settings.show_records_per_page){
				if(!jQuery.isArray(_o_settings.rpp_dropdown) || (typeof _o_settings.rpp_dropdown==='undefined')){
					_o_settings.rpp_dropdown = [];
				}
				_s_html += '<tr class="dt_records_per_page_tr">';
				_s_html += '<td class="dt_records_per_page_td" colspan='+_o_settings.headings.length+'>';
				_s_html += '<div class="dt_records_per_page_parent_div">';
				_s_html += '<label class="dt_records_per_page_label" ';
				_s_html += 'for="dt_rpp_select_' + _o_settings.div_container + '">Lines/page: </label>';
				if((jQuery.isArray(_o_settings.rpp_dropdown))&& (_o_settings.rpp_dropdown.length > 0)){
					var _s_select = '<select class="dt_records_per_page_select" name="dt_rpp_select_' + _o_settings.div_container + '" ';
					_s_select += ' onchange="jQuery(\'#dt_rpp_temp_'+_o_settings.div_container+'\').attr(\'value\',this.value); jQuery(\'#dt_r_'+_o_settings.div_container+'\').attr(\'value\',jQuery(\'#dt_rpp_temp_'+_o_settings.div_container+'\').val()); jQuery(\'#dt_p_'+_o_settings.div_container+'\').attr(\'value\','+1+');'+_o_settings.parent_function_name+'(';
					_s_select += _s_extra_dq;
					_s_select += '{d:jQuery(\'#dt_d_'+_o_settings.div_container+'\').val(),o:jQuery(\'#dt_o_'+_o_settings.div_container+'\').val(),p:jQuery(\'#dt_p_'+_o_settings.div_container+'\').val(),r:jQuery(\'#dt_r_'+_o_settings.div_container+'\').val(),si:jQuery(\'#dt_si_'+_o_settings.div_container+'\').val(),sf:jQuery(\'#dt_sf_'+_o_settings.div_container+'\').val()})">';
					for(var m=0;m<_o_settings.rpp_dropdown.length;m++){
						_s_select += '<option class="dt_rpp_temp_input_option dt_rpp_temp_input_option_'+m+'" ';
						if(_o_settings.rpp_dropdown[m]==jQuery('#dt_rpp_temp_'+_o_settings.div_container).val()){
							_s_select += '" selected ';
						}
						_s_select += 'value="'+_o_settings.rpp_dropdown[m]+'">';
						_s_select += _o_settings.rpp_dropdown[m]+'</option>';
					}
					_s_select += '</select>';
					_s_html = _s_html + _s_select;
				} else {
					_s_html += '<input name="dt_rpp_select_' + _o_settings.div_container;
					_s_html += '" class="dt_records_per_page_input"';
					_s_html += ' type="text" value="';
					_s_html += _o_settings.payload.r+'"';
					_s_html += ' onkeyup="jQuery(\'#dt_rpp_temp_'+_o_settings.div_container+'\').attr(\'value\',this.value);" />';
					var _s_send = '<a class="dt_records_per_page_button" href="#fumzup_top_page;" ';
					_s_send += 'onclick="jQuery(\'#dt_r_'+_o_settings.div_container+'\').attr(\'value\',jQuery(\'#dt_rpp_temp_'+_o_settings.div_container+'\').val()); ';
					_s_send += ' jQuery(\'#dt_p_'+_o_settings.div_container+'\').attr(\'value\','+1+'); ';
					_s_send += _o_settings.parent_function_name+'(';
					_s_send += _s_extra_dq;
					_s_send += '{d:jQuery(\'#dt_d_'+_o_settings.div_container+'\').val(),o:jQuery(\'#dt_o_'+_o_settings.div_container+'\').val(),p:jQuery(\'#dt_p_'+_o_settings.div_container+'\').val(),r:jQuery(\'#dt_r_'+_o_settings.div_container+'\').val(),si:jQuery(\'#dt_si_'+_o_settings.div_container+'\').val(),sf:jQuery(\'#dt_sf_'+_o_settings.div_container+'\').val()})">';
					if(typeof _o_settings.button_rpp!=='undefined'){
						_s_send += _o_settings.button_rpp;
					}
					_s_send += '</a>';
					_s_html = _s_html + _s_send;
				}

				_s_html += '</div></td></tr>';
			}
			_s_html += '</tbody></table>';
			jQuery('#'+_o_settings.div_container).html(_s_html);
		});
		return this;

	};o_input.fn.ajax_datatable.defaults={
		/*--------button text, if any--*/
		button_sf:undefined,
		button_rpp:undefined,
		/*-----------------------------*/

		/*--------pagination-----------*/
		pagination_max:5,
		pagination_text_previous:undefined,
		pagination_text_next:undefined,
		parent_function_name:undefined,
		/*-----------------------------*/

		/*--------data returned--------*/
		headings:undefined,
		no_of_rows:undefined,
		data:undefined,
		row_data:undefined,
		/*-----------------------------*/

		/*--------callback function----*/
		row_clicked:function(){},
		/*-----------------------------*/
		class_name:undefined,
		function_name:undefined,
		default_rpp:10,
		disable_search_cols:[],
		div_container:undefined,
		lock_order_by:false,
		payload:undefined,
		rpp_dropdown:undefined,
		show_pagination:true,
		show_pagination_goto:true,
		show_search:true,
		show_records_per_page:true
	}
})(jQuery);

