//

//  iWeb - WidgetCommon.js

//  Copyright (c) 2007 Apple Inc. All rights reserved.

//



var widgets=[];var identifiersToStringLocalizations=[];function Widget(instanceID,widgetPath,sharedPath,sitePath,preferences,runningInApp)

{if(instanceID)

{this.instanceID=instanceID;this.widgetPath=widgetPath;this.sharedPath=sharedPath;this.sitePath=sitePath;this.preferences=preferences;this.runningInApp=(runningInApp===undefined)?false:runningInApp;this.onloadReceived=false;if(this.preferences&&this.runningInApp==true)

{this.preferences.widget=this;setTransparentGifURL(this.sharedPath.stringByAppendingPathComponent("None.gif"));}

this.div().widget=this;window[instanceID]=this;widgets.push(this);widgets[instanceID]=this;if(!this.constructor.instances)

{this.constructor.instances=new Array();}

this.constructor.instances.push(this);}}

Widget.prototype.div=function()

{var divID=this.instanceID;if(arguments.length==1)

{divID=this.instanceID+"-"+arguments[0];}

return $(divID);}

Widget.prototype.onload=function()

{this.onloadReceived=true;}

Widget.prototype.onunload=function()

{}

Widget.prototype.didBecomeSelected=function()

{}

Widget.prototype.didBecomeDeselected=function()

{}

Widget.prototype.didBeginEditing=function()

{}

Widget.prototype.didEndEditing=function()

{}

Widget.prototype.setNeedsDisplay=function()

{}

Widget.prototype.preferenceForKey=function(key)

{var value;if(this.preferences)

value=this.preferences[key];return value;}

Widget.prototype.initializeDefaultPreferences=function(prefs)

{var self=this;Object.keys(prefs).forEach(function(pref)

{if(self.preferenceForKey(pref)===undefined)

{self.setPreferenceForKey(prefs[pref],pref);}});}

Widget.prototype.setPreferenceForKey=function(preference,key,registerUndo)

{if(this.runningInApp)

{if(registerUndo===undefined)

registerUndo=true;if((registerUndo==false)&&this.preferences.disableUndoRegistration)

this.preferences.disableUndoRegistration();this.preferences[key]=preference;if((registerUndo==false)&&this.preferences.enableUndoRegistration)

this.preferences.enableUndoRegistration();}

else

{this.preferences[key]=preference;this.changedPreferenceForKey(key);}}

Widget.prototype.changedPreferenceForKey=function(key)

{}

Widget.prototype.postNotificationWithNameAndUserInfo=function(name,userInfo)

{if(window.NotificationCenter!==undefined)

{NotificationCenter.postNotification(new IWNotification(name,null,userInfo));}}

Widget.prototype.sizeWillChange=function()

{}

Widget.prototype.sizeDidChange=function()

{}

Widget.prototype.widgetWidth=function()

{var enclosingDiv=this.div();if(enclosingDiv)

return enclosingDiv.offsetWidth;else

return null;}

Widget.prototype.widgetHeight=function()

{var enclosingDiv=this.div();if(enclosingDiv)

return enclosingDiv.offsetHeight;else

return null;}

Widget.prototype.getInstanceId=function(id)

{var fullId=this.instanceID+"-"+id;if(arguments.length==2)

{fullId+=("$"+arguments[1]);}

return fullId;}

Widget.prototype.getElementById=function(id)

{var fullId=this.getInstanceId.apply(this,arguments);return $(fullId);}

Widget.prototype.localizedString=function(string)

{return LocalizedString(this.widgetIdentifier,string);}

Widget.onload=function()

{for(var i=0;i<widgets.length;i++)

{widgets[i].onload();}}

Widget.onunload=function()

{for(var i=0;i<widgets.length;i++)

{widgets[i].onunload();}}

function RegisterWidgetStrings(identifier,strings)

{identifiersToStringLocalizations[identifier]=strings;}

function LocalizedString(identifier,string)

{var localized=undefined;var localizations=identifiersToStringLocalizations[identifier];if(localizations===undefined)

{iWLog("warning: no localizations for widget "+identifier+", (key:"+string+")");}

else

{localized=localizations[string];}

if(localized===undefined)

{iWLog("warning: couldn't find a localization for '"+string+"' for widget "+identifier);localized=string;}

return localized;}

function WriteLocalizedString(identifier,string)

{document.write(LocalizedString(identifier,string));}


