text:
#include "../../idlib/precompiled.h"
#pragma hdrstop

#include "../../sys/win32/rc/guied_resource.h"
#include "../common/ColorButton.h"
#include "../common/MaskEdit.h"

#include "GEApp.h"
#include "GEItemPropsDlg.h"
#include "GEPropertyPage.h"

enum
{
	RVITEMPROPS_GENERAL = 0,
	RVITEMPROPS_IMAGE,
	RVITEMPROPS_TEXT,
	RVITEMPROPS_KEYS,

	RVITEMPROPS_MAX
};

class rvGEItemPropsImagePage : public rvGEPropertyPage
{
public:

	rvGEItemPropsImagePage ( idDict* dictValues );

	virtual bool	Init			( void );
	virtual bool	SetActive		( void );
	virtual bool	KillActive		( void );
	virtual int		HandleMessage	( UINT msg, WPARAM wParam, LPARAM lParam );

protected:

	void			UpdateCheckedStates		( void );

	idDict*		mDict;
};

rvGEItemPropsImagePage::rvGEItemPropsImagePage ( idDict* dict )
{
	mDict = dict;
}

/*
================
rvGEItemPropsImagePage::Init

Subclass the custom controls on the page
================
*/
bool rvGEItemPropsImagePage::Init ( void )
{
	NumberEdit_Attach ( GetDlgItem ( mPage, IDC_GUIED_ITEMMATSCALEX ) );
	NumberEdit_Attach ( GetDlgItem ( mPage, IDC_GUIED_ITEMMATSCALEY ) );
	NumberEdit_Attach ( GetDlgItem ( mPage, IDC_GUIED_ITEMBORDERSIZE ) );

	return true;
}

/*
================
rvGEItemPropsImagePage::UpdateCheckedStates

Updates the enabled state of all the controls that are linked to a checkbox
================
*/
void rvGEItemPropsImagePage::UpdateCheckedStates ( void )
{
	char temp[64];
	bool state;
	bool rstate;
	idStr result;
	bool  enable;

	enable = !IsExpression ( mDict->GetString ( "backcolor", "1,1,1,1" ) );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_USEBACKCOLOR ), enable );

	state = IsDlgButtonChecked ( mPage, IDC_GUIED_USEBACKCOLOR ) && IsWindowEnabled ( GetDlgItem ( mPage, IDC_GUIED_USEBACKCOLOR ) );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMBACKCOLOR ), state );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMBACKCOLORALPHA ), state );

	state = IsDlgButtonChecked ( mPage, IDC_GUIED_USEMATERIAL) != 0;
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMBACKGROUND ), state );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMVARIABLEBACKGROUND ), state );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMMATSCALEX ), state );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMMATSCALEY ), state );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_XSCALE_STATIC), state );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_YSCALE_STATIC), state );

	GetWindowText ( GetDlgItem ( mPage, IDC_GUIED_ITEMBORDERSIZE ), temp, 64 );
	enable = !IsExpression ( mDict->GetString ( "bordersize", "0" ) );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMBORDERSIZE ), enable );

	state = atol( temp ) ? true : false;
	rstate = IsDlgButtonChecked ( mPage, IDC_GUIED_USEBORDERCOLOR ) != 0;
	enable = !IsExpression ( mDict->GetString ( "bordercolor", "1,1,1,1" ) );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_USEBORDERCOLOR ), state && enable );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_USEBORDERMATERIAL ), state && enable);
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMBORDERCOLOR ), rstate && state && enable);
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMBORDERCOLORALPHA ), rstate && state && enable );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMBORDERMATERIAL ), !rstate && state );

	state = (state && !rstate) || IsDlgButtonChecked ( mPage, IDC_GUIED_USEMATERIAL);
	enable = !IsExpression ( mDict->GetString ( "matcolor", "1,1,1,1" ) );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMMATCOLORSTATIC ), state && enable );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMMATCOLOR ), state && enable );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMMATCOLORALPHA ), state && enable );
}

/*
================
rvGEItemPropsImagePage::HandleMessage

Handles messages for the text item properties page
================
*/
int rvGEItemPropsImagePage::HandleMessage ( UINT msg, WPARAM wParam, LPARAM lParam )
{
	switch ( msg )
	{
		case WM_DRAWITEM:
			ColorButton_DrawItem ( GetDlgItem ( mPage, wParam ), (LPDRAWITEMSTRUCT)lParam );
			return TRUE;

		case WM_COMMAND:
			switch ( LOWORD(wParam) )
			{
				case IDC_GUIED_ITEMBORDERSIZE:
					if ( HIWORD(wParam) == EN_CHANGE )
					{
						UpdateCheckedStates ( );
					}
					break;

				case IDC_GUIED_USEBORDERCOLOR:
				case IDC_GUIED_USEBORDERMATERIAL:
				case IDC_GUIED_USEBACKCOLOR:
				case IDC_GUIED_USEMATERIAL:
					UpdateCheckedStates ( );
					break;

				case IDC_GUIED_ITEMBACKCOLORALPHA:
				case IDC_GUIED_ITEMMATCOLORALPHA:
				case IDC_GUIED_ITEMBORDERCOLORALPHA:
				{
					AlphaButton_OpenPopup ( GetDlgItem ( mPage, LOWORD(wParam) ) );
					break;
				}

				case IDC_GUIED_ITEMBORDERCOLOR:
				case IDC_GUIED_ITEMBACKCOLOR:
				case IDC_GUIED_ITEMMATCOLOR:
				{
					CHOOSECOLOR col;
					ZeroMemory ( &col, sizeof(col) );
					col.lStructSize = sizeof(col);
					col.lpCustColors = gApp.GetOptions().GetCustomColors ( );
					col.hwndOwner = mPage;
					col.hInstance = NULL;
					col.Flags = CC_RGBINIT;
					col.rgbResult = ColorButton_GetColor ( GetDlgItem ( mPage, LOWORD(wParam) ) );
					if ( ChooseColor ( &col ) )
					{
						ColorButton_SetColor ( GetDlgItem ( mPage, LOWORD(wParam) ), col.rgbResult );
					}
					break;
				}
			}
			break;
	}

	return rvGEPropertyPage::HandleMessage ( msg, wParam, lParam );
}

/*
================
rvGEItemPropsImagePage::SetActive

Initializes the text properties page by copying data from the attached
window into the controls
================
*/
bool rvGEItemPropsImagePage::SetActive ( void )
{
	gApp.GetOptions().SetLastOptionsPage ( RVITEMPROPS_IMAGE );

	ColorButton_SetColor ( GetDlgItem ( mPage, IDC_GUIED_ITEMBACKCOLOR ), mDict->GetString ( "backcolor", "1,1,1,1" ) );
	AlphaButton_SetColor ( GetDlgItem ( mPage, IDC_GUIED_ITEMBACKCOLORALPHA ), mDict->GetString ( "backcolor", "1,1,1,1" ) );

	ColorButton_SetColor ( GetDlgItem ( mPage, IDC_GUIED_ITEMMATCOLOR ), mDict->GetString ( "matcolor", "1,1,1,1" ) );
	AlphaButton_SetColor ( GetDlgItem ( mPage, IDC_GUIED_ITEMMATCOLORALPHA ), mDict->GetString ( "matcolor", "1,1,1,1" ) );

	ColorButton_SetColor ( GetDlgItem ( mPage, IDC_GUIED_ITEMBORDERCOLOR ), mDict->GetString ( "bordercolor", "0,0,0,1" ) );
	AlphaButton_SetColor ( GetDlgItem ( mPage, IDC_GUIED_ITEMBORDERCOLORALPHA ), mDict->GetString ( "bordercolor", "0,0,0,1" ) );

	SetWindowText ( GetDlgItem ( mPage, IDC_GUIED_ITEMBACKGROUND ), idStr(mDict->GetString ( "background", "" )).StripQuotes ( ) );
	SetWindowText ( GetDlgItem ( mPage, IDC_GUIED_ITEMBORDERMATERIAL ), idStr(mDict->GetString ( "borderShader", "" )).StripQuotes ( ) );
	SetWindowText ( GetDlgItem ( mPage, IDC_GUIED_ITEMBORDERSIZE ), idStr(mDict->GetString ( "bordersize", "0" )).StripQuotes ( ) );

	SetWindowText ( GetDlgItem ( mPage, IDC_GUIED_ITEMMATSCALEX ), idStr(mDict->GetString ( "matscalex", "1" )).StripQuotes ( ) );
	SetWindowText ( GetDlgItem ( mPage, IDC_GUIED_ITEMMATSCALEY ), idStr(mDict->GetString ( "matscaley", "1" )).StripQuotes ( ) );

	CheckDlgButton ( mPage, IDC_GUIED_ITEMVARIABLEBACKGROUND, mDict->GetBool ( "variablebackground", "0" ) );

	CheckDlgButton ( mPage, IDC_GUIED_USEMATERIAL, idStr(mDict->GetString ( "background", "" )).StripQuotes ( ).Length()?BST_CHECKED:BST_UNCHECKED );
	CheckDlgButton ( mPage, IDC_GUIED_USEBACKCOLOR, idStr(mDict->GetString ( "backcolor", "" )).StripQuotes ( ).Length()?BST_CHECKED:BST_UNCHECKED );

	CheckRadioButton ( mPage, IDC_GUIED_USEBORDERCOLOR, IDC_GUIED_USEBORDERMATERIAL,
					   idStr(mDict->GetString("borderShader","")).Length()?IDC_GUIED_USEBORDERMATERIAL:IDC_GUIED_USEBORDERCOLOR );

	UpdateCheckedStates ( );

	return true;
}

/*
================
rvGEItemPropsImagePage::KillActive

Applys the settings currently stored in the property page back into the attached window
================
*/
bool rvGEItemPropsImagePage::KillActive ( void )
{
	char	temp[1024];
	bool	matcolor = false;
	idStr	s;

	if ( IsDlgButtonChecked ( mPage, IDC_GUIED_USEMATERIAL ) )
	{
		float val;

		GetWindowText ( GetDlgItem(mPage,IDC_GUIED_ITEMBACKGROUND), temp, 1024 );
		s = "\"";
		s.Append(temp);
		s.Append("\"" );
		mDict->Set ( "background", s );
		matcolor = true;

		GetWindowText ( GetDlgItem ( mPage, IDC_GUIED_ITEMMATSCALEX ), temp, 1024 );
		val = atof(temp);
		if ( val >= 0.999f && val <= 1.001f )
		{
			mDict->Delete ( "matscalex" );
		}
		else
		{
			mDict->Set ( "matscalex", idStr::FloatArrayToString( &val, 1, 8 ) );
		}

		GetWindowText ( GetDlgItem ( mPage, IDC_GUIED_ITEMMATSCALEY ), temp, 1024 );
		val = atof(temp);
		if ( val >= 0.999f && val <= 1.001f )
		{
			mDict->Delete ( "matscaley" );
		}
		else
		{
			mDict->Set ( "matscaley", idStr::FloatArrayToString( &val, 1, 8 ) );
		}

		if ( IsDlgButtonChecked ( mPage, IDC_GUIED_ITEMVARIABLEBACKGROUND ) )
		{
			mDict->Set ( "variablebackground", "1" );
		}
		else
		{
			mDict->Delete ( "variablebackground" );
		}
	}
	else
	{
		mDict->Delete ( "background" );
		mDict->Delete ( "variablebackground" );
		mDict->Delete ( "matscalex" );
		mDict->Delete ( "matscaley" );
	}

	if ( IsDlgButtonChecked ( mPage, IDC_GUIED_USEBACKCOLOR ) )
	{
		if ( IsWindowEnabled ( GetDlgItem ( mPage, IDC_GUIED_ITEMBACKCOLOR ) ) )
		{
			COLORREF color = ColorButton_GetColor ( GetDlgItem ( mPage, IDC_GUIED_ITEMBACKCOLOR ) );
			COLORREF alpha = ColorButton_GetColor ( GetDlgItem ( mPage, IDC_GUIED_ITEMBACKCOLORALPHA ) );
			mDict->Set ( "backcolor", StringFromVec4 ( idVec4((float)GetRValue ( color ) / 255.0f, (float)GetGValue ( color ) / 255.0f, (float)GetBValue ( color ) / 255.0f, (float)GetRValue(alpha )/255.0f ) ) );
		}
	}
	else
	{
		mDict->Delete ( "backcolor" );
	}

	GetWindowText ( GetDlgItem ( mPage, IDC_GUIED_ITEMBORDERSIZE ), temp, 1024 );
	if ( atoi ( temp ) )
	{
		if ( IsWindowEnabled ( GetDlgItem ( mPage, IDC_GUIED_ITEMBORDERSIZE) ) )
		{
			mDict->Set ( "bordersize", va("%d", atoi(temp) ) );
		}

		if ( IsDlgButtonChecked ( mPage, IDC_GUIED_USEBORDERCOLOR ) )
		{
			if ( IsWindowEnabled ( GetDlgItem ( mPage, IDC_GUIED_ITEMBORDERCOLOR ) ) )
			{
				COLORREF color = ColorButton_GetColor ( GetDlgItem ( mPage, IDC_GUIED_ITEMBORDERCOLOR ) );
				COLORREF alpha = ColorButton_GetColor ( GetDlgItem ( mPage, IDC_GUIED_ITEMBORDERCOLORALPHA ) );
				mDict->Set ( "bordercolor", StringFromVec4 ( idVec4((float)GetRValue ( color ) / 255.0f, (float)GetGValue ( color ) / 255.0f, (float)GetBValue ( color ) / 255.0f, (float)GetRValue(alpha )/255.0f ) ) );
			}
			mDict->Delete ( "borderShader" );
		}
		else
		{
			GetWindowText ( GetDlgItem ( mPage, IDC_GUIED_ITEMBORDERMATERIAL ), temp, 1024 );
			s = "\"";
			s.Append(temp);
			s.Append("\"" );
			mDict->Set ( "borderShader", s );
			mDict->Delete ( "bordercolor" );
			matcolor = true;
		}
	}
	else
	{
		mDict->Delete ( "bordersize" );
		mDict->Delete ( "bordercolor" );
		mDict->Delete ( "borderShader" );
	}

	if ( matcolor )
	{
		if ( IsWindowEnabled ( GetDlgItem ( mPage, IDC_GUIED_ITEMMATCOLOR ) ) )
		{
			COLORREF color = ColorButton_GetColor ( GetDlgItem ( mPage, IDC_GUIED_ITEMMATCOLOR ) );
			COLORREF alpha = ColorButton_GetColor ( GetDlgItem ( mPage, IDC_GUIED_ITEMMATCOLORALPHA ) );
			mDict->Set ( "matcolor", StringFromVec4 ( idVec4((float)GetRValue ( color ) / 255.0f, (float)GetGValue ( color ) / 255.0f, (float)GetBValue ( color ) / 255.0f, (float)GetRValue(alpha )/255.0f ) ) );
		}
	}
	else
	{
		mDict->Delete ( "matcolor" );
	}

	return true;
}

