<?php
/**
 * This file first checks if the framework is used as a theme or plugin framework and sets values accordingly
 *
 * @author		Christian "Kriesi" Budschedl
 * @copyright	Copyright (c) Christian Budschedl
 * @link		http://kriesi.at
 * @link		http://aviathemes.com
 * @since		Version 1.0
 * @package 	AviaFramework
 */

/**
 * check if file is a plugin or theme based on its location, then set constant and globals for further use within the framework
 * @todo create plugin version of framework and prevent interfering with theme version
 */
 


/**
* AVIA_BASE contains the root server path of the framework that is loaded
*/
if( ! defined('AVIA_BASE' ) ) 	 { 	define( 'AVIA_BASE', get_template_directory() .'/' ); }



/**
* AVIA_BASE_URL contains the http url of the framework that is loaded
*/
if( ! defined('AVIA_BASE_URL' ) ){	define( 'AVIA_BASE_URL', get_template_directory_uri() . '/'); }



// get themedata version wp 3.4+
if(function_exists('wp_get_theme'))
{
	$wp_theme_obj = wp_get_theme();
	$avia_base_data['prefix'] = $avia_base_data['Title'] = $wp_theme_obj->get('Name');
}

// get themedata lower versions
if(!isset($avia_base_data['Title']))
{
	$avia_base_data = get_theme_data( AVIA_BASE . 'style.css' );
	$avia_base_data['prefix'] = $avia_base_data['Title'];
}

/*if we use a beta build remove the beta string so the theme saves all options for the actual release- beta builds use an _av_beta string at the end of the theme name*/
$avia_base_data['prefix'] = str_replace('_av_beta','',$avia_base_data['prefix']);


/**
* THEMENAME contains the Name of the currently loaded theme
*/
if( ! defined('THEMENAME' ) ) { define( 'THEMENAME', $avia_base_data['Title'] ); }



if( ! defined('AVIA_FW' ) )
{	
	//define path constants
	
	/**
	* AVIA_FW contains the server path of the framework folder
	*/
	define( 'AVIA_FW', AVIA_BASE . 'framework/' ); 
	
	
	/**
	* AVIA_PHP contains the server path of the frameworks php folder
	*/
	define( 'AVIA_PHP', AVIA_FW . 'php/' );
	
	
	/**
	* AVIA_JS contains the server path of the frameworks javascript folder
	*/
	define( 'AVIA_JS', AVIA_FW . 'js/' );
	
	
	/**
	* AVIA_CSS contains the server path of the frameworks css folder
	*/ 
	define( 'AVIA_CSS', AVIA_FW . 'css/' );
	
	
	/**
	* AVIA_OPTIONS contains the server path of the theme_option_pages folder
	*/ 
	define( 'AVIA_OPTIONS', AVIA_BASE . 'theme_option_pages' ); 
	
	
	
	
	//define url constants
	
	/**
	* AVIA_FW_URL contains the url of the framework folder
	*/ 
	define( 'AVIA_FW_URL', AVIA_BASE_URL . 'framework/' );
	
	/**
	* AVIA_IMG_URL contains the url of the frameworks images folder
	*/ 
	define( 'AVIA_IMG_URL', AVIA_FW_URL . 'images/' ); 
	
	
	/**
	* AVIA_PHP_URL contains the url of the frameworks php folder
	*/ 
	define( 'AVIA_PHP_URL', AVIA_FW_URL . 'php/' );
	
	
	/**
	* AVIA_JS_URL contains the url of the frameworks javascript folder
	*/ 
	define( 'AVIA_JS_URL', AVIA_FW_URL . 'js/' ); 
	
	
	/**
	* AVIA_CSS_URL contains the url of the frameworks css folder
	*/ 
	define( 'AVIA_CSS_URL', AVIA_FW_URL . 'css/' ); 
	
	
	/**
	* AVIA_OPTIONS contains the url of the theme_option_pages folder
	*/ 
	define( 'AVIA_OPTIONS_URL', AVIA_BASE_URL . 'theme_option_pages' ); 
}



//file includes

/**
* This file holds a function set for commonly used operations done by the frameworks frontend
*/
require( AVIA_PHP.'function-set-avia-frontend.php' );

/**
* This file holds the class that improves the menu with megamenu capabilities
*/
require( AVIA_PHP.'class-megamenu.php' );

/**
* This file holds the function that creates the shortcodes within the backend
*/
require( AVIA_PHP.'avia_shortcodes/shortcodes.php' );

/**
* This file holds the class that creates various styles for the frontend that are set within the backend
*/
require( AVIA_PHP.'class-style-generator.php' );

/**
* This file holds the class that creates forms based on option arrays
*/
require( AVIA_PHP.'class-form-generator.php' );

/**
* This file holds the class that creates several framework specific widgets
*/
require( AVIA_PHP.'class-framework-widgets.php' );

/**
* This file holds the class that creates several framework specific widgets
*/
require( AVIA_PHP.'class-breadcrumb.php' );


/**
* Query filter for post types and other stuff
*/
require( AVIA_PHP.'class-queryfilter.php' );

	
/**
* This file loads the classs necessary for dynamic sidebars
*/
require( AVIA_PHP.'class-sidebar-generator.php' );
	
	
if(is_admin())
{

	// Load script that are needed for the backend

	/**
	* This file holds a function set for ajax operations done by the framework
	*/
	require( AVIA_PHP.'function-set-avia-ajax.php' );
	
	/**
	* The adminpage class creates the option page menu items
	*/
	require( AVIA_PHP.'class-adminpages.php' );
	
	/**
	* The metabox class creates meta boxes for single posts, pages and other custom post types
	*/
	require( AVIA_PHP.'class-metabox.php' );
	
	/**
	* The htmlhelper class is needed to render the options defined in the config files
	*/
	require( AVIA_PHP.'class-htmlhelper.php' );
		
	/**
	* This file improves the media uploader so it can be used within the framework
	*/
	require( AVIA_PHP.'class-media.php' );
	
	/**
	* This file loads the option set class to create new backend options on the fly
	*/
	require( AVIA_PHP.'class-database-option-sets.php' );
	
	/**
	* This file loads the option set class to create new backend options on the fly
	*/
	require( AVIA_PHP.'wordpress-importer/avia-export-class.php' );
	
	/**
	* This file loads the class responsible for one click theme updates
	*/
	require( AVIA_PHP.'auto-updates/auto-updates.php' );
	
	
	
	/**
	* This file loads the option set class to create new backend options on the fly
	*/
	require( AVIA_PHP.'class-update-notifier.php' );
}

if( ! defined('THEMENAMECLEAN' ) ) { define( 'THEMENAMECLEAN', avia_clean_string($avia_base_data['Title']) ); }













