void MediaPlayerPrivateEA::load(const String& url)
{
    if (!mpEAWebKitView)
        mpEAWebKitView = GetEAWebKitMediaView(mpWebCorePlayer);

    // Note: We get the autoplay and loop flags from the element directly.
    HTMLMediaElement* element = static_cast<HTMLMediaElement*>(mpWebCorePlayer->mediaPlayerClient());
    mIsLooping = element->loop();
   
    MediaUpdateInfo& info = GetMediaUpdateInfo();  
    info.mIsLooping = mIsLooping; 
	WebCore::KURL kurl(WebCore::KURL(), url);
	String escapedUrl = kurl.protocolIsInHTTPFamily() ? url : decodeURLEscapeSequences(url);

    GetFixedString(info.mURI)->assign(escapedUrl.characters(), escapedUrl.length());
    ClientUpdate(MediaUpdateInfo::kLoad);
    
    // Set info up to play
    setMuted(mpWebCorePlayer->muted());
    setVolume(mpWebCorePlayer->volume());
    
    if(mNetworkState != MediaPlayer::Loading)
    {
        mNetworkState = MediaPlayer::Loading;
        mpWebCorePlayer->networkStateChanged();
    }
    
    if(mReadyState != MediaPlayer::HaveNothing)
    {
       mReadyState = MediaPlayer::HaveNothing; 
       mpWebCorePlayer->readyStateChanged(); 
    }
    
    bool autoPlay = element->autoplay();
    if(autoPlay)
        mpWebCorePlayer->play();            // This just calls our play.

    ClientUpdateStates();                   // This will update the pause/play state right away.

    // Set up an update timer to control the repaint and playback.
    if (mUpdateTimer.isActive())
        mUpdateTimer.stop();
    const double kUpdateTime = 1.0/60.0;      // We want to update at 60hz so we keep up with the render calls. 
    mUpdateTimer.startRepeating(kUpdateTime);
}
JSValue* JSHTMLMediaElement::getValueProperty(ExecState* exec, int token) const
{
    switch (token) {
    case ErrorAttrNum: {
        HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl());
        return toJS(exec, WTF::getPtr(imp->error()));
    }
    case SrcAttrNum: {
        HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl());
        return jsString(exec, imp->src());
    }
    case CurrentSrcAttrNum: {
        HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl());
        return jsString(exec, imp->currentSrc());
    }
    case NetworkStateAttrNum: {
        HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl());
        return jsNumber(exec, imp->networkState());
    }
    case BufferingRateAttrNum: {
        HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl());
        return jsNumber(exec, imp->bufferingRate());
    }
    case BufferedAttrNum: {
        HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl());
        return toJS(exec, WTF::getPtr(imp->buffered()));
    }
    case ReadyStateAttrNum: {
        HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl());
        return jsNumber(exec, imp->readyState());
    }
    case SeekingAttrNum: {
        HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl());
        return jsBoolean(imp->seeking());
    }
    case CurrentTimeAttrNum: {
        HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl());
        return jsNumber(exec, imp->currentTime());
    }
    case DurationAttrNum: {
        HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl());
        return jsNumber(exec, imp->duration());
    }
    case PausedAttrNum: {
        HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl());
        return jsBoolean(imp->paused());
    }
    case DefaultPlaybackRateAttrNum: {
        HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl());
        return jsNumber(exec, imp->defaultPlaybackRate());
    }
    case PlaybackRateAttrNum: {
        HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl());
        return jsNumber(exec, imp->playbackRate());
    }
    case PlayedAttrNum: {
        HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl());
        return toJS(exec, WTF::getPtr(imp->played()));
    }
    case SeekableAttrNum: {
        HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl());
        return toJS(exec, WTF::getPtr(imp->seekable()));
    }
    case EndedAttrNum: {
        HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl());
        return jsBoolean(imp->ended());
    }
    case AutoplayAttrNum: {
        HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl());
        return jsBoolean(imp->autoplay());
    }
    case StartAttrNum: {
        HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl());
        return jsNumber(exec, imp->start());
    }
    case EndAttrNum: {
        HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl());
        return jsNumber(exec, imp->end());
    }
    case LoopStartAttrNum: {
        HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl());
        return jsNumber(exec, imp->loopStart());
    }
    case LoopEndAttrNum: {
        HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl());
        return jsNumber(exec, imp->loopEnd());
    }
    case PlayCountAttrNum: {
        HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl());
        return jsNumber(exec, imp->playCount());
    }
    case CurrentLoopAttrNum: {
        HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl());
        return jsNumber(exec, imp->currentLoop());
    }
    case ControlsAttrNum: {
        HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl());
        return jsBoolean(imp->controls());
    }
    case VolumeAttrNum: {
        HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl());
        return jsNumber(exec, imp->volume());
    }
    case MutedAttrNum: {
        HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl());
        return jsBoolean(imp->muted());
    }
    case ConstructorAttrNum:
        return getConstructor(exec);
    }
    return 0;
}