class rvGEItemPropsTextPage : public rvGEPropertyPage
{
public:

	rvGEItemPropsTextPage ( idDict* dictValues );

	virtual bool	Init			( void );
	virtual bool	SetActive		( void );
	virtual bool	KillActive		( void );
	virtual int		HandleMessage	( UINT msg, WPARAM wParam, LPARAM lParam );

protected:

	void			UpdateCheckedStates		( void );

	idDict*		mDict;
};

rvGEItemPropsTextPage::rvGEItemPropsTextPage ( idDict* dict )
{
	mDict = dict;
}

/*
================
rvGEItemPropsTextPage::Init

Subclass the custom controls on the page
================
*/
bool rvGEItemPropsTextPage::Init ( void )
{
	NumberEdit_Attach ( GetDlgItem ( mPage, IDC_GUIED_ITEMTEXTSCALE ) );
	NumberEdit_Attach ( GetDlgItem ( mPage, IDC_GUIED_ITEMTEXTALIGNX ) );
	NumberEdit_Attach ( GetDlgItem ( mPage, IDC_GUIED_ITEMTEXTALIGNY ) );

	SendMessage ( GetDlgItem ( mPage, IDC_GUIED_ITEMTEXTALIGN ), CB_ADDSTRING, 0, (LPARAM)"Left" );
	SendMessage ( GetDlgItem ( mPage, IDC_GUIED_ITEMTEXTALIGN ), CB_ADDSTRING, 0, (LPARAM)"Center" );
	SendMessage ( GetDlgItem ( mPage, IDC_GUIED_ITEMTEXTALIGN ), CB_ADDSTRING, 0, (LPARAM)"Right" );

	SendMessage ( GetDlgItem ( mPage, IDC_GUIED_ITEMTEXTFONT ), CB_ADDSTRING, 0, (LONG)"<default>" );

	idFileList *folders;
	int		  i;

	folders = fileSystem->ListFiles( "fonts", "/" );

	for ( i = 0; i < folders->GetNumFiles(); i++ ) {
		if ( folders->GetFile(i)[0] == '.' ) {
			continue;
		}

		SendMessage ( GetDlgItem ( mPage, IDC_GUIED_ITEMTEXTFONT ), CB_ADDSTRING, 0, (LONG)folders->GetFile(i) );
	}

	fileSystem->FreeFileList( folders );

	return true;
}

/*
================
rvGEItemPropsTextPage::UpdateCheckedStates

Updates the enabled state of all the controls that are linked to a checkbox
================
*/
void rvGEItemPropsTextPage::UpdateCheckedStates ( void )
{
	bool	state;
	idStr	result;
	bool	enable;

	state = IsDlgButtonChecked ( mPage, IDC_GUIED_USETEXT ) != 0;
	enable = !IsExpression ( mDict->GetString ( "forecolor", "1,1,1,1" ) );

	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMFORECOLOR ), state && enable );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMFORECOLORALPHA ), state && enable );

	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMTEXT ), state );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMTEXTSCALE ), state );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMTEXTSCALE ), state );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMTEXTALIGN ), state );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMTEXTALIGNX ), state );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMTEXTALIGNY ), state );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMTEXTFONT), state );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMTEXTNOWRAP), state );

	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_STATIC_ALIGNMENT ), state );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_STATIC_X ), state );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_STATIC_Y ), state );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_STATIC_SCALE ), state );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_STATIC_COLOR ), state );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_STATIC_FONT), state );
}

/*
================
rvGEItemPropsTextPage::HandleMessage

Handles messages for the text item properties page
================
*/
int rvGEItemPropsTextPage::HandleMessage ( UINT msg, WPARAM wParam, LPARAM lParam )
{
	switch ( msg )
	{
		case WM_DRAWITEM:
			ColorButton_DrawItem ( GetDlgItem ( mPage, wParam ), (LPDRAWITEMSTRUCT)lParam );
			return TRUE;

		case WM_COMMAND:
			switch ( LOWORD(wParam) )
			{
				case IDC_GUIED_ITEMTEXTFONT:
					break;

				case IDC_GUIED_USETEXT:
					UpdateCheckedStates ( );
					break;

				case IDC_GUIED_ITEMFORECOLORALPHA:
					AlphaButton_OpenPopup ( GetDlgItem ( mPage, LOWORD(wParam) ) );
					break;

				case IDC_GUIED_ITEMFORECOLOR:
				{
					CHOOSECOLOR col;
					ZeroMemory ( &col, sizeof(col) );
					col.lStructSize = sizeof(col);
					col.lpCustColors = gApp.GetOptions().GetCustomColors ( );
					col.hwndOwner = mPage;
					col.hInstance = NULL;
					col.Flags = CC_RGBINIT;
					col.rgbResult = ColorButton_GetColor ( GetDlgItem ( mPage, LOWORD(wParam) ) );
					if ( ChooseColor ( &col ) )
					{
						ColorButton_SetColor ( GetDlgItem ( mPage, LOWORD(wParam) ), col.rgbResult );
					}
					break;
				}
			}
			break;
	}

	return rvGEPropertyPage::HandleMessage ( msg, wParam, lParam );
}

/*
================
rvGEItemPropsTextPage::SetActive

Initializes the text properties page by copying data from the attached
window into the controls
================
*/
bool rvGEItemPropsTextPage::SetActive ( void )
{
	gApp.GetOptions().SetLastOptionsPage ( RVITEMPROPS_TEXT );

	ColorButton_SetColor ( GetDlgItem ( mPage, IDC_GUIED_ITEMFORECOLOR ), mDict->GetString ( "forecolor", "1,1,1,1" ) );
	AlphaButton_SetColor ( GetDlgItem ( mPage, IDC_GUIED_ITEMFORECOLORALPHA ), mDict->GetString ( "forecolor", "1,1,1,1" ) );

	SetWindowText ( GetDlgItem ( mPage, IDC_GUIED_ITEMTEXT ), idStr(mDict->GetString ( "text", "" )).StripQuotes ( ) );
	SetWindowText ( GetDlgItem ( mPage, IDC_GUIED_ITEMTEXTSCALE ), mDict->GetString ( "textscale", "1.0" ) );
	SetWindowText ( GetDlgItem ( mPage, IDC_GUIED_ITEMTEXTALIGNX ), mDict->GetString ( "textalignx", "0" ) );
	SetWindowText ( GetDlgItem ( mPage, IDC_GUIED_ITEMTEXTALIGNY ), mDict->GetString ( "textaligny", "0" ) );

	SendMessage ( GetDlgItem ( mPage, IDC_GUIED_ITEMTEXTALIGN ), CB_SETCURSEL, atoi(mDict->GetString("textalign", "0")), 0 );

	// Figure out which font to select
	idStr font = mDict->GetString ( "font", "" );
	int   fontSel;
	font.StripQuotes ( );
	font.StripPath ( );
	fontSel = SendMessage ( GetDlgItem ( mPage, IDC_GUIED_ITEMTEXTFONT ), CB_FINDSTRING, -1, (LONG)font.c_str () );
	SendMessage ( GetDlgItem ( mPage, IDC_GUIED_ITEMTEXTFONT ), CB_SETCURSEL, 0, 0 );
	SendMessage ( GetDlgItem ( mPage, IDC_GUIED_ITEMTEXTFONT ), CB_SETCURSEL, fontSel==-1?0:fontSel, 0 );

	CheckDlgButton ( mPage, IDC_GUIED_USETEXT, idStr(mDict->GetString ( "text", "" )).Length()?BST_CHECKED:BST_UNCHECKED );
	CheckDlgButton ( mPage, IDC_GUIED_ITEMTEXTNOWRAP, atoi(idStr(mDict->GetString ( "nowrap", "0" )).StripQuotes())?BST_CHECKED:BST_UNCHECKED );

	UpdateCheckedStates ( );

	return true;
}

/*
================
rvGEItemPropsTextPage::KillActive

Applys the settings currently stored in the property page back into the attached window
================
*/
bool rvGEItemPropsTextPage::KillActive ( void )
{
	idStr	s;
	char	temp[1024];
	int		i;
	float	f;

	if ( IsDlgButtonChecked ( mPage, IDC_GUIED_USETEXT ) )
	{
		if ( IsWindowEnabled ( GetDlgItem ( mPage, IDC_GUIED_ITEMFORECOLOR ) ) )
		{
			COLORREF color = ColorButton_GetColor ( GetDlgItem ( mPage, IDC_GUIED_ITEMFORECOLOR ) );
			COLORREF alpha = ColorButton_GetColor ( GetDlgItem ( mPage, IDC_GUIED_ITEMFORECOLORALPHA ) );
			mDict->Set ( "forecolor", StringFromVec4 ( idVec4((float)GetRValue ( color ) / 255.0f, (float)GetGValue ( color ) / 255.0f, (float)GetBValue ( color ) / 255.0f, (float)GetRValue(alpha )/255.0f ) ) );
		}

		GetWindowText ( GetDlgItem(mPage,IDC_GUIED_ITEMTEXT), temp, 1024 );
		s = "\"";
		s.Append(temp);
		s.Append("\"" );
		mDict->Set ( "text", s );

		GetWindowText ( GetDlgItem(mPage,IDC_GUIED_ITEMTEXTSCALE), temp, 1024 );
		f = atof( temp );
		mDict->Set ( "textscale", idStr::FloatArrayToString( &f, 1, 8 ) );

		i = SendMessage ( GetDlgItem ( mPage, IDC_GUIED_ITEMTEXTALIGN ), CB_GETCURSEL, 0, 0 );
		s = va("%d", i );
		if ( i != 0 )
		{
			mDict->Set ( "textalign", s );
		}
		else
		{
			mDict->Delete ( "textalign" );
		}

		GetWindowText ( GetDlgItem(mPage,IDC_GUIED_ITEMTEXTALIGNX), temp, 1024 );
		i = atoi(temp);
		if ( i )
		{
			mDict->Set ( "textalignx", va("%d", i ) );
		}
		else
		{
			mDict->Delete ( "textalignx" );
		}

		GetWindowText ( GetDlgItem(mPage,IDC_GUIED_ITEMTEXTALIGNY), temp, 1024 );
		i = atoi(temp);
		if ( i )
		{
			mDict->Set ( "textaligny", va("%d", i ) );
		}
		else
		{
			mDict->Delete ( "textaligny" );
		}

		int fontSel = SendMessage ( GetDlgItem ( mPage, IDC_GUIED_ITEMTEXTFONT ), CB_GETCURSEL, 0, 0 );
		if ( fontSel == 0 )
		{
			mDict->Delete ( "font" );
		}
		else
		{
			char fontName[MAX_PATH];
			SendMessage ( GetDlgItem ( mPage, IDC_GUIED_ITEMTEXTFONT ), CB_GETLBTEXT, fontSel, (LONG)fontName );
			mDict->Set ( "font", idStr("\"fonts/") + idStr(fontName) + idStr("\"" ) );
		}

		if ( IsDlgButtonChecked ( mPage, IDC_GUIED_ITEMTEXTNOWRAP ) )
		{
			mDict->Set ( "nowrap", "1" );
		}
		else
		{
			mDict->Delete ( "nowrap" );
		}
	}
	else
	{
		mDict->Delete ( "text" );
		mDict->Delete ( "textscale" );
		mDict->Delete ( "textalign" );
		mDict->Delete ( "textalignx" );
		mDict->Delete ( "textaligny" );
		mDict->Delete ( "forecolor" );
		mDict->Delete ( "font" );
	}

	return true;
}

