<?php
/**
 * @name		Page Builder CK
 * @package		com_pagebuilderck
 * @copyright	Copyright (C) 2015. All rights reserved.
 * @license		GNU General Public License version 2 or later; see LICENSE.txt
 * @author		Cedric Keiflin - https://www.template-creator.com - https://www.joomlack.fr
 */

defined('_JEXEC') or die;

$app = JFactory::getApplication();
$input = $app->input;
$prefix = $input->get('prefix', '', 'string');
?>
<style>
#fontpreview {
	font-size: 28px;
	display: block;
	line-height: 1.5em;
	padding: 20px 0;
}

label {
	display: inline-block !important;
	min-width: 200px;
}

@font-face {
	font-family: 'icomoon';
	src:url('https://s3.amazonaws.com/icomoon.io/4/Loading/icomoon.eot?-9haulc');
	src:url('https://s3.amazonaws.com/icomoon.io/4/Loading/icomoon.eot?#iefix-9haulc') format('embedded-opentype'),
		url('https://s3.amazonaws.com/icomoon.io/4/Loading/icomoon.woff?-9haulc') format('woff'),
		url('https://s3.amazonaws.com/icomoon.io/4/Loading/icomoon.ttf?-9haulc') format('truetype'),
		url('https://s3.amazonaws.com/icomoon.io/4/Loading/icomoon.svg?-9haulc#icomoon') format('svg');
	font-weight: normal;
	font-style: normal;
}

