function init()
 {
     rh_register_script('bootstrap', $this->url . 'bootstrap/js/bootstrap.min.js', array(), '2.2.2');
     rh_register_script('jquery-isotope', $this->url . 'js/jquery.isotope.min.js', array(), '1.5.14');
     rh_register_script('jquery-infinite-scroll', $this->url . 'js/jquery.infinitescroll.min.js', array(), '2.0b2.110713');
     wp_register_style('rhcss-bootstrap', $this->url . 'bootstrap/css/namespaced.bootstrap.min.css', array(), '2.2.2');
 }
 function frontend_only_scripts()
 {
     global $rhc_plugin;
     do_action('rh-php-commons');
     if ('0' == $this->get_option('disable_print_css', '0', true)) {
         wp_register_style('rhc-print-css', RHC_URL . 'css/print.css', array(), '1.0.0');
     }
     if ('0' == $this->get_option('disable_bootstrap', '0', true)) {
         rh_register_script('bootstrap', RHC_URL . 'js/bootstrap.min.js', array('jquery'), '3.0.0', $this->in_footer);
         wp_register_script('bootstrap-select', RHC_URL . 'js/bootstrap-select.js', array('bootstrap'), '1.0.0', $this->in_footer);
     } else {
         wp_register_script('bootstrap-select', RHC_URL . 'js/bootstrap-select.js', array(), '1.0.0', $this->in_footer);
     }
     if ($this->debugging_js_css) {
         wp_register_style('calendarize', RHC_URL . 'style.css', array(), '2.9.6.5');
         wp_register_style('calendarizeit', RHC_URL . 'frontend.css', array('calendarize'), '2.0.0.10');
     } else {
         wp_register_style('calendarizeit', RHC_URL . 'css/frontend.min.css', array(), '3.2.9.4');
     }
     $requirements = apply_filters('rhc_css_requirements', array());
     wp_register_style('rhc-last-minue', RHC_URL . 'css/last_minute_fixes.css', $requirements, '1.0.9');
     if ($rhc_plugin->enqueue_scripts || '0' == $this->get_option('scripts_on_demand', '0', true)) {
         do_action('enqueue_frontend_only');
     }
     do_action('rhc_scripts_frontend');
 }
    function head()
    {
        rh_register_script('bootstrap', $this->url . 'bootstrap/js/bootstrap.min.js', array(), '2.3.1');
        rh_register_script('jquery-isotope', $this->url . 'js/jquery.isotope.min.js', array(), '1.5.14');
        //rh_register_script( 'jquery-infinite-scroll', $this->url.'js/jquery.infinitescroll.min.js', array(),'2.0b2.110713');
        wp_register_style('rhcss-bootstrap', $this->url . 'bootstrap/css/namespaced.bootstrap.min.css', array(), '2.2.2');
        wp_register_style('rhcss-gfonts-admin', $this->url . 'css/google_web_fonts_admin.css', array(), '1.0.0');
        wp_print_styles('rhcss-bootstrap');
        wp_print_styles('rhcss-gfonts-admin');
        wp_print_scripts('bootstrap');
        wp_print_scripts('jquery-isotope');
        //wp_print_scripts('jquery-infinite-scroll');
        ?>
<style>
<?php 
        /*$this->animation_styles();*/
        ?>
</style>
<script type="text/javascript">

var google_fonts = <?php 
        echo json_encode($this->get_google_fonts_list());
        ?>
;
var demo_text = '<?php 
        echo $this->sample_text;
        ?>
';

function get_subset_by_family(google_fonts,family){
	var subset = [];
	for(a=0;a<google_fonts.length;a++){
		if( family.toLowerCase() == google_fonts[a].family.toLowerCase() ){
			subset[subset.length]=google_fonts[a];
			continue;
		}
		
		if( google_fonts[a].family.toLowerCase().indexOf( family.toLowerCase() )!=-1 ){
			subset[subset.length]=google_fonts[a];
			continue;
		}
	}
	return subset;
}

function get_subset_by_letter(google_fonts,letter){
	var subset = [];
	for(a=0;a<google_fonts.length;a++){
		if( letter == google_fonts[a].family.substring(0,1).toLowerCase() ){
			subset[subset.length]=google_fonts[a];
		}
	}
	return subset;
}

function get_subset_enabled(google_fonts){
	var subset = [];
	for(a=0;a<google_fonts.length;a++){
		if( 'undefined'!=typeof(google_fonts[a].enabled) && google_fonts[a].enabled ){
			subset[subset.length]=google_fonts[a];
		}
	}
	return subset;
}

function load_items(selector,sub_set){
	jQuery(document).ready(function($){
		var web_safe_fonts = [
			"Georgia, serif",
			"Palatino Linotype, Book Antiqua, Palatino, serif",
			"Times New Roman, Times, serif",
			"Arial, Helvetica, sans-serif",
			"Arial Black, Gadget, sans-serif",
			"Comic Sans MS, cursive, sans-serif",
			"Impact, Charcoal, sans-serif",
			"Lucida Sans Unicode, Lucida Grande, sans-serif",
			"Tahoma, Geneva, sans-serif",
			"Trebuchet MS, Helvetica, sans-serif",
			"Verdana, Geneva, sans-serif",
			"Courier New, Courier, monospace",
			"Lucida Console, Monaco, monospace"
		];
		//
		$('.rhcss-isotope-item').each(function(i,item){
			$(selector).isotope('remove', $(this) );
		});
	
		var families = [];
		$.each(sub_set, function(i,data){
			//if(i>30)return;
			//console.log( data );
			//rhcss-isotope-item
			
			families[families.length]=escape(data.family);
			
			if( 'undefined'!=typeof(data.enabled) && data.enabled ){
				var enable_control = $('<div class="btn-group font-control" data-toggle="buttons-radio"><button type="button" class="btn btn-success active activate-font"><?php 
        _e('On', 'rhcss');
        ?>
</button><button type="button" data-toggle="button" class="btn deactivate-font"><?php 
        _e('Off', 'rhcss');
        ?>
</button></div>');
				var status = 'font-enabled';
			}else{
				var enable_control = $('<div class="btn-group font-control" data-toggle="buttons-radio"><button type="button" class="btn activate-font"><?php 
        _e('On', 'rhcss');
        ?>
</button><button type="button" data-toggle="button" class="btn btn-danger active deactivate-font"><?php 
        _e('Off', 'rhcss');
        ?>
</button></div>');
				var status = 'font-disabled';
			}
			
			var sample_text = $('<p class="google-font-preview" style="font-size:1.5em;font-family:'+data.family+', sans-serif, serif">'+demo_text+'</p>');
			
			var letter = 'letter-' + data.family.substring(0,1).toLowerCase();
			var family = 'family-' + data.family.toLowerCase().replace(' ','-');
			var new_items = $('<div></div>')
				.data('family', data.family )
				.addClass('rhcss-isotope-item')
				.addClass(status)
				.addClass(letter)
				.addClass(family)
				.append(enable_control)
				.append(sample_text)
				.append('<h4 class="font-title">' + data.family + '</h4>')
				.append('<div id="extra-sets" class="row-fluid"></div>')
			;
			
			if( data.variants.length > 0 ){
				var variant_cont = $('<div class="span6 font-variant"></div>');
				variant_cont.append('<label><?php 
        _e('Variants', 'rhcss');
        ?>
</label>');
			
				$.each(data.variants,function(i,v){
					var checked = '';
					if( 'undefined'!=typeof(data.set_variants) ){
						for(a=0;a<data.set_variants.length;a++){
							if( v==data.set_variants[a] ){
								checked = 'checked="checked"';
								break;
							}
						}					
					}
					
					variant_cont.append('<input type="checkbox" '+checked+' class="input-font-variant" value="'+v+'" />&nbsp;'+v+'<br />');		
				});
				new_items.find('#extra-sets')
					.append(variant_cont);
			}
			
			if( data.subsets.length > 0 ){
				var subset_cont = $('<div class="span6 font-subset"></div>');
				subset_cont.append('<label><?php 
        _e('Subsets', 'rhcss');
        ?>
</label>');

				$.each(data.subsets,function(i,v){
					var checked = '';
					if( 'undefined'!=typeof(data.set_subsets) ){
						for(a=0;a<data.set_subsets.length;a++){
							if( v==data.set_subsets[a] ){
								checked = 'checked="checked"';
								break;
							}
						}					
					}				
					subset_cont.append('<input type="checkbox" '+checked+' class="input-font-subset" value="'+v+'" />&nbsp;'+v+'<br />');		
				});				
				new_items.find('#extra-sets')
					.append( subset_cont );
			}
			
			var web_safe_options = $('<select class="rhcss-alt-font"></select>');
			var selected = 'undefined'!=typeof( data.alt ) && data.alt!=''?data.alt:'';
			$.each(web_safe_fonts,function(i,f){
				web_safe_options.append( $('<option '+ (selected==f?'selected="selected"':'') +' value="' + f + '">' + f + '</option>') );
			});			

			var control_fonts = $('<div class="control-alt-font"></div>');
			control_fonts.append('<label>Alternate Web Safe font:</label>');
			control_fonts.append(web_safe_options);
			new_items.append(control_fonts);
			
			$(selector).isotope('insert', new_items);
		});
		load_google_fonts_preview(families,demo_text);
		init_loaded_items();
	});
}

function save_google_web_fonts(){
	var enabled_fonts = [];
	for(a=0;a<google_fonts.length;a++){
		if( google_fonts[a].enabled ){
			enabled_fonts.push( google_fonts[a] );
		}
	}
	jQuery(document).ready(function($){
		var args = {
			action: 'rhcss_save_fonts',
			enabled_fonts: enabled_fonts
		};
		
		$.post( '<?php 
        echo admin_url('/admin-ajax.php');
        ?>
', args, function(data){
			if(data.R=='OK'){
				//console.log(data.DATA);
			}else if(data.R=='ERR'){
				alert(data.MSG);
			}else{
				alert('Error saving, reload page and try again.');
			}
		}, 'json');
	});
	//console.log('save font state', enabled_fonts);
}

var last_families = [];
function load_google_fonts_preview(_families,demo_text){
	if( '1'!=jQuery('#enable-google-preview').val() ){
		if(_families.length>0)
			last_families = _families;
		return true;
	}
	
	while( jQuery('link.google-web-font').length>10 ){
		jQuery('link.google-web-font').first().remove();
	}
	
	while( families = _families.splice(0, 30) ){
		if(families.length==0)break;
		var url = 'https://fonts.googleapis.com/css?family=' + families.join('|') + '&text=' + escape(demo_text);	
		
		jQuery('<link />', {
			rel: 'stylesheet',
			type: 'text/css',
			href: url,
			class: 'google-web-font'
		}).appendTo('HEAD');			
	}
	return true;
}

jQuery(document).ready(function($){
	$('#enable-google-preview').val('0');
	
	$('#rhcss-fonts-holder').isotope({
		itemSelector : '.rhcss-isotope-item',
  		layoutMode : 'fitRows'
		/*,filter : '.letter-a'*/
	});
	
	load_items( '#rhcss-fonts-holder', get_subset_by_letter(google_fonts,'a') );
	
	$('.status-filter').on('click',function(e){
		load_items( '#rhcss-fonts-holder', get_subset_enabled( google_fonts ) );
		return true;
	});
	
	$('.letter-filters .link-letter-filter').on('click',function(e){
		var letter = $(this).attr('data-filter');
		load_items( '#rhcss-fonts-holder', get_subset_by_letter(google_fonts,letter) );
		return true;
	});
	
	$('.enable-preview').on('click',function(e){
		$(this).parent().find('.btn.enable-preview')	
			.addClass('btn-success')
		;	
		$(this).parent().find('.btn.disable-preview')
			.removeClass('btn-danger')
		;	
		$('#enable-google-preview').val('1');
		load_google_fonts_preview(last_families,demo_text);
	});
	
	$('.disable-preview').on('click',function(e){
		$(this).parent().find('.btn.enable-preview')	
			.removeClass('btn-success')
		;	
		$(this).parent().find('.btn.disable-preview')
			.addClass('btn-danger')
		;	
		$('#enable-google-preview').val('0');	
		jQuery('link.google-web-font').remove();
	});
	
	$('#rhcss-search-btn').on('click',function(e){
		var val = $('#rhcss-search-input').val();
		if(val!=''){
			load_items( '#rhcss-fonts-holder', get_subset_by_family(google_fonts,val) );
		}
	});
});

function init_loaded_items(){
	jQuery(document).ready(function($){
		$('.activate-font').on('click',function(e){
			$(this).parent().find('.btn.activate-font')
				.addClass('btn-success')
			;	
			$(this).parent().find('.btn.deactivate-font')
				.removeClass('btn-danger')
			;
			
			$(this).parents('.rhcss-isotope-item')
				.removeClass('font-disabled')
				.addClass('font-enabled')
			;
			
			var family = $(this).parents('.rhcss-isotope-item').data('family');
			for(a=0;a<google_fonts.length;a++){
				if( family==google_fonts[a].family ){
					google_fonts[a].enabled = true;				
					google_fonts[a].set_variants = [];
					$(this).parents('.rhcss-isotope-item').find('.input-font-variant:checked').each(function(i,inp){
						google_fonts[a].set_variants.push( $(inp).val() );
					});
					
					google_fonts[a].set_subsets = [];
					$(this).parents('.rhcss-isotope-item').find('.input-font-subset:checked').each(function(i,inp){
						google_fonts[a].set_subsets.push( $(inp).val() );
					});
					
					google_fonts[a].alt = $(this).parents('.rhcss-isotope-item').find('.rhcss-alt-font').val();
					google_fonts[a].alt = google_fonts[a].alt==''?'serif':google_fonts[a].alt;
				}
			}
			
			save_google_web_fonts();
		});
		
		$('.deactivate-font').on('click',function(e){
			$(this).parent().find('.btn.activate-font')
				.removeClass('btn-success')
			;	
			$(this).parent().find('.btn.deactivate-font')
				.addClass('btn-danger')
			;
			
			$(this).parents('.rhcss-isotope-item')
				.removeClass('font-enabled')
				.addClass('font-disabled')
			;
	
			var family = $(this).parents('.rhcss-isotope-item').data('family');
			for(a=0;a<google_fonts.length;a++){
				if( family==google_fonts[a].family ){
					google_fonts[a].enabled = false;
					google_fonts[a].set_variants = [];
					google_fonts[a].set_subsets = [];
				}
			}		
			
			save_google_web_fonts();
		});	
		$('.input-font-subset,.input-font-variant').on('click',function(e){
			var container = $(this).parents('.rhcss-isotope-item');
			if( container.is('.font-enabled') ){
				container.find('.activate-font').trigger('click');
			}
		});
			
		$('.rhcss-alt-font').on('change',function(e){
			var container = $(this).parents('.rhcss-isotope-item');
			if( container.is('.font-enabled') ){
				container.find('.activate-font').trigger('click');
			}	
		});
	});
}
</script>
<?php 
    }
/**
 * Register new Javascript file; check if it is already registered, if it is compare versions (assumes numerical version number), and registers.
 *
 * 
**/
function rh_enqueue_script($handle, $src, $deps = array(), $ver = false, $in_footer = false)
{
    return rh_register_script($handle, $src, $deps, $ver, $in_footer, true);
}