class rvGEItemPropsKeysPage : public rvGEPropertyPage
{
public:

	rvGEItemPropsKeysPage ( idDict* dictValues, rvGEWindowWrapper* wrapper );

	virtual bool	Init			( void );
	virtual bool	SetActive		( void );
	virtual int		HandleMessage	( UINT msg, WPARAM wParam, LPARAM lParam );

protected:

	idDict*				mDict;
	rvGEWindowWrapper*	mWrapper;
};

rvGEItemPropsKeysPage::rvGEItemPropsKeysPage ( idDict* dict, rvGEWindowWrapper* wrapper )
{
	mDict = dict;
	mWrapper = wrapper;
}

INT_PTR CALLBACK ModifyItemKeyDlg_WndProc ( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
	switch ( msg )
	{
		case WM_INITDIALOG:
		{
			const idKeyValue* keyValue = (const idKeyValue*) lParam;
			MaskEdit_Attach ( GetDlgItem ( hwnd, IDC_GUIED_ITEMKEY ), " \t\r\n" );
			SetWindowText ( GetDlgItem ( hwnd, IDC_GUIED_ITEMVALUE ), idStr(keyValue->GetValue()).StripQuotes ( ) );
			if ( idStr::Icmp ( keyValue->GetKey(), "guied_temp" ) )
			{
				if ( !idStr::Icmp ( keyValue->GetKey(), "name" ) || !idStr::Icmp ( keyValue->GetKey(), "rect" ) )
				{
					// Dont allow editing the name keyname
					EnableWindow ( GetDlgItem ( hwnd, IDC_GUIED_ITEMKEY ), FALSE );
				}

				SetWindowText ( GetDlgItem ( hwnd, IDC_GUIED_ITEMKEY ), keyValue->GetKey() );
				SetFocus ( GetDlgItem ( hwnd, IDC_GUIED_ITEMVALUE ) );
				SendMessage( GetDlgItem ( hwnd, IDC_GUIED_ITEMVALUE ), EM_SETSEL, 0, -1 );

				SetWindowText ( hwnd, "New Item Key" );
			}

			SetWindowLong ( hwnd, GWL_USERDATA, lParam );
			return FALSE;
		}

		case WM_COMMAND:
			switch ( LOWORD(wParam) )
			{
				case IDOK:
				{
					char key[1024];
					char value[1024];

					const idKeyValue* keyValue = (const idKeyValue*) GetWindowLong ( hwnd, GWL_USERDATA );

					GetWindowText ( GetDlgItem ( hwnd, IDC_GUIED_ITEMKEY ), key, 1024 );
					GetWindowText ( GetDlgItem ( hwnd, IDC_GUIED_ITEMVALUE ), value, 1024 );

					if ( strlen ( key ) < 1 )
					{
						gApp.MessageBox ( va("Invalid key name '%s'", key), MB_OK|MB_ICONERROR );
					}
					else
					{
						// FIXME: MrE may never change key value pairs directly!
						//keyValue->GetKey() = key;
						//keyValue->GetValue = value;

						EndDialog ( hwnd, 1);
					}
					break;
				}

				case IDCANCEL:
					EndDialog ( hwnd, 0 );
					break;
			}
			break;
	}

	return FALSE;
}

int rvGEItemPropsKeysPage::HandleMessage ( UINT msg, WPARAM wParam, LPARAM lParam )
{
	switch ( msg )
	{
		case WM_NOTIFY:
		{
			NMHDR* nm = (NMHDR*) lParam;

			// There are a few protected keys that need to dissallow deleting so
			// check to see if the newly selected key is one of them and if so then
			// disable the delete button
			if ( nm->code == LVN_ITEMCHANGED )
			{
				NMLISTVIEW* nmlv = (NMLISTVIEW*) nm;
				if ( nmlv->uNewState & LVIS_SELECTED )
				{
					const idKeyValue* keyValue = (idKeyValue*) nmlv->lParam;
					assert( keyValue );

					if ( !idStr::Icmp ( keyValue->GetKey(), "name" ) || !idStr::Icmp ( keyValue->GetKey(), "rect" ) )
					{
						EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_DELETEKEY ), FALSE );
					}
					else
					{
						EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_DELETEKEY ), TRUE );
					}
				}
			}
			break;
		}

		case WM_COMMAND:
			switch ( LOWORD(wParam) )
			{
				case IDC_GUIED_ADDKEY:
				{
					HWND list = GetDlgItem ( mPage, IDC_GUIED_ITEMKEYS );
					mDict->Set( "guied_temp", "" );
					const idKeyValue* key = mDict->FindKey ( "guied_temp" );

					idStr old = key->GetValue();
					while ( 1 )
					{
						if ( DialogBoxParam ( gApp.GetInstance (), MAKEINTRESOURCE(IDD_GUIED_ITEMKEY), mPage, ModifyItemKeyDlg_WndProc, (LPARAM)key ) )
						{
							idStr finalValue;

							finalValue = key->GetValue();
							if ( !mWrapper->VerfiyStateKey ( key->GetKey(), finalValue ) )
							{
								finalValue = "\"";
								finalValue += key->GetValue();
								finalValue += "\"";
								if ( !mWrapper->VerfiyStateKey ( key->GetKey(), finalValue ) )
								{
									gApp.MessageBox ( va("Invalid property value '%s' for property '%s'", key->GetValue().c_str(), key->GetKey().c_str()), MB_OK|MB_ICONERROR );
									continue;
								}
							}

							mDict->Set( key->GetKey(), finalValue );

							LVITEM		item;
							ZeroMemory ( &item, sizeof(item) );
							item.mask = LVIF_TEXT|LVIF_PARAM;
							item.iItem = ListView_GetItemCount ( list );
							item.pszText = (LPSTR)key->GetKey().c_str ( );
							item.lParam = (LONG) key;
							int index = ListView_InsertItem ( list, &item );

							finalValue.StripQuotes ( );
							ListView_SetItemText ( list, index, 1, (LPSTR)finalValue.c_str ( ) );

							break;
						}
						else
						{
							mDict->Delete ( "guied_temp" );
							break;
						}
					}
					break;
				}

				case IDC_GUIED_EDITKEY:
				{
					HWND list = GetDlgItem ( mPage, IDC_GUIED_ITEMKEYS );
					int index = ListView_GetNextItem ( list, -1, LVNI_SELECTED );
					if ( index != -1 )
					{
						LVITEM item;
						item.iItem = index;
						item.mask = LVIF_PARAM;
						ListView_GetItem ( list, &item );
						const idKeyValue* key = (const idKeyValue*)item.lParam;
						assert ( key );

						while ( 1 )
						{
							if ( DialogBoxParam ( gApp.GetInstance (), MAKEINTRESOURCE(IDD_GUIED_ITEMKEY), mPage, ModifyItemKeyDlg_WndProc, (LPARAM)key ) )
							{
								idStr finalValue;

								finalValue = key->GetValue();
								if ( !mWrapper->VerfiyStateKey ( key->GetKey(), finalValue ) )
								{
									finalValue = "\"";
									finalValue += key->GetValue();
									finalValue += "\"";
									if ( !mWrapper->VerfiyStateKey ( key->GetKey(), finalValue ) )
									{
										gApp.MessageBox ( va("Invalid property value '%s' for property '%s'", key->GetValue().c_str(), key->GetKey().c_str()), MB_OK|MB_ICONERROR );
										continue;
									}
								}

								// FIXME: MrE is this the right thing todo?
								mDict->Set( key->GetKey(), finalValue );
								//key->GetValue() = finalValue;

								ListView_SetItemText ( list, index, 0, (LPSTR)key->GetKey().c_str() );

								finalValue.StripQuotes ( );
								ListView_SetItemText ( list, index, 1, (LPSTR)finalValue.c_str() );
								break;
							}
						}
					}
					break;
				}

				case IDC_GUIED_DELETEKEY:
				{
					HWND list = GetDlgItem ( mPage, IDC_GUIED_ITEMKEYS );
					int index = ListView_GetNextItem ( list, -1, LVNI_SELECTED );
					if ( index != -1 )
					{
						LVITEM item;
						item.iItem = index;
						item.mask = LVIF_PARAM;
						ListView_GetItem ( list, &item );
						const idKeyValue* key = (const idKeyValue*)item.lParam;
						assert ( key );

						mDict->Delete ( key->GetKey() );

						ListView_DeleteItem ( list, index );
					}
					break;
				}
			}
			break;
	}

	return rvGEPropertyPage::HandleMessage ( msg, wParam, lParam );
}

/*
================
rvGEItemPropsKeysPage::Init

Called when the advanced page is first initialized.  Setup the extended
control styles and add the key/value columns
================
*/
bool rvGEItemPropsKeysPage::Init ( void )
{
	HWND	list;
	RECT	rWindow;

	// Get the list control
	list = GetDlgItem ( mPage, IDC_GUIED_ITEMKEYS );
	assert ( list );

	GetClientRect ( list, &rWindow );

	// Set the full row select for better visual appearance
	ListView_SetExtendedListViewStyle ( list, LVS_EX_FULLROWSELECT );

	// Add the key column
	LVCOLUMN col;
	col.mask = LVCF_TEXT|LVCF_WIDTH;
	col.cx = .3 * (rWindow.right - rWindow.left);
	col.pszText = "Key";
	ListView_InsertColumn ( list, 0, &col );

	// Add the value column
	col.pszText = "Value";
	col.cx = (rWindow.right - rWindow.left) - col.cx;
	ListView_InsertColumn ( list, 1, &col );

	return true;
}

/*
================
rvGEItemPropsKeysPage::SetActive

Called when the advanced page is made active and will add an entry to
the keys list view for each key in the properties dictionary
================
*/
bool rvGEItemPropsKeysPage::SetActive ( void )
{
	int		i;
	HWND	list;

	gApp.GetOptions().SetLastOptionsPage ( RVITEMPROPS_KEYS );

	// Get listview control
	list = GetDlgItem ( mPage, IDC_GUIED_ITEMKEYS );
	assert ( list );

	// Delete anything already in there
	ListView_DeleteAllItems ( list );

	// Add each key in the properties dictionary
	for ( i = 0; i < mDict->GetNumKeyVals(); i ++ )
	{
		const idKeyValue* key = mDict->GetKeyVal ( i );
		assert ( key );

		// Add the item
		LVITEM item;
		ZeroMemory ( &item, sizeof(item) );
		item.mask = LVIF_TEXT|LVIF_PARAM;
		item.iItem = ListView_GetItemCount ( list );
		item.pszText = (LPSTR)key->GetKey().c_str ( );
		item.lParam = (LONG) key;
		int index = ListView_InsertItem ( list, &item );

		idStr value;
		value = key->GetValue();
		value.StripQuotes ( );
		ListView_SetItemText ( list, index, 1, (LPSTR)value.c_str() );
	}

	return true;
}

class rvGEItemPropsGeneralPage : public rvGEPropertyPage
{
public:

	rvGEItemPropsGeneralPage ( idDict* dict, rvGEWindowWrapper::EWindowType type );

	virtual bool	SetActive		( void );
	virtual	bool	KillActive		( void );
	virtual bool	Init			( void );
	virtual int		HandleMessage	( UINT msg, WPARAM wParam, LPARAM lParam );

protected:

	void			UpdateCheckedStates		( void );

	idDict*	mDict;
	idStr	mType;
};

rvGEItemPropsGeneralPage::rvGEItemPropsGeneralPage ( idDict* dict, rvGEWindowWrapper::EWindowType type )
{
	mDict = dict;
	mType = rvGEWindowWrapper::WindowTypeToString ( type );
}

