-- IDL module extracted from ITU-T H.730 (06/2012)
module h730 {
interface DiscoveryFinder
{
	public DiscoveryServiceCollection find(in String strName, in Int nTimeoutInMS); // Find a device of special name in local network, with in time out
	public DiscoveryServiceCollection find(in Int nTimeoutInMS); // Find all  device in local network, with in time out
	public void done();// Stop finding
};

interface Broadcast
{
	 // Broadcasting Type define
	const long BROADCAST_TYPE_TERRERRESTRIAL  = 0; // Non IP - TERRERRESTRIAL
  	const long BROADCAST_TYPE_CABLE           = 1; // Non IP - CABLE
  	const long BROADCAST_TYPE_SATELLITE       = 2; // Non IP - SATELLITE
  	const long BROADCAST_TYPE_UNICAST         = 3; // Over IP - UNICAST
  	const long BROADCAST_TYPE_MULTICAST       = 4; // Over IP - MULTICAST
	boolean OpenBroadCast();  // Open and Connect to Broadcasting
	void CloseBroadCast();  // Close or disconnect from Broadcasting
    void setBroadCastType(in long nType); // Set Broadcasting type
  	void getBroadCastType();  // Get Broadcasting type
  	void ChannelUp();  // Channel Up
  	void ChannelDown();// Channel Down
  	void setChannel(in ChannelInfo sToChannel); // Set Channel by Channel information
	void setChannel(in string strChNum); // Set Channel by Channel number
	void SetDefaultChannel();// Set to default channel
	ChannelInfo getCurrentChannel();// Get current channel information
	string getCurrentChannelName();// Get current channel Name
	boolean StartChannelScan();// Channel scanning start
	void StopChannelScan();// Channel scanning start
	int getChannelCount();// Get available channels count
};

// VI.1.2.1.2		Channel manager

interface ChannelManager
{
	attribute Vector m_vecChannels;    // Channel vector
	attribute int m_ChannelIndex;   // Current channel index
	int AddChannel(in ChannelInfo sCh); // Add Channel information to channel vector - return channel count
	int getChannelCount(in ChannelInfo sCh); // Get Channel count of channel vector
	boolean RemoveChannel(in string nChannelNum); // Remove channel information from channel vector
	ChannelInfo FindChannel(in string nChannelNum); //Find Channel Information via channel number
	boolean StartChannelScan();//Channel Scan Start
	boolean StopChannelScan();//Channel Scan Stop
	boolean ClearChannel();//Clear channel information from channel vector
	ChannelInfo ChannelUp();//Channel up
	ChannelInfo ChannelDown();//Channel Down
	ChannelInfo getCurrentChannel();//Get current channel information
	ChannelInfo  SetDefaultChannel();//set to default channel
};

// VI.1.2.1.3		Channel information

interface ChannelInfo
{
	attribute  string    mstrChannelName;		 // Channel Name
	attribute  string    mstrURL;		            // Channel attribute Service URL
	attribute  string    mstrChannelNo;		// Channel Number
	attribute  int       mnChannelFreq;		// Channel Frequency
	attribute  int 	 mnChannelMajorCh;		// Major Channel Number
	attribute  int 	 mnChannelMinorCh;		// Minor Channel Number

	int getChannelFreq(); //Get Channel frequency
	void setChannelFreq(in long mnChannelFreq);  // Set Channel Frequency
	int getChannelMajorCh(); // Get Major Channel Number
	void setChannelMajorCh(in long mnChannelMajorCh); // Set Major Channel Number
	int getChannelMinorCh() ; // Get Minor Channel Number
	void setChannelMinorCh(in long mnChannelMinorCh) ; // Set Minor Channel Number
	string getChannelName();   // Get Channel Name
	void setChannelName(string mstrChannelName) ; // Set Channel Name
	string getURL() ; // Get URL
	void setURL(string mstrURL) ; // Set URL
	string getChannelNo();    // Get Channel Num,ber
	void getChannelNo (string chNum) ; // Set Channel Number
}

// VI.1.2.2	MulticastClient – Multicast content delivery client functional interface

interface MulticastClient
{
	attribute MulticastSocket   mSocket;  	  // MulticastSocket
	attribute int 		        mPort ;      // Port for Multicast
	attribute string	        mServerAddress ; // Server IP Address
	attribute InetAddress       mAddress;     // IP Address container
	attribute boolean 	        bJoin;        // Is Joined to multicast server

