Camera self rotation script problem

Hello my problem is:
I want to rotate my camera in length (from → to) actually cursor location(from) → length betwen cursor start position and position changing on click (to).
I had problem with configure it because my camera is jumping and not moving smoothly.
Second problem is that I want to rotate camera in length just from click not from the last position of cursor

The code is:

// set up before scene start
    void Awake()
    {
        cameraDefault = Camera.main;
        standardCameraAnglesOfView();
        setCameraSmoothValue(0.1f);
    }
    // use this for initialization
    void Start()
    {
        this.isMouseActive = false;
        this.isCameraPositionZero = false;
        this.isCameraRotationZero = false;
        cameraPositionChecker();
        cameraRotationChecker();
    }
    // per frame
	void LateUpdate ()
    {
        getMouseAxisPerFrame();
        checkMouseStatus();
        onMouseHold();
    }
// check if left mouse button is holded
    void checkMouseStatus()
    {
            if (Input.GetMouseButton(0))
            {
                isMouseActive = true;
            }
            else
            {
                isMouseActive = false;
            }      
    }
    // action used to be done while is holding left mouse button
    void onMouseHold()
    {
        if (isMouseActive)
        {
            if (currentMouseAxisX != onClickMouseAxisX && currentMouseAxisY != onClickMouseAxisY)
            {
                getMouseAxisOnClick();
                calculateMoveMouse();
                cameraRotateAngles();
                Debug.Log("pressed");
            }
        }
        else if (!isMouseActive)
        {
            //Debug.Log(" CX " + currentMouseAxisX + " CY " + currentMouseAxisY);
            Debug.Log("release");
        }

    }
    // get mouse axis every frame
    void getMouseAxisPerFrame()
    {
        this.currentMouseAxisX = Input.mousePosition.x;
        this.currentMouseAxisY = Input.mousePosition.y;
    }
    // get mouse axis to move
    void getMouseAxisOnClick()
    {
        this.onClickMouseAxisX = Input.mousePosition.x;
        this.onClickMouseAxisY = Input.mousePosition.y;
        //Debug.Log(" OX: " + onClickMouseAxisX + " OY: " + onClickMouseAxisY);
    }
    // get amount of move camera
    void calculateMoveMouse()
    {
        this.mouseMovementXLength = (onClickMouseAxisX - currentMouseAxisX * cameraSmoothWalue * Time.deltaTime);
        this.mouseMovementYLength = (currentMouseAxisY - onClickMouseAxisY) * cameraSmoothWalue * Time.deltaTime;

        this.mouseMovementYLength = Mathf.Clamp(mouseMovementYLength, minAngleY, maxAngleY);
        invertMouseMovementLenght();
        Debug.Log("LX " + mouseMovementXLength + " LY " + mouseMovementYLength);
    }
    // invert amount of camera move
    void invertMouseMovementLenght()
    {
       // this.mouseMovementXLength = -mouseMovementXLength;
        this.mouseMovementYLength = -mouseMovementYLength;
    }
    // set up camera smooth move
    public void setCameraSmoothValue(float smooth)
    {
        this.cameraSmoothWalue = smooth;
    }
    // camera rotate mechanic
    void cameraRotateAngles()
    {
        // change camera rotation on his own axis
        //cameraDefault.transform.rotation = Quaternion.Euler(mouseMovementYLength, mouseMovementXLength, 0 );
        cameraDefault.transform.Rotate(mouseMovementYLength, mouseMovementXLength, 0);
    }

Fixed by using another method of rotation you can check this out here: http://wiki.unity3d.com/index.php/SmoothMouseLook