/*
================
rvGEItemPropsGeneralPage::UpdateCheckedStates

Updates the enabled state of all the controls that are linked to a checkbox
================
*/
void rvGEItemPropsGeneralPage::UpdateCheckedStates ( void )
{
}

/*
================
rvGEItemPropsGeneralPage::HandleMessage

Handles messages for the general item properties page
================
*/
int rvGEItemPropsGeneralPage::HandleMessage ( UINT msg, WPARAM wParam, LPARAM lParam )
{
/*
	switch ( msg )
	{
		case WM_COMMAND:
			switch ( LOWORD(wParam) )
			{
			}
			break;
	}
*/

	return rvGEPropertyPage::HandleMessage ( msg, wParam, lParam );
}

/*
================
rvGEItemPropsGeneralPage::Init

Subclass the custom controls on the page
================
*/
bool rvGEItemPropsGeneralPage::Init ( void )
{
	MaskEdit_Attach ( GetDlgItem ( mPage, IDC_GUIED_ITEMNAME ), " \t\n\r" );

	return true;
}

/*
================
rvGEItemPropsGeneralPage::SetActive

Initializes the general properties page by copying data from the attached
window into the controls
================
*/
bool rvGEItemPropsGeneralPage::SetActive ( void )
{
	bool  enable;
	idStr result;

	gApp.GetOptions().SetLastOptionsPage ( RVITEMPROPS_GENERAL );

	SetWindowText ( GetDlgItem ( mPage, IDC_GUIED_ITEMNAME ), idStr(mDict->GetString ( "name", "unnamed" )).StripQuotes ( ) );

	enable = !IsExpression ( mDict->GetString ( "visible", "1" ) );
	CheckDlgButton ( mPage, IDC_GUIED_ITEMVISIBLE, atol(idStr(mDict->GetString ( "visible", "1" )).StripQuotes ( ))?BST_CHECKED:BST_UNCHECKED );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMVISIBLE ), enable );

	enable = !IsExpression ( mDict->GetString ( "notime", "0" ) );
	CheckDlgButton ( mPage, IDC_GUIED_ITEMNOTIME, atol(idStr(mDict->GetString ( "notime", "0" )).StripQuotes ( ))?BST_CHECKED:BST_UNCHECKED );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMNOTIME ), enable );

	enable = !IsExpression ( mDict->GetString ( "noevents", "0" ) );
	CheckDlgButton ( mPage, IDC_GUIED_ITEMNOEVENTS, atol(idStr(mDict->GetString ( "noevents", "0" )).StripQuotes ( ))?BST_CHECKED:BST_UNCHECKED );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMNOEVENTS ), enable );

	enable = !IsExpression ( mDict->GetString ( "noclip", "0" ) );
	CheckDlgButton ( mPage, IDC_GUIED_ITEMNOCLIP, atol(idStr(mDict->GetString ( "noclip", "0" )).StripQuotes ( ))?BST_CHECKED:BST_UNCHECKED );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMNOCLIP ), enable );

	enable = !IsExpression ( mDict->GetString ( "nocursor", "0" ) );
	EnableWindow ( GetDlgItem ( mPage, IDC_GUIED_ITEMNOCURSOR  ), enable );
	CheckDlgButton ( mPage, IDC_GUIED_ITEMNOCURSOR, atol(idStr(mDict->GetString ( "nocursor", "0" )).StripQuotes ( ))?BST_CHECKED:BST_UNCHECKED );

	SetWindowText ( GetDlgItem ( mPage, IDC_GUIED_TYPE ), mType );

	UpdateCheckedStates ( );

	return true;
}

/*
================
rvGEItemPropsGeneralPage::KillActive

Applys the settings currently stored in the property page back into the attached window
================
*/
bool rvGEItemPropsGeneralPage::KillActive ( void )
{
	char temp[1024];

	GetWindowText ( GetDlgItem(mPage,IDC_GUIED_ITEMNAME), temp, 1024 );
	mDict->Set ( "name", temp );

	if ( IsWindowEnabled ( GetDlgItem ( mPage, IDC_GUIED_ITEMVISIBLE ) ) )
	{
		if ( IsDlgButtonChecked ( mPage, IDC_GUIED_ITEMVISIBLE ) )
		{
			mDict->Set ( "visible" , "1" );
		}
		else
		{
			mDict->Set ( "visible" , "0" );
		}
	}

	if ( IsWindowEnabled ( GetDlgItem ( mPage, IDC_GUIED_ITEMNOTIME ) ) )
	{
		if ( IsDlgButtonChecked ( mPage, IDC_GUIED_ITEMNOTIME ) )
		{
			mDict->Set ( "notime" , "1" );
		}
		else
		{
			mDict->Delete ( "notime" );
		}
	}

	if ( IsWindowEnabled ( GetDlgItem ( mPage, IDC_GUIED_ITEMNOEVENTS ) ) )
	{
		if ( IsDlgButtonChecked ( mPage, IDC_GUIED_ITEMNOEVENTS ) )
		{
			mDict->Set ( "noevents" , "1" );
		}
		else
		{
			mDict->Delete ( "noevents" );
		}
	}

	if ( IsWindowEnabled ( GetDlgItem ( mPage, IDC_GUIED_ITEMNOCLIP ) ) )
	{
		if ( IsDlgButtonChecked ( mPage, IDC_GUIED_ITEMNOCLIP ) )
		{
			mDict->Set ( "noclip" , "1" );
		}
		else
		{
			mDict->Delete ( "noclip" );
		}
	}

	if ( IsWindowEnabled ( GetDlgItem ( mPage, IDC_GUIED_ITEMNOCURSOR ) ) )
	{
		if ( IsDlgButtonChecked ( mPage, IDC_GUIED_ITEMNOCURSOR ) )
		{
			mDict->Set ( "nocursor" , "1" );
		}
		else
		{
			mDict->Delete ( "nocursor" );
		}
	}

	return true;
}

/*
================
GEItemPropsDlg_DoModal

Starts the item properties dialog
================
*/
bool GEItemPropsDlg_DoModal ( HWND parent, idWindow* window, idDict& dict )
{
	PROPSHEETHEADER		propsh;
	PROPSHEETPAGE		propsp[4];
	rvGEWindowWrapper*	wrapper;
	bool				result;

	wrapper = rvGEWindowWrapper::GetWrapper ( window );
	assert ( wrapper );

	// Start the destination dictionary with the values in the window dictionary
	dict.Clear ( );
	dict.Copy ( wrapper->GetStateDict ( ));

	propsp[RVITEMPROPS_GENERAL].dwSize		= sizeof(PROPSHEETPAGE);
	propsp[RVITEMPROPS_GENERAL].dwFlags		= PSP_USETITLE;
	propsp[RVITEMPROPS_GENERAL].hInstance	= win32.hInstance;
	propsp[RVITEMPROPS_GENERAL].pszTemplate	= MAKEINTRESOURCE(IDD_GUIED_ITEMPROPS_GENERAL);
	propsp[RVITEMPROPS_GENERAL].pfnDlgProc	= rvGEPropertyPage::WndProc;
	propsp[RVITEMPROPS_GENERAL].pszTitle	= "General";
	propsp[RVITEMPROPS_GENERAL].lParam		= (LONG)new rvGEItemPropsGeneralPage ( &dict, wrapper->GetWindowType ( ) );

	propsp[RVITEMPROPS_IMAGE].dwSize		= sizeof(PROPSHEETPAGE);
	propsp[RVITEMPROPS_IMAGE].dwFlags		= PSP_USETITLE;
	propsp[RVITEMPROPS_IMAGE].hInstance		= win32.hInstance;
	propsp[RVITEMPROPS_IMAGE].pszTemplate	= MAKEINTRESOURCE(IDD_GUIED_ITEMPROPS_IMAGE);
	propsp[RVITEMPROPS_IMAGE].pfnDlgProc	= rvGEPropertyPage::WndProc;
	propsp[RVITEMPROPS_IMAGE].pszTitle		= "Image";
	propsp[RVITEMPROPS_IMAGE].lParam		= (LONG)new rvGEItemPropsImagePage ( &dict );;

	propsp[RVITEMPROPS_TEXT].dwSize			= sizeof(PROPSHEETPAGE);
	propsp[RVITEMPROPS_TEXT].dwFlags		= PSP_USETITLE;
	propsp[RVITEMPROPS_TEXT].hInstance		= win32.hInstance;
	propsp[RVITEMPROPS_TEXT].pszTemplate	= MAKEINTRESOURCE(IDD_GUIED_ITEMPROPS_TEXT);
	propsp[RVITEMPROPS_TEXT].pfnDlgProc		= rvGEPropertyPage::WndProc;
	propsp[RVITEMPROPS_TEXT].pszTitle		= "Text";
	propsp[RVITEMPROPS_TEXT].lParam			= (LONG)new rvGEItemPropsTextPage ( &dict );;

	propsp[RVITEMPROPS_KEYS].dwSize			= sizeof(PROPSHEETPAGE);
	propsp[RVITEMPROPS_KEYS].dwFlags		= PSP_USETITLE;
	propsp[RVITEMPROPS_KEYS].hInstance		= win32.hInstance;
	propsp[RVITEMPROPS_KEYS].pszTemplate	= MAKEINTRESOURCE(IDD_GUIED_ITEMPROPS_KEYS);
	propsp[RVITEMPROPS_KEYS].pfnDlgProc		= rvGEPropertyPage::WndProc;
	propsp[RVITEMPROPS_KEYS].pszTitle		= "Keys";
	propsp[RVITEMPROPS_KEYS].lParam			= (LONG)new rvGEItemPropsKeysPage ( &dict, wrapper );

	propsh.dwSize			= sizeof(PROPSHEETHEADER);
	propsh.nStartPage		= gApp.GetOptions().GetLastOptionsPage ( );
	propsh.dwFlags			= PSH_PROPSHEETPAGE|PSH_NOAPPLYNOW|PSH_NOCONTEXTHELP;
	propsh.hwndParent		= parent;
	propsh.pszCaption		= "Item Properties";
	propsh.nPages			= RVITEMPROPS_MAX;
	propsh.ppsp				= (LPCPROPSHEETPAGE)&propsp;

	// Bring up the item properties dialog now
	result = PropertySheet ( &propsh ) != NULL;

	// Cleanup
	delete (rvGEItemPropsGeneralPage*) propsp[0].lParam;
	delete (rvGEItemPropsImagePage*) propsp[1].lParam;
	delete (rvGEItemPropsTextPage*) propsp[2].lParam;
	delete (rvGEItemPropsKeysPage*) propsp[3].lParam;

	return result;
}


text:
'SEPTEMBERS OF SHIRAZ' Movie
Greenlit with Adrian Brody Abroad
EXCLUSIVE: Adrien Brody is joining Salma Hayek and Shoreh Aghdashloo in the thriller SEPTEMBERS OF SHIRAZ, which Millennium Films and now will start shooting June 9. The pic, directed by The Sapphires helmer Wayne Blair, is based on the New York Times bestseller by Dalia Sofer, was adapted by Hanna Weg and launched at Berlin's EFM in February.
SEPTEMBERS OF SHIRAZ is the true story of a secular Jewish family caught in the Islamic revolution in Iran, and their journey to overcome and ultimately escape from the deadly tyranny that swept their country and threatened to extinguish their lives at every turn. Gerard Butler, Alan Siegel and Danielle Robinson are producing under their G-Base banner, along with Heidi Jo Markel and Weg. Eclectic Pictures also is working on the production which will be based at Millennium's Nu Boyana Studios in Sofia, Bulgaria, and also will shoot in Israel. Brody is repped by Paradigm.
8033 West Sunset Blvd Ste. 867 West Hollywood, CA 90046
© Eclectic Pictures, Inc. All rights reserved.
Submission Policy | Terms of Use

redpajama_set_name: RedPajamaCommonCrawl