[class^="icon-"], [class*=" icon-"] {
	font-family: 'icomoon';
	speak: none;
	font-style: normal;
	font-weight: normal;
	font-variant: normal;
	text-transform: none;
	line-height: 1;

	/* Better Font Rendering =========== */
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

.icon-spinner:before {
	content: "\e000";
}
.icon-spinner-2:before {
	content: "\e001";
}
.icon-spinner-3:before {
	content: "\e002";
}
.icon-spinner-4:before {
	content: "\e003";
}
.icon-spinner-5:before {
	content: "\e004";
}
.icon-spinner-6:before {
	content: "\e005";
}
.icon-spinner-7:before {
	content: "\e006";
}

@keyframes anim-rotate {
	0% {
		transform: rotate(0);
	}
	100% {
		transform: rotate(360deg);
	}
}
.spinner {
	display: inline-block;
	opacity: 0;
	height: 1em;
	line-height: 1;
	margin: .5em;
	animation: anim-rotate 2s infinite linear;
	color: #000;
	text-shadow: 0 0 .25em rgba(255,255,255, .3);
}
.spinner--steps {
	animation: anim-rotate 1s infinite steps(8);
}
.spinner--steps2 {
	animation: anim-rotate 1s infinite steps(12);
}
</style>
<script src="<?php echo PAGEBUILDERCK_MEDIA_URI ?>/assets/jqueryck.min.js" type="text/javascript"></script>
<?php PagebuilderckHelper::loadInlineCKFramework(); ?>
<div id="googlefontstyle"></div>
<div class="ckinterface" style="padding: 20px;">
	<p>
		<input id ="googlefonturl" name="googlefonturl" type="text" style="height:auto;margin:0;width: 500px;max-width:100%;" placeholder="<?php echo JText::_('CK_GOOGLEFONT_URL') ?>" onchange="searchgooglefont()" />
		<button class="ckbutton" onclick="searchgooglefont()"><?php echo JText::_('CK_SEARCH') ?></button><i class="spinner spinner--steps icon-spinner"></i>
		<button class="ckbutton ckbutton-primary" onclick="returngooglefont()"><?php echo JText::_('CK_SUBMIT') ?></button>
	</p>
	<hr />
	<input type="hidden" id="fonturl" name="fonturl" value="" />
	<p id="fontapplied"><label><?php echo JText::_('CK_FONT_APPLIED') ?></label> : <span id="fontappliedname" class="badge badge-success"><?php echo JText::_('CK_NONE') ?><span></p>
	<p id="fontweight"><label><?php echo JText::_('CK_FONTWEIGHT') ?></label> : <span class=""><input id="googlefontweight" name="googlefontweight" type="text" onchange="updatefontweight()" style="height:auto;margin:0;" placeholder="300" /><span></p>
	<p id="fontpreview">Grumpy wizards make toxic brew for the evil Queen and Jack.</p>
</div>
<script>
//<link href='https://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'>
// <link href='https://fonts.googleapis.com/css?family=Open+Sans&subset=latin,greek-ext' rel='stylesheet' type='text/css'>
//https://fonts.googleapis.com/css?family=Open+Sans
// Open+Sans
// Opens Sans
/* 
 * Test the given value and search for a google font
 * 
 * return void
 */
function searchgooglefont() {
	var url = window.parent.ckCapitalize(jQuery('#googlefonturl').val()).trim("'");
	if (! url) {
		alert ('<?php echo JText::_('CK_EMPTY_URL', true) ?>');
		jQuery('#googlefonturl').addClass('invalid').focus();
		return;
	}
	jQuery('.spinner').css('opacity', '1');
	var valuetest = /\+/;
	if ( url.indexOf("http") == 0 ) {
		getGooglefontFromUrl(url); 			// https://fonts.googleapis.com/css?family=Open+Sans:400,400italic,600
	} else if ( url.indexOf("<link") == 0 ) {
		getGooglefontFromStylesheet(url); 	// <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,400italic,600' rel='stylesheet' type='text/css'>
	} else if ( valuetest.test(url) ) {
		getGooglefontFromFontvalue(url); 	// Open+Sans
	} else {
		getGooglefontFromFontname(url); 	// Open Sans
	}
}
/* 
 * Load the font stylesheet from its url
 * @param : url - the http path to the stylesheet (https://fonts.googleapis.com/css?family=Open+Sans:400,400italic,600)
 * 
 * return : void
 */
function getGooglefontFromUrl(url) {
	jQuery.ajax({
		url: url,
	})
	.done(function( data ) {
		if (data) {
			jQuery('#googlefontstyle').html('<style>' + data + '</style>');
			var fontName = getNameFromContent(data).replace(/'/g, "");
			if (fontName) {
				jQuery('#fontappliedname').html(fontName);
				jQuery('#fonturl').val(url);
				updateFontPreview(fontName);
			}
		} else {
			alert( '<?php echo JText::_('CK_FONT_NOT_FOUND', true) ?>' );
		}
		jQuery('.spinner').css('opacity', '0');
	})
	.fail(function() {
		alert( '<?php echo JText::_('CK_FONT_NOT_FOUND', true) ?>' );
		jQuery('.spinner').css('opacity', '0');
	});
}

/* 
 * Load the font stylesheet from its stylesheet code
 * @param : url - the stylesheet code (<link href='https://fonts.googleapis.com/css?family=Open+Sans&subset=latin,greek-ext' rel='stylesheet' type='text/css'>)
 * 
 * return : String - the stylesheet content
 */
function getGooglefontFromStylesheet(stylesheet) {
	var re = /href='(.*?)'/;
	var url = stylesheet.match(re);
	if (typeof(url[1]) == 'undefined') {
		alert('<?php echo JText::_('CK_FONTURL_NOT_FOUND', true) ?>');
		return;
	}
	getGooglefontFromUrl(url[1].trim("'"));
}

/* 
 * Load the font stylesheet from its url
 * @param : url - the http path to the stylesheet (Open+Sans)
 * 
 * return : String - the stylesheet content
 */
function getGooglefontFromFontvalue(name) {
	var url = 'https://fonts.googleapis.com/css?family=' + name;
	getGooglefontFromUrl(url);
}

/* 
 * Load the font stylesheet from its url
 * @param : url - the http path to the stylesheet (Open Sans)
 * 
 * return : String - the stylesheet content
 */
function getGooglefontFromFontname(name) {
	name = name.replace(' ', '+');
	getGooglefontFromFontvalue(name);
}

/*
 * Extract the name of the font from the google font styles
 * @param content : string - the font styles from google
 *
 * return string - the name
 */
function getNameFromContent(content) {
	// font-family:(.*?);
	var re = /font-family:(.*?);/;
	var fontName = content.match(re);
	if (typeof(fontName[1]) == 'undefined') {
		alert('<?php echo JText::_('CK_FONTNAME_NOT_FOUND', true) ?>');
		return '';
	}
	return fontName[1].trim().trim("'");
}

/*
 * Apply the font to the preview text
 * @param fontName : string - the font name
 *
 * return void
 */
function updateFontPreview(fontName) {
	jQuery('#fontpreview').css('font-family', fontName);
	updatefontweight();
}

/*
 * Apply the font weight to the preview text
 *
 * return void
 */
function updatefontweight() {
	jQuery('#fontpreview').css('font-weight', jQuery('#googlefontweight').val());
}

/*
 * Get the name and font weight and return them into the parent window
 *
 * return void
 */
function returngooglefont() {
//	if (! jQuery('#fonturl').val()) return;
	window.parent.ckSetGoogleFont('<?php echo $prefix ?>', jQuery('#fonturl').val(), jQuery('#fontappliedname').text(), jQuery('#googlefontweight').val());
	window.parent.CKBox.close();
}
</script>