	void joinGroup();  //Join to Mulicast group
	void leaveGroup();  //Leave Mulicast group
	void leaveGroup();  // Leave Mulicast group
	DatagramPacket getDataPacket(in long nDataLen);   // Get DataPaket
	boolean isJoinned();  // Is Joinned to Multicast
};

// VI.1.2.3	Unicast content delivery client functional block interface
// This is normal media player's function. We can play a media stream or file.
// See VI.1.3 for Media Client function.
// VI.1.3	Media client functions interfaces
// VI.1.3.1	MediaPlayer
// MediaPlayer can be used to control playback of audio/video files and streams. 

interface MediaPlayer
{
	void getCurrentPosition();  //Gets the current playback position
  	void getDuration();  //Get the duration of the file
	long getVideoHeight();  //Returns the height of the video
	long getVideoWidth();  //Returns the width of the video
	boolean isLooping();  //Checks whether the MediaPlayer is looping or non-looping
	boolean isPlaying();  //Checks whether the MediaPlayer is playing
	void mediaPause();  //Pauses playback
	void seekTo(in long msec);  //Seeks to specified time position
	void setLooping(in boolean looping);  //Sets the MediaPlayer to be loopint or non-looping
	void mediaVolumeUp();  //Sets the MediaVolume 1 step up
	void mediaVolumeDown();  //Sets the MediaVolume 1 step dwon
	void mediaPlay();  //MediaPlayer play
	void mediaStop();  //MediaPlayer stop
	void mediaFF();  //MediaPlayer fast-foward (5 seconds)
	void mediaREW();  //Mediaplayer rewand (5 seconds)
	void MediaPath(in string path);   //the Mediapath of the file, or the http/rtsp URL of the stream you want to play
};

// VI.1.3.2	Subtitle

interface SubTitle
{
	boolean mbVisible = true;  //visible subtitles
	void subtitleVisible(in boolean visible); //true is visible. false is invisible
	void subtitleFontSize(in long fontSize); //Subtitles font size
	void subtitleLocation(in long X, in long Y); //Subtitles locate position
	void subtitleDefaultPosition();  //Subtitles default position
	void subtileFF(in long time);  //movement synchronization subtitles Fase-Forward
	void subtileREW(in long time);  //Movement synchoronization subtitles Rewind
};

// VI.1.3.3	MediaInfo

interface MediaInfo
{
	long long fileInfoDate_Created();  //The time the Media was Created to the media provider Units are seconds since 1970
	long long fileInfoDate_Modified();  //The time the Media was last modified Units are seconds sincd 1970
	string fileInfoDisplay_Name();  //The display name of this file
	long long getSize();  //The size of the file in bytes
	string getTitle();  //The title of the content
	string getArtist();  //Audio file info Artist
	string getAlbum();  //Audio file info Album
	string getFileName();  //Audio file info filename
	sCodecInfo videocodecInfo();  //Return video codec info
	sCodecInfo audiocodecInfo();  //Return audio codec info
};

// VI.1.3.4	AudioPlayer
// AudioPlayer class can be used to control playback of audio files and streams 

interface AudioPlayer
{
	void getCurrentPosition();  //Gets the current playback position
	void getDuration();  //Get the duration of the file
	boolean isLooping();  //Checks whether the AudioPlayer is looping or non-looping
	boolean isPlaying();  //Checks whether the AudioPlayer is playing
	void Pause();  //Pauses playback
	void seekTo(in long msec);  //Seeks to specified time position
	void setLooping(in boolean looping);  //Sets the player to be loopint or non-looping
	void VolumeUp();  //Sets Audio Volume   up
	void VolumeDown();  //Sets Audio Volume   dwon
	void Play();  //AudioPlayer play
	void Stop();  //AudioPlayer stop
	void FF();  //AudioPlayer fast-foward (5 seconds)
	void REW();  //Audioplayer rewand (5 seconds)
	void audioPath(in string path);   //the audiopath of the file, or the http/rtsp URL of the stream you want to play
};

// VI.1.3.5	MediaRecorder
// Used to record audio and video. The recording control is based on a simple state machine

interface MediaRecoder
{
	void getRecodertime();  //Gets the Recodertime
	void getDuration();  //Get the duration of the file
	long getVideoHeight();  //Returns the height of the video
	long getVideoWidth();  //Returns the width of the video
	boolean isRecording();  //Checks whether the MediaRecorder is recording
	void pauseRecorder();  //Pauses playback
	void stopRecorder();  //MediaRecorder stop
	void playRecorder(in string file, in long type);  //Default MediaRecorder play
	void playAudioRecorder(in string file, in long audioSource, in long outputFormat, in long audioEncoder, in long maxDuration, in long maxFileSize);  //Detail setting for          AudioRecording by user
	void playMediaRecorder(in string file, in long audioSource, in long videoSource, in long outputFormat, in long audioEncoder, in long vidoeEncoder,   in long width, in long height, in long videoFrameRate, in long maxDuration, in long maxFileSize);  //Detail setting for MediaRecording by user
	// Defines the audio source. These constants are used with setAudioSource(int)
	const long AudioSource.DEFAULT           = 0;
	const long AudioSource.MIC               = 1;
	const long AudioSource.VOICE_UPLINK      = 2;
	const long AudioSource.VOICE_DOWNLINK    = 3;
	const long AudioSource.VOICE_CALL        = 4;
	const long AudioSource.CAMCORDER         = 5;
	const long AudioSource.VOICE_RECOGNITION = 6;
	//Defines the video source. These constants are used with setVideoSource(int)
	const long VideoSource.DEFAULT = 0;
	const long VideoSource.CAMERA 1 = 1;
	const long VideoSource.CAMERA 2 = 2;
	//Defines the output format. These constants are used with setOutputFormat(int)
	const long OutputFormat.DEFAULT   = 0;
	const long OutputFormat.THREE_GPP = 1;
	const long OutputFormat.MPEG_4    = 2;
	const long OutputFormat.RAW_AMR   = 3;
	//Defines the audio encoding. These constants are used with setAudioEncoder(int)
	const long AudioEncoder.DEFAULT = 0;
	const long AudioEncoder.AMR_NB  = 1;
  	//Defines the video encoding. These constants are used with setVideoEncoder(int)
	const long VideoEncoder.DEFAULT   = 0;
	const long VideoEncoder.H263      = 1;
	const long VideoEncoder.H264      = 2;
	const long VideoEncoder.MPEG_4_SP = 3;
};

// VI.1.4	SCP client functions interfaces
// VI.1.4.1	DRM function interface

interface DRM
{
	struct  DRMInfo{
		char SID[64];       //sellerID
		char SCID[128];  //SellerContentID
		char UID[64];       //UserID
		char UPW[64];     //Password
	};
	void setDRMInfo(in string SID, in string SCID, in string UDI, in string UPW);
};

// VI.1.4.2	CAS function interface

interface CAS
{
	long authorityCheck(in long CW); // decoding by CW
};

// VI.1.5	Application client functions interface
// VI.1.5.1	appExecuter - IPTV application client interface

interface appExecuter
{
	boolean isRunnig(in string fileName); //Check isRunnig
	void excute(in string filePath, in string fileName); 	//Excute program
	void terminate(in string fileName); 	//Kill the excuted program
};

// VI.1.5.1.1		Browser - Global function for WBTM client 

interface Browser
{
	void	navigate(in string strURL); // Go to the URL web site
	void	closeApplication();  //Close the browser or exit web application.
	void	goBack();  //Go back to history of URL stack.
	boolean canGoBack();  //Return true if this WebView has a back history item.
	void	zoomIn();  //Perform zoom in in the Browser
	void	zoomOut();  //Perform zoom out in the Browser
	void	goBackOrForward(in long steps);  //Go to the history item that is the number of steps away from the current item.
  	void	goForward();  //Go forward in the history of this Browser.
  	void	setVerticalScrollBarEnabled(in boolean b);  //Specify whether the vertical scrollbar has overlay style.
  	string	getUrl();  //Get the url for the current page
	boolean  canGoBackOrForward(in long steps);  //Return true if the page can go back or forward the given number of steps.
	boolean  canGoForward();  //Return true if this Browser has a forward history item.
	void	clearCache(in boolean includeDiskFiles); //Clear the resource cache.
	void	clearFormData();  //Make sure that clearing the form data removes the adapter from the currently focused textfield if there is one.
	void	clearHistory();  //Tell the Browser to clear its internal back/forward list.
	string  getOriginalUrl();  //Get the original url for the current page.
	int		getProgress();  //Get the progress for the current page.
	float	getScale();  //Return the current scale of the Browser
	string  getTitle();  //Get the title for the current page.
	void	stopLoading();  //Stop the current load.
	void	reload();  //Reload the current url.
};

// VI.1.5.1.2		WebSettings

interface WebSettings
{
	enum ZoomDensity { FAR,         // 240dpi
                       MEDIUM,    // 160dpi
                       CLOSE};      // 120dpi}
	int		getDefaultFontSize();  //Get the default font size.
	boolean getAllowFileAccess();  //Returns true if this Browser supports file access.
	int		getCacheMode();  // Return the current setting for overriding the cache mode
	string  getCursiveFontFamily();  // Get the cursive font family name
	boolean getDatabaseEnabled();  // Returns true if database storage API is enabled
	string  getDatabasePath();  // Return the path to where database storage API databases are saved for the current Browser
	int		getDefaultFixedFontSize();  // Get the default fixed font size. The default is 16.
	string  getDefaultTextEncodingName();  // Get the default text encoding name
	WebSettings.ZoomDensity  getDefaultZoom();  // Get the default zoom density of the page
	boolean  getJavaScriptEnabled();  // Return true if javascript is enabled. The default is false.
	void  setAppCacheEnabled(in boolean flag);   //Tell the Browser to enable Application Caches API.
	void  setCacheMode(in long mode);   //Override the way the cache is used. The way the cache is used is based on the navigation option
	void  setCursiveFontFamily(in string font);  //Set the cursive font family name
	void  setDatabaseEnabled(in boolean flag);  //Set whether the database storage API is enabled
	void  setDefaultZoom(in WebSettings.ZoomDensity zoom);  //Set the default zoom density of the page
	void  setDatabasePath(in string databasePath);  //Set the path to where database storage API databases to be saved
	void  setDefaultFixedFontSize(in long size);  //Set the default fixed font size.
	void  setDefaultFontSize(in long size);  //Set the default font size
	void  setJavaScriptEnabled(in boolean flag);   //Tell the Browser to enable javascript execution.
	void  setStandardFontFamily(in string font);   //Set the standard font family name.
	void  setSupportZoom(in boolean support);   //Set whether the Browser supports zoom
	boolean  supportZoom();  //Returns whether the Browser supports zoom
};

// VI.1.5.1.3		URLUtil

interface URLUtil
{
	string		decode(in string strUrl, in string encode); //Decode url
	string		guessUrl(in string inUrl); //Cleans up (if possible) user-entered web addresses
	boolean		isAboutUrl(in string url);  //True iff the url is an about: url.
	boolean		isAssetUrl(in string url);  //True iff the url is an asset file.
	boolean		isContentUrl(in string url);  //True iff the url is a content: url.
	boolean		isDataUrl(in string url);  //True iff the url is a data: url.
	boolean		isFileUrl(in string url);  //True iff the url is a local file.
	boolean		isHttpUrl(in string url);  //True iff the url is an http: url.
	boolean		isHttpsUrl(in string url);  //True iff the url is an https: url.
	boolean		isJavaScriptUrl(in string url);  //True iff the url is a javascript: url.
	boolean		isNetworkUrl(in string url);  //True iff the url is a network url.
	boolean		isValidUrl(in string url);  //True iff the url is valid.
	string		stripAnchor(in string url);  //Strips the url of the anchor.
};

// VI.1.5.2	SADS client functional block interface
// VI.1.5.2.1		Starter

interface Starter
{
	void getInstance();  // Gets this sigleton instance of the Service starter
	void goHome();  // Browser to HomeScreen of  WBTM. You can choose  one of the Contents provider and service category.
};

// VI.1.6	Connection and session management interface
// VI.1.6.1	CookieManager

interface CookieManager
{
	boolean acceptCookie () ;  //Return whether cookie is enabled
	string	getCookie(in string url);  //Get cookie(s) for a given url so that it can be set to "cookie:" in http request header.
	boolean hasCookies ();  //Return true if there are stored cookies.
	void	removeAllCookie ();  //Remove all cookies	
	void	removeExpiredCookie ();  //Remove all expired cookies
	void	removeSessionCookie ();  //Remove all session cookies, which are cookies without expiration date
	void	setAcceptCookie (in boolean accept);   //Control whether cookie is enabled or disabled
	void	setCookie (in string url, in string value);   //Set cookie for a given url.
};

// VI.1.6.2	CookieSyncManager

interface  CookieSyncManager
{
	void resetSync () ;  // resets sync manager's timer
	void run () ;  //Starts executing the active part of the class' code.
	void startSync () ;  //startSync() requests sync manager to start sync
	void stopSync () ;  //stopSync() requests sync manager to stop sync
	void sync () ;  //sync() forces sync manager to sync now
};

// VI.1.7	Terminal device management interface
// VI.1.7.1	NetworkSetting

interface NetworkSetting
{
	attribute boolean     mbDHCP;  // is DHCP or Not
	attribute string      mstrIPAddress;  // Local Ip Address
	attribute string      mstrSubnetMask;  // Subnet Mask
	attribute string      mstrGetWay;  //Gateway IP
	attribute boolean     mbAutoDNS;  // Get DNS Address automaticaly
	attribute string      mstrPrimDNS;  // Primary DNS
	attribute string      mstrSecDNS;  // Secondary DNS
	boolean IsDHCP();  // Get Information about DHCP or Not
	void	SetDHCP(in boolean bdhcp);   // Set DHCP or Not
	void	setIPAddress (in string strIP);  // Set IP Address
	string	getIPAddress ();  // Get IP Address
	void	setSubnetMask(in string strIP);  // Set Subnet Mask
	string	getSubnetMask ();  // Get Subnet Mask
	void	setGateway(in string strIP);  // Set Gateway
	string	getGateway();  // Get Gateway Address
};

// VI.1.7.2	StorageManager
// This class represents the storage manager which keeps track of the storage devices attached to the system.

interface StorageManager
{
	const long STORAGETYPE_HD  = 0;
	const long STORAGETYPE_USB = 1;
	long getStorageType();//Return StorageType
	void onRemove(in long storageType);  //Remove Storage
	void onAttach(in long storageType);  //Attach Storage
	const long STORAGE_ADDED   = 0;
	const long STORAGE_REMOVED = 1;
	const long STORAGE_CHANGED = 2;
	long addStorageManagerListener(in StorageManagerListener listener); //Return STORAGE_ADDED
	long removeStorageManagerListener(in StorageManagerListener listener); //Return STORAGE_REMOVED
	sequence<string> getMountList();  //Return MountList
	octet getTotalVolume();  //Return TotalVolume
	octet getFreeVolume();  //Return FreeVolume
	octet getUsedVolume();  //Return UsedVolume
	const long FAT16 = 0;
	const long FAT32 = 1;
	const long NTFS  = 2;
	const long EXT2  = 3;
	const long EXT3  = 4;
	const long RAISERFS = 5;
	long getFileSystem(in long storageType);  //Return storage filesystem
};

// VI.1.7.3	MicController

interface MicController
{
	const long RET_OK = 0;
	const long RET_NOT_SUPPORTED = 1;
	const long RET_FAIL = 2;
	void instance();  //Create MikeController object.
	void setVolume(in long level);  //Set microphone volume to level.
	void getVolume();  //Get current microphone volume.
	void setMikeEnabled(in boolean enable);  //Set microphone Enable or disable.
	void isMikeEnabled();  //Check is microphone enabled.
	void MikeMute();  //Check whether themicrophone mute is on or off.
	void setMikeMute(in boolean on);  //Sets the microphone mute on or off
};

// VI.1.7.4	VolumeController

interface VolumeController
{
	void getInstance();  //Create VolumeController object.
	void setVolumeLevel(in long value);  //Set speaker volume to the level.
	void setMute(in boolean isMute);  //Set Mute
	boolean isMute();  //Check is muted
	void getCurrentVolumeLevel();  //Get current volume level.
	void systemVolumeUp();  //Set SystemVolume 1 step up.
	void systemVolumeDown();  //Set SystemVolume 1 step down.
	void mediaVolumeUp();	  //set MediaVolume 1 step up.
	void mediaVolumedown();  //set MediaVolume 1 step down
	void getMaxVolumeLevel();  //Get maximum volume leavel.
	void getMinVolumeLevel();  //Get minimum volume level.
};

// VI.1.7.5	PowerManager

interface PowerManager
{
	void goToSleep(in long long time);  //Force the device to go to sleep. Overrides all the wake locks that are held.
  	void isScreenOn();  //Returns whether the screen is currently on. The screen could be bright or dim.
	void reboot();  //Reboot the device. Will not return if the reboot is successful.
};

// VI.1.7.6	System Clock

interface SystemClock
{
	long long currentThreadTimeMillis(in boolean realTime);  //Returns milliseconds running in the current thread.
	long long elapsedRealtime();  //Returns milliseconds since boot, including time spent in sleep.
	boolean setCurrentTimeMillis(in long long millis);  //Sets the current wall time, in milliseconds. Requires the calling process to have appropriate permissions.
	void sleep(in long long ms);  //Waits a given number of milliseconds(of uptimeMillis) before returning.
};

// VI.1.8	Performance monitoring interface
// VI.1.8.1	MemoryInfo

interface MemoryInfo
{
	long long totalMemory();  //Returns the total amount of memory which is available to the running program.
	long long freeMemory();	  //Returns the amount of free memory resources which are available to the running program.
	long long maxMemory();  //Returns the maximum amount of memory that may be used by the virtual machine, or Long.MAX_VALUE if there is no such limit
	long long usedMemory();  //Returns the amount of Usedmemory resources which are available to the running program.
};

// VI.1.8.2	ProcessorInfo

interface ProcessorInfo
{
	struct Processor
	  {
		string mName;
		long   mID;
	  };
	long getTotalProcessor();  // Count of All Processor
	int  CPUUsageRate();  // Get CPU Usage Rate
 	int  ProcessorRate(in long ProcessorID);  // Get Processor's Usage Rate
 	void KillProcessor(in long ProcessorID);  // Kill Processor
	void KillAllProcessor(in string strProcessorName);  // Kill Processor vis Processor name
	typedef sequence<Processor> GetWorkingProcessorList();  //Get Progessor List
};

// VI.2	Web-based engine structure
// VI.2.1	Markup language
// VI.2.1.1	MLDocument

interface MLDocument
{
	void load(string URL);  // load url
	boolean isLoading();  //Check whether current page is loading
	string getURL();  // Get current url
	boolean isComplete ();// Check whether current page loads complete
	void stopLoad();  //stop loading page
	boolean isStopping();  //Check whether current page stop loading
	ResourceError getError();  //Get Loading error information
};

// VI.2.1.2	ResourceError

interface ResourceError
{	
	string domain();  //get the domain
	int errorCode();  //get errordode
	string localizedDescription();  //get error code descriptione
};

// VI.2.2	Document access interface
// VI.2.2.1	DOM node

interface DOMNode
{
	string getNodeName(string strNode); //get node name
	void setNodeValue(string strValue);  //setting node value of current node
	string nodeValue(string strNode);  //get node value
	string nodeType(string strNode);  //get node type
	DOMNode parentNode(string strNode);  //get parent node
	DOMNodeList childNodes();  //get child node list of current node
	DOMNode firstChild();  //get first child node of current node
	DOMNode lastChild();  //get last child node of current node
	DOMNode previousSibling();  // get the previous sibling node
	DOMNode nextSibling();  //get  the next sibling node
	boolean removeChild (DOMNode oldChild);  //remove child node of current node
	boolean appendChild( DOMNode  newChild)  //append child node of current node
	boolean hasChildNodes();  //return true if node has children
	boolean hasAttributes();  //return ture if node has attributes
};

// VI.2.2.2	DOM node list

interface  DOMNodeList
{
	DOMNode item(UINT index);  //get DOMNode of DOMNodeList
	int length();  //get length of DOMNodeList
};

// VI.2.2.3	DOM document

interface DOMDocument
{
	void Load(string strFile);  // load DOM file
	DOMNodeList getElementsByTagName(BSTR tagName);  
		// returns a NodeList of all a elements with a specified name
	DOMElement getElementById(BSTR elementId);
		//returns  the first element with the specified id
};

// VI.2.2.4	DOM element

interface DOMElement
{
	string getAttribute(string  name);  // gets an attribute value by name
	void setAttribute(string name, string value);  // adds a new attribute.
	void removeAttribute(string name);  // removes a specified attribute
};

// VI.2.3	Document style
// VI.2.3.1	Style sheet

interface StyleSheet
{
	CSSRule ownerRule();  //get Parent(Owner)'s  Rule
	CSSRuleList* rules();  //get  rulelist
	int addRule(string selector, string style, int index);  //Add rule to style sheet
	int addRule(string selector, string style);  //Add rule to style sheet
	void removeRule(unsigned index);  //remove rule from style sheet
	boolean isLoading();  //Check whether style sheet is loading
	boolean isComplete() ;  // Check whether style sheet loads complete
};

// VI.2.3.2	Rule

interface Rule
{
	boolean isStyleSheet();  //check  sytlesheet
	boolean isCSSStyleSheet();  //check CSS style sheet
	boolean isXSLStyleSheet();  //check XSL style sheet
	boolean isStyleSheetList() ;  //check style sheet list
	boolean isMediaList();  // check media list
	boolean isMediaRule();  // check media rule
	boolean isRuleList();  // check rulelist
	boolean isRule();  // check rule
	boolean isStyleRule();  // check style rule
	boolean isCharsetRule();  // check charset rule
	boolean isImportRule();  //check imported rule
	boolean isFontFaceRule();  // check fontface rule
	boolean isPageRule();  // check page rule
	boolean isUnknownRule();  // check unknown rule
	boolean isValue();  // check  a value
	string getValue();  //get  value
};

// VI.2.3.3	Rule list

interface RuleList
{
	int length() ;  //get  item length
	Rule item(unsigned index);  //get rule item of list
	int insertRule(Rule*, unsigned index);  //insert a new rule
	void deleteRule(unsigned index);  // delete rule
	void append(CSSRule );  // append a new rule
};

// VI.2.4	Scripting language
// VI.2.4.1	Script

Script
{
	JSValue executeScript(string script, boolean forceUserGesture);
		// excute script string
};

// VI.2.4.2	Script value

ScriptValue
{
	enum JSType
	{
		UnspecifiedType   = 0;
		NumberType        = 1;
		BooleanType       = 2;
		UndefinedType     = 3;
		NullType          = 4;
		StringType        = 5;
	};
	boolean	isUndefined();  //check  undefined type
	boolean isNull();  //check  null type
	boolean isBoolean();  //check boolean
	boolean isNumber();  // check number
	boolean isString();  // check string
	boolean getBoolean();  //get boolean value
	double getNumber();  //get number value
	string getString();  //get string value
};

};