text:
What Causes OCD?
This is what's behind obsessive-compulsive disorder in kids.
By Sabina Anna Rebis, M.D.
Brian Maranan Pineda
Obsessive-compulsive disorder (OCD) is one of the rambunctious siblings in the anxiety-disorder family, and contrary to popular belief, it has nothing to do with how you're raising your child. "OCD is not the result of an unresolved issue from childhood, despite what society may falsely believe. It's neurobiological," says Jerome Bubrick, Ph.D., a cognitive and behavioral psychologist specializing in the treatment of OCD and director of the Intensive Pediatric Obsessive-Compulsive Spectrum Disorders Program at the Child Mind Institute in New York City.
The obsessive thoughts that lead to compulsive behavior are most likely the result of faulty brain circuitry and its transmission. Part of the cause is an imbalance of brain chemicals known as neurotransmitters that can cause symptoms of anxiety. Serotonin is one such neurotransmitter; glutamate and dopamine are others. A lack of serotonin will usually result in sadness, irritability, and anxiety; abnormal levels of glutamate over stimulate excitatory neurons and can cause symptoms of anxiety and OCD behavior. But it's different for each child, says Moira Rynn, M.D., child and adolescent psychiatrist and director of the Division of Child and Adolescent Psychiatry at Columbia University Medical Center and New York State Psychiatric Institute.
What's your parenting style? Take our quiz to find out.
Children with OCD are more likely to have a first-degree relative with similar symptoms, but there's considerable debate and ongoing research to determine which specific genes may play a role. "Parents should be aware of their own behavior," Dr. Rynn says. "If [they] remember having similar symptoms to the ones they are witnessing in the child, addressing the problematic anxiety behaviors early in a child's life can help significantly in preventing later problems in social and intellectual development."
Through cognitive behavioral therapy (CBT), a therapist works to rewire the brain in this way to form new ways of responding to anxiety-provoking situations that may spiral into obsessions. Kids can be helped to stop repetitive habits that negatively affect them, and they can develop strategies to decrease and tolerate their anxiety.
Find the advice you're looking for with these Parents-approved books from Shop Parents.
Medications such as selective serotonin reuptake inhibitors (SSRIs) and the antidepressant clomipramine provide the necessary neutrotransmitter balance to ease anxiety during the time therapy is starting to take effect. Current research is looking at glutamate modulators. But symptoms of OCD vary widely, and some kids respond to certain medications more than others, Dr. Rynn says. So a child who feels the need to wash his hands 10 times in an hour may respond to one medication, while a child who has obsessive religious or catastrophic thoughts will respond to a different one.
Copyright © 2014 Meredith Corporation.
Nurse Arrested in Sexual Assault of Woman Who Gave Birth in Long-Term Vegetative State
'Keto Crotch' Could Be a Stinky Side Effect of the Diet—Here's What to Know
Drinking Just One Bottle of Wine a Week Could Up Your Cancer Risk
Do I Really Have to Follow That Health Rule?
Endometriosis: Symptoms, Causes, and Treatment Options
Disney World Restaurant Worker Tests Positive for Hepatitis A, No Others Infected
Arizona Nursing Facility Unit Where Woman in Long-Term Vegetative State Gave Birth Is Shutting Down
New Harvard Study Links Drinking Sugary Soda and Sports Drinks to Premature Death—Especially for Women
Taking a Trip With Your Girlfriends Is Good For Your Health, According to Science
My Son's Cancer Diagnosis Made Me A Stronger Mom
Vaping, E-cigarettes, and JUULing: What Parents of Teens Need to Know
The Surprising Health Benefits of Honey
15 Best Sex Education Books and Resources for Kids by Age
Hugging Someone Actually Makes You Happier and Healthier, Study Says
I Was a 26-Year-Old Healthy New Mom When I Suffered a Brain Stem Stroke With No Warning
After Woman in Long-Term Vegetative State at Ariz. Nursing Facility Gives Birth, CEO Resigns
Mom Kept Away from Newborn Baby After Failing Drug Test Due to Poppy Seed Bagel
These Three Little Words Are Making You a Negative Person—and You Probably Say Them All the Time
Woman in Coma Who Gave Birth Had Been in Nursing Facility Since She Was a Toddler: Court Docs
All Topics in Health


text:
Home » Unlabelled » The BOSS Needs PERMISSION to Perform: Detroit NO FLY ZONE
The BOSS Needs PERMISSION to Perform: Detroit NO FLY ZONE
Rick Ross was scheduled to headline HOT 107.5′s Summer Jamz 17 in Detroit this weekend, but reports coming out of the city is that the Maybach Music Group boss was not allowed to hit the stage.
When it was time for Ross to perform an announcement was made that the Mastermind rapper did not make it into the venue. He was reportedly stopped by large group of people outside.
"We had Rick Ross right outside here tonight. At about 11 o'clock, when he was pulling up to come into Chene Park, he was met by 100 individuals outside," 107.5′s program director Jay Hicks told the crowd. "We have tried to pull every resource together and asked him to come back. He is in fear of his life."
HotHipHopDetroit.com reports rapper Trick Trick may have placed Ross in the "No Fly Zone" which is also the name of the Goon Sqwad member's new single. That would mean Rozay cannot enter Detroit without the approval of Trick aka "The Mayor of Detroit."
"[Ross] may never come back to Detroit," Hicks added.
Rick Ross addressed not performing at Summer Jamz on Twitter.


Disney's Hollywood Studios park is undergoing some major expansions right now! First to open is Toy Story Land which debuts this summer. Guests get to shrink to the size of a toy and play in Andy's backyard. There will be 2 family-friendly attractions in the land along with the fan-favorite Toy Story Mania.
Here's a first glimpse at the latest artwork for one of the new attractions-Alien Swirling Saucers.
Once the aliens have powered up their flying saucers, guests will get to climb into a toy rocket and hang on as aliens lead the way on an interstellar romp set to an out-of-this-world beat. And if they're really lucky, guests just might get "chosen" by the claw!
This attraction looks similar to Mater's Junkyard Jamboree in Disney's California Adventure park at Disneyland Resort. If that's the case, it's sure to be a fun ride and I can't wait to experience it! Will you get to test out Alien Swirling Saucers this summer? For more information about the Walt Disney World Resort, or to book your next magical stay, contact me at sarasolberg@amazingmagicaladventures.com.
Alien Swirling Saucers, Disney, Hollywood Studios, Toy Story Land, Walt Disney World. Bookmark.


The fine old wine scene of Tuscany is one of ancestral vineyards, crumbling country estates, and recognisable family names which you can slap on the front of your wine bottles, in order to boost your sales and drum up intrigue. However, it's also the home of Italy's rebel spirit when it comes to viticulture: of Super Tuscans, rule-breakers and instinct followers. Bibi Graetz fits squarely in this latter camp, and his meteoric rise in fame, popularity and ability to inspire awe among his fellow vintners has fascinated the wine world since his debut in 2000. Eccentric, daring, and very much a cult figure of Tuscany, he's a trailblazer who has had a significant impact on his region's winemaking identity.
Growing up between canvases and paint brushes in an artistic family, Bibi Graetz has transferred his creativity from paintings to growing grapes and making great wines. His father is a renowned sculptor, and purchased land (including a castle!) in Tuscany when Bibi was a small boy.
The region is called Feisole, and Bibi has worked hard over 2 decades to bring the renown of the region to international attention.
The wines are sensitively made with clarity, focus, defintion and harmony, the hallmarks of these great wines. These wines are becoming increasingly popular due to their very 'Tuscaness' - the use of local grapes only, with old oak and low interference as watchwords.
When spring and summer roll around, and your tastebuds start calling out for food which is all freshness and greenery, Vermentino is one of the finest wines to reach for. Versatile, zesty, bright and great fun to drink, it matches well with almost all sea fish, and anything which packs in big, fresh herbal or citrus flavours. It's probably at its best when served with spring Italian classics, like pasta or gnocci served with pesto or shellfish, or lobster and clams, early summer vegetables (even tricky-to-pair-with asparagus) and light meats such as veal.


FM1.4.02 Tiago Campante: Spin-orbit Alignment of Exoplanet Systems: How Can Asteroseismology Help Us?
The number of known extrasolar planets has increased considerably over the last years. Today, we have cataloged about 1000 confirmed planets (plus over 3000 planet candidates of the Kepler mission), a good fraction of which are in more than 130 multi-planet systems. The discovery of these systems has raised many interesting questions on their formation and dynamical evolution.
Planets in mean motion resonances prompt the investigation of resonant dynamics in the framework of the general (i.e. non-restricted) three-body problem. The general problem is much more complicated than the restricted one, so that we have yet to achieve a global description of resonant dynamics. While previous observations have identified several multi-planet systems in mean-motion resonances, recent observations point to systems of small planets which seem to lie close to resonances, but outside the libration domains. The reason for these near-resonance configurations is not yet clear: tidal evolution could have played a role in extracting planets from resonance, and so might turbulence in the original proto-planetary disk.
The origin of "hot" planets (planets with orbital periods of a few days) is still a matter of debate: did these planets reach their orbit by migrating through the proto-planetary disk, or did they arrive at their current orbital configurations via scattering and tidal damping?
The origin of the surprisingly large eccentricities and/or inclinations (relative to the stellar equator) of many extrasolar planets remains elusive: planet instabilities, planet-disk interactions, external perturbations from eccentric or inclined stars remain viable options.
This (non-exhaustive) list of open problems highlights the importance of dynamical studies for understanding the nature of the systems that are observed, as well as establishing clues on their origin.
Moreover, it is important to stress that dynamical models can also complement observations for a better characterization of extrasolar planets. Dynamical maps have been very useful to constrain the orbits of multi-planet systems, for which the uncertainties in the orbital parameters due to the observational errors are often much wider than the range of orbital configurations permitting the long-term stability of the system. A special mention has to be given to Transit Time Variations (TTV) analyses. TTVs are now routinely detected in packed systems of multiple planets. They are used to confirm planet candidates and they allow the determination of the masses of the planets. The power and success of this technique can be emphasized by the recent discovery and orbital determination of a non-transiting planet, through the analysis of the TTV signal of a transiting companion. The TTV method brings Celestial Mechanics back to the glorious time when Le Verrier predicted the existence and the position of Neptune from the analysis of the anomalies of the motion of Uranus.
Last but not least, dynamical studies are essential to determine whether a given planet can remain stable in the habitable zone, whether it should be tidally locked in a spin-orbit resonance etc.
All these examples show that the synergy between dynamicists and observers is a key to the advancement of extrasolar planet science. The studies of the solar system during the past several decades have proven that the understanding of our own planetary system can leap forward only with the combination of dynamical modeling and physical observations. The time has now come to extend this synergy to a larger number of planetary systems.
We believe that the organization of a focused meeting on dynamical problems in extrasolar planets during the 2015 GA will be the best way to facilitate such synergy by bringing together scientists from different communities of planetary science.


Home » unboxing » Goodbeing May Unboxing + Giveaway!
Goodbeing May Unboxing + Giveaway!
I got my May Goodbeing box in the mail this week! It's so fun to open these each month to find new surprises. As I mentioned in my April unboxing, Goodbeing (formerly goodebox) is a monthly beauty and wellness box that delivers expertly curated, healthy beauty products, non-toxic cosmetics, natural wellness & sustainable, toxin-free living goods. This month there were five products.
I reached for the Full Brow Serum by Province Apothecary first. This a 7ml sample size (full size is 30ml). I have only applied this once so far but will continue to do so and let you know if I see any difference in my brows. It contains coffee and argan and is supposed to stimulate hair growth and deepen hair color. Cool concept. We'll see!
Next is the Calming Lift hydrosol with hyaluronic acid, rose water, silk peptides, and aloe. I LOVE this so far. I've been using it on my face for three days and it smells so beautifully of roses. It delivers instant moisture to my face and makes my skin feel calm and my olfactory sense very happy.
The makeup item I received in this box is the Pacifica Stellar Gaze mascara in stardust (dark brown). Which… I already own. But that is okay because it is one of my favorite mascaras that I use all the time and probably would have bought another anyway. So I consider this a great addition to the box!
So this is new to me… I've heard of and used foot scrubs, but foot masques? I'm intrigued. We've finally reached sandal weather here in Vermont so it is the perfect time to give myself a nice at home spa pedicure treatment. The masque (which is supposed to be kept in the refrigerator) is made of dead sea clay, infused with green tea, aloe and essential oils…I detect lemongrass.
Win a Goodbeing box (your box will be shipped in their next shipment at the end of the month, around the 27th).
-Enter on Instagram: Make sure you're following me @avioletlife and tag a friend in the comments on my unboxing photo there.
-Enter here: Leave a comment below about what item you'd love to try from this box! If you've also entered on Instagram please let me know who you are on IG so I can count you for two entries.
16 Comments on Goodbeing May Unboxing + Giveaway!
I'd really like to try the mascara! I'm in the process of finding a good, clean mascara. Oh, and I'm anaturalglow on IG. Thanks!
The whole box looks lovely, especially the eyebrow serum, which seems unique, and the mascara, mostly because the name "stellar gaze" sounds so mesmerizing! But I'd like to try the calming lift spray the most because I love a good spritz and that one sounds naturally amazing ? Thanks for the review and pictures!
I would love to try the Board and Batten. It sounds so lovely. I'm nigh.eve on Instagram and entered there as well.
I would love to try the calming lift! I am reganewebster on Instagram and entered there too!
I'd love to try the foot scrub and mask. They sounds awesome. Thanks for sharing.
I want the Pacifica mascara, it has good ingredients. Thanks for having this giveaway!
Like you, the Foot Masque is new to me. So I'm intrigued by that.
I would love to try the Pacifica Stellar Gaze mascara. Thank you so much for the chance to win!
I also entered on Instagram as @norma_watson.
I'd love to try the foot polish or the mascara. But yeah.. weather is getting warmer and my feet are so dry from it and from always being on them.
Would love to try the brow serum! I entered on IG too. I'm @leylaescobar.
Would love to try the mascara! Thank you for the chance!


Yousef Nadarkhani, 32, was sentenced to death by hanging after his arrest nearly two years ago for objecting to Islamic education for Christian children.
He was arrested in October 2009 for apostasy because he objected to the teaching of Islam to Christian children at Iranian schools. He was sentenced to death by hanging late last year, a verdict that he appealed to Iran's Supreme Court.
Nadarkhani's lawyer, Mohammed Ali Dadkhah, has been sentenced to nine years in jail for "actions and propaganda against the Islamic regime".
There is no orthodox Islam.
There is no moderate Islam.
There is no reformed Islam.
The choices for non-Muslims, unbelievers and 'infidels': Convert, submit, or die.
However, not all non-Muslims, unbelievers and 'infidels' are allowed all choices.
In Islam, all Jews are to be eliminated.
It seems rather odd that anyone of sound mind would submit themselves to avowed murderers who go arse up five times a day praying to a half-buried rock.
The 'logic' of Islam: Muslims say puppies are bad, but marrying 9-year-old girls and beating them to death is okey-dokey.
In the peace-loving world of Islam, hanging the 8-year-old son of a local police chief just to make a point is no problem.
A typical bitter Allah-clinging Muslim in Michigan chased his daughter through four states so he could murder her 'for becoming too westernized' – that's called an honor killing. 'Honor'…… Right.
The true choice for non-Muslims, unbelievers and 'infidels': Molon Labe.
This entry was posted on Monday, July 25th, 2011 at 07:35 and is filed under Main Postings.	You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
One Response to Convert, Submit, Or Die.
And the Left demeans US if we are not tolerant of such as these…I tolerate babies that won't stop crying, or annoying co-workers. I do not tolerate blood thirsty barbarians.


A sequel to WakerUppers. Use these upbeat thinking activities as enrichment rewards when other work is finished, or save them for special occasions. Designed to get kids thinking, and to have fun in the process. More than 300 activities in all—challenging yet friendly.
These 50 lively reproducible activity pages turn students into more flexible, adventuresome thinkers. Each activity sheet is hand-drawn with many sprightly little cartoons and puns to keep things lively. Facing pages provide suggested answers and comments about the activities. You'll also find a number of ideas which will help you extend the activities in various interesting ways.


When starting any new business venture, it is important to ensure your branding looks professional and portrays the right messages. PHD wanted a brand that was simplistic, clean and professional. We also produced a set of corporate brochures for each of PHD's differing services.


I love when my dear friends send me photos of wine from their travels! Wine simply follows you around, wherever you go!
Yellow Tail Really is the Go-To!
A wine brand is playing up the qualities that helped make it so successful in a campaign that is intended to help get it back on the fast track in sales growth.
The brand is Yellow Tail, a line of wines imported from Australia by W. J. Deutsch & Sons. In just 10 years, Yellow Tail has become the best-selling imported wine in the United States and the No. 2 table wine over all, behind only the domestic Barefoot brand sold by E. & J. Gallo.
However, Yellow Tail's growth in case sales has slowed notably. Case sales climbed from 225,000 in the brand's first year, 2001, to 1.2 million in 2003, 6.5 million in 2005 and 8.2 million in 2008.
But sales rose only a bit in 2009, to 8.3 million, and remained at that level last year.
That phrase is meant to convey that Yellow Tail is the go-to wine, the default option for anyone seeking an everyday wine, something to drink for most occasions.
The campaign reinforces the concept that Yellow Tail is a fun, unpretentious choice for consumers who do not consider themselves to be oenophiles and like to not think about vintages, terroir and pairings.
The campaign proclaiming Yellow Tail as "The go-to" got under way last week with two television commercials. There will also be radio commercials, posters on the sides of trucks, signs in stores and online ads.
And, of course, the campaign has a presence in social media on sites like Facebook, where the brand's fan page can be found at facebook.com/discoveryellowtail. Yellow Tail offered brand fans a preview of the two TV spots on the Facebook page.
There are more than 30,000 people who say they "like" Yellow Tail, with a goal of reaching 200,000 by the end of the year.
The budget for the campaign is being estimated at $9 million from now to the end of the current Deutsch fiscal year, which ends on March 31.
And there is "the potential of us spending more," says Renato Reyes, chief marketing officer at Deutsch in White Plains.
That would be a significant increase from spending most recently, according to data from the Kantar Media unit of WPP.
Deutsch spent $5.1 million to advertise Yellow Tail in major media last year, Kantar Media reports, $2.8 million in 2009, $4.3 million in 2008 and almost $7 million in 2007.
The campaign is being created by the Burns Group in New York, an agency that has been working on Yellow Tail since July 2009.
One reason Yellow Tail's growth has slowed is the increasing competition the brand has faced as it became more popular. Some rivals have been called "critter wines" because their names and brand identities echo the kangaroo motif of Yellow Tail.
Those critter wines include the Little Penguin, Little Roo, Mad Fish and Monkey Bay. There is even a Web site, critterwines.com, devoted to the phenomenon.
And Yellow Tail still has "the right to this broad territory, as a wine for everyday occasions, as a beacon of choice," he adds.
The idea was for the Burns Group to create a campaign that would reflect those consumer perceptions as it presents Yellow Tail as "fresh, contemporary, relevant, aspirational," Mr. Reyes says.
The goal is to make the brand "the spine of their purchasing behavior," Mr. Burns says, a brand that "should always be" in their refrigerators or on their shelves.
The campaign tries to convey that the brand "is absolutely the confident choice" for "people who are unpretentious and fun-loving," Mr. Burns says, through the use of signature Yellow Tail elements like the kangaroo and the colors that appear on the bottle labels.
Mr. Reyes approves of the agency's approach.
If each person who buys Yellow Tail bought it "one more time, that would represent 10 percent growth," he adds.
The first two commercials in the campaign are fast-paced, meant to communicate energy and vibrancy. Each is composed of vignettes that show consumers enjoying themselves, and Yellow Tail, in situations like a backyard barbecue, a relaxed summer Friday, a house party, a card game, at the beach and on a date.
The voices all have a reverberating, echo effect reminiscent of the voice saying "How do I look?" in the electro-music track "Une Very Stylish Fille" by the artist known as Dimitri From Paris.
The music heard in the Yellow Tail spots is from around the same period. It is called "Yachts (A Man Called Adam Mix)." The commercials were produced by the production company Logan, based in Los Angeles and New York.
The media agency for Yellow Tail, MPG in New York, part of the Havas Media unit of Havas, has developed plans for the campaign to reach 180 million adults, Mr. Burns says, compared with 100 million for the current campaign.
The commercials will run on broadcast networks and cable channels and are to appear more often in late-night time slots than previous Yellow Tail spots.
The late-night slots include programs on Comedy Central; "Conan," with Conan O'Brien, on TBS; "Jimmy Kimmel Live," on ABC; "The Late Late Show With Craig Ferguson," on CBS; "Late Night With Jimmy Fallon," on NBC; and "Saturday Night Live," also on NBC.
Among the other television venues for the campaign, Mr. Reyes lists A&E, BBC America, Bravo, Food Network, FX, E!, HGTV, IFC, Style, TLC and USA.
There will also be a presence for the campaign on Web sites like nbc.com and YouTube.
As the weeks have been moving at the blink of an eye and the days are filled with mostly work and some play… I have yet to find the time to write this post or even pick out a good bottle of wine! Well here is something that will kill two birds with one stone and will make your life a whole lot easier when trying to find that perfect (and impressive) Chardonnay or Rose for your dinner party and you just don't have the time to walk through the libraries of wines in your liquor store!
It was Labor Day weekend and after a hard earned work week our hardest decision for the weekend was what to toast with to celebrate the end of the Summer and the welcoming of Fall! Since it could be considered a transitional holiday from light whites to heavier reds as the weather gets colder, we tried something in the middle – ROSE! So, what rose are we going to drink? A good question that has a very strategic answer… Tastingroom.com to the rescue!
An on the boat tasting experience that led us to the most important decision of the weekend! What did we go with? The infamous 2010 Swanson Rosato paired nicely with a surf and turf of baked stuffed lobster and steak! A great solution for saving money and time on what to drink! Simply go online follow directions, pick the sampler you want (which there are a number of different offerings), wait for it to be delivered, try it and buy it (with a savings)! What a wonderful experience that made the wine picking process that much more fun!
Tell me how you choose your wines before you invest in something you haven't tried? I hope you have this much fun in doing so!
Wine Tip of the Day for a Happy Friday!
A great mnemonic device for remembering what wines are what from Esquire.com!
Missoni for Target Wine Box!
There is always something for the Wine Lovers!
And a great rainy Sunday activity!
Happy Friday! One Cup To-Go Please!
To decant or not, that is a question most avid wine drinkers ponder when opening their favorite bottle. Decanting has been a part of historical practice within the wine culture dating back to the Venetians who brought to life the long skinny neck and wide bottom form to enhance wonderfully kept and produced wines! Although much of its appeal is within its stunning display, there is in fact a true rhyme and reason to its methodology!
Decanting, usually used to 'open up' red wines, is a process that creates a very authentic and romantic way of presenting and drinking wine. Functionally, it allows the wine to aerate and removes the sediment from older red wines. Lucky for us, it's an easy process that should be endured and valued versus viewed as a tedious practice. To start the process, gently pour the wine keeping the same side down as it was 'aging', into the decanter to remove sediment. To be more effective and precise some hold a candle along the neck of the bottle while pouring to clearly see the lingering sediment. As the wine splashes into the decanter, oxygen mixes into the wine, which creates the process of oxidation. Let the delicious wine rest and wait a few minutes before pouring and enjoying!
Sediment is what collects over time in an older vintage of wine. When transferring your bottled wine to your glass decanter, you leave behind the sediment thus the decanter to glass to mouth result is clarified and filtered.
Decant to let a young full-bodied wine 'breathe' so the wine's magnificent aroma and taste can be enjoyed to its fullest. When the wine oxidizes, its distinct scents are released and the tannins become a bit softer which amplifies the entire 'tasting' experience and process – swirl, smell, slurp, taste, YUM!
When entertaining, what better way than to present your wine in an aesthetic manner through a beautiful glass decanter. Your company will undoubtedly 'ooh and ahh' over what they are about to taste by its elegant presentation.
Glad to see someone is putting their 'bottle' holder to good use on this lovely Wednesday afternoon. All the way in Boston too!
Thanks for sending this through CB!
Happy Wine Wednesday! What will you be sipping on?
Sunday Sips and Mean Irene!
Well looks like we are all safe and Mean Irene has passed! So, what do we do with all of the leftover stock in the fridge!? A Sunday Funday is in order! We thought it would be fun to get a few $12 and under bottles of sparkling wines to try in case we should be stuck inside all day without power. Of course, thankfully that isn't the case so a reason to taste them – Sunday Funday!
Here are a few tasted, are loved, and under $12! Of course I had to add in a 'Go To' favorite just for comfort in case Irene got really out of hand… Enjoy and hope everyone is safe and well for those along the East Coast who haven't been hit yet.
I loved the bottle and logo and was craving a sparkling rose and this jumped right out at me. Only $12 this wine totally blew me away with it's refreshing taste, lively bubbles and its vibrantly dry yet ripened fruity taste! A beautiful color and great to serve as an apéritif with a bit of cheese and almonds.
This was another great $12 bottle for it's taste! The Italian Prosecco was very fruity and had these tiny bubbles that lasted all the way through to the finish. A green apple taste with hints of ripe peach made us forget about any sort of hurricane coming! A incredible length for a Prosecco and price!
Another great Prosecco, one which could be considered my 'go to' and great for mimosas is the Mionetto. It also has tiny long lasting bubbles and has a lovely tart, green apple taste. Full of citrus and a bit dry this tastes very close to a champagne but you mustn't let it sit in your glass for too long as the bubbles start to fade. A GREAT Prosecco for a brunch party especially if you are serving mimosas for lots of people because it's only $10!


After years of caring for others, Nola Burns is ready for her own dream-running a Nantucket tearoom. And it will take more than charm for dashing entrepreneur Harrison Starbuck to buy her out. After all, what proper lady could trust a man who thinks the theater is a suitable venue for God's word?All Harry offers is a business proposition. So why should it bother him when Nola receives threatening notes? He has no reason to be concerned for the vivid, spirited woman. Does he? Yet as the threats escalate, Harry's plans shift. Now this unexpected suitor only wants to keep Nola safe-and cherished-for a lifetime.
This is a delightful book, focusing on the personalities of the characters and on their feelings.
It tells the story of a young woman on the verge of becoming a spinster, who has a chance at happiness after taking care of her family in her youth. But thankfully God has other plans for her life than the ones she does. She finds it hard to recognize His hand in the sircumstances and people he brings in her life and resists all possible change at first, but then her kind heart and her trust in the Lord prevail and slowly but surely her life starts to change. She starts to change. This is a wonderful story about how God changes us for the better when we least expect it (or want it). We can be stubborn at first and distrusting anything that doesn't fit into our way of thinking, but God wants us to be free and loving and happy. This is the valuable lesson of this book.
It focuses on the relationships between different people and goes quite deep, which I think is what makes a good book. It is, of course a romance, a christian romance at that, and there is a great deal of tender, sweet wooing, all of which is beautifully interwoven with deep christian truths. It also contains quite a lot about theatre and actors, which is one of my favourite subjects. And tea, of course.
Something else that made me love this book, was that the people in it are (mostly) good-natured, even though they have their faults, and redeemable. I loved this, as when i finished the book, I had a generally pleasant feeling about the world, which i think is one of the things a good book ought to do for the reader. It is remarkable how the author manages to do that and still be quite realistic in the complexities of the characters.
A delicate, tenderly woven tale,which, although filled with hardships is wonderfully sweet underneath it all. Just like Nola, the heroine. It is filled with controversy, but at the end it all makes sense. Just ike Harrison, the hero. And just like all of us.


Kendall's bravery, his love of running, and his respect for tradition come through clearly, and this dramatic story will inform and enthrall YAs.
Set in a Star Wars-like universe of fantastic creatures and thrilling derring do, this exciting story will enthrall readers who enjoy SE It begs for a sequel, to follow the further adventures of brave Ahvren and his equally brave sister in this intriguing universe.
This real-life adventure tale will enthrall for its sheer bravado.
Recently, Sturgis Public Schools petitioned to be a demonstration site for the Learning Without Limits (LWL) initiative, a new program with the vision to one day achieve a one-to-one wireless technology environment designed to engage and enthrall Michigan's K-12 students.
It will enthrall and stir both fantasy fans and animal lovers of all ages, who will be swept up in the action right from the start.
Football is 76 trombones, tail-gate parties, golden memories, and a sport that always exhilarates us, enthralls us, and captures our hearts.


When you need an appraisal in Monterey County, Ford Appraisal Co. of Carmel, CA has the experience you need!
Call us now to set up a land appraisal for a property in Carmel, CA or another part of Monterey County.
In Carmel, CA and across Monterey County, customers have come to rely on Ford Appraisal Co. for professional and trustworthy residential appraisal services. Contact us for your residential appraisal today!
When you obtain a divorce appraisal from Ford Appraisal Co., you are assured you will get the most professional service and the best appraisal for your needs. Ask us for an appraisal of your property right now!
For the best land, residential, and divorce appraisals in Carmel, CA, call Ford Appraisal Co. now!
Welcome to Ford Appraisal Co.
The appraisal process offers much more than a competitive market analysis. It evaluates all the data capable of affecting the value of a property. This data can be broadly classified as general data, such as the location of the real estate and specific information about the property itself. When you need an experienced appraiser that has worked throughout Monterey County, ask Ford Appraisal Co. of Carmel, CA to help you. We have been serving the valuation needs of customers across Monterey County since 2004.
It is important to hire a local appraiser who has experience in the local market for an appraisal that reflects the actual value of the property. Besides lacking vital knowledge about different neighborhoods and the various value influences in a particular area, outside appraisers may also lack access to local data sources. You help yourself when you hire a local appraiser familiar with local data sources and the area.
A competent appraiser is aware of how to perform an accurate appraisal. The value of this is reflected in making a good buy, a profitable sale, or a good assessment when it is needed for any other purpose. Ford Appraisal Co. is a real estate appraisal company with experience and geographic competency for appraisals anywhere in Monterey County and Carmel, CA.
There is no need to look anywhere else.
The appraisers at Ford Appraisal Co. have the geographic competency and experience you need.
Contact Ford Appraisal Co. and let us get started on your appraisal!


Taste it & Feel it.
Dubrovnik food tours that we create are fusion of history and gastronomy specially designed to cheer you up and leave you happily after. Small groups, friendly atmosphere, places behind the scene but beyond your expectations, good food and drink are main characteristics of our tour. We strongly support unique feeling, local ambience and authentic concept. Everything is connected with flavour and taste keeping it fresh, local and amazing. Give yourself a chance and enjoy in warm hospitality, cuisine and cosy places on the way. At the end we are sure you'll remember good vibrations and true experience.
Small groups from 2-12 people who want to taste local food and drink.
Authentic dishes served by local people or prepared by yourself.
Historical gems and off-the-beaten paths away from tourist traps.
Get to know interesting facts about our gastronomy and life through the eyes of locals.
From the early childhood she was connected with the food. Everything she knows about cooking she learned from her mother and grandmother. She likes getting back to the roots and those familiar scents of the homemade bread and cream cheese.
Ana is an avid reader and food lover in a constant seek to try some new flavors and spices. She especially likes unusual food combinations and fusion cuisines which is influenced by her parents-mother from neighboring country Bosnia & Herzegovina and father from Slavonija.


text:
f11photo / Shutterstock
St. Louis is a city and port in the U.S. state of Missouri. The city developed along the western bank of the Mississippi River, which forms Missouri's border with Illinois. The area of present-day Missouri was part of Spanish Louisiana from 1761 until 1803. The city is defined by music and the performing arts, especially its association with blues, jazz, and ragtime. St. Louis is home to the St. Louis Symphony, the second-oldest symphony orchestra in the United States. The population of St Louis was calculated as 317,419 in 2014. The city operates more than 100 parks, with amenities that include sports facilities, playgrounds, concert areas, picnic areas, and lakes. Forest Park, located on the western edge of city, is the largest, occupying 1,400 acres of land, making it almost twice as large as Central Park in New York City. The park is home to five major institutions, including the St. Louis Art Museum, the St. Louis Zoo, the St. Louis Science Center, the Missouri History Museum, and the Muny amphitheatre. St Lois is also known for its 630 feet (190 m) tall Gateway Arch, designed by noted architect Eero Saarinen and completed on October 18, 1965.
The Best Of St. Louis
Are you a St. Louis Kosher establishment or tour operator?
Jewish History, POI & Kosher Establishments in St. Louis
The Jewish population of St. Louis increased 14 percent, to 61,000, in the last 10 years, from the results of the 2014 St. Louis Jewish Community Study. The earliest evidence of a Jew settling in St. Louis is that of Joseph Philipson from Pennsylvania. He arrived in St. Louis in the early winter of 1807. St. Louis has 16 congregations. The Jewish population is spread around St Lois but is concentrated in University City where around 500 families live. There are only a few kosher establishments mainly located in Creve Coeur.


Last night my youth group did a game called "Do Ducks Have Lips", wherein all the youth leaders who participated dressed up in disguises and walked around a busy mall. The kids then tried to find the leaders. They knew they had found a leader when they asked them, "Do ducks have lips?" and the person responded, "No, do snakes have hips?" Then the leader would initial a card the kids were carrying and the kids would move on.
This was my disguise. I also had super-sag pants. It was awesome. I just needed a wallet chain.
WOW! That picture is SO badass! The photographer is really good!
Great, a game that teaches kids to approach shady-looking strangers in malls. Nice.
Thanks Cuz. 🙂 Yes, that's definitely makeup. And a wig too, of course. Well, the soul patch is real, but it's been severely darkened along w/ my eyebrows to match the goth-ish look of the whole thing.
How many of the kids recognized you?


Ohrid, the largest city sitting before Lake Ohrid in the Republic of Macedonia, provides several four to five star hotel options for luxury vacations or business travel. The below list of luxury hotels are based on many factors including Jet Charter Europe passenger feedback, location, amenities, and online reviews. Once arriving into Ohrid via luxury private jet, our Ohrid jet charter service brokers can also arrange ground transportation to/from the hotel of your choice.
Being the staple of the city, Lake Ohrid is a necessary attraction, and is a little hard to miss since the city sits on the edge of it. A little like Venice, Italy, or Greece, lake Ohrid makes Ohrid a true vacation city with beautiful views that give a sense of paradise.
The Bay of the Bones is isn't your usual museum. It's made up of several houses on the water that you enter to view the old way of life. The open-air atmosphere makes for a pleasant visit.
Everyone who visits the icon gallery says there are beautiful pieces of artwork to be seen. Although small, you get a sense of important figures through the ages while here.
The National Ohrid Museum is said to be more house than museum, but that isn't a problem. While seeing some of the items and artwork on exhibit, you can also get a feeling of what it was like to live in the 19th century. It must have belonged to someone of high-class, with the several staircases to different floors and rooms.
Like you would see in Greece, these theatres are always a sight to see. Moreover, archaeologists are still digging up artifacts from this site, so you never know what you'll see next.
Although a small church, the interior of St. Jovan Kaneo is profound beauty, but its location will really take your breath away. The scenery is sublime, peaceful, and gives you an amazing view of the lake and landscapes.
A real gem amongst the churches of Ohrid, this building has gone through much over time. First built as a Roman site, demolished, and now rebuilt, it is a beautiful church that mixes stunning, modern architectural design with that of its ancient history. Inside, you will find many wonderful paintings and a stone throne.
The Monastery of Saint Naum is another church in Ohrid where the architecture is as beautiful as its surroundings. The church feels warm and welcoming, as if to wrap itself around you, and the nearby springs are very peaceful.
If you're a fan of ruins, then you'll very much enjoy this fortress. Although some say the entry fee is a bit pricey, but it's worth it to experience the entire fortress and walk around to experience the days of old when this fortress had a strong purpose.
Request a Quote or give us a call at 1-888-987-5387 to speak with one of our Ohrid private jet charter service brokers for your next luxury vacation, business trip, or special event.


text:
Perverse thoughts
November 11, 2015 No comments	 admin
It is impossible to write about erection problems without dealing with the question of abnormal, deviant or perverse sexuality. The modern view is that a sexual act is not perverse provided it is performed by adults and that neither of the partners suffers any physical or mental harm. This makes it extremely difficult to establish criteria for what is supposedly normal and what is perverse. Take anal sex, for example. In the past Dutch farmers were wont to distinguish between their wives' weekday and Sunday holes (I'm afraid I've forgotten which orifice was associated with the Lord's Day).
Speaking of beastly thoughts: the Roman emperor Nero was subject to waves of incredibly capricious erotic fury. He often cloaked himself in animal skins, disguised now as a wolf, now as a lion, now as a swan, now as a bull. He would then attack chained prisoners, clawing them, biting them or mutilating them for his pleasure. In orgies he sometimes assumed the woman's role. He was convinced that no one was free of some kind of taint, and that no one was chaste, such are the apocryphal stories surrounding him. The wretched Nero died weeping in the arms of his wife Sporus. She was very careful that her blood did not mingle with that of her bestial husband, whose whole body was covered in stinking sores as a result of his endless sexual dissipation.
Whatever the case, sexual perversity is difficult to define, mainly because opinions differ according to time and place. In his wonderful book The Inner Brothel, Hans Plomp (1944) describes the adventures, as amusing as they are weird, of a perverse art critic. Though Plomp is not usually counted among the 'greats' of literature, for initiates he is a woman-friendly writer, which is greatly to his credit. In the book Barels the art critic becomes virtually impotent after a particularly unpleasant experience during intercourse. He has secretly turned the mirrors of his wife's dressing table in such a way that he will be able to observe himself during copulation. He hopes that she will fall asleep as usual during their lovemaking. That will give him plenty of time to play the voyeur. . .
One evening he is very insistent and though she isn't in the mood at all, she lets him have his way. As expected, she quickly falls asleep. Actually he quite likes that, as he can't stand her staring up at him while he is pumping away on top of her: she always has such an uninterested, disdainful expression. He carefully pulls the covers back. The sleeping woman gives a brief grunt when disturbed, but doesn't wake. Barels looks in the window behind him. There is only one lamp on the bedside table, but he can still see his pasty white buttocks reflected in the glass. He strains to get a better look, and suddenly he freezes. In the mirror he sees his wife's lower body, though lying on it is not himself, Barels, but a mangy grey-white dog with bare patches on its back and behind. The animal leers disgustingly at him. Barels catches his breath and lies absolutely still. Barels raises an arm, and a front paw is raised in perfect time. He breaks out in a sweat:
He reaches for the light cord at the head of the bed and pulls on it. In the light he can see the animal quite clearly. It looks like a scurfy jackal. Barels groans in horror and to his astonishment it sounds like the growling of a dog. His wife is immediately wide awake. 'What are you lying there howling like a dog for? Please let me get some rest. I've got a headache and you're clammy with sweat.'
'Can't you see anything different about me?' asked Barels.
She looked at him again with that disdain of hers. Then she said: 'You're a bit like a drowned dog, but that's nothing unusual.'
From that that night on Barels is virtually impotent. His few attempts turn into miserable failures. To make matters worse he has weak intestines, which gurgle dreadfully when he has just got into bed. Barels also confesses that he has found the cure for his impotence in the diaries of James Joyce, the Irish genius who knew no greater pleasure than lying under his wife's bottom so that she could relieve herself over him. Hadn't Joyce also written: 'The smallest things give me a wonderful hard-on – a brown stain on the back of your panties.' After Barels' confession his wife decides to leave.
Hans Plomp's story shows convincingly that every man is susceptible to perverse, bestial fantasies. What matters is what you do or don't do with them! Shouting them from the rooftops doesn't seem like a good idea – unless you want to make money out of them, of course.


Tomorrow, LexisNexis Legal & Professional will announce a new, enhanced version of Lexis for Microsoft Office, an application that provides direct access to Lexis research and citation tools and Web search tools from directly within Microsoft Word and Outlook.
The most significant of several new features in this release is integration with Lexis Search Advantage, which enhances search capabilities across a firm's internal document management collection, incorporating Shepard's Signal Indicators and embedded links to citations in a firm's internal documents. From within Word and Outlook, users can perform a single search across internal firm content, external content in Lexis Advance, and the open Web, or narrow the search to any of those types of content.
This new version 4.9 of Lexis for Microsoft Office also adds the ability to directly download into CaseMap, the Lexis case analysis litigation software. Users can choose to have documents delivered in a format compatible with CaseMap, so that they can be incorporated into case planning and assessment.
Say, for example, you receive an email with a PDF from opposing counsel. With a couple of clicks, you can convert the PDF to Word, use the "Get Cited Docs" feature to pull all the cited cases and materials from Lexis Advance, and then load it all into CaseMap.
The core functionality of Lexis for Microsoft Office has not changed since I first wrote about it when it launched in February 2010. If you are not familiar with the product, you may want to go back and read that post.
Link to Cites. This enables users to easily add permanent hyperlinks between citations in a document and the full text documents on Lexis Advance. If you share the document with someone else, they can click on the link and open the pinpoint citation directly in a browser. The person does not need to have Lexis for Microsoft Office, but would need a Lexis Advance subscription.
Validate All Quotes. This finds all the quotations within your document and checks their accuracy against the original documents on Lexis Advance. See your document and the original side-by-side, with errors in your document highlighted in red. With a click, you can replace the misquoted text with the correct source text.
Email Suggestions for Review. Users can email suggested corrections of quotes and citations from a document to colleagues via Outlook. Details of the suggestions are included within each email.
Prepare Table of Authorities. With a single click, create a table of authorities or update it after you've made further edits. There are a number of options for formatting the TOA's styles, fonts and headings.
I've also previously written about the "Check Cite Format" tool. This reviews all the citations in your document and verifies that they conform to the appropriate citation style. You can set this to use Bluebook or other citation styles.


The 'MARSM' title is accorded to a selected professional after the approval of the Editor-in-Chief / Editorial Board Members/Dean.
The "MARSM" is a dignified ornament which is accorded to a person's name viz. Dr. John E. Hall, Ph.D., MARSM or William Walldroff, M.S., MARSM.
MARSM accrediting is an honor. It authenticates your research activities. After becoming MARSM, you can add 'MARSM' title with your name as you use this recognition as additional suffix to your status. This will definitely enhance and add more value and repute to your name. You may use it on your professional Counseling Materials such as CV, Resume, Visiting Card and Name Plate etc.


Tranquility spa at Peckforton Castle is a peaceful retreat, a place to unwind and experience the most luxurious spa day in Cheshire. Breathe easy in our relaxation rooms, hot tubs, sauna and rainforest shower and discover the true meaning of tranquil in this soothing and serene haven. Whether you're looking for professional finishing touches to your beauty routine or a treatment that helps you look and feel fresher, our qualified and experienced therapists use only the highest quality products for you to indulge.
From spa breaks to bridal party packages, everything you need to know about our Tranquility spa is available in our handy brochure. Treatments, prices, products and spa etiquette are all included at the touch of a button.
An afternoon of indulgence in our Tranquility spa makes for the perfect present, with a wide range of packages and treatments to choose from. Try our Elemis BIOTEC anti-ageing solutions, or enjoy an Elemis Freestyle deep tissue massage. Maybe treat yourself to a little pampering with a Jessica Deluxe manicure or even an entire spa weekend in Cheshire? Give the gift of total relaxation and help that special someone to unwind.
Close the doors of Tranquility and enjoy exclusive use of the full spa and its facilities, where you and your party can indulge in the privacy of your very own spa day. Receive a complimentary bottle of prosecco for your party, relax and enjoy the undivided attention of our team of therapists along with the indulgent treatments we offer.
Treat yourself to a one night stay in a classic bedroom and dinner in our 2010 Brasserie. Wake to breakfast in the morning and then delight in our Afternoon Tea during your spa experience.


Be cautious when opening messages. They may contain malicious software or otherwise be harmful to your device or computer.
Be cautious when accepting connectivity requests, browsing the internet, or downloading content. Do not accept Bluetooth connections from sources you do not trust.
Only install and use services and software from sources that you trust and that offer adequate security and protection.
Install antivirus and other security software on your device and any connected computer. Only use one antivirus app at a time. Using more may affect performance and operation of the device and/or computer.
If you access preinstalled bookmarks and links to third-party internet sites, take the appropriate precautions. HMD Global does not endorse or assume liability for such sites.


text:
Mark Your Calendar—Open Enrollment Begins Nov. 4
Thursday, October 31, 2019, By News Staff
Faculty and Staff Newshuman resourcesopen enrollment
Open Enrollment, the annual period when University employees reflect on their benefit options for the coming year, begins Monday, Nov. 4, and continues through Friday, Nov. 15. This is the one time of year when individuals may elect or change their coverage for many benefits, unless they experience a qualifying life event. All of the relevant Open Enrollment information, including benefit plan and contribution details, dates for information sessions and office hours, and answers to frequently asked questions, are posted online at openenrollment.syr.edu.
Learn more! Attend the Benefits Open House on Tuesday, Nov. 5, from 11 a.m. to 2 p.m. at the Barnes Center at The Arch, MAC Court. This event provides you with the opportunity to speak directly with the University's benefit partners and HR representatives, learn how to get the most out of your benefits, and get your questions answered right in time for Open Enrollment. Complimentary parking is available at the Skytop Lot. Meet at the main entrance of the Skytop Office Building for direct transportation to the Barnes Center.
In addition to the Benefits Open House, you'll have various opportunities to connect with benefit professionals. Visit the dedicated Open Enrollment website to learn about those opportunities.
Enroll online through myslice.syr.edu from Nov. 4-15. Computer kiosks are available during normal business hours inside the Office of Human Resources in the Skytop Office Building to provide additional computer access for online enrollment. For other locations, review the ITS website.
Questions about Open Enrollment, benefits, the enrollment process or the Benefits Open House may be directed to HR Shared Services at 315.443.4042.
How to Practice Mindfulness with the Free Sanvello Mobile App
Tuesday, October 29, 2019, By Joyce LaLonde
Open Enrollment Begins Today—Enroll Now Through MySlice
Monday, October 30, 2017, By Jaclyn D. Grosso
Answers about Upcoming Technology Changes to Timekeeping and Core HR Transactions
Friday, May 18, 2018, By Cyndi Moritz
Upcoming Work Life Workshops Focus on Family Dynamics, Children, Eldercare
Tuesday, October 23, 2018, By News Staff
Open Enrollment and 2018 Benefits Plan Design Information Now Available
Monday, October 2, 2017, By Jaclyn D. Grosso
More In Campus & Community
Dear Faculty and Staff Colleagues: Our community has been engaged in important conversations, particularly over the last several months, about how we can collectively foster and maintain a welcoming, inclusive and safe campus environment for all. This dialogue has been…
Pack a Backpack for Syracuse Youth at MLK Service Opportunity
Students are invited to help pack book bags with clothing and school supplies for local schools on Tuesday, Jan. 21, from 7 to 9 p.m. in the Noble Room in Hendricks Chapel. The Office of Engagement Programs at Hendricks Chapel…
Ernie Davis Dining Center Celebrates 10 Years, 6.5 million Meals Served
The staff at Ernie Davis Dining Center have come a long way. Wednesday, Jan. 15 marked 10 years of operation for the campus's busiest dining center, and many of the staff on duty for the dinner celebration have been there…
Syracuse University Boosting Efforts to Increase Faculty Diversity through Enhanced Central Funding, New Hiring Initiative
To bolster faculty diversity, Syracuse University is increasing funding aimed at competitive recruitment of faculty from underrepresented minority groups for open positions. The Diversity Opportunity Hires initiative builds on the University's existing efforts within the signature and cluster hires programs…
For the second consecutive year, the School of Education is hosting recipients of the Fulbright Distinguished Awards in Teaching Program for International Teachers (Fulbright DAI), which brings international primary and secondary teachers to the U.S. for a semester to pursue…


No matter where on your body you carry extra weight, your feet and ankles end up bearing the load, and those few more pounds cause your posture and gait to change, which also can affect your arches and tendons. Due to gravity alone, your feet are under constant pressure in addition to the demanding bio-mechanical task of carrying you through your daily routine, so it's not surprising that being overweight can lead to foot problems.
Weight gain due to pregnancy is hopefully a temporary condition, however, many changes occur to the body and, as a result, women who are pregnant are more likely to be affected by certain foot conditions.
This occurs because the body weight of a woman increases significantly during pregnancy and it is distributed around the body differently to other weight gains. Specifically, the arch of the foot can flatten out and the feet roll inwards when walking, referred to as over-pronation. This can cause movement to become very painful and place additional strain on the feet, calves, and back. Changes to the relaxin hormone during pregnancy are also thought to be associated with causing these effects.
Ingrown toenails are more common in pregnant women, due to the changes in the size, shape, and positioning of the foot. The nail is more likely to be pushed into the surrounding skin with tight-fitting shoes or socks, and it can be difficult to trim the toes correctly without help.
Regular salt-water baths can help to relieve the pain and the softened skin can gently be pushed back and away from the nail to improve the condition.
Over-pronation of the feet can be managed by opting for appropriate footwear and the use of orthotics. Shoes should be comfortable with extra support and shock absorption, and orthotics and heat moldable customized inserts can give additional support to the arch and heel of the foot to correct the positioning. A podiatrist can help in the process to examine the foot positioning and make recommendations as to the most appropriate orthotic for the situation.
We're not playing games – we are here to help you have "Healthy Happy Feet" all day long – all week long – all month long and all year long!
GIVE US A TRY YOU'LL LOVE US AND THAT IS THE SHOES AND INSERT COMBINATION!


text:
Military Families Accuse Utah Based Alarm Company of Misleading Them
Utah based security company, Vivint Security of Provo recently received an F grade from the Better Business Bureau after several military families have accused the company of misleading them to make sales.
ABC News reports, within the last year, five military families directly contacted The ABC News Fixer, to complain they were stuck with cancellation fees of up to $2,000 when they tried to get out of long term security system contracts after being transferred to a new base or retired due to service-related injuries.
Jason Plummer, a Marine vet who served in both Iraq and Afghanistan was injured in a roadside bombing during one of his tours. After the military medically retired him, Plummer was preparing to move off base when Vivint told him they were unable to let him out of his contract.
Vivint referenced their policy for military families as the reason they could not cancel the contract, however, Plummer says the door-to-door salesman gave him conflicting information.
ABC contacted Vivint for their side, and they agreed to void Plummer's and four other military families contracts.
It definitely gives you a feeling like you've been betrayed," Plummer said in an interview on "Good Morning America". "It feels like you're getting stabbed in the back."
Vivint claims its representatives misunderstood the language of the contract however they note, the overall number of complaints to the BBB represents less than one percent of their large customer base.
The company has updated policies for military personnel discharged for medical reasons.
Click the photo above for more